數(shù)碼管滾動顯示數(shù)字程序
/************************************************
跳線設(shè)置:默認
顯示效果:012345 這幾個數(shù)字在51hei單片機板子的后6個數(shù)碼管中滾動顯示
************************************************/
#includereg52.h> //頭文件
#includeintrins.h>
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,//數(shù)碼管顯示的數(shù)值
0x4f,0x66,0x6d,0x00,0x00,0x00,0x00,
0x00,0x00,0x3f,0x06,0x5b,0x4f,0x66};
sbit DUAN=P2^6; //74HC573的LE端 U1 LED的段選端
sbit WEI=P2^7; //74HC573的LE端 U2 LED的位選端
uchar flag; //定義標志位
void main() //主函數(shù)
{
uchar i,j,k,h,cnt;//定義局部變量
TH0=0XF7; //裝入初始值,時間約為2.5ms
TL0=0X00;
ET0=1; //開分控
EA=1; //開總控
TR0=1; //啟動定時器
while(1)
{
j=cnt+6; //控制循環(huán)的數(shù)值
for(k=0;k150;k++) // 延時
{
h=0xfb; //準備點亮數(shù)碼管
for(i=cnt;ij;i++)
{
WEI=1; //讓位選的這個74hc573處于直通狀態(tài),也就是輸入0,輸出也是0,輸入1輸出也是1
P0=h; //點亮對應(yīng)的數(shù)碼管
WEI=0; //鎖存 也就是保持74hc573現(xiàn)在這個時刻的輸出狀態(tài)一直不變
DUAN=1; //同上哦
P0=table[i]; //顯示對應(yīng)的數(shù)值
DUAN=0;
while(!flag); //延時2.5ms
flag=0; //標志位清零,準備下次顯示
DUAN=1;
P0=0x00; //關(guān)閉數(shù)碼管,消隱
DUAN=0;
h=_crol_(h,1); //循環(huán)左移
}
}
cnt++; //加1,確定哪些數(shù)值顯示
if(cnt==12) //移位的次數(shù)
cnt=0; //清零,準備下次顯示
}
}
void time() interrupt 1 //定時器0
{
TH0=0XF7; //裝入初值
TL0=0X00;
flag=1; //標志位置1
}
評論