|
|
各位高手你們好!我這個(gè)51開發(fā)板(STC89C52)是10多年前的板子;板子上是2組4位共陽數(shù)碼管,組成的8位數(shù)碼管;沒有
鎖存器;位選是用三極管驅(qū)動(dòng)的。請(qǐng)高手們。幫我優(yōu)化一下這個(gè)程序。謝謝!!!
循環(huán)顯示.png (7.31 KB, 下載次數(shù): 50)
下載附件
2020-3-26 23:03 上傳
/*****八位數(shù)碼管循環(huán)顯示數(shù)字0--9;這是個(gè)笨方法,請(qǐng)高手指點(diǎn),謝謝!*****/
單片機(jī)源程序如下:
- #include "reg52.h"
- #define uchar unsigned char
- #define uint unsigned int
- uint i,j;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x00,0x90};//段選數(shù)字0-9;
- uchar code wela[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選開關(guān)
- void delay()
- {
- unsigned char i,j;
- for(i=250;i>0;i--)
- {
- for(j=250;j>0;j--);
- }
- }
- void main()
- {
- while(1)
- {
- for(i=0;i<8;i++)
- {
- P2=wela[i] ;
-
- P0=table[i];
- delay();
- delay();
- delay(); }//第一次依次顯示0--7;
- for(i=0;i<2;i++)
- {
- P2=wela[i];
- P0=table[8+i];
- delay();
- delay();
- delay();
- }//循環(huán)下來,第一位顯示8,第二位顯示9;
- for(i>=2;i<8;i++)
- {
- P2=wela[i];
- P0=table[i-2];
- delay();
- delay();
- delay();
- }//從第三位到第八位顯示0--5;
- for(i=0;i<4;i++)
- {
- P2=wela[i];
- P0=table[6+i];
- delay();
- delay();
- delay();
- }//繼續(xù)從第1位到第四位顯示6--9;
- for(i>=4;i<8;i++)
- {
- P2=wela[i];
- P0=table[i-4];
- delay();
- delay();
- delay();
- }//從第五位到第八位顯示0--3;
- for(i=0;i<6;i++)
- {
- P2=wela[i];
- P0=table[4+i];
- delay();
- delay();
- delay();
- }//從第1位到第六位顯示4--9;
- for(i>=6;i<8;i++)
- {
- P2=wela[i];
- P0=table[i-6];
- delay();
- delay();
- delay();
- }//從第七位到第八位顯示0和1;
- for(i=0;i<8;i++)
- {
- P2=wela[i] ;
- P0=table[i+2];
- delay();
- delay();
- delay(); }//從第一位到第八位顯示2--9;完成一個(gè)整
- 循環(huán)。
- }
- }
復(fù)制代碼
|
|