在微機原理與接口技術的學習旅程中,期末大作業成為了檢驗知識掌握程度與實踐能力的關鍵環節。本次我選擇設計并仿真一個 4 位搶答器系統,通過這個項目,深入探索 8086CPU 及其接口技術的實際應用。附完整壓縮包下載。
一、系統設計思路
(一)功能需求剖析
設計 4 位搶答器,核心功能是實現 4 位選手公平搶答。系統需精準判斷首位按下按鍵的選手,在選手搶答成功后,對應的指示燈亮起,數碼管同步顯示其編號(1 - 4)。同時,在主持人未發出搶答開始信號前,選手搶答操作無效;主持人按下復位按鈕后,系統能迅速清除搶答狀態,為下一輪搶答做好準備。
(二)硬件架構搭建
- 8086CPU:核心掌控者:8086CPU 作為系統核心,猶如大腦般指揮著整個系統的運作。它執行指令集,負責數據的讀取、處理以及邏輯判斷。與 8255 芯片攜手,實時檢測選手按鍵狀態;將選手編號巧妙轉換為 BCD 碼,實現數碼管的準確顯示;嚴格把控搶答流程,確保公平公正,只有首位搶答者能成功,同時協調各芯片有序工作,保障系統穩定運行。
- 8255A:并行接口橋梁:8255A 芯片在系統中扮演著重要的并行接口角色。A 口連接 4 位選手的按鍵,借助上拉電阻維持高電平狀態,選手按鍵按下時,對應引腳電平變低,8086CPU 據此讀取 A 口數據,獲取按鍵狀態。B 口連接選手指示燈與數碼管位選控制端,用于顯示搶答結果;PB4 連接允許搶答指示燈,通過電平變化控制其亮滅。C 口則負責接收搶答開始信號(PC0)和復位信號(PC1) 。
- 74ls373:地址鎖存保障:為解決 8086CPU 地址與數據總線復用帶來的問題,74ls373 芯片登場。當 8086CPU 與外設交換數據時,它會輸出地址并發出 ALE 信號。74ls373 的 LE 引腳與 ALE 相連,ALE 高電平時透明傳輸地址,低電平時鎖存地址信息,確保外設能依據準確的地址與 CPU 通信,避免數據傳輸錯誤,為系統穩定通信奠定基礎。
(三)軟件程序編寫
- 初始化 8255:系統啟動時,首要任務是將 8255 芯片配置為合適的工作模式。通過匯編語言代碼,將控制端口地址存入 DX 寄存器,設置 A 口為輸入模式、B 口為輸出模式、C 口低 4 位為特定功能,同時熄滅所有燈位,為系統后續運行做好準備。
- 等待搶答開始:程序持續檢測裁判發送的搶答開始信號。不斷讀取 8255 芯片 C 口數據,當檢測到 PC0 位為 1(代表開始信號)時,設置允許搶答標志位,并點亮允許搶答指示燈,告知選手可以開始搶答。
- 搶答檢測與處理:進入允許搶答狀態后,程序實時監測 8255 芯片 A 口數據。一旦檢測到有選手按鍵按下(A 口數據不為 0FFH),立即記錄選手編號,并將其轉換為 BCD 碼,通過 B 口輸出控制信號,點亮對應指示燈并在數碼管上顯示編號,同時禁止其他選手再次搶答。
- 復位操作:主持人按下復位按鈕后,系統迅速響應。讀取 C 口數據,當檢測到復位信號(PC1 位特定狀態)時,熄滅所有指示燈,清空數碼管顯示內容,重置允許搶答和搶答標志位,使系統重回初始準備狀態。
二、仿真過程中的挑戰與突破
(一)搶答指示燈閃爍難題
在初始代碼運行時,允許搶答指示燈在搶答過程中頻繁閃爍。經仔細分析代碼邏輯,發現是檢測到搶答開始信號后,后續邏輯處理不當,導致指示燈狀態不斷被錯誤改變。于是,對控制邏輯進行優化,在搶答檢測與處理過程中,僅依據選手按鍵狀態控制指示燈,成功解決了閃爍問題。
(二)數碼管顯示異常困境
數碼管出現顯示亂碼、不完整或閃爍等問題,嚴重影響系統使用體驗。深入排查發現,問題根源在于數碼管刷新頻率不合理以及位選控制信號沖突。通過調整程序速度,確保在合適的時間間隔內更新顯示數據,同時優化位選控制邏輯,有效避免信號沖突,使數碼管能夠穩定、準確地顯示選手編號。
三、最終成果展示
經過不斷調試與優化,4 位搶答器系統仿真取得成功。未開始搶答時,允許搶答指示燈熄滅,選手搶答操作無響應;主持人發出開始信號后,允許搶答指示燈亮起,選手可進行搶答;當有選手成功搶答后,對應指示燈亮起,數碼管清晰顯示選手編號,同時允許搶答指示燈熄滅,其他選手搶答無效;主持人按下復位按鈕后,系統迅速復位,準備迎接下一輪搶答。