所謂動態顯示,表面看著是同時顯示,其實是用數碼管的動態顯示方式 ,即每一時刻只有一位位選線有效,其他的都不顯示。只要控制好每位數碼管點亮顯示的時間和間隔,就可造成同時顯示的現象,因此用盡量最低的延時函數約1ms。此處我用6個數碼管顯示一段自定義字符。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (13.04 KB, 下載次數: 71)
下載附件
2018-12-5 17:26 上傳
單片機源程序如下:
- #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)
2018-12-5 09:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|