請教大神,我想使用按鍵控制數碼管顯示不同的內容,為啥實現不了呢,同一個按鍵,按一次顯示溫度、按一次顯示時間,如此循環。按鍵加了延時后,按下去后數碼管會變黑。求幫我分析下。
單片機源程序如下:
- u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9的值
- u8 DisData[8];
- u8 DisplayData[8];
- u8 Data[8];
- u8 keypro() //按鍵處理函數
- {
- u8 i,flag=0,t=0;
- if(k1==0)
- {
- if(k1==0)
- {
- for(i=0;i<2;i++)
- {
- delay2s();
- flag++;
- if(flag==2)flag=0;
- }
- }
- //while(!k1);
- }
- switch(flag)
- {
- case (0):t=0;break;
- case (1):t=1;break;
- }
- return t;
- }
- void dyna() \\數碼管顯示函數
- {
- unsigned int i;
- for(i=0;i<8;i++)
- {
- switch(i)
- {
- case (0):SA=0;SB=0;SC=0;break;
- case (1):SA=1;SB=0;SC=0;break;
- case (2):SA=0;SB=1;SC=0;break;
- case (3):SA=1;SB=1;SC=0;break;
- case (4):SA=0;SB=0;SC=1;break;
- case (5):SA=1;SB=0;SC=1;break;
- case (6):SA=0;SB=1;SC=1;break;
- case (7):SA=1;SB=1;SC=1;break;
- }
- switch(keypro())
- {
- case 1:Data[i]=DisplayData[i];break;
- case 0:Data[i]=DisData[i];break;
- }
- GPIO_DIG=Data[i];
- delay(20);
- GPIO_DIG=0x00;//消隱
- }
- }
復制代碼
|