所谓动态显示,表面看着是同时显示,其实是用数码管的动态显示方式 ,即每一时刻只有一位位选线有效,其他的都不显示。只要控制好每位数码管点亮显示的时间和间隔,就可造成同时显示的现象,因此用尽量最低的延时函数约1ms。此处我用6个数码管显示一段自定义字符。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit DUAN=P2^6;
- sbit WEI=P2^7;
- uchar code led[6]=
- {0x05,0x06,0x07,0x08,0x09,0x0a};
- uchar code ledwei[6]=
- {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
- uchar code displaytab[16]=
- {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void delay()
- { uchar x,y;
- for(x=2; x>0; x--)
- for(y=250; y>0; y--); }
- void main()
- { uchar i;
- while(1)
- {
- for(i=0;i<6;i++)
- {
- P0=displaytab[led[i]];
- DUAN=1;
- DUAN=0;
- P0=ledwei[i];
- WEI=1;
- WEI=0;
-
- delay();
- P0=0xff;
- WEI=1;
- WEI=0;
- }} }
复制代码
所有资料51hei提供下载:
数码管动态显示.zip
(28.96 KB, 下载次数: 71)
|