单片机c语言数码管显示循环0到9程序,七段数码管0~9循环显示程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

编写程序实现80C51的P0口控制一个数码管显示,让它循环显示0~9等十位数字,时间间隔为1秒钟。

利用查表程序可以完成BCD与七段码的转换,从而取代硬件七段译码电路,查表程序本身并无复杂之处,需要注意的是七段码的取值,因为七段数码管有共阳极及共阴极之分(参考本站数码管的相关文章)。

共阳极是低电平有效时有效输入。共阴极是高电平时有效输入(所以在C51单片机要使发光二极管点亮,数码管是共阳极的就要让I/O口的电位变为低电位.如果是共阴极的就是合I/O口的电位变为高电位),因些不同的器件会有不同的数码值。另外引脚信号与码位的对应关系也会影响码值,即引脚可以由高到低排列(7-1),也可以由低到高排列(1-7)。本实验的数码管为共阳极,采用由高到低的排列(特别说明.本站的学习工具全部为共阳极接法)。

例如对应0的二进制代码为11000000本实验在本站推出的实验板及学习套件上可直接使用。请参照本站产品实验部份原理图。

***************************源程序******************************

ORG 0100H ;程序起始地址

MAIN: MOV R2,#00H ;段码地址表指针清零

MOV DPTR,#TAB ;指向段码地址表起始地址

DSUP: MOV A,R2 ;将R2的内容送入累加器A

MOVC A,@A+DPTR ;累加器的值与从数据表中取出的数码显示值相加后送入累加器A

MOV P0,A ;将累加器的值送入P0口显示

MOV R1,#11111110B ;将11111110B(位选P2.0)送入寄存器R1

MOV P2,R1 ;将R1的值送入P2口进行位选

LCALL YSH1S ;调用延时1秒子程序

INC R2 ;段码地址表指针加1

CJNE R2,#0AH,DSUP ;如果0-9显示完毕,程序重新开台执行

SJMP MAIN ;跳转到MAIN入口

YSH1S:MOV R3,#05H ;延时1秒子程序

LOOP0:MOV R4,#0C8H

LOOP1:MOV R5,#0FAH

XHD: DJNZ R5,XHD

DJNZ R4,LOOP1

DJNZ R3,LOOP0

RET

TAB: DB 0C0H ;0-9段码表

DB 0F9H

DB 0A4H

DB 0B0H

DB 99H

DB 92H

DB 82H

DB 0F8H

DB 80H

DB 90H

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值