一、實驗目的1.理解MCS-51單片機中斷系統結構及工作原理; 2.掌握MCS-51單片機中斷系統相關寄存器的設置; 3.掌握利用MCS-51單片機中斷系統實現中斷的軟件設計; 4.掌握KeilC51集成開發環境和Proteus電子仿真軟件的使用。 二、實驗儀器設備 軟件環境:KeilC51、Proteus 三、實驗原理/算法分析
四、實驗內容和步驟 依照課本5.7節設計一個4路搶答器,4個按鍵通過與門接外部中斷引腳,4個LED指示燈指示搶答結果。然后按要求編寫程序,并加載到proteus的AT89C51單片機中,觀察顯示結果。 1. 硬件原理4路搶答器的硬件設計主要包括按鍵輸入、與門邏輯電路、外部中斷引腳和LED指示燈。具體設計如下: 按鍵輸入:4個按鍵分別連接到單片機的P1口的低4位(P1^0、P1^1、P1^2、P1^3)。每個按鍵在按下時會將對應的引腳拉低。 與門邏輯電路:4個按鍵的信號通過與門電路連接到單片機的外部中斷引腳(INT0)。當任意一個按鍵按下時,與門輸出低電平,觸發外部中斷。 外部中斷引腳:單片機的INT0引腳(P3^2)用于接收與門的輸出信號。當檢測到低電平信號時,觸發中斷服務程序。 LED指示燈:4個LED分別連接到單片機的P2口的低4位(P2^0、P2^1、P2^2、P2^3)。當某個按鍵被按下時,對應的LED點亮,表示搶答成功。 2. 算法分析程序的主要功能是實現4路搶答器的邏輯控制,包括按鍵檢測、去抖動處理、搶答結果判斷和LED指示。具體算法如下: 初始化 配置單片機的外部中斷INT0和INT1,允許中斷并設置為下降沿觸發。 初始化P1口為上拉輸入,P2口為輸出,所有LED初始狀態為熄滅。 設置一個標志位flag,用于判斷是否已經有選手搶答成功。 外部中斷0服務程序(INT0): 當檢測到按鍵按下時,進入中斷服務程序。 延時10ms進行去抖動處理,確保按鍵信號穩定。 檢測P1口的低4位,判斷哪個按鍵被按下。 如果沒有選手已經搶答成功(flag == 0),點亮對應的LED,并將flag置為1,表示搶答成功。 如果已經有選手搶答成功,則忽略后續按鍵信號。 外部中斷1服務程序(INT1): 當按下復位按鈕時,進入中斷服務程序。 清除flag標志位,熄滅所有LED,恢復初始狀態,等待下一輪搶答。 五、實驗結果
Keil編譯結果: Proteus仿真結果:
六、實驗總結 1.實驗收獲: 深入理解中斷機制: 通過本次實驗,我深入理解了單片機外部中斷的工作原理,包括中斷的觸發條件、中斷服務程序的編寫以及中斷優先級的設置。中斷機制是嵌入式系統中實現快速響應的關鍵技術,掌握它對于設計實時系統非常重要。 掌握硬件電路設計: 實驗中涉及了按鍵輸入、與門邏輯電路以及LED指示燈的設計。通過實際搭建電路,我學會了如何根據需求選擇合適的硬件元件,并理解了硬件電路與單片機之間的接口關系。這為我今后設計更復雜的嵌入式系統打下了堅實的基礎。 編程能力提升: 在編寫搶答器程序的過程中,我練習了C語言的邏輯控制和模塊化編程。通過合理劃分功能模塊(如初始化模塊、中斷服務模塊等),使代碼更加清晰易讀,也提高了程序的可維護性。同時,我也學會了如何調試程序,解決程序運行中出現的問題。 2. 問題與改進: 問題:程序中存在一些冗余代碼,導致代碼效率較低。 改進:通過優化代碼結構,減少重復代碼,提高程序的運行效率。例如,將按鍵檢測和LED控制封裝成函數,通過函數調用實現功能,使代碼更加簡潔高效。 3.拓展思考: 1.可以在搶答器的基礎上增加計時功能,記錄每個選手的搶答時間。通過單片機的定時器模塊實現計時,并將計時結果顯示在數碼管或LCD顯示屏上。這樣可以增加搶答器的趣味性和實用性。 2.當前的搶答器只能進行一輪搶答,可以通過增加復位按鈕和計數器功能,實現多輪搶答。每輪搶答結束后,按下復位按鈕,系統自動清零并進入下一輪搶答。同時,可以記錄每輪的搶答結果,統計每個選手的得分。
以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,僅方便大家保存):
實驗三 MCS-51單片機中斷實驗.docx
(230.67 KB, 下載次數: 0)
2025-6-11 20:06 上傳
點擊文件名下載附件
|