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