分类:
2007-04-16 13:25:07
实验 4 100位计数器的实现
1.实验目的
掌握七段LED显示器的动态显示方式,使用户学会如何使用数码管。
2. 实验设备及器件
PC机 一台
51-3.0型单片机实验板 一块
3. 实验内容
编写一段程序,用P0口输出段码,P2口控制位选,使用数码管实现1到100的计数器显示。
4. 实验步骤
① 使用排线将P0口和段码驱动输入J7相连,并将P2口和 位选控制J8相连。如图11所示原理图。
② 先编写一个延时程序。
③ 将数码管显示的程序编写完整并调试运行。
④ 用下载线连接实验板和PC 机,把代码下到单片机实验板, 查看结果。
5. 实验参考程序
ABIT EQU 20H ;个位数存放处
BBIT EQU 21H ;十位数存放处
TEMP EQU 22H ;计数器寄存器
START:MOV TEMP,#0 ;初始化计数器
STLOP:ACALL DISPLAY
INC TEMP
MOV A,TEMP
CJNE A,#100,NEXT ;=100重来
MOV TEMP,#0
NEXT:LJMP STLOP
;显示子程序
;====================================================
DISPLAY: MOV A,TEMP ;将temp中的十六进制数转换成10进制
MOV B,#10 ;10进制/10=10进制
DIV AB
MOV BBIT,A ;十位在a
MOV ABIT,B ;个位在b
MOV DPTR,#TAB ;指定查表启始地址
MOV R0,#4
DPL1:MOV R1,#250 ;显示1000次
DPLOP:MOV A,ABIT ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
MOV P0,A ;送出个位的7段代码
CLR P2.0 ;开个位显示
ACALL D1MS ;显示1ms
SETB P2.0
MOV A,BBIT ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码
MOV P0,A ;送出十位的7段代码
CLR P2.1 ;开十位显示
ACALL D1MS ;显示1ms
SETB P2.1
DJNZ R1,DPLOP ;100次没完循环
DJNZ R0,DPL1 ;4个100次没完循环
RET
;1MS延时(按12MHZ算)
;====================================================
D1MS:MOV R7,#80
DJNZ R7,$
RET
;7段数码管各划的数字排列表
;====================================================
TAB:DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0F8h,80h,90h
;不带小数点0 1 2 3 4 5 6 7 8 9
END
淘宝网