![]() |
發布時間: 2021-11-9 18:57
正文摘要:單片機按鍵實驗,有兩個問題想請教 1.如圖,只有8多了一個小點,但是不知道代碼如何改才能去掉小點? 2.獨立按鍵k3,k4沒有反應,只有1,2可以控制,代碼如何改。代碼放在這里,感謝。 單片機源程序如下: # ... |
主函數里最簡化,只寫 P0=0x00; 燒進單片機通電,用萬用表測試P0八個管腳電平和對應排針的電平,正常情況應該都是低電平。如果有異常,就要自己跑電路了 還有要注意就是,把除了P30和P31之外的無用連接拔掉。我看到是紅圈圈里的跳線,紅外接收器,溫度IC,或者還有其他,自己檢查。 ![]() |
你說的,在別的“單片機”上,是指別的單片機裝在這塊板子上,還是這個代碼,寫到另一塊同樣板子的單片機上? |
一天多了。還沒搞定? 如果只是LED亂顯示,這個故障其實用很簡單的方法就能找出問題所在了: 代碼先所有段不亮,再一段一段地點亮,看實際效果, 所有段不點亮,但“DP”還是亮了,說明硬件肯定壞了。重點就在鎖存器; 一段一段地點,只有某段亮時,“DP”亮了,說明該段與“DP”存在短路,可能是PCB、也可能是鎖存器; 如果都是正常的,說明是之前的代碼有問題。 |
茴香打鹵面 發表于 2021-11-10 16:07 樓主什么看不懂?電路看不懂還是代碼看不懂?在8樓回復的文字總該能看懂吧。你這個程序可以在天祥實驗板上運行,不可以在普中實驗板上運行。因為兩者單片機雖然相同但其它外圍電路差異很大。這是用你的原程序按天祥的相關電路做的仿真,只改了按鍵端口定義和添加beep=1復位,其它未做任何改動。你探討其它細枝末葉都是隔靴瘙癢。 ![]()
|
188610329 發表于 2021-11-10 17:48 你這里的 <= 加上后目標未創建,去掉后才可以運行。但是還是沒有把.去掉。可是這個代碼在別的單片機上也是有.的 |
茴香打鹵面 發表于 2021-11-10 17:34 我懷疑…… 鎖存器這里可能有問題,當拉高多的引腳電平時會把 7 腳位一起拉高。 DU = 1;//打開段選鎖存器 P0 = tabel[num];// _nop_(); _nop_(); <= 你在這里 加兩個nop 看看能不能有效果, 如果有效就湊活著用,如果無效,只能聯系賣家看能不能換了,這個屬于硬件問題了。 DU = 0;//鎖存段選數據 |
188610329 發表于 2021-11-10 16:34 是的,只有點亮了 |
警告不用管,沒有調用那個數組,只要恢復那個 P0 = tabel[num]; 警告就沒了,你照著這樣寫進單片機,看看除了 . 還有什么段是亮的, 好分析是什么位子出了問題, 基本可以確定,你程序沒有問題,是板子的硬件問題。就看看有沒有可能自己排除。 |
wulin 發表于 2021-11-10 14:00 很厲害,雖然我看不懂 |
茴香打鹵面 發表于 2021-11-10 12:34 這是按普中的相關電路做的仿真 ![]() |
wulin 發表于 2021-11-10 06:55 感謝回復,但是問題沒有解決。8還是會有點,每個8都有,且獨立按鍵3雖然有反應,但是只是對數字閃爍了一下,按鍵4還是沒有反應 |
茴香打鹵面 發表于 2021-11-9 21:53 樓主沒有按照實驗板實際電路寫程序,出現奇怪現象是必然的。建議樓主先用此板配套示例程序測試,熟悉后再按自己意圖修改。隨便把別人的程序加自己意圖胡亂修改不會取得成功。給樓主按普中實驗板電路修改代碼,基本符合樓主意圖。
|
茴香打鹵面 發表于 2021-11-9 21:49 我知道不對,我只是看看是電路問題,還是數碼管問題,現在基本可以認為是電路問題了, 你把這句: P0 = tabel[num];// 變成 P0= 0x80; 看看除了 點, 還有哪個段會亮?(正常的話,應該只有點會亮) |
Hephaestus 發表于 2021-11-9 20:35 大哥認為錯在哪里?可以指點一下嗎 |
188610329 發表于 2021-11-9 20:00 還是不對,0到8有點,8到0也有點,每個8都有 |
gongnn 發表于 2021-11-9 20:10 0x7f沒錯,問題肯定不在這里。 |
uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,}; 修改這里的第9個 |
WE = 1;//打開位選鎖存器 P0 = 0XFE; //1111 1110 WE = 0;//鎖存位選數據 這里的 P0 = 0; 8個燈都開看看情況,是每個8都多點,還是只有第一個 8 多點。 |