|
發布時間: 2025-10-3 15:05
正文摘要:發貼的時候有文字的,不知怎么沒有了,補一下: 電路如圖,接了8個按鍵,參考壇子里的代碼,按SW1、SW2、SW3、SW5、SW7時,數碼管可以累加計數。但不知如何得到鍵值,試驗了很多種方法都不行。 要求是按SW1、S ... |
xiaobendan001 發表于 2025-10-21 07:26 正在學習,如有問題再次請教,謝謝! |
dcc60 發表于 2025-10-20 20:37 還是不懂,你得到的鍵不是0-7嗎?哪個按鍵按下顯示0?松開又顯示1?所有的,還是第0個?或者第一個? |
man1234567 發表于 2025-10-16 16:01 就是本論壇找的,怎么也搞不明白。 |
|
用你的方法成功顯示1234567,對應的按鈕會固定顯示一個數字。我想要的是個按鈕,如下面的代碼,按下顯示0,松開顯示1,卻怎么也不成功,能否再指點指點。
|
|
1、看芯片手冊自己完成代碼,老的手冊可能有現成的代碼; 2、網上或廠家找例程,這樣少走彎路,并且過關率超高; 3、本論壇仔細找找,大概率有你想要的找到可偷著樂。 |
|
謝謝!我試試。。。。。 |
fzhlpp 發表于 2025-10-5 10:55 感謝給出思路。 雖然顯示的是897,實際上那個i是個定值8,因為+1、-1了。且不論按哪個鍵i都是8。 實驗中已經把“位”用0-7代替了,我想要的結果是按不同的鍵,i是不同的值。 |
|
dcc60 發表于 2025-10-4 14:45 組合試試這樣:
然后取出鍵值0-7。 |
dcc60 發表于 2025-10-4 14:45 快了,你應該馬上找到原因并解決了,能顯示897肯定能顯示任何你想要的數字,我剛開始學1638的時候也是復制別人的代碼然后再慢慢分析吸收利用實現自己的功能,只是開始對代碼的分析還不到位,比如你的數碼管位數,在代碼里就是那個024,也就是0代表實際你數碼管第一個的意思,對不對?2代表實際你的第三個數碼管的意思對吧?那么你應該是實際有8個數碼管是不是?你可以先直接像這樣012345678替換*號試試Write_DATA( * ,tab[i+1]);
|
fzhlpp 發表于 2025-10-4 10:22 i=Read_key(); Write_DATA(0,tab[ i]); Write_DATA(2,tab[i+1]); Write_DATA(4,tab[i-1]); 用上面的代碼試驗,按下顯示8、9、7 |
xiaobendan001 發表于 2025-10-4 07:50 就是不知道讀出來的是啥,也放在數碼管里試了。 沒按之前i應該是0,那幾個鍵按了之后好象都是8。
分別顯示8、9、7 |
fzhlpp 發表于 2025-10-4 10:22 試了,所有按鍵不起作用。 |
fzhlpp 發表于 2025-10-4 10:22 意思是8個按鍵分別給8個數碼管++? |
|
while (1) { //以下為讀按鍵 i=Read_key(); //讀按鍵值 if(i<8) { num[i]++; while(Read_key()==i); //等待按鍵釋放 if(num[i]>15) num[i]=0; if(i==1)Write_DATA(i*2,tab[num[1]]); if(i==2)Write_DATA(i*2,tab[num[2]]); if(i==3)Write_DATA(i*2,tab[num[3]]); if(i==4)Write_DATA(i*2,tab[num[4]]); if(i==5)Write_DATA(i*2,tab[num[5]]); if(i==6)Write_DATA(i*2,tab[num[6]]); if(i==7)Write_DATA(i*2,tab[num[7]]); if(i==8)Write_DATA(i*2,tab[num[8]]); // Write_allLED(1<<i); } } 直接復制替換你的大循環函數試試 |
xiaobendan001 發表于 2025-10-4 07:50 ""是斜體字的意思? |
dcc60 發表于 2025-10-3 20:50 接K1,c[i ]里面大概是04或者40,所以第二個循環能得到啥結果? 為啥非要把鍵值弄成一個數字? 讀出來啥就用啥不行嗎?不知道讀出來的啥?直接先放數碼管上面顯示一下不就行了? 然后記錄下來,再放代碼里面嘛。 如果接K3,你這代碼應該可以用吧 |
xiaobendan001 發表于 2025-10-3 17:33 發貼的時候有文字的,不知怎么沒有了,補一下: 電路如圖,接了8個按鍵,參考壇子里的代碼,按SW1、SW2、SW3、SW5、SW7時,數碼管可以累加計數。但不知如何得到鍵值,試驗了很多種方法都不行。 要求是按SW1、SW2時,能得到1、2或0x01、0x02就行。 |
| 看不懂啊,目的是啥 |