单只数码管循环显示0~9
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目一:单只数码管循环显示0~9
一、设计要求:用汇编语言编写程序实现51单片机控制1只数码管,循环
显示0~9。并用仿真软件仿真出实验结果。最后,用51单片机开发板实现一支数码管循环显示0到9。
二、设计原理:
数码管显示原理:
我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。本实验用到的共阳极0到9编码:
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
P0口:P0.0—P0.7: 双向I/O (内置场效应管上拉),寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。PO结构图如下:
四、设计仿真图:
五、源代码:
ORG 0000H
SJMP MAIN
ORG 030H
MAIN: MOV R1,#00H
MOV A,R1
D1: ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR ;查表
MOV P0,A ;P0口输出,显示数字
ACALL DELAY
INC R1
MOV A,R1 ;A加1
CJNE A,#10,D1 ;判断A是否到达10
LJMP MAIN ;当A达到10跳回主函数,重新赋值为0 DELAY: MOV R2,#05H ;延时
D2: MOV R3,#0FFH
D3: MOV R4,#0FFH
DJNZ R4,$
DJNZ R3,D3
DJNZ R2,D2
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;数值1到9的共阳极编码
END
六、结果:数码管循环显示0、1、2、3、4、5、6、7、8、9