51單片機(jī)三路搶答器_第1頁(yè)
51單片機(jī)三路搶答器_第2頁(yè)
51單片機(jī)三路搶答器_第3頁(yè)
51單片機(jī)三路搶答器_第4頁(yè)
51單片機(jī)三路搶答器_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)單片機(jī)課程設(shè)計(jì) 題題 目:目:三三 路路 搶搶 答答 器器 專(zhuān)專(zhuān) 業(yè)業(yè) 班班 級(jí):級(jí):應(yīng)用電子(對(duì)口)應(yīng)用電子(對(duì)口) 姓姓 名:名:徐徐 發(fā)發(fā) 金金 學(xué)學(xué) 號(hào):號(hào):201125110130 指指 導(dǎo)導(dǎo) 老老 師:師: 陸陸 程程 2012-12-16 摘 要 本設(shè)計(jì)是以搶答為基本理念??紤]到依需設(shè)定限時(shí)回答的功能,利用 stc89c52 單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和 記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來(lái),使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使 數(shù)碼管能夠正確地顯示時(shí)間。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開(kāi)始后搶答才有 效,如果在開(kāi)始搶答前搶答為無(wú)效

2、,相應(yīng)犯規(guī)燈亮;開(kāi)始后搶答,即正確按鍵后, 相應(yīng)成功指示燈亮,并開(kāi)始倒計(jì)時(shí),回答問(wèn)題的時(shí)間限定為 10 秒,滿(mǎn)時(shí)后系統(tǒng)計(jì)時(shí) 自動(dòng)復(fù)位及主控復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無(wú)效非法。 關(guān)鍵詞: stc89c52;led 燈;數(shù)碼管;搶答器;計(jì)時(shí) 目錄 設(shè)計(jì)要求.1 1 方案.1 2 系統(tǒng)的主要功能.2 3 搶答器的硬件設(shè)計(jì).2 31 stc89c52 簡(jiǎn)介 .2 3、2 led 燈.5 33 8255 接口芯片.6 34 數(shù)碼管顯示模塊.7 35 按鍵模塊.7 36 外部中斷 0 和外部中斷 1.8 4 搶答器的軟件設(shè)計(jì).9 41 主程序流程及分析.9 42 總程序模塊.10 5 調(diào)試結(jié)果及分

3、析.14 設(shè)計(jì)心得體會(huì) 15 參考文獻(xiàn).16 附錄一:總體原理圖.17 搶答器搶答器 設(shè)計(jì)要求 1、一位主持人與 3 位搶答者,復(fù)位后,甲乙丙的綠、紅燈全亮,開(kāi)始鍵、復(fù)位 鍵的指示燈全暗;主持人按復(fù)位鍵則僅復(fù)位指示燈亮,其他都暗,準(zhǔn)備開(kāi)始;主持 人按開(kāi)始鍵,開(kāi)始燈亮,允許甲乙丙搶答,此時(shí)優(yōu)先者則相應(yīng)成功指示燈亮,如允 許前搶就相應(yīng)犯規(guī)燈亮;答題開(kāi)始進(jìn)行倒計(jì)時(shí),到規(guī)定時(shí)間不允許答題,并返回復(fù) 位狀態(tài)。 2、具有搶答控制和倒計(jì)時(shí)顯示功能。 3、控制器應(yīng)有復(fù)位控制、開(kāi)始控制、搶答控制和狀態(tài)指示等功能,并有答題時(shí) 間控制和顯示功能。 1 方案 采用宏晶公司的 stc89c52 作為系統(tǒng)控制器的 cpu

4、 方案。原理框圖如圖 1 所示: 圖 1 原理方框圖 2 系統(tǒng)的主要功能 本系統(tǒng)是借用單片機(jī)采用模塊化設(shè)計(jì)的搶答器,包括 3 路搶答按鈕、開(kāi)始按鈕、 復(fù)位按鈕,指示燈顯示,倒計(jì)時(shí)顯示部分。用中斷 0 和中斷 1 的控制按鈕做復(fù)位與 開(kāi)始控制。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開(kāi)始后搶答才有效,如果在開(kāi)始搶 答前搶答為無(wú)效,相應(yīng)犯規(guī)燈亮;主持人按鍵開(kāi)始后,選手開(kāi)始搶答為有效,相應(yīng) 成功指示燈亮,并開(kāi)始倒時(shí),回答問(wèn)題的時(shí)間限定為 10 秒,滿(mǎn)時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù) 位及主控復(fù)位。 3 搶答器的硬件設(shè)計(jì)搶答器的硬件設(shè)計(jì) 31 stc89c52 簡(jiǎn)介 stc89c52 引腳圖如圖 2 所示: 圖 2 stc

