ZKX's LAB

数码管汇编原理 51单片机八位数码管两位动态显示,用汇编语言。我编写的程序始终只能显示一位,求大神指导。

2021-04-09知识12

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

下面是单片机数码管原理图,用汇编语言根据下面的原理图写一个动态显示数码管的程序 unsigned char code SEG7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char DISP_BUFF[]={0,0,0,0,0,0,0,0}void DelayMS(unsigned int x){unsigned char i;while(x-)for(i=200;i>;0;i-);}void display(unsigned char x){unsigned char i,w=128;for(i=0;i;i+){/显示八位数码P0=SEG7[DISP_BUFF[i]];P2=w;DelayMS(1);P2=0;w=_cror_(w,1);}}

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

#数码管汇编原理

qrcode
访问手机版