顯示不同的數(shù)字是動態(tài)數(shù)碼管的顯示,動態(tài)顯示是多個(gè)數(shù)碼管,交替顯示,利用人的視覺暫停作用使人看到多個(gè)數(shù)碼管同時(shí)顯示的效果。就像我們看的電影是有一幀一幀的畫面顯示的,當(dāng)速度夠快的時(shí)候我們看到它就是動態(tài)的。當(dāng)我們顯示數(shù)碼管的速度夠快的時(shí)候,也就可以看到它們是同時(shí)顯示了。動態(tài)掃描顯示是指輪流向各位數(shù)碼管送出段選(字形碼)和位選,由于人眼的視覺殘留作用,使人的感覺好像各位數(shù)碼管同時(shí)都在顯示。
下面的例程可以參考一下:
/*********************************************************************************
*實(shí)驗(yàn)名 :數(shù)碼管動態(tài)顯示
*實(shí)驗(yàn)效果 :8位數(shù)碼管顯示數(shù)字12345678
*注意 : 每位數(shù)碼管顯示之間延遲時(shí)間小于3ms可看見8位數(shù)碼管同時(shí)點(diǎn)亮
*
*********************************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DU=P2^6;
sbit WE=P2^7;
uchar code sz[17]={0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d ,
0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 ,
0x5e , 0x79 , 0x71 , 0x00}; //0-9&A-F&“不顯示” 字型碼
void delay(uint xms) //xms等于幾就延遲幾毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
void main()
{
while(1)
{
P0=sz[8]; //數(shù)字8
DU=1;
DU=0;
P0=0x7f;
WE=1;
WE=0;
delay(2); //延遲小于3ms人眼則看到8位數(shù)碼管同時(shí)點(diǎn)亮
P0=sz[7]; //數(shù)字7
DU=1;
DU=0;
P0=0xbf;
WE=1;
WE=0;
delay(2);
P0=sz[6]; //數(shù)字6
DU=1;
DU=0;
P0=0xdf;
WE=1;
WE=0;
delay(2);
P0=sz[5]; //數(shù)字5
DU=1;
DU=0;
P0=0xef;
WE=1;
WE=0;
delay(2);
P0=sz[4]; //數(shù)字4
DU=1;
DU=0;
P0=0xf7;
WE=1;
WE=0;
delay(2);
P0=sz[3]; //數(shù)字3
DU=1;
DU=0;
P0=0xfb;
WE=1;
WE=0;
delay(2);
P0=sz[2]; //數(shù)字2
DU=1;
DU=0;
P0=0xfd;
WE=1;
WE=0;
delay(2);
P0=sz[1]; //數(shù)字1
DU=1;
DU=0;
P0=0xfe;
WE=1;
WE=0;
delay(2);
}
}
|