5、89c52 引腳圖 主要性能: 與 mcs-51 單片機(jī)產(chǎn)品兼容 8k 字節(jié)在系統(tǒng)可編程 flash 存儲(chǔ)器 1000 次擦寫(xiě)周期 全靜態(tài)操作:0hz33hz 三級(jí)加密程序存儲(chǔ)器 32 個(gè)可編程 i/o 口線(xiàn) 三個(gè) 16 位定時(shí)器/計(jì)數(shù)器 八個(gè)中斷源 全雙工 uart 串行通道 低功耗空閑和掉電模式 掉電后中斷可喚醒 看門(mén)狗定時(shí)器 雙數(shù)據(jù)指針 掉電標(biāo)識(shí)符 功能特性描述: stc89c52 是一種低功耗、高性能 cmos8 位微控制器,具有 8k 在系統(tǒng)可編 程 flash 存儲(chǔ)器。使用宏晶高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè) 80c51 產(chǎn)品指 令和引腳完全兼容。 片上 flash 允許程序存

6、儲(chǔ)器在系統(tǒng)可編程, 亦適于常規(guī)編器。 在單芯片上,擁有靈巧的 8 位 cpu 和在系統(tǒng)可編程 flash,使得 stc89c52 為眾 多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。stc89c52 具有以下標(biāo)準(zhǔn) 功能:8k 字節(jié) flash,256 字節(jié) ram,32 位 i/o 口線(xiàn),看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指 針,三個(gè) 16 位定時(shí)器/計(jì)數(shù)器,一個(gè) 6 向量 2 級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶 振及時(shí)鐘電路。另外,stc89c52 可降至 0hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇 節(jié)電模式??臻e模式下,cpu 停止工作,允許 ram、定時(shí)器/計(jì)數(shù)器、串口、中斷 繼續(xù)工作。掉電保

7、護(hù)方式下,ram 內(nèi)容被保存,振蕩器被凍結(jié)。 vcc : 電源 gnd: 地 p0 口:p0 口是一個(gè) 8 位漏極開(kāi)路的雙向 i/o 口。作為輸出口,每位能驅(qū)動(dòng) 8 個(gè) ttl 邏輯電平。對(duì) p0 端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪(fǎng)問(wèn)外部程序和 數(shù)據(jù)存儲(chǔ)器時(shí),p0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,p0 具有內(nèi)部 上拉電阻。在 flash 編程時(shí),p0 口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令 字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。 p1 口:p1 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p1 輸出緩沖器能 驅(qū)動(dòng) 4 個(gè) ttl 邏輯電平。對(duì) p1 端口寫(xiě)“

8、1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí) 可以作 為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因, 將輸出 電流(iil) 。 此外,p1.0 和 p1.2 分別作定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入 (p1.0/t2)和時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(p1.1/t2ex) ,具體如下表所示。在 flash 編程和校驗(yàn)時(shí),p1 口接收低 8 位地址字節(jié)。 p1.0 t2(定時(shí)器/計(jì)數(shù)器 t2 的外部計(jì)數(shù)輸入) ,時(shí)鐘輸出 p1.1 t2ex(定時(shí)器/計(jì)數(shù)器 t2 的捕捉/重載觸發(fā)信號(hào)和方向控制) p1.5 mosi(在系統(tǒng)編程用) p1.6 miso(在系統(tǒng)編程用) p1.7 sck

9、(在系統(tǒng)編程用) p2 口:p2 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能 驅(qū)動(dòng) 4 個(gè) ttl 邏輯電平。對(duì) p2 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí) 可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因, 將輸出電流(iil) 。 在訪(fǎng)問(wèn)外部程序存儲(chǔ)器或用 16 位地址讀取外部數(shù)據(jù)存儲(chǔ)器 (例如執(zhí)行 movx dptr)時(shí),p2 口送出高八位地址。在這種應(yīng)用中,p2 口使 用很強(qiáng)的內(nèi)部上拉發(fā)送 1。在使用 8 位地址(如 movx ri)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器 時(shí),p2 口輸出 p2 鎖存器的內(nèi)容。在 flash 編程和校驗(yàn)時(shí),p2 口

