DA转换实验

更新时间:2024-02-28 00:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华南农业大学工程学院电类实验分室

基础实验部分

实验1 P1口实验一

一、实验目的: 1. 2.

学习P1口的使用方法。 学习延时子程序的编写和使用。

二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容: 1. 2.

P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序

读取开关状态,在发光二极管上显示出来。 四、实验原理:

P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。

可以用第二个实验做一下实验。先按要求编好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。

再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。

本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。现要写一个延时0.1s的程序,可大致写出如下:

MOV R7,#X (1) DEL1:MOV R6,#200 (2) DEL2:DJNZ R6,DEL2 (3) DJNZ R7,DEL1 (4)

上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求出X值:

1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10? 指令(1) 指令(2) 指令(3) 指令(4)

51实验指导书 第1页

华南农业大学工程学院电类实验分室

所需时间 所需时间 所需时间 所需时间

X=(0.1×10?-1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH 经计算得X=127。代入上式可知实际延时时间约为0.100215s,已经很精确了。 五、实验原理图:

P1口输出实验

P1口输入实验

六、实验步骤:

执行程序1(T1_1.ASM)时:P1.0~P1.7接发光二极管L1~L8。

执行程序2(T1_1.ASM)时:P1.0~P1.7接平推开关K1~K8;74LS273的O0~O7接发光二极管L1~L8;74LS273的片选端CS273接CS0(由程序所选择的入口地址而定,与CSO~CS7相应的片选地址请查看第一部分系统资源,以后不赘述)。

七、程序框图:

程序初始化,设置P1口寄存器的初值为FEH延时0.1 秒,使显示稳定将P1口寄存器的数值逐位左移1位 51实验指导书 第2页

华南农业大学工程学院电类实验分室

循环点亮发光二极管

程序初始化,设置P1口为输入口将P1口数值读入累加器A将累加器A的数值送到273显示

通过发光二极管将P1口的状态显示

八、参考程序:

1、循环点亮发光二极管(T1_1.ASM)

NAME T1_1 ;P1口输实验 CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV A,#0FEH LOOP:

DELAY: MOV R1,#127 ; 延时0.1秒 DEL1: MOV R2,#200 DEL2: DJNZ R2,DEL2 DJNZ R1,DEL1 RET END

2、通过发光二极管将P1口的状态显示(T1_2.ASM)

NAME T1_2 ;P1口输入实验 OUT_PORT

EQU

0CFA0H

CSEG AT 0000H LJMP START

51实验指导书 第3页

华南农业大学工程学院电类实验分室

CSEG AT 4100H

START: MOV P1,#0FFH ;复位P1口为输入状态 MOV A,P1

;读P1口的状态值入累加器A

MOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针DPTR MOVX @DPTR,A ;将累加器A的值赋给DPTR指向的地址 JMP START ;继续循环监测端口P1的状态 END

51实验指导书 第4页

华南农业大学工程学院电类实验分室

实验2 P1口实验二

一、实验目的: 1. 2.

学习P1口既做输入又做为输出的使用方法。 学习数据输入、输出程序的设计方法。

二、实验设备:

CPU挂箱、8031CPU模块 三、实验原理:

P1口的使用方法这里不讲了。有兴趣者不妨将实验例程中的“SETB P1.0, SETB P1.1”中的“SETB”改为“CLR”看看会有什么结果。

另外,例程中给出了一种N路转移的常用设计方法,该方法利用了JMP @A+DPTR的计算功能,实现转移。该方法的优点是设计简单,转移表短,但转移表大小加上各个程序长度必须小于256字节。 四、实验原理图:

P1口输入、输出实验

五、实验步骤:

平推开关的输出K1接P1.0;K2接P1.1;

51实验指导书 第5页

华南农业大学工程学院电类实验分室

发光二极管的输入L1接P1.2;L2接P1.3;L5接P1.4;L6接P1.5。

运行实验程序,K1做为左转弯开关,K2做为右转弯开关。L5、L6做为右转弯灯,L1、L2做为左转弯灯。

结果显示:1:K1接高电平K2接低电平时,右转弯灯(L5、L6)灭,左转弯灯(L1、L2)以一定频率闪烁;

2:K2接高电平K1接低电平时,左转弯灯(L1、L2)灭,右转弯灯(L5、

L6)以一定频率闪烁;

3:K1、K2同时接低电平时,发光二极管全灭; 4:K1、K2同时接高电平时,发光二极管全亮。

六、参考程序:T2.ASM

NAME T2 ;P1口输入输出实验 CSEG AT 0000H LJMP START CSEG AT 4100H START:

TAB: DB PRG0-TAB DB PRG1-TAB DB PRG2-TAB DB PRG3-TAB

PRG0: MOV P1,#0FFH ;向P1口输出#0FFH,发光二极管全灭 ;此时K1=0,K2=0 JMP START

PRG1: MOV P1,#0F3H ;只点亮L5、L6,表示左转弯

51实验指导书 第6页

华南农业大学工程学院电类实验分室

ACALL DELAY ;此时K1=1,K2=0

MOV P1,#0FFH ;再熄灭0.5秒

ACALL DELAY ;延时0.5秒 JMP START

PRG2: MOV P1,#0CFH ;只点亮L7、L8,表示右转弯 ACALL DELAY ;此时K1=0,K2=1 MOV P1,#0FFH ;再熄灭0.5秒 ACALL DELAY JMP START

PRG3: MOV P1,#00H ;发光二极管全亮,此时K1=1,K2=1

JMP START

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELAY: MOV R1,#5 ;延时0.5秒 DEL1: MOV R2,#200 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END 七、程序框图:

51实验指导书 第7页

华南农业大学工程学院电类实验分室 上电,程序初始化,设置P1口为输入、输出双线口(P1.0、P1.1为输入口,P1.2、P1.3、P1.4、P1.5为输出口采集P1.0、P1.1输入口的值进入A累加器,根据累加器A的值调转到相应的子程序入口A=00A=01A=10A=11给P1口赋值0FFH(四个发光二极管全灭)依次给P1口赋值0F3H和0FFH,每种状态延时0.5秒依次给P1口赋值0CFH和0FFH,每种状态延时0.5秒给P1口赋值00H(四个发光二极管全亮)

51实验指导书 第8页

华南农业大学工程学院电类实验分室

实验3 简单I/O口扩展实验一

——交通灯控制实验

一、实验目的:

1. 学习在单片机系统中扩展简单I/O接口的方法。 2. 学习数据输出程序的设计方法。 3. 学习模拟交通灯控制的实现方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

扩展实验箱上的74LS273做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。 四、实验原理:

要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。不妨将L1(红)、L2(绿)、L3(黄)做为东西方向的指示灯,将L5(红)、L6(绿)、L7(黄)做为南北方向的指示灯。而交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。各发光二极管的阳极通过保护电阻接到+5V的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。

五、实验原理图

51实验指导书 第9页

华南农业大学工程学院电类实验分室

六、实验步骤:

74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号CSO.

运行实验程序,观察LED显示情况是否与实验内容相符。

七、程序框图:

51实验指导书 第10页

华南农业大学工程学院电类实验分室

八、参考程序:T3.ASM

NAME T3 ;I/O口扩展实验一 PORT EQU 0CFA0H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H

START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP

;调用273显示单元(以下雷同)

51实验指导书 第11页

华南农业大学工程学院电类实验分室

ACALL DE3S ;延时3秒

LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮 ACALL DISP

ACALL DE10S ;延时10秒

MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP

MOV R2,#05H ;R2中的值为黄灯闪烁次数 TTT: MOV A,#14H ; ACALL DISP

ACALL DE02S ; MOV A,#10H ; ACALL DISP

ACALL DE02S ; DJNZ R2,TTT ; MOV A,#11H ; ACALL DISP

ACALL DE02S ; MOV A,#21H ; ACALL DISP

ACALL DE10S ; MOV A,#01H ; ACALL DISP

MOV R2,#05H ;GGG: MOV A,#41H ; ACALL DISP

ACALL DE02S ; MOV A,#01H ; ACALL DISP

ACALL DE02S ; DJNZ R2,GGG ;东西路口黄灯亮;南北路口红灯亮 延时0.2秒

东西路口黄灯灭;南北路口红灯亮 延时0.2秒

返回TTT,使东西路口黄灯闪烁五次 两个红灯亮,黄灯、绿灯灭 延时0.2秒

东西路口红灯亮;南北路口绿灯亮 延时10秒

东西路口红灯亮;南北路口绿灯灭 黄灯闪烁五次

东西路口红灯亮;南北路口黄灯亮 延时0.2秒

东西路口红灯亮;南北路口黄灯灭 延时0.2秒

返回GGG,使南北路口;黄灯闪烁五次

51实验指导书 第12页

华南农业大学工程学院电类实验分室

MOV A,#03H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP

ACALL DE02S ;延时0.2秒 JMP LLL ;转LLL循环 DE10S: MOV R5,#100 ;延时10秒 JMP DE1

DE3S: MOV R5,#30 ;延时3秒 JMP DE1

DE02S: MOV R5,#02 ;DE1: MOV R6,#200 DE2: MOV R7,#126 DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET

DISP: MOV DPTR,#PORT ;273 CPL A MOVX @DPTR,A

RET

END

延时0.2秒 显示单元 51实验指导书 第13页

华南农业大学工程学院电类实验分室

实验4 简单I/O口扩展实验二

一、实验目的:

1. 学习在单片机系统中扩展简单I/O口的方法。 2. 学习数据输入,输出程序的编制方法。 二、实验设备:

CPU挂箱、8031CPU模块

三、实验原理:

MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。

程序中加了一段延时程序,以减少总线口读写的频繁程度。延时时间约为0.01秒,不会影响显示的稳定。 四、实验内容:

利用74LS244做为输入口,读取开关状态,并将此状态通过发光二极管显示出来。 五、实验原理图:

简单I/O实验2

六、实验步骤:

1. 74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1。 2. 74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2。

51实验指导书 第14页

华南农业大学工程学院电类实验分室

3. 编程、全速执行。

4. 拨动开关K1~K8,观察发光二极管状态的变化。 七、程序框图:

八、参考程序:T4.ASM

NAME T4 ;I/O口扩展实验 CSEG AT 0000H LJMP START CSEG AT 4100H

INPORT EQU 0CFA8H ;74LS244端口地址 OUTPORT EQU 0CFB0H ;74LS273端口地址 START: MOV DPTR,#INPORT

LOOP: MOVX A,@DPTR ;读开关状态 MOV DPTR,#OUTPORT

MOVX @DPTR,A ;显示开关状态 MOV R7,#10H ;延时 DEL0: MOV R6,#0FFH DEL1: DJNZ R6,DEL1 DJNZ R7,DEL0 JMP START END

51实验指导书 第15页

华南农业大学工程学院电类实验分室

实验5 中断实验

———有急救车的交通灯控制实验

一、实验目的:

1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

在实验三的内容的基础上增加允许急救车优先通过的要求。当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲为中断申请,表示有急救车通过。

四、实验原理:

交通灯的燃灭规律见实验三。

本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验给出的程序中,主程序延时用的是R5、R6、R7,中断延时用的是R3、R4和新的R5。第二,主程序中每执行一步经74LS273的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行往74LS273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:

MOV A,#0F0H (0) MOVX @R1,A (1) MOV SAVE,A (2)

程序如果正好执行到(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOV A,SAVE指令,由于主程序中没有执行(2),故SAVE中的内容实际上是前一次放入的而不是(0)语句中给出的0F0H,显示出错,将(1)、(2)

51实验指导书 第16页

华南农业大学工程学院电类实验分室

两句顺序颠倒一下则没有问题。发生中断时两方向的红灯一起亮10秒,然后返回中断前的状态。

五、实验原理图:(同实验三) 六、实验步骤:

74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273\\接片选信号CS2,此时74LS273的片选地址为CFB0H~CFB7H之间任选。单脉冲输出端P-接CPU板上的INT0。

七、程序框图: 主程序框图 51实验指导书 中断程序框图

第17页

华南农业大学工程学院电类实验分室

八、参考程序:T5.ASM

NAME T5 ;中断控制实验 OUTPORT EQU 0CFB0H ;端口地址

SAVE EQU 55H ;save保存从端口cfa0输出的数据 CSEG AT 0000H LJMP START CSEG AT 4003H LJMP INT CSEG AT 4100H START: SETB IT0 SETB EX0 SETB EA

MOV A,#11H ; MOV SAVE,A ; ACALL DISP ; ACALL DE3S ;LLL: MOV A,#12H ; MOV SAVE,A ACALL DISP

ACALL DE10S ; MOV A,#10H ; MOV SAVE,A ACALL DISP

MOV R2,#05H ;TTT: MOV A,#14H MOV SAVE,A ACALL DISP ACALL DE02S MOV A,#10H MOV SAVE,A

置首显示码 保存 显示输出 延时3秒

东西路口绿灯亮,南北路口红灯亮 延时10秒 东西路口绿灯灭 东西路口黄灯闪烁5次 51实验指导书 第18页

华南农业大学工程学院电类实验分室

ACALL DISP ACALL DE02S DJNZ R2,TTT

MOV A,#11H ;红灯全亮 MOV SAVE,A ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#21H ; MOV SAVE,A ACALL DISP

ACALL DE10S ; MOV A,#01H ; MOV SAVE,A ACALL DISP

MOV R2,#05H ;GGG: MOV A,#41H MOV SAVE,A ACALL DISP ACALL DE02S MOV A,#01H MOV SAVE,A ACALL DISP ACALL DE02S DJNZ R2,GGG

MOV A,#11H ; MOV SAVE,A ACALL DISP

ACALL DE02S ; JMP LLL ;DE10S: MOV R5,#100 ;东西路口红灯亮,南北路口绿灯亮延时10秒 南北路口绿灯灭 南北路口黄灯闪烁5次 红灯全亮 延时0.2秒 转LLL循环 延时10秒

51实验指导书 第19页

华南农业大学工程学院电类实验分室

JMP DE1

DE3S: MOV R5,#30 ;延时3秒 JMP DE1

DE02S: MOV R5,#02 ;延时0.2秒 DE1: MOV R6,#200 DE2: MOV R7,#126 DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET INT: CLR EA

PUSH ACC ;中断处理

PUSH PSW MOV A,R5 PUSH ACC

MOV A,#11H ;红灯全亮,绿、黄灯全灭 ACALL DISP

DEL10S: MOV R3,#100 ;延时10秒 DEL1: MOV R2,#200 DEL2: MOV R5,#126 DEL3: DJNZ R5,DEL3 DJNZ R4,DEL2 DJNZ R3,DEL1

MOV A,SAVE ;取SAVE中保存数据输出到cfa0端口 ACALL DISP

POP ACC ;出栈 MOV R5,A POP PSW POP ACC

SETB EA ;允许外部中断

51实验指导书 第20页

华南农业大学工程学院电类实验分室

RETI

DISP: MOV DPTR,#OUTPORT

CPL A

MOVX @DPTR,A RET END

51实验指导书 第21页

华南农业大学工程学院电类实验分室

实验6 定时器实验

———循环彩灯实验

一、实验目的:

1. 学习8031内部计数器的使用和编程方法。 2. 进一步掌握中断处理程序的编写方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验原理:

1. 定时常数的确定

定时器/计数器的输入脉冲周期与机器周期一样, 为振荡频率的1/12。本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。

时间常数可按下述方法确定:

机器周期=12÷晶振频率=12/(6×10?)=2us

设计数初值为X,则(2e+16-X)×2×10=0.1,可求得X=15535 化为十六进制则X=3CAFH,故初始值为TH1=3CH,TL1=AFH 2. 初始化程序

包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。

3. 设计中断服务程序和主程序

中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。 四、实验题目

由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为:①L1、L2、?L8依次点亮;②L1、L2、?L8依次熄灭;③L1、L2、?L8全亮、全灭。各时序间隔为

51实验指导书 第22页

-6

华南农业大学工程学院电类实验分室

0.5秒。让发光二极管按以上规律循环显示下去。 五、实验电路:

六、实验步骤:

P1.0~P1.7分别接发光二极管L1~L8即可。 七、参考程序:T6.ASM

NAME T6 ;定时器实验 OUTPORT EQU 0CFB0H CSEG AT 0000H

LJMP START

CSEG AT 401BH ;定时器/计数器1中断程序入口地址

LJMP INT

CSEG AT 4100H

START:

LOOP1: CJNE R0,#00,DISP

MOV R0,#5H ;R0计数计完一个周期,重置初值

51实验指导书 第23页

华南农业大学工程学院电类实验分室

INC R1 ;表地址偏移量加1 CJNE R1,#31H,LOOP2

MOV R1,#03H ;如到表尾,则重置偏移量初值 LOOP2: MOV A,R1 ;从表中取显示码入累加器 MOVC A,@A+PC JMP DISP

DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H DISP: MOV P1,A ; JMP LOOP1

INT: CLR TR1 ; DEC R0 ; MOV TL1,#0AFH ; MOV TH1,#03CH

SETB TR1 ; RETI ;END

将取得的显示码从P1口输出显示 停止计数 计数值减一 重置时间常数初值 开始计数 中断返回

51实验指导书 第24页

华南农业大学工程学院电类实验分室

八、程序框图:

主程序框图 中断程序框图

51实验指导书 第25页

华南农业大学工程学院电类实验分室

51实验指导书 第31页

华南农业大学工程学院电类实验分室

实验8 D/A转换实验

一、实验目的:

1. 了解D/A转换的基本原理。

1. 了解D/A转换芯片0832的性能及编程方法。 2. 了解单片机系统中扩展D/A转换的基本方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

利用DAC0832,编制程序产生锯齿波、三角波、正弦波。三种波形轮流显示。 四、实验原理:

D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号。产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。取值范围为一个周期,采样点越多,精度就越高。

本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。两个寄存器均对数据独立进行锁存。因而要把一个数据通过0832输出,要经两次锁存。典型程序段如下:

MOV DPTR,#PORT MOV A,#DATA MOVX @DPTR,A INC DPTR MOVX @DPTR,A

其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号。启动D/A。 五、实验电路:

51实验指导书 第32页

华南农业大学工程学院电类实验分室

六、实验步骤:

1、 DAC0832的片选CS0832接CS0,输出端OUT接示波器探头。 2、 将短路端子DS的1、2短路

七、程序框图

主程序MAIN 锯齿波显示子程序:PRG1

51实验指导书 第33页

华南农业大学工程学院电类实验分室

三角波显示子程序:PRG2 正弦波显示子程序:PRG3

中断子程序:DELAY

八、参考程序

PORT EQU 0CFA0H CSEG AT 4000H

LJMP START CSEG AT 4100H

START: MOV R1,#02H ;置计数初值于R1 ACALL PRG1 ;显示锯齿波

MOV R1,#01H ;置计数初值于R1 ACALL PRG2 ;显示三角波

51实验指导书 第34页

华南农业大学工程学院电类实验分室

MOV R1,#01H ;置计数初值于R1 ACALL PRG3 ;显示正弦波

LJMP START ;转START循环显示 PRG1:

RET ;产生锯齿波 PRG2:

RET :产生三角波 PRG3: MOV B,#00H

LP3: MOV DPTR,#DATA0

MOV R4,#0FFH ;FFH为DATA0表中的数据个数 LP4: MOVX A,@DPTR ;从表中取数据 MOV R3,DPH MOV R5,DPL

MOV DPTR,#PORT MOVX @DPTR,A INC DPTR

MOVX @DPTR,A MOV DPH,R3 MOV DPL,R5

INC DPTR ;地址下移 DJNZ R4,LP4 DJNZ B,LP3 DJNZ R1,PRG3 RET

DATA0: DB 80H,83H,86H,89H,8DH,90H,93H,96H DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H

51实验指导书 第35页

华南农业大学工程学院电类实验分室

DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H DB 96H,93H,90H,8DH,89H,86H,83H,80H DB 80H,7CH,79H,76H,72H,6FH,6CH,69H DB 66H,63H,60H,5DH,5AH,57H,55H,51H DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH DB 38H,35H,33H,30H,2EH,2BH,29H,27H DB 25H,22H,20H,1EH,1CH,1AH,18H,16H DB 15H,13H,11H,10H,0EH,0DH,0BH,0AH DB 09H,8H,7H,6H,5H,4H,3H,2H DB 02H,1H,0H,0H,0H,0H,0H,0H DB 00H,0H,0H,0H,0H,0H,1H,2H DB 02H,3H,4H,5H,6H,7H,8H,9H DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H DB 16H,18H,1AH,1CH,1EH,20H,22H,25H DB 27H,29H,2BH,2EH,30H,33H,35H,38H DB 3AH,3DH,40H,43H,45H,48H,4CH,4EH DB 51H,51H,55H,57H,5AH,5DH,60H,63H DB 69H,6CH,6FH,72H,76H,79H,7CH,80H

END

51实验指导书 第36页

华南农业大学工程学院电类实验分室

实验9 A/D转换实验

一、实验目的:

1. 掌握A/D转换与单片机的接口方法。 2. 了解A/D芯片ADC0809转换性能及编程方法。 3. 通过实验了解单片机如何进行数据采集。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

利用实验台上的ADC0809做A/D转换器,实验箱上的电位器提供模拟电压信号输入,编制程序,将模拟量转换成数字量,用数码管显示模拟量转换的结果。 四、实验原理:

A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。

实验用的ADC0809属第二类,是八位A/D转换器。每采集一次需100us。 ADC0809 START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需如下两条指令:

MOV DPTR,#PORT MOVX @DPTR,A

A中为何内容并不重要,这是一次虚拟写。

在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031CPU板上的INT0相连接。在中断处理程序中,使用如下指令即可读取A/D转换的结果:

MOV DPTR,#PORT MOVX A,@DPTR

51实验指导书 第37页

华南农业大学工程学院电类实验分室

五、实验电路:

六、实验步骤:

1. 0809的片选信号CS0809接CS0。 2. 电位器的输出信号AN0接0809的ADIN0。 3. EOC接CPU板的INT0. 七、参考程序: PORT EQU 0CFA0H CSEG AT 0000H LJMP START CSEG AT 4100H

START: MOV DPTR,#PORT ;启动通道0 MOVX @DPTR,A MOV R0,#0FFH

LOOP1: DJNZ R0,LOOP1 ;等待中断 MOVX A,@DPTR MOV R1,A

DISP: MOV A,R1 ;从R1中取转换结果 SWAP A ;分离高四位和低四位 ANL A,#0FH ;并依次存放在50H到51H中 MOV 50H,A MOV A,R1

51实验指导书 第38页

华南农业大学工程学院电类实验分室

ANL A,#0FH MOV 51H,A

LOOP: MOV DPTR,#0CFE9H ;写显示RAM命令字 MOV A,#90H MOVX @DPTR,A

MOV R0,#50H ;存放转换结果地址初值送R0 MOV R1,#02H

MOV DPTR,#0CFE8H ;8279数据口地址 DL0: MOV A,@R0

ACALL TABLE ;转换为显码 MOVX @DPTR,A ;送显码输出 INC R0 DJNZ R1,DL0 SJMP DEL1 TABLE: INC A MOVC A,@A+PC RET

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

DEL1: MOV R6,#255 ;延时一段时间使显示更稳定 DEL2: MOV R5,#255 DEL3: DJNZ R5,DEL3 DJNZ R6,DEL2

LJMP START ;循环 END

八、程序框图:T15.ASM

51实验指导书 第39页

华南农业大学工程学院电类实验分室

主程序 中断服务程序

51实验指导书 第40页

华南农业大学工程学院电类实验分室

实验10 存储器扩展实验

一、实验目的:

1. 掌握PC存储器扩展的方法。 2. 熟悉62256芯片的接口方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

向外部存储器的7000H到8000H区间循环输入00~0FFH数据段。设置断点,打开外部数据存储器观察窗口,设置外部存储器的窗口地址为7000H—7FFFH。全速运行程序,当程序运行到断点处时,观察7000H—7FFFH内数据是否正确。 四、实验原理图:

实验系统上的两片6264的地址范围分别为:3000H~3FFFH,4000H~7FFFH,既可作为实验程序区,也可作为实验数据区。62256的所有信号均已连好。 五、程序框图:T16.asm

51实验指导书 第41页

华南农业大学工程学院电类实验分室

实验11 8253定时器实验

一、实验目的:

1、学习8253扩展定时器的工作原理。 2、学习8253扩展定时器的使用方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

向8253定时控制器写入控制命令字,通过示波器观察输出波形。 四、实验接线:

1、 8253的片选CS8253与CS0相连;8253CLK0与CLK3相连;OUT0与8253CLK1

相连;

2、示波器的信号探头与OUT0相连;OUT1与发光二极管的输入LED8相连 五、实验原理图:

六、程序框图:T17.ASM

51实验指导书 第42页

华南农业大学工程学院电类实验分室

开 始写T0方式控制字写T0计数初值写T1方式控制字写T1计数初值写T2方式控制字写T2计数初值空操作结束

七、实验提示:

8253是自动控制系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2。8253有多种工作方式,其中方式3为方波方式。当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平。实验中,T0的时钟由CLK3提供,其频率为750KHz。程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10-6=0.05s)。T1采用OUT0的输出为时钟,则在T2中设置初值为n时,则OUT2输出方波周期为n*0.05s。n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。

51实验指导书 第43页

华南农业大学工程学院电类实验分室

实验12 8259中断控制器实验

一、实验目的:

1、学习8259中断扩展控制器的工作原理。 2、学习8259中断扩展控制器的使用方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

向8259中断扩展控制器写入控制命令字,通过发光二极管观察中断情况。 四、实验原理图

五、实验接线:

1、 8259的片选CS8259与CS0相连;51INTX与51CPU板的INT0相连; 2、P1.0----P1.7与发光二极管的输入LED1---LED8相连;P+逐次与IR0---IR7相连。 六、实验步骤:

1、 编译、全速运行程序T18.ASM,应能观察到发光二极管点亮约2秒后熄灭, 2、先将P+与IR0相连,按动PULSE按键,发光二极管LED1点亮,再按PULSE键,发光二极管LED1熄灭,依次将P+与IR1---IR7相连,重复按动PULSE键,相应的LED发光二极管有亮、灭的交替变化。 七、程序框图:T18.ASM

51实验指导书 第44页

华南农业大学工程学院电类实验分室

51实验指导书 第45页

本文来源:https://www.bwwdw.com/article/34ea.html

Top