八段数码管动态显示(汇编+C语言)

本文介绍了数码管动态显示的工作原理,使用单片机控制数码管的动态驱动,通过C语言和汇编代码实现了一个60秒倒计时程序,展示了如何利用位选通和分时轮流显示来达到无闪烁效果并节省I/O资源。
摘要由CSDN通过智能技术生成

显示数码管60S倒计时程序。

原理

数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱 动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另 外为每个数码管的公共极 COM 增加位选通控制电路,位选通由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是 那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我 们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数 码管就不会亮。 透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显 示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为 1~2ms, 由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同 时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会 有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且 功耗更低。

电路图

汇编代码

        ORG 0000H;程序入口地址
	    AJMP	START;跳转到START程序
	    ORG 0040H
	  
START:  MOV   DPTR, #TAB;建表将TAB所在的地址赋值给DPTR
		MOV   R1, #6;十位
		MOV   R0, #0;个位
		AJMP  DISPLAY
TENS:	MOV   R0, #10;个位填充,十位减1
		DEC   R1
UNITS:	DEC   R0;个位减1同时填充R5
		MOV   R5, #250
DISPLAY:MOV   A,R1
		MOVC  A,@A+DPTR;基地变址寻址
		MOV   P3,#0FEH
		MOV   P2,A;显示
		LCALL DELAY
		MOV   A,R0
		MOVC  A,@A+DPTR;基地变址寻址
		MOV   P3,#0FDH
		MOV   P2,A;显示
		LCALL DELAY
		DJNZ  R5,DISPLAY;每显示一个数用时大约1s
		CJNE  R0,#0,UNITS;个位0不等于跳转
		CJNE  R1,#0,TENS;十位0不等于跳转
		SJMP START 

DELAY:  MOV   R7,#250
D1:	    MOV   R6,#4
D2:	    DJNZ  R6,D2
	    DJNZ  R7,D1
	    RET
TAB:
        DB   3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH
END

C语言代码

#include <REGX52.H>

unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,

											0x6d,0x7d,0x07,0x7f,0x6f};//共阴不带小数点段码表

void delay_ms(unsigned int ms)//ms延时函数
{
	unsigned int i,j;
	for(i=ms;i>0;i--)
		for(j=110;j>0;j--);
 
}

void main()
{
	while(1)
	{
		unsigned char i,j;
		for(i=60;i>0;i--)//60s
		{
			for(j=100;j>0;j--)//大约1s
			{
				P3=0xfe;//位选
				P2=tab[i/10];//显示十位
				delay_ms(5);
				P3=0xfd;//位选
				P2=tab[i%10];//显示个位
				delay_ms(5);
			}
			
		}
		
	}
}

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值