10、也接收高 8 位地址 字節(jié)和一些控制信號(hào)。 p3 口:p3 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能 驅(qū)動(dòng) 4 個(gè) ttl 邏輯電平。對(duì) p3 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí) 可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因, 將輸出電流(iil) 。 p3 口亦作為 stc89s52 特 殊功能(第二功能)使用, 。在 flash 編程和校驗(yàn)時(shí),p3 口也接收一些控制信號(hào)。 p3.0 rxd(串行輸入) p3.1 txd(串行輸出) p3.2 int0(外部中斷 0) p3.3 int0(外部中斷 0) p3.4 t0(定時(shí)器

11、 0 外部輸入) p3.5 t1(定時(shí)器 1 外部輸入) p3.6 wr(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通) p3.7 rd(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通) rst: 復(fù)位輸入。晶振工作時(shí),rst 腳持續(xù) 2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù) 位??撮T(mén)狗計(jì)時(shí)完成后,rst 腳輸出 96 個(gè)晶振周期的高電平。特殊寄存器 auxr(地址 8eh)上的 disrto 位可以使此功能無(wú)效。disrto 默認(rèn)狀態(tài)下,復(fù)位高 電平有效。 ale/prog:地址鎖存控制信號(hào)(ale)是訪(fǎng)問(wèn)外部程序存儲(chǔ)器時(shí),鎖存低 8 位地址的輸出脈沖。在 flash 編程時(shí),此引腳(prog)也用作編程輸入脈沖。在一 般情況下,ale 以晶振六分

12、之一的固定頻率輸出脈沖,可用來(lái)作為外部定時(shí)器或時(shí) 鐘使用。然而,特別強(qiáng)調(diào),在每次訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ale 脈沖將會(huì)跳過(guò)。 如果需要,通過(guò)將地址為 8eh 的 sfr 的第 0 位置“1” ,ale 操作將無(wú)效。這一位 置“1” ,ale 僅在執(zhí)行 movx 或 movc 指令時(shí)有效。否則,ale 將被微弱拉高。 這個(gè) ale 使能標(biāo)志位 (地址為 8eh 的 sfr 的第 0 位) 的設(shè)置對(duì)微控制器處于外 部執(zhí)行模式下無(wú)效。 psen:外部程序存儲(chǔ)器選通信號(hào) (psen) 是外部程序存儲(chǔ)器選通信號(hào)。 當(dāng) stc89c52 從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),psen 在每個(gè)機(jī)器周期被激活兩次,

13、 而在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),psen 將不被激活。 ea/vpp:訪(fǎng)問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從 0000h 到 ffffh 的外部程 序存儲(chǔ)器讀取指令,ea 必須接 gnd。為了執(zhí)行內(nèi)部程序指令,ea 應(yīng)該接 vcc。 在 flash 編程期間,ea 也接收 12 伏 vpp 電壓。 xtal1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。 xtal2:振蕩器反相放大器的輸出端。 3、2 led 燈 led 燈示意圖如圖 3 所示: 圖 3 led 燈示意圖 單片機(jī)的 p1.0p1.7 分別接到 d4-d11 這 8 個(gè) led 燈。 33 8255 接口芯片 單片機(jī)系統(tǒng)里常用的 82

14、551芯片是一個(gè)典型的可編程通用并行接口芯片,用來(lái) 擴(kuò)展單片機(jī)的端口,它具有 3 個(gè) 8 位的并行口,有三種工作方式,可作為單片機(jī)與各 種外部設(shè)備連接的接口電路。 8255 的引腳圖如圖 4 所示。 圖 4 8255 的引腳圖 8255 引腳功能說(shuō)明: reset:復(fù)位輸入線(xiàn),當(dāng)該輸入端外于高電平時(shí),所有內(nèi)部寄存器(包括控制寄 存器)均被清除,所有 i/o 口均被置成輸入方式。 pa0pa7:端口 a 輸入輸出線(xiàn), 一個(gè) 8 位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè) 8 位的數(shù)據(jù)輸入鎖存器。 pb0pb7:端 口 b 輸入輸出線(xiàn),一個(gè) 8 位的 i/o 鎖存器, 一個(gè) 8 位的輸入輸出緩沖器。 pc

