/************************************************ 跳線設置:默認 顯示效果:012345 這幾個數字在51hei板子的后6個數碼管中滾動顯示 ************************************************/ #include<reg52.h> //頭文件 #include<intrins.h> #define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,//數碼管顯示的數值 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() //主函數 { uchar i,j,k,h,cnt;//定義局部變量 TH0=0XF7; //裝入初始值,時間約為2.5ms TL0=0X00; ET0=1; //開分控 EA=1; //開總控 TR0=1; //啟動定時器 while(1) { j=cnt+6; //控制循環的數值 for(k=0;k<150;k++) // 延時 { h=0xfb; //準備點亮數碼管 for(i=cnt;i<j;i++) { WEI=1; //讓位選的這個74hc573處于直通狀態,也就是輸入0,輸出也是0,輸入1輸出也是1 P0=h; //點亮對應的數碼管 WEI=0; //鎖存 也就是保持74hc573現在這個時刻的輸出狀態一直不變
DUAN=1; //同上哦 P0=table; //顯示對應的數值 DUAN=0; while(!flag); //延時2.5ms flag=0; //標志位清零,準備下次顯示 DUAN=1; P0=0x00; //關閉數碼管,消隱 DUAN=0; h=_crol_(h,1); //循環左移 } } cnt++; //加1,確定哪些數值顯示 if(cnt==12) //移位的次數 cnt=0; //清零,準備下次顯示 } } void time() interrupt 1 //定時器0 { TH0=0XF7; //裝入初值 TL0=0X00; flag=1; //標志位置1 }
下載地址:http://www.zg4o1577.cn/ziliao/51hei-5/數碼管_滾動.rar |