![]() |
發(fā)布時間: 2018-4-24 22:26
正文摘要:這個代碼有問題,按下按鍵不是按順序從0-9的顯示,是跳著顯示,幫看看哪里錯了。 單片機源程序: #include "reg52.h" #define uint unsigned int #define uchar unsigned char uchar code table[]={0x3f,0x06 ... |
共陽數(shù)碼管段碼不對吧 |
fenger112 發(fā)表于 2018-4-26 19:16 這是與你使用的數(shù)碼管是共陰或共陽來確定的 |
對啦,我也剛看明白,學(xué)習(xí)了 |
wulin 發(fā)表于 2018-4-26 07:12 謝謝了,不過P0=~table;這句要改成P0=~table;才行 |
fenger112 發(fā)表于 2018-4-25 20:43 #include "reg52.h" #define uint unsigned int #define uchar unsigned char uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共陰數(shù)碼管碼表0~F sbit key_s1 = P3^2; //獨立按鍵S1 //uchar num; void delay(uint z); void main() { uchar i=0; P2 = 0xff; P0=~table; while(1) { if(key_s1 == 0) { delay(20); //按鍵消抖 if(key_s1 == 0) { i++; if(i>9) i=0; P0=~table; while(!key_s1); //松手檢測 // num++; // if(num == 10) // num = 0; } } } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } |
現(xiàn)在是正常了,可是怎么按下按鍵,直接從0跳到2,怎么回事啊,大家在幫我看看哪里出問題了。 #include "reg52.h" #define uint unsigned int #define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共陽數(shù)碼管碼表 sbit key_s1 = P3^2; //獨立按鍵S1 uchar num; void delay(uint z); void main() { uchar i; P2 = 0xff; while(1) { if(key_s1 == 0) { P0=~table[i]; i++; if (i>9) i=0; delay(20); //按鍵消抖 if(key_s1 == 0) num++; if(num == 10) num = 0; while(!key_s1); //松手檢測 } } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } |
數(shù)碼管數(shù)組用反了吧? |
邏輯混亂了 你現(xiàn)在實現(xiàn)的是0-f的抽獎顯示吧 1.你的16次for循環(huán)應(yīng)該去掉 2.要顯示的應(yīng)該是num,不是i 3.delay(1000)影響消抖,且你不按按鍵數(shù)碼管顯示數(shù)字不會變,這句應(yīng)該去掉 暫時看到那么多 |
你的程序思路不對啊。 你先for,你知道你按鍵時,for到哪里了?所以,你按下鍵時,真的是碰運氣,for到哪,就是哪兒,所以,不會跟你設(shè)想的按一下,走一個字。 我是這樣改你的程序的 void main() { uchar i; P2 = 0xff; while(1) { if(key_s1 == 0) { delay(1000); P0=table[i]; i++; if (i>9) i=0; delay(20); //按鍵消抖 if(key_s1 == 0) num++; if(num == 10) num = 0; while(!key_s1); //松手檢測 } } } 另外,我還不明白,你的num變量是干什么的,沒什么用啊。 |
參與人數(shù) 1 | 黑幣 +5 | 收起 理由 |
---|---|---|
![]() | + 5 |
Powered by 單片機教程網(wǎng)