![]() |
發布時間: 2025-7-5 14:30
正文摘要:用51單片機實現籃球計分器,有加1/2分、減1/2分、清零功能,分數范圍為00-99。實物已經連接出來并實現功能,但是仿真不知道為何兩個一位數碼管一直顯示88,按鍵按下可以正常加減數,但是松開按鍵又是88 #in ... |
還不如整一個二位一體的數碼該管。這樣兩個單在一起的數碼管在一起確實是不太好寫,而且書寫籃球比賽計分器的同時我們是需要往更高級的方向進行描述的。我們也是需要向往更高級的代碼進行分析的,而且你這點錯誤如果解決不了的話我們確實是可以自己去網上尋找點AI的幫助的哦這樣確實是可以對你代碼進行分析的哦。 |
多情不自作 發表于 2025-7-6 12:33 只要在MCU屬性里設置晶振頻率即可,VCC和RST都是系統默認的,不需要畫出來。 |
WL0123 發表于 2025-7-5 21:25 可能是我別的地方有問題,你這個為什么不用搭最小系統嗎 ![]() |
xianfajushi 發表于 2025-7-5 16:59 好像是的,謝謝大佬 |
### 問題分析 籃球計分器在按鍵操作時能正常計數,但松開后數碼管顯示固定為“88”,這是動態顯示刷新機制不足導致的典型問題。在仿真環境中,由于缺乏實際硬件的電荷保持特性(如電容濾波、余暉效應),若動態掃描頻率不足,數碼管會因無法持續獲取正確數據而顯示異常。當前代碼中`display()`函數僅在按鍵處理時被調用,主循環未實現高頻掃描,導致非按鍵狀態下數碼管輸出默認異常值。 ### 解決方案 修改后的代碼通過優化動態顯示邏輯與按鍵處理流程,確保數碼管高頻刷新: 在動態顯示部分,增加靜態變量`position`實現十位與個位的交替掃描,通過`P0=0x00; P2=0x00;`進行消隱處理以避免殘影,并縮短單次顯示延時來提升掃描頻率。按鍵處理上,將檢測邏輯封裝為獨立函數`key_scan()`,通過`key_pressed`標志位標記按鍵狀態,在按鍵釋放循環中持續調用`display()`以實時同步計數變化。主循環采用“先顯示后按鍵”的結構,確保每輪循環都強制刷新數碼管,避免因按鍵處理阻塞顯示更新。 ### 關鍵改進說明 優化后的顯示機制通過`position`變量實現分時掃描,配合消隱操作消除鬼影,使十位(P2口)與個位(P0口)的段碼輸出更穩定。針對仿真環境無硬件保持特性的特點,通過軟件高頻刷新確保`count`變量的實時值同步到數碼管。若數碼管仍顯示異常,需檢查仿真配置(如數碼管是否為共陰類型、端口連接是否正確),或降低仿真速度以匹配軟件掃描頻率。該方案通過動態掃描頻率優化,有效解決了仿真環境下的顯示同步問題。 |
### 問題分析 籃球計分器在按鍵操作時能正常計數,但松開后數碼管顯示固定為“88”,這是動態顯示刷新機制不足導致的典型問題。在仿真環境中,由于缺乏實際硬件的電荷保持特性(如電容濾波、余暉效應),若動態掃描頻率不足,數碼管會因無法持續獲取正確數據而顯示異常。當前代碼中`display()`函數僅在按鍵處理時被調用,主循環未實現高頻掃描,導致非按鍵狀態下數碼管輸出默認異常值。 ### 解決方案 修改后的代碼通過優化動態顯示邏輯與按鍵處理流程,確保數碼管高頻刷新: 在動態顯示部分,增加靜態變量`position`實現十位與個位的交替掃描,通過`P0=0x00; P2=0x00;`進行消隱處理以避免殘影,并縮短單次顯示延時來提升掃描頻率。按鍵處理上,將檢測邏輯封裝為獨立函數`key_scan()`,通過`key_pressed`標志位標記按鍵狀態,在按鍵釋放循環中持續調用`display()`以實時同步計數變化。主循環采用“先顯示后按鍵”的結構,確保每輪循環都強制刷新數碼管,避免因按鍵處理阻塞顯示更新。 ### 關鍵改進說明 優化后的顯示機制通過`position`變量實現分時掃描,配合消隱操作消除鬼影,使十位(P2口)與個位(P0口)的段碼輸出更穩定。針對仿真環境無硬件保持特性的特點,通過軟件高頻刷新確保`count`變量的實時值同步到數碼管。若數碼管仍顯示異常,需檢查仿真配置(如數碼管是否為共陰類型、端口連接是否正確),或降低仿真速度以匹配軟件掃描頻率。該方案通過動態掃描頻率優化,有效解決了仿真環境下的顯示同步問題。 |
程序寫的不算好,但顯示沒有問題。 ![]() |
display() 里面先清0再賦值試試 |
這種情況通常是數碼管無消隱處理代碼導致。 |