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