实验线路原理及连接:
将KEY0、KEY1、KEY2按键用实验系统上的K1 ~K3键代起,分别和P1.0~P1.2连接,实现秒表的启动、停止、清零等功能。电路中,8255 B口的8个I/O引脚PB0~PB7通过反相器驱动电路连接六位LED的阳极a~g,及dp;8255的A口的六个I/O引脚PA0~PB5通过同相驱动,对6位LED的阴极进行分时选通;这样在任一时刻,可以只有一位LED是点亮的。只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是我们常说的动态扫描电路。
LED实现动态显示时,动态扫描的频率有一定的要求。频率太低,LED将出现闪烁现象;如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清。所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。在C51指令中,延时子程序是相当简单的,并且延时时间也很容易更改,可参见程序清单中的DELAY延时子程序。
四 控制程序框图
主程序框图
100ms定时中断程序框图:
五 程序设计
控制程序清单: 主程序
(系统初始化程序)
ORG 0000H START:AJMP MAIN
ORG 000BH AJMP CTC0 ORG 0100H
MAIN:MOV SP,#60H
MOV DPTR,#0FF23H MOV A,#88H
MOVX @DPTR,A MAIN1:MOV R0,#79H MOV R7,#06H ML1:MOV @R0,#00H
INC R0
DJNZ R7,ML1 MOV TMOD,#01H MOV TL0,#0B0H
MOV TH0,#3CH SETB EA
CLR ET0 CLR TR0 ML0:LCALL DISP
MOV P0,#0FFH JNB P1.0,KEY0 JNB P1.1,KEY1 JNB P1.2,KEY2 SJMP ML0 KEY0:SETB ET0
SETB TR0 SJMP ML0 KEY1:CLR ET0
CLR TR0 SJMP ML0 KEY2:CLR EA
SJMP MAIN1
;定时/计数器0
定时中断程序 ORG 0200H CTC0:PUSH PSW
PUSH ACC SETB PSW.3 MOV TL0,#0B0H MOV TH0,#3CH MOV R0,#79H MOV A,@R0 INC A
MOV @R0,A XRL A,#0AH JNZ RETO CLR A
MOV @R0,A
MOV R0,#7BH ACALL DAAD1 MOV A,R2 XRL A,#60H
JNZ RETO
ACALL CLR0 MOV R0,#7DH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ RETO ACALL CLR0 MOV R0,#7EH MOV A,@R INC A
MOV @R0,A XRL A,#0AH JNZ RETO ACALL CLR0 RETO:POP ACC POP PSW RETI
;十进制秒、分值 加1子程序 DAAD1:MOV A,@R0 DEC R0 SWAP A ORL A,@R0 ADD A,#01H DA A
MOV R2,A ANL A,#0FH MOV @R0,A MOV A,R2 INC R0
ANL A,#0F0H SWAP A
MOV @R0,A RET CLR0:CLR A
MOV @R0,A DEC R0
MOV @R0,A RET
;LED显示子程序 ORG 0300H DISP:MOV R0,#79H
MOV R3,#0FEH LD0:MOV A,R3
MOV DPTR,#0FF20H MOVX @DPTR,A MOV DPTR,#SEG MOV A,@R0 DIR0:MOVC A,@A+DPTR
MOV DPTR,#0FF21H DIR1:MOVX @DPTR,A ACALL DL INC R0 MOV A,R3 JB ACC.5,LD1 RL A
MOV R3,A LJMP LD0 LD1:RET
;延时子程序
DL:MOV R6,#01FH
DELAY2:MOV R7,#018H DELAY1:DJNZ R7,DELAY1
DJNZ R6,DELAY2 RET
;字符’0’~’9‘的七段LED代码表 SEG:DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H,80H,90H END
六 总结体会
通过这次实训我们对于8051和8255的定时与中断编程有一定的掌握,发现了许多问题,通过老师的讲解都基本解决,对于程序中碰到的许多指令,还不太熟悉,还要多加的复习课本,对于单片机的重要性已经深有体会。
基于8051单片机的数字电压表的设计与仿真
一 设计目的:
1.掌握A/D、D/A转换与单片机接口连接的方法;
2.了解A/D芯片ADC0809、D/A芯片DAC0832的转换性能及编程方法;
3.通过实验了解单片机系统中扩展A/D、D/A转换芯片的方法,学会和掌握用单片机进