天祥板子只有6位數(shù)碼管,樓主初學單片機寫這個程序有點難度。給你稍改一下基本可以滿足設(shè)計目標。
- #include<reg52.h>
- #include<intrins.h>
- sbit dula=P2^6; //送段選數(shù)據(jù)的那個鎖存端,對應(yīng)U1鎖存器(后面有圖)
- sbit wela=P2^7; //送位選數(shù)據(jù)的鎖存端,對應(yīng)U2鎖存器
- unsigned char code table[]={//數(shù)碼管字庫
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
- // H J K L N o P U
- 0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E};
- unsigned char aa;// ↑這個是數(shù)碼管的字母表,分別實現(xiàn)0—9,a--f的字符顯示,雖然我實在不明白a 怎么顯示。。。
- void delayms(unsigned int xms); //實現(xiàn)延遲
- void main()
- {
- unsigned int i=0,j=0;
- while(1)
- {
- // aa=0XFE; //每次for語句前重啟aa地址
- // for(i=0;i<16;i++)
- // {
- dula=1;
- P0=table[i];
- dula=0;
- // P0=0Xff;
-
- aa=~(0x01<<i%6);
- wela=1;
- P0=aa; //共陰極接法,0的時候?qū)?yīng)的數(shù)碼管亮
- wela=0;
- delayms(1000);
- i=++i%24;
- // aa=_crol_(aa,1);
- // }
- // if(j>15)
- // j=0; //防j越界
- }
- }
- void delayms(unsigned int xms)
- {
- unsigned int p,q;
- for(p=xms;p>0;p--)
- for(q=110;q>0;q--);
- }
復制代碼 |