數(shù)碼管動態(tài)依稀顯示數(shù)字1-2-3-4-5-6-7-8,所謂動態(tài)顯示,實際上就是讓數(shù)碼管不斷掃描,我們間隔很短的時間給第一位,第二位……數(shù)碼管分別賦值,如果時間短短我們的眼睛看不到間隔,就是一排數(shù)字。
proteus原理圖:
proteus效果圖:
程序代碼:
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^0;
sbit wei=P2^7;
uchar code table_wei[]={//斷選顯示字符的16進制碼
0x06,0x5b,0x4f,
0x66,0x6d,0x7d,
0x07,0x7f,0x7f};
uchar code table_duan[]={//位選控制的16進制碼
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,0x7f};
void delay(uint delay_time);
void main()
{
while(1)
{
uint i;
for(i=0;i<8;i++)
{
wei=1;//打開位選開關(guān)
P0=table_wei[i];
wei=0;//關(guān)閉位選開關(guān)
duan=1;//打開斷選開關(guān)
P0=table_duan[i];
delay(20);
duan=0;//關(guān)閉斷選開關(guān)
}
for(i=8;i>0;i--)
{
wei=1;
P0=table_wei[i];
wei=0;
duan=1;
P0=table_duan[i];
delay(10);
duan=0;
}
}
}
void delay(uint delay_time)//延時1ms子程序
{
uint x,y;
for(x=delay_time;x>0;x--)
for(y=112;y>0;y--)
{;}
}