![]() |
發布時間: 2021-5-11 22:14
正文摘要:小白求助!本來想達成按按鍵發出聲音然后顯示數字的功能,同時數字可以無限隨著按鍵向左移動。于是我注釋了if(num<=8)的語句,目的就是為了按鍵數字無限向左移動,但是這樣子按鍵超過10次且不清除數字的時候,單片 ... |
大佬,怎么刪除字符,比如說按鍵按錯了,想要刪除數碼管顯示的錯誤數,怎么辦啊? |
wulin 發表于 2021-5-26 06:06 找到問題了,我換臺電腦就可以了。 |
烏拉拉嗚 發表于 2021-5-25 23:57 消隱問題是顯示函數沒有處理好,不在按鍵掃描函數。 |
wulin 發表于 2021-5-25 06:02 非常感謝前輩!終于弄好了,不過又出現了消影小問題,應該是我的鍵盤掃描函數的原因,我再想辦法改改,單片機真的好磨人呀! |
烏拉拉嗚 發表于 2021-5-24 21:20 uchar data key_buf[9]={0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xff};//顯示緩沖數組長度9,初值任意填寫。 key_buf[8]=table[KeyValue];//將當前鍵值保存在緩沖數組的最后并覆蓋上次保存的鍵值 for(i=0;i<8;i++) key_buf=key_buf[i+1];//循環8次由后向前逐一覆蓋替換保存的鍵值 數碼管只顯示key_buf[0]~key_buf[7]就達到隨按鍵左移顯示鍵值的目的 |
wulin 發表于 2021-5-16 07:31 前輩,我發現我之前的問題了,就是我定義的緩沖數組只有8個儲存空間,所以按鍵超過儲存空間時(按鍵次數超過8時),單片機就會死機,而且用我的代碼,緩沖數組最多只能定義2的6次方的儲存空間。 但是前輩的代碼可以實現無限左移動,并且沒有緩沖數組的限制,小弟不才,沒有看懂前輩的代碼,不是很清楚前輩的代碼是如何達到目的的,肯請前輩指教。 |
wulin 發表于 2021-5-16 07:31 非常感謝~ |
烏拉拉嗚 發表于 2021-5-14 21:50 改好了 ![]() |
wulin 發表于 2021-5-13 21:25 請前輩幫我看看代碼,雖然知道功能但是不太會用代碼表達呀。
|
烏拉拉嗚 發表于 2021-5-13 20:22 開兩個定時器,一個隨鍵值控制喇叭發聲頻率,一個控制持續時間。不過要想聲音好聽就得添加DA轉換和按鍵力度檢測。 |
wulin 發表于 2021-5-13 08:05 謝謝大佬,不過我放控制中斷的語句進去,揚聲器就會一直響 |
烏拉拉嗚 發表于 2021-5-12 09:51 不會死機,不受中斷干擾,逐鍵左移顯示鍵值。 ![]()
|
烏拉拉嗚 發表于 2021-5-12 09:51 數碼管顯示那里不要管邏輯處理,只需要做到接到什么數據顯示什么數據就行。 鍵盤讀到的數據出來起來就更簡單了,比如一開始是12345678,又讀到一個9,就這樣處理, BUF = 12345678; BUF = ((BUF << 1) | 9) & 0XFF; 這樣就保證了數據只有8位,然后送入顯示的函數進行顯示 |
天ノ憶 發表于 2021-5-12 09:21 那怎么用程序表達顯示最近輸入的8位吶? 我現在的程序可以顯示最近八位,但是我想不通為什么會死機呀 |
你要知道,你無論移動多少數據,到最后顯示的只有8位,所以只要考慮8位顯示就行了,左移之后顯示低8位,就能達到你要的效果 |