15、0pc7:端口 c 輸入輸出線(xiàn), 一個(gè) 8 位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè) 8 位 的數(shù)據(jù)輸入緩沖器。端口 c 可以通過(guò)工作方式設(shè)定而分成 2 個(gè) 4 位的端口, 每個(gè) 4 位的端口包含一個(gè) 4 位的鎖存器,分別與端口 a 和端口 b 配合使用,可作為控制 信號(hào)輸出或狀態(tài)信號(hào)輸入端口。 cs:片選信號(hào)線(xiàn),當(dāng)這個(gè)輸入引腳為低電平時(shí),表 示芯片被選中,允許 8255 與 cpu 進(jìn)行通訊。 rd:讀信號(hào)線(xiàn),當(dāng)這個(gè)輸入引腳為低電平時(shí),允許 8255 通過(guò)數(shù)據(jù)總線(xiàn)向 cpu 發(fā) 送數(shù)據(jù)或狀態(tài)信息,即 cpu 從 8255 讀取信息或數(shù)據(jù)。 wr:寫(xiě)入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),允許 cpu 將

16、數(shù)據(jù)或控制字寫(xiě) 8255。 d0d7:三態(tài)雙向數(shù)據(jù)總線(xiàn),8255 與 cpu 數(shù)據(jù)傳送的通道,當(dāng) cpu 執(zhí)行輸入 輸出指令時(shí),通過(guò)它實(shí)現(xiàn) 8 位數(shù)據(jù)的讀/寫(xiě)操作,控制字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線(xiàn) 傳 a0,a1:地址選擇線(xiàn),用來(lái)選擇 8255 的 pa 口,pb 口,pc 口和控制寄存器。 當(dāng) a0=0,a1=0 時(shí),pa 口被選擇; 當(dāng) a0=0,a1=1 時(shí),pb 口被選擇; 當(dāng) a0=1,a1=0 時(shí),pc 口被選擇; 當(dāng) a0=1.a1=1 時(shí),控制寄存器被選擇。 在本次設(shè)計(jì)中,8255 芯片用來(lái)擴(kuò)展系統(tǒng)的外部接口,將 8255 的 pa、pb、pc 口給數(shù)碼管、鍵盤(pán)使用。 34 數(shù)碼

17、管顯示模塊 數(shù)碼管原理圖如圖 5 所示: 圖 5 數(shù)碼管原理圖 在本次設(shè)計(jì)中,數(shù)碼管的 8 段是由芯片 8255 的 pb 口控制亮滅,每個(gè)數(shù)碼管的 公共腳分別由 8255 的 pa0-pa5 經(jīng)三極管擴(kuò)流后進(jìn)行控制,且數(shù)碼管是共陽(yáng)極的。 當(dāng)公共腳接上電源正極,筆畫(huà)腳通過(guò)一個(gè) 220 歐姆電阻接負(fù)極,對(duì)應(yīng)的筆畫(huà)就會(huì)點(diǎn) 亮。 要在某位數(shù)碼管上顯示一個(gè)數(shù)字,首先把待顯示數(shù)字的顯示碼送給 8255 的 pb 口,接著選中要顯示的位。 35 按鍵模塊 按鍵示意圖如圖 6 所示: 圖 6 按鍵示意圖 在單片機(jī)系統(tǒng)中鍵盤(pán)中按鈕數(shù)量較多時(shí),為了減少 i/o 口的占用,常常將按鈕 排列成矩陣形式,在矩陣式鍵盤(pán)

18、中,每條水平線(xiàn)和垂直線(xiàn)在交叉處不直接連通,而 是通過(guò)一個(gè)按鈕加以連接。這樣,一個(gè)端口(如 p1 口)就能組成 4*4=16 個(gè)按鈕, 比之直接將端口線(xiàn)用于鍵盤(pán)多出了一倍,而且線(xiàn)數(shù)越多,區(qū)別越明顯,比如再多加 一條線(xiàn)就能組成 20 鍵的鍵盤(pán),而直接用端口線(xiàn)則只能多出一鍵(9 鍵) 。由此可見(jiàn), 在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是合理的。 矩陣式鍵盤(pán)的按鈕識(shí)別辦 法確定矩陣式鍵盤(pán)上何鍵被按下,介紹一種“行掃描法” 。行掃描法又稱(chēng)為逐行(或 列)掃描查詢(xún)法,是一種最常用的按鈕識(shí)別辦法。 判斷鍵盤(pán)中有無(wú)鍵按下將全部列 線(xiàn)置高電平,然后檢測(cè)行線(xiàn)的狀態(tài)。只要有一行的電平為高,則表示鍵盤(pán)中有鍵被 按

19、下,而且閉合的鍵位于高電平線(xiàn)與 4 根列線(xiàn)相交叉的 4 個(gè)按鈕之中。若所有行線(xiàn) 均為低電平,則鍵盤(pán)中無(wú)鍵按下。 判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即 可進(jìn)入確定具體閉合鍵的過(guò)程。其辦法是:將全部列線(xiàn)置為高電平,在確定某根行 線(xiàn)位置為高電平后,再逐列對(duì)列線(xiàn)置高再檢測(cè)先前返回高電平的行線(xiàn)的電平狀態(tài)。 若此行返回為高,則該列線(xiàn)與返為高電平的行線(xiàn)交叉處的按鈕就是閉合的按鈕。本 次設(shè)計(jì)雖只用到其中三個(gè)按鍵但考慮到以后對(duì)系統(tǒng)升級(jí),所以采用了矩陣式鍵盤(pán)。 36 外部中斷 0 和外部中斷 1 外部中斷 0 和外部中斷 1 示意圖如圖 7 所示: 圖 7 外部中斷 0 和外部中斷 1 示意圖 在單片機(jī)上有

20、兩個(gè)引腳,名稱(chēng)為 int0、int1,也就是 p3.2、p3.3 這兩個(gè)引腳。 在單片機(jī)內(nèi)部的 tcon 寄存器中有四位是與外中斷有關(guān)的。 it0: int0 觸發(fā)方式 控制位,可由軟件進(jìn)和置位和復(fù)位,it0=0,int0 為低電平觸發(fā)方式,it0=1,int0 為負(fù)跳變觸發(fā)方式。ie0:int0 中斷請(qǐng)求標(biāo)志位。當(dāng)有外部的中斷請(qǐng)求時(shí),這位就 會(huì)置 1(這由硬件來(lái)完成) ,在 cpu 響應(yīng)中斷后,由硬件將 ie0 清 0。it1、ie1 的用 途和 it0、ie0 相同。按鍵 0 接單片機(jī) p32 腳,按鍵 1 接單片機(jī)的 p33 腳。本次設(shè)計(jì) 用到了外中斷 1 和外中斷 0,需接上跳帽 w1

21、 和 w2。 4 搶答器的軟件設(shè)計(jì) 41 主程序流程及分析 搶答器的基本工作原理:在搶答競(jìng)賽或呼叫時(shí),有多個(gè)信號(hào)同時(shí)或不同時(shí)送入 主電路中,搶答器內(nèi)部的寄存器工作,并識(shí)別、記錄第一個(gè)號(hào)碼,同時(shí)內(nèi)部的定時(shí) 器開(kāi)始工作,記錄有關(guān)時(shí)間并產(chǎn)生超時(shí)信號(hào)。在整個(gè)搶答器工作過(guò)程中,顯示電路 還要根據(jù)現(xiàn)場(chǎng)的實(shí)際情況向外電路輸出相應(yīng)信號(hào)。搶答器的工作流程分為:系統(tǒng)復(fù) 位、正常流程、違例流程等幾部分,如圖 8 所示,下面予以介紹。 1、主持人按復(fù)位鍵,復(fù)位指示燈亮,進(jìn)入準(zhǔn)備狀態(tài),主持人出題。 3、主持人按開(kāi)始鍵,進(jìn)入搶答部分,有人搶答就開(kāi)始回答倒計(jì)時(shí),搶答人在此 限定時(shí)間內(nèi)做出回答,計(jì)時(shí)完畢后停止做答并返回復(fù)位狀

22、態(tài)。無(wú)人搶答則主持人根 據(jù)實(shí)際情況做出處理后可進(jìn)入下一輪搶答。 4、如果主持人未按開(kāi)始鍵,而有人按了搶答按鍵,犯規(guī)搶答,相應(yīng)犯規(guī)燈亮。 主持人根據(jù)實(shí)際情況做出處理后可進(jìn)入下一輪搶答。 圖 8 工作流程圖 42 總程序模塊 在本次設(shè)計(jì)中,總程序可分為主程序部分,顯示部分,延時(shí)部分,鍵盤(pán)部分, 計(jì)時(shí)部分,定時(shí)器工作模式設(shè)定及初始化部分,中斷程序部分。 #includereg51.h /包括一個(gè) 51 標(biāo)準(zhǔn)內(nèi)核的頭文件 #include absacc.h /庫(kù)函數(shù) #define a8255_pa xbyte0 xd1ff /*pa 口地址*/ #define a8255_pb xbyte0 xd2

23、ff /*pb 口地址*/ #define a8255_pc xbyte0 xd5ff /*pc 口地址*/ #define a8255_con xbyte0 xd7ff /*控制字地址*/ unsigned char timer_count=0; /定義變量 unsigned char second=9; unsigned char light; unsigned char const num_table16= 0 xa0, /*0*/ 0 xbb, /*1*/ 0 x62, /*2*/ 0 x2a, /*3 */ 0 x39, /*4*/ 0 x2c, /*5 */ 0 x24, /*6*

24、/ 0 xba, /*7*/ 0 x20, /*8*/ 0 x28, /*9 */ 0 x30, /*a*/ 0 x25, /*b*/ 0 xe4, /*c*/ 0 x23, /*d*/ 0 x64, /*e*/ 0 x74, /*f */ ; void timer1_init(void); /函數(shù)聲明 void gint_init(void); void delay (unsigned int x) ; void display (unsigned char place, unsigned char number); unsigned char keyboard(); main()/ 主程序

25、 unsigned char flag=0; light=0 xc0; timer1_init();定時(shí)器工作模式設(shè)定及初始化 while(1) /主程序循環(huán) gint_init(); /函數(shù)調(diào)用(打開(kāi)中斷及相應(yīng)的設(shè)定) p1=light; display(6,second); if(second=0) second=0 x09; tr1=0; light=0 x7f; flag=keyboard(); if(light=0 x3f) switch(flag) case 1: light=0 xfd,tr1=1; break; case 2: light= 0 xf7, tr1=1 ; bre

26、ak; case 3:light=0 xdf, tr1=1; break; default : light =0 x3f; if(light=0 x7f) switch(flag) case 1: light=0 xfe; break; case 2:light=0 xfb; break; case 3:light= 0 xef; break; default : light =0 x7f; void gint_init(void) /打開(kāi)中斷及相應(yīng)的設(shè)定 ea = 1; ex0 = 1; it0 = 1; ex1= 1; it1 = 1; et1=1; void isr_ex0(void)

27、interrupt 0 /外中斷 0 light=0 x7f; void isr_ex1(void) interrupt 2 /外中斷 1 light void timer1_init(void) / 定時(shí)器工作模式設(shè)定及初始化 tmod=0 x10; th1=(65535-50000 )/256; tl1=(65535-50000)%256; void isr_timer1(void) interrupt 3 /1 秒時(shí)間的設(shè)定 timer_count+; if(timer_count = 20) timer_count = 0; second-; timer1_init(); void d

28、elay(unsigned int x)/延時(shí) unsigned char i,j,k; while(x-) for(i=0;i=5;i+) for(j=0;j=10;j+) ; void display(unsigned char place, unsigned char number) /顯示 a8255_con=0 x89; a8255_pa =0 xff; a8255_pb=0 xff; a8255_pa=(0 x01(place-1); a8255_pb=num_tablenumber; unsigned char keyboard() /鍵盤(pán) unsigned char pc_da

29、ta; unsigned char j; unsigned char y=0; a8255_con=0 x89; a8255_pa=0 xf1; a8255_pb=0 xff; delay(1); pc_data=a8255_pc; for(j = 0;j4;j+) if(pc_data return(y) ; 5 調(diào)試結(jié)果及分析 本設(shè)計(jì)主要是在編寫(xiě)的程序編譯通過(guò)后,用下載軟件將編寫(xiě)的程序下載到實(shí)驗(yàn) 開(kāi)發(fā)板上,驗(yàn)證結(jié)果是否滿(mǎn)足設(shè)計(jì)要求。主要通過(guò)按鍵部分進(jìn)行控制,通過(guò)數(shù)碼管 和 led 燈部分進(jìn)行觀(guān)察。 經(jīng)驗(yàn)證,在搶答中,只有開(kāi)始后搶答才有效,如果在開(kāi)始搶答前搶答為無(wú)效, 相應(yīng)犯規(guī)燈亮;主持人按鍵開(kāi)始后,選手開(kāi)始搶答為有效,相應(yīng)成功指示燈亮,并 開(kāi)始倒時(shí),回答問(wèn)題的時(shí)間限定為 10 秒,滿(mǎn)時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控復(fù)位,滿(mǎn) 足設(shè)計(jì)要求。 設(shè)計(jì)心得體會(huì)設(shè)計(jì)心得體會(huì) 此次單片機(jī)課程設(shè)計(jì),

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論