基于51單片機(jī)八路搶答器課程設(shè)計(jì)報(bào)告書_第1頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)報(bào)告書_第2頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)報(bào)告書_第3頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)報(bào)告書_第4頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)報(bào)告書_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 . . . 目 錄第1章緒論11.1 例題的仿真1.2選題背景、意義31.3八路搶答器的功能簡(jiǎn)介4第2章系統(tǒng)硬件設(shè)計(jì)52.1 芯片的選擇52.1.1 控制器的選擇52.1.2 顯示模塊的選擇52.1.3 鍵盤的選擇62.2.4 芯片最終選擇方案62.2 AT89C51單片機(jī)簡(jiǎn)單概述72.2.1 51系列單片機(jī)的功能特性72.2.2 AT89C51單片機(jī)結(jié)構(gòu)說明82.3 硬件的構(gòu)成與功能102.3.1 搶答器的硬件圖112.3.2 時(shí)鐘頻率控制電路112.3.3 復(fù)位電路的設(shè)計(jì)122.3.4 報(bào)警電路的設(shè)計(jì)132.3.5 顯示電路的設(shè)計(jì)132.3.6 鍵盤掃描電路的設(shè)計(jì)14第3章系統(tǒng)軟件設(shè)計(jì)1

2、63.1 系統(tǒng)主程序設(shè)計(jì)163.2 鍵盤掃描程序設(shè)計(jì)173.3 顯示程序設(shè)計(jì)18第4章系統(tǒng)調(diào)試與軟件仿真194.1 硬件調(diào)試194.2 Keil uVision2軟件調(diào)試194.3 Proteus仿真20第5章總結(jié)23附錄23附錄一主程序清單23附錄二單片機(jī)八路智能搶答器原理圖37參考文獻(xiàn)38第一章 緒 論1.2 課本例題仿真例題 4-6在Keil uVision2軟件中調(diào)試程序程序如下:例題 5-1在Keil uVision2軟件中調(diào)試程序程序如下:1.2 選題背景、意義當(dāng)今時(shí)代是一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動(dòng)化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前

3、所未有的速度被單片機(jī)智能化控制所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說智能化控制與自動(dòng)控制的核心就是單片機(jī)。目前,搶答器已經(jīng)作為一種必不可少的工具廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合,但一般的搶答器可靠性低,使用壽命短,介于這些不方便因素,此次設(shè)計(jì)提出了用AT89C51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)簡(jiǎn)易的八路搶答器。本方案以AT89C51單片機(jī)作為主控核心,與晶振、數(shù)碼管、蜂鳴器等通過外圍接口實(shí)現(xiàn)的八路搶答器,利用了單片機(jī)的延時(shí)電路、按鍵復(fù)位電路、時(shí)鐘電路、定時(shí)器/計(jì)數(shù)器等,設(shè)計(jì)的八路搶答器不僅具有實(shí)時(shí)顯示搶答選手的和搶答時(shí)間的功能,同時(shí)還利用匯編語言編程,使其實(shí)現(xiàn)復(fù)位、定

4、時(shí)和報(bào)警的功能。本次設(shè)計(jì)的系統(tǒng)實(shí)用性強(qiáng)、判斷精確、操作簡(jiǎn)單、擴(kuò)展功能強(qiáng)。1.3 八路搶答器的功能簡(jiǎn)介此次設(shè)計(jì)的搶答器具有同步顯示的功能,并且有蜂鳴器的輔助,使得整個(gè)設(shè)計(jì)更加完整。在每次競(jìng)賽開始前,主持人讀完比賽規(guī)則,可以對(duì)搶答器進(jìn)行的時(shí)間進(jìn)行預(yù)設(shè)。時(shí)間設(shè)定按鍵組共有4個(gè)按鍵,其中一個(gè)鍵為搶答時(shí)間修改鍵,一個(gè)為回答時(shí)間按鍵,剩下的兩個(gè)按鍵為加一和減一按鍵。比賽開始,主持人讀完題之后按下“開始鍵”,即搶答開始,蜂鳴器提示一次,此時(shí)數(shù)碼管開始顯示30s的倒計(jì)時(shí);直到有一個(gè)選手按下?lián)尨疰I,對(duì)應(yīng)的會(huì)在數(shù)碼管上顯示出該選手的編號(hào)和回答剩余的時(shí)間,同時(shí)蜂鳴器也會(huì)發(fā)出一次提示音,以示有人搶答本題;如果在規(guī)定的

5、30s時(shí)間沒有人做出搶答,則此題作廢,開始新一輪的搶答。在搶答和回答時(shí)間的最后5s,蜂鳴器都會(huì)給予報(bào)警提示。在倒計(jì)時(shí)過程中,主持人可以隨時(shí)按“停止鍵”結(jié)束本次回答或者搶答。在主持未按下開始鍵,若果有人按下?lián)尨疰I,則屬于犯規(guī)搶答,此時(shí),數(shù)碼管上會(huì)顯示違規(guī)選手的編號(hào),同時(shí)蜂鳴器會(huì)以1s一次的頻率發(fā)出警告。在每次搶答前后,主持人都可以按下復(fù)位鍵讓系統(tǒng)清零,此時(shí)數(shù)碼管上會(huì)顯示“FFF”。 第2章 系統(tǒng)硬件設(shè)計(jì)硬件電路部分是一個(gè)完整電路的關(guān)鍵部分,硬件性能的好壞關(guān)系到整個(gè)系統(tǒng)的性能。本章節(jié)主要介紹了八路搶答器的硬件的選擇與電路的設(shè)計(jì)。2.1 芯片的選擇芯片選擇的原則是經(jīng)濟(jì)、壽命長(zhǎng)、設(shè)計(jì)簡(jiǎn)單。對(duì)此我們作了

6、詳細(xì)的論證。2.1.1 控制器的選擇控制器主要用于對(duì)顯示、搶答、音樂、計(jì)分等模塊進(jìn)行控制??刂破鞯倪x擇有以下兩種方案。方案一:采用FPGA(現(xiàn)場(chǎng)可編程門列陣)作為系統(tǒng)的控制器。FPGA可以實(shí)現(xiàn)各種復(fù)雜的邏輯功能,規(guī)模大,密度高,它將所有器件集成在一塊芯片上,減小了體積,提高了穩(wěn)定性,并且可以應(yīng)用EDA軟件仿真、調(diào)試,易于進(jìn)行功能擴(kuò)展。FPGA采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)模實(shí)時(shí)系統(tǒng)的控制核心。但由于本設(shè)計(jì)對(duì)數(shù)據(jù)處理的速度要求不高,F(xiàn)PGA的高速處理的優(yōu)勢(shì)得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時(shí)由于芯片的引腳較多,實(shí)物硬件電路板布線復(fù)雜,加重了電路設(shè)計(jì)和

7、實(shí)際焊接的工作。方案二:采用AT89C51作為系統(tǒng)控制器的CPU方案。單片機(jī)算術(shù)運(yùn)算功能強(qiáng)、軟件編程靈活、自由度大,可以用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。基于以上分析,本次設(shè)計(jì)我采用方案二。2.1.2 顯示模塊的選擇顯示模塊主要是顯示時(shí)間和編號(hào)。考慮有以下兩種顯示方案。方案一:使用液晶屏顯示時(shí)間。液晶顯示屏(LCD)具有輕薄短小、低耗電量、無輻射危險(xiǎn),平面直角顯示以與影像穩(wěn)定不閃爍等優(yōu)勢(shì),可視面積大,畫面效果好,分辨率高,抗干擾能力強(qiáng)的特點(diǎn)。但由于只需要顯示時(shí)間和轉(zhuǎn)向、相數(shù)這樣的數(shù)字,信息量比較少,且液晶屏是以點(diǎn)陣的模式

8、顯示各種符號(hào),需要利用控制芯片創(chuàng)建字符庫,編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時(shí),不能有靜電干擾,否則易燒壞液晶顯示芯片,不易維護(hù)。方案二:使用傳統(tǒng)的數(shù)碼管顯示。數(shù)碼管具有低能耗、低損耗、低壓、壽命長(zhǎng)、耐老化、防曬、防潮、防火、防高(低)溫,對(duì)外界環(huán)境要求低,易于維護(hù)的優(yōu)點(diǎn),同時(shí)其精度高,稱量快,精確可靠,操作簡(jiǎn)單。數(shù)碼顯示是采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。根據(jù)以上的論述,我采用方案二。2.1.3 鍵盤的選擇鍵盤是單片機(jī)不可缺少的輸入設(shè)備,是實(shí)現(xiàn)人機(jī)對(duì)話的紐帶。鍵盤按結(jié)構(gòu)形式可以分為非編碼鍵盤和編碼鍵盤,前者用軟件方法產(chǎn)生鍵碼,而后者則用硬件方法來產(chǎn)生鍵

9、碼。在單片機(jī)中使用的都是非編碼鍵盤,因?yàn)榉蔷幋a鍵盤結(jié)構(gòu)簡(jiǎn)單,成本低廉,非編碼鍵盤的類型很多,常用的有獨(dú)立式鍵盤,行列式鍵盤等。方案一:獨(dú)立式鍵盤獨(dú)立式鍵盤接口中使用幾根I/O線,就有幾個(gè)按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。因此可以根據(jù)實(shí)際需要對(duì)鍵盤中的按鍵靈活編碼。獨(dú)立式鍵盤的缺點(diǎn)是需要占用比較多的I/O口線,當(dāng)單片機(jī)應(yīng)用系統(tǒng)鍵盤中需要的按鍵比較少或I/O口線比較富余時(shí),可以采用這樣類型的鍵盤。方案二:行列式鍵盤行列式鍵盤是用N條I/O線作為行線,M條I/O線作為列線組成的鍵盤,按鍵在行線和列線的每個(gè)交叉點(diǎn)上。這種形式的鍵盤結(jié)構(gòu),能夠有效地提高單片機(jī)系統(tǒng)中I/O的

10、利用率。CPU對(duì)鍵盤的掃描可以采用取程序控制的隨機(jī)方式,即只有在CPU空閑是時(shí)才去掃描鍵盤,響應(yīng)操作人員的鍵盤輸入,即利用單片機(jī)部定時(shí)器每隔一定時(shí)間對(duì)鍵盤掃描一次,這樣控制方式,不管鍵盤上有無鍵閉合,CPU總是定時(shí)的關(guān)心鍵盤狀態(tài)。在大多數(shù)情況下,CPU對(duì)鍵盤可能進(jìn)行空掃描。為了提高CPU的效率而又能與時(shí)響應(yīng)鍵盤輸入,可以采用中斷方式,即CPU平時(shí)不必掃描鍵盤,只要當(dāng)鍵盤上有鍵盤閉合時(shí)就產(chǎn)生中斷請(qǐng)求,向CPU申請(qǐng)中斷后,立即對(duì)鍵盤上有鍵盤進(jìn)性掃描,識(shí)別閉合鍵,并做相應(yīng)的處理。根據(jù)以上的論述,我采用方案一。2.2.4 芯片最終選擇方案根據(jù)上幾節(jié)的論證,通過綜合考慮,我們的芯片選擇如表2-1。表2-

11、1 器件選擇方案詳單器件名稱規(guī)格型號(hào)數(shù)量微處理器AT89C511電阻220歐姆88K11K1瓷片電容30pF2電解電容10uF1晶振12MHZ1按鈕CD401315器件名稱規(guī)格型號(hào)數(shù)量七段數(shù)碼管7SEG-MPX-CC4蜂鳴器12.2 AT89C51單片機(jī)簡(jiǎn)單概述AT89C51單片機(jī)屬于51系列單片機(jī),本次設(shè)計(jì)所用的核心元件即為AT89C51,本節(jié)主要介紹了AT89C51的管腳功能。2.2.1 51系列單片機(jī)的功能特性MSC-51單片機(jī)是美國英特爾公司于1980年起推出的第二代產(chǎn)品。與8084相比,8051的硬件結(jié)構(gòu)和指令系統(tǒng)均有很大改進(jìn),可支持更大存儲(chǔ)空間擴(kuò)充了更多的I/O功能,速度提高了2-

12、5倍。1. 主要特性:(1) 適于控制應(yīng)用的8位CPU。(2) 擴(kuò)展的邏輯處理能力。(3) 4KB片程序存儲(chǔ)空間。其片外可尋址的圍為64KB,主要用于存放已編程的程序,也可存放一些原始數(shù)據(jù)和表格。(4) 128B的片數(shù)據(jù)RAM。其片外數(shù)據(jù)存儲(chǔ)器的尋址圍為64KB用于存放可讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果和最終結(jié)果。(5) 32根雙向可單獨(dú)尋址的輸入輸出線。(6) 2個(gè)16位定時(shí)/計(jì)數(shù)器,片時(shí)鐘發(fā)生器。它可以設(shè)置為計(jì)數(shù)方式,對(duì)外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置為定時(shí)方式進(jìn)行定時(shí)。(7) 全雙工異步發(fā)送/接收器。(8) 具有5個(gè)中斷源,可編程為兩個(gè)優(yōu)先級(jí)的中斷系統(tǒng),它可以接收外部中斷請(qǐng)求、定時(shí)器/計(jì)數(shù)器中斷

13、申請(qǐng)和串行口中斷申請(qǐng)。2. 程序指令A(yù)T89C51單片機(jī)的時(shí)序單位有四個(gè),分別是節(jié)拍、狀態(tài)、機(jī)器周期和指令周期。節(jié)拍與狀態(tài):我們把振蕩脈沖的周期定義為節(jié)拍(P),振蕩脈沖經(jīng)過兩個(gè)分頻后即得到整個(gè)單片機(jī)工作系統(tǒng)的時(shí)鐘信號(hào),把時(shí)鐘信號(hào)的周期定義為狀態(tài)(S),這樣一個(gè)狀態(tài)就有兩個(gè)節(jié)拍,前半個(gè)周期相應(yīng)的節(jié)拍我們定義為P1,后半周期對(duì)應(yīng)的節(jié)拍定義為P2。機(jī)器周期:AT89C51有固定的機(jī)器周期,規(guī)定一個(gè)機(jī)器周期有6個(gè)狀態(tài),分別表示為S1-S6,而一個(gè)狀態(tài)包含兩個(gè)節(jié)拍,那么一個(gè)機(jī)器周期就有12個(gè)節(jié)拍,即一個(gè)機(jī)器周期包含12個(gè)振蕩脈沖,即機(jī)器周期就是振蕩脈沖的12分頻,如果使用12MHZ的時(shí)鐘頻率,一個(gè)機(jī)器

14、周期就是1us。2.2.2 AT89C51單片機(jī)結(jié)構(gòu)說明AT89C51單片機(jī)的管腳圖如圖2-1所示:圖2-1 AT89C51單片機(jī)管腳圖u P0口:P0口是一組8位漏極開路雙向I/O口,在訪問外部存儲(chǔ)器時(shí)用作8位低地址線和數(shù)據(jù)總線。u P1口: P1口是一個(gè)帶部上拉電阻的8位雙向I/O口,向P1口寫入“1”時(shí),P1口被部電路上拉為高電平,可用作輸入口。當(dāng)作為輸出口時(shí),被外部拉低的P1口會(huì)因?yàn)椴可侠娮璧拇嬖诙敵鲭娏?。u P2口:P2口為一個(gè)部上拉電阻的8位雙向I/O口,當(dāng)P2口被寫“1”時(shí),其管腳被部電路上拉為高電平,可作輸入口。當(dāng)作為輸出口時(shí),被外部拉低的P2口會(huì)因?yàn)椴可侠娮璧拇嬖诙敵?/p>

15、電流。在訪問外部程序存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口可作為地址總線的高八位地址線。P3口:P3口管腳是8個(gè)帶部上拉電阻的雙向I/O口,當(dāng)P3口寫入“1”后,它們被部電路上拉為高電平,并用作輸入口。當(dāng)作為輸出口時(shí),被外部拉低的P3口會(huì)因?yàn)椴可侠娮璧拇嬖诙敵鲭娏鳌?#160; P3口也可作為AT89C51的一些特殊功能口,如下表所示:  P3.0 RXD(串行輸入口)  P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)  P3.3 /INT1(外部中斷1)  P3.4 T0(記時(shí)器0外部輸

16、入)  P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)u RST:復(fù)位信號(hào)輸入端。當(dāng)振蕩器工作時(shí),RET引腳出現(xiàn)兩個(gè)機(jī)器周期以上的高電平將使單片機(jī)復(fù)位。u ALE/PROG:ALE是地址鎖存允許信號(hào)。它的作用是把CPU從P0口分時(shí)輸出的低8位地址鎖存在鎖存器中。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6,可用作外部時(shí)鐘或定時(shí)。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。如果CPU在外部執(zhí)行狀態(tài)ALE禁止,置位無

17、效。u /PSEN:讀片外程序存儲(chǔ)器選通信號(hào)輸出端。當(dāng)執(zhí)行外部程序存儲(chǔ)器數(shù)據(jù)時(shí),/PSEN將產(chǎn)生負(fù)脈沖作為外部程序存儲(chǔ)器的讀選通信號(hào)。在訪問外部數(shù)據(jù)存儲(chǔ)器和部程序存儲(chǔ)器時(shí),/PSEN無效。u /EA/VPP:讀片與片外程序存儲(chǔ)器的選擇端。當(dāng)/EA為高電平時(shí),低4KB的地址為片程序存儲(chǔ)器單元,高于4KB以上的地址為片外程序存儲(chǔ)器單元;當(dāng)/EA為低電平時(shí),則只能讀片外程序存儲(chǔ)器。u XTAL1:片振蕩電路反向放大器的輸入端,采用外部時(shí)鐘時(shí)該引腳接地。XTAL2:片振蕩電路反向放大器的輸出端,采用外部時(shí)鐘時(shí)該引腳為振蕩信號(hào)的輸入端。2.3 硬件的構(gòu)成與功能本節(jié)主要介紹了搶答器的硬件部分的設(shè)計(jì),硬件部

18、分的設(shè)計(jì)是比不可少的,也是此次設(shè)計(jì)的核心。2.3.1 搶答器的硬件圖根據(jù)所要實(shí)現(xiàn)的功能,我們先大概將搶答器的硬件分為這幾部分:CPU、聲音電路、顯示電路、定時(shí)電路、開始結(jié)束鍵輸入和搶答按鍵輸入。硬件圖如圖2-2所示。圖2-2 搶答器硬件圖2.3.2 時(shí)鐘頻率控制電路單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作。AT89C51中有一個(gè)用于構(gòu)成部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)部的各個(gè)單元,決定單片機(jī)的工作速度。時(shí)鐘頻率控制電路如圖2-3所示。圖2-3 外部振蕩電路部時(shí)鐘振蕩器一般選用石英晶體振蕩器。此電路

19、在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容C1、C2選用30PF大小,其作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。單片機(jī)在工作時(shí),由部振蕩器產(chǎn)生或由外部直接輸入的送至部控制邏輯單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù)。該設(shè)計(jì)中時(shí)鐘頻率選為12MHz。2.3.3 復(fù)位電路的設(shè)計(jì)在搶答器中復(fù)位是為定時(shí)做鋪墊的,在搶答之前要復(fù)位,搶答完畢要復(fù)位,按了復(fù)位鍵之后LED顯示F。單片機(jī)的復(fù)位引腳RST出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí)即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初

20、始化狀態(tài),其電路圖如圖2-4所示。圖2-4 復(fù)位電路圖中復(fù)位電路由按鍵和電解電容C3、電阻R9構(gòu)成的按鍵與上電復(fù)位電路。由于單片機(jī)是高電平復(fù)位,所以當(dāng)按鍵按下時(shí),單片機(jī)的9腳RESET管腳處于高電平,此時(shí)單片機(jī)處于復(fù)位狀態(tài)。當(dāng)上電后由于電容緩慢充電,單片機(jī)的9腳電壓逐步由高向低轉(zhuǎn)化,經(jīng)過一段時(shí)間后,單片機(jī)的9腳處于穩(wěn)定的低電平狀態(tài),此時(shí)單片機(jī)上電復(fù)位完畢,系統(tǒng)程序從0000H開始執(zhí)行。在此設(shè)計(jì)中使用了硬件復(fù)位和軟件復(fù)位兩種。硬件復(fù)位可將寄存器與存儲(chǔ)器的值都恢復(fù)到初始值。而在設(shè)計(jì)中,倒計(jì)時(shí)時(shí)間存在記憶功能,因此還設(shè)計(jì)了軟復(fù)位功能。軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢后,講程序指針通過一條跳轉(zhuǎn)指令讓它跳

21、轉(zhuǎn)到該段程序的起始地址。2.3.4 報(bào)警電路的設(shè)計(jì)我們知道,聲音的頻譜圍約在幾十到幾千赫茲,若能利用程序來控制單片機(jī)某個(gè)管腳的高低電平,則在該管腳上就能產(chǎn)生一定頻率的矩形波,接上蜂鳴器就能發(fā)出一定頻率的聲音,若利用延時(shí)程序控制高低電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變蜂鳴器發(fā)出的音調(diào)。在本設(shè)計(jì)中此電路起到報(bào)警功能。它會(huì)在第一位選手按下?lián)尨鸢粹o時(shí)響一次,以提示有人搶答本題,并且在該選手的60秒搶答過程中或30秒等待過程中剩余最后5秒時(shí)響起,以提示到此題結(jié)束還有5秒鐘。本次設(shè)計(jì)如圖2-5所示,圖中用到單片機(jī)的10、11和16管腳。10管腳具有讀入功能,11管腳具有輸出功能,而16管腳具有外部數(shù)

22、據(jù)寫功能,單片機(jī)通過部定時(shí)器的操作實(shí)現(xiàn)交替變換的波形輸出驅(qū)動(dòng)蜂鳴器發(fā)生。圖2-5 報(bào)警電路2.3.5 顯示電路的設(shè)計(jì)顯示功能與硬件的關(guān)系極大,顯示電路有兩種選擇,液晶屏顯示和傳統(tǒng)數(shù)碼管顯示。液晶屏具有輕薄、無輻射危險(xiǎn)、可視面積大、分辨率高和抗干擾能力強(qiáng)的特點(diǎn),但是由于顯示信息少、編程工作量大和成本偏高。而數(shù)碼管具有低耗能、低損耗、低壓、壽命長(zhǎng)和精確度高、操作簡(jiǎn)單的優(yōu)點(diǎn),本設(shè)計(jì)中采用的是4位七段數(shù)碼管顯示。數(shù)碼管顯示通常顯示分為動(dòng)態(tài)顯示和靜態(tài)顯示。其中,靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,編程簡(jiǎn)單,顯示亮度高,但占用I/O口多,實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。而動(dòng)態(tài)顯示

23、的穩(wěn)定性雖沒靜態(tài)顯示的好,編程復(fù)雜,但是相對(duì)靜態(tài)顯示而言占用的端口資源少。本設(shè)計(jì)采用的是動(dòng)態(tài)顯示方法。通過查表法將值在數(shù)碼管上顯示出來。其中單片機(jī)的P0口為字型碼輸入端,P2口得低三位為字選段輸入端。4位七段數(shù)碼管顯示電路如圖2-6。圖2-6 七段數(shù)碼管顯示電路數(shù)碼管有共陰極和共陽極兩種接法。共陰極接法,各發(fā)光二極管的陰極連在一起并接地,當(dāng)某一發(fā)光二極管的陽極輸入高電平時(shí),則該段發(fā)光;共陽極接法,各發(fā)光二極管的陽極連在一起并接電源,當(dāng)某一發(fā)光二極管的陰極輸入低電平時(shí),則該段發(fā)光。本設(shè)計(jì)采用4位一體的七段共陰極數(shù)碼管,其中A-G段分別接到單片機(jī)的P0口,由單片機(jī)輸出的P0口數(shù)據(jù)來決定段碼值,位選

24、碼COM1,COM3,COM4分別接到單片機(jī)的P2.0,P2.1,P2.2,由單片機(jī)來決定當(dāng)前該顯示的是哪一位。在電路圖中還有8個(gè)220歐姆的電阻分別連接在P0口上,用作P0口的上拉電阻,保證P0口沒有數(shù)據(jù)輸出時(shí)處于高電平狀態(tài)。2.3.6 鍵盤掃描電路的設(shè)計(jì)鍵盤掃描電路由兩部分組成:搶答電路和定時(shí)電路。鍵盤是人機(jī)交互的主要設(shè)備,鍵盤電路分為獨(dú)立式和矩陣式。其中,獨(dú)立式鍵盤硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣式鍵盤硬件電路比獨(dú)立式鍵盤電路復(fù)雜,而且程序設(shè)計(jì)繁瑣,但它節(jié)省端口,適合于多按鍵電路。本設(shè)計(jì)基于簡(jiǎn)單硬件電路要求的基礎(chǔ)上,采用的是獨(dú)立鍵盤的方

25、式。在定時(shí)電路的設(shè)計(jì)中,有1個(gè)搶答時(shí)間調(diào)整按鍵、1個(gè)回答時(shí)間調(diào)整按鍵、加一按鍵、減一按鍵和1個(gè)開始按鍵、1個(gè)結(jié)束按鍵。電路圖如圖2-7所示。圖2-7 定時(shí)電路 圖2-8 搶答電路圖中和AT89C51芯片的12管腳連接的為搶答時(shí)間30s的調(diào)整按鍵,和13管腳連接的為回答時(shí)間60s的調(diào)整按鍵,與14管腳連接的為加一按鍵,與15管腳連接的為減一按鍵。這四個(gè)按鍵用于主持人對(duì)回答時(shí)間和搶答時(shí)間的調(diào)整。開始按鍵與單片機(jī)的10管腳連接,停止按鍵與11管腳連接。這里用到了單片機(jī)10、11管腳復(fù)合功能中的IO端口功能,單片機(jī)通過讀取10、11腳的P3.0、P3.1的IO端口值來判斷當(dāng)前是否處于搶答開始狀態(tài)或搶答

26、結(jié)束狀態(tài)。當(dāng)主持人按下開始鍵,搶答電路和定時(shí)電路將進(jìn)入正常搶答狀態(tài);當(dāng)回答完畢,主持人可以按下結(jié)束鍵停止計(jì)時(shí)。搶答電路完成兩個(gè)功能:一是分辨出選手按鍵先后,并鎖存優(yōu)先搶答者的編號(hào),同時(shí)譯碼顯示電路顯示編號(hào);二是其他選手操作無效。搶答電路如圖2-8所示,圖中8個(gè)搶答按鍵分別接入單片機(jī)的P1.0-P1.7端口,單片機(jī)通過讀取P1.0-P1.7的值來判斷當(dāng)前輸入的是8個(gè)搶答按鍵中的哪一個(gè)。如果主持人未按下開始按鍵判斷到有人違規(guī)操作,蜂鳴器會(huì)發(fā)出警報(bào)聲,并且數(shù)碼管會(huì)顯示出犯規(guī)者的編號(hào)。第3章 系統(tǒng)軟件設(shè)計(jì)3.1 系統(tǒng)主程序設(shè)計(jì)1. 系統(tǒng)主程序設(shè)計(jì)思路為了能達(dá)到公平、公正、合理的設(shè)計(jì)理念,應(yīng)該在主持人發(fā)

27、布搶答命令之前設(shè)定好搶答時(shí)間。當(dāng)時(shí)間設(shè)定好了之后,主持人發(fā)布搶答命令。按下開始按鍵后,程序開始打開,定時(shí)中斷開始倒計(jì)時(shí),然后調(diào)用鍵盤掃描子程序,當(dāng)掃描到有人按下了搶答鍵,馬上關(guān)閉搶答中斷計(jì)時(shí)器T1,調(diào)用顯示程序,此時(shí)封鎖搶答鍵盤,啟動(dòng)計(jì)時(shí)器T0。2. 主程序框圖 根據(jù)搶答器設(shè)計(jì)要求,其軟件設(shè)計(jì)部分流程圖如圖3-1:圖3-1 主程序流程圖3.2 鍵盤掃描程序設(shè)計(jì)搶答選手的搶答程序設(shè)計(jì)是本設(shè)計(jì)的關(guān)鍵。鍵盤掃描流程圖如圖3-2所示。圖3-2 鍵盤掃描程序流程圖3.3 顯示程序設(shè)計(jì)本次設(shè)計(jì)的顯示部分在按下開始鍵時(shí),后兩個(gè)數(shù)碼管顯示倒計(jì)時(shí)間,以1s變換一次,并且調(diào)用延時(shí)程序,此時(shí)定時(shí)器采用中斷方式,可以

28、充分利用CPU。在有選手按下?lián)尨疰I時(shí),第一個(gè)數(shù)碼管顯示選手號(hào),最后兩個(gè)數(shù)碼管顯示倒計(jì)時(shí),定時(shí)器同樣采用中斷方式。除此之外,本設(shè)計(jì)數(shù)碼管具有閃爍功能,當(dāng)有違規(guī)搶答時(shí),第一個(gè)數(shù)碼管會(huì)顯示選手號(hào),后兩個(gè)數(shù)碼管會(huì)閃爍顯示FF,一個(gè)周期為每秒1次。以示搶答無效,此時(shí)定時(shí)器采用定時(shí)中斷的工作方式。連接時(shí)段選信號(hào)接在P0口的P0.0P0.6七個(gè)I/O口上,P1口是準(zhǔn)雙向I/O接口在輸出驅(qū)動(dòng)部分,所以在接電阻時(shí)選擇接220限流電阻。而在位選方面采用P2口的P2.0P2.2,用單片機(jī)P2.2三個(gè)I/O口作為位選信號(hào)的輸出口。第4章 系統(tǒng)調(diào)試與軟件仿真系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,二者密不可分。我們?cè)O(shè)計(jì)好的硬件

29、電路和軟件程序必須經(jīng)過聯(lián)合調(diào)試才能驗(yàn)證其正確性。4.1 硬件調(diào)試硬件調(diào)試分為單元電路調(diào)試和聯(lián)機(jī)調(diào)試,單元電路調(diào)試在硬件電路設(shè)計(jì)中已經(jīng)進(jìn)行,這里只對(duì)其印刷版電路進(jìn)行檢驗(yàn)。線路檢查:根據(jù)硬件邏輯設(shè)計(jì)圖,仔細(xì)檢查電路是否正確,并且核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求,必要時(shí)可用萬用表檢測(cè)線路通斷情況。先用萬用表檢查各管腳之間是否有短路、虛焊、漏焊現(xiàn)象。檢查無誤后,測(cè)試各個(gè)芯片是否有損,待檢查完畢后,將各個(gè)芯片插入各自的槽位。電源調(diào)試:電路的第一次通電測(cè)試很重要,調(diào)試方法有兩種:一種是斷開電路穩(wěn)壓電源的輸出端,檢查空載時(shí)電源的工作情況;另一種是拔下電路上的主要繼承芯片,檢查電源的負(fù)載能力。確保電源

30、無故障并符合性能要求。通電檢查:首先按下復(fù)位鍵,用萬用表測(cè)試復(fù)位鍵的第四引腳是否有高電平輸出,然后測(cè)試其第一管腳是否有低電平輸出,如果是的話說明電路連接正確。然后按下開始鍵,再按下?lián)尨疰I1,之后依次按下?lián)尨疰I2、3、4、5、6、7、8,分別觀察數(shù)碼管有無變化。最后對(duì)蜂鳴器進(jìn)行驗(yàn)證,看看是否正常發(fā)聲。同理分別按下其它7個(gè)搶答鍵進(jìn)行檢查。4.2 Keil uVision2軟件調(diào)試軟件調(diào)試是通過對(duì)用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過程。本設(shè)計(jì)用到了Keil uVision2軟件,首先打開Keil uVision2,將程序輸入;然后進(jìn)行調(diào)試,將程序中的語法錯(cuò)

31、誤和邏輯錯(cuò)誤糾正,調(diào)試完畢后,創(chuàng)建HEX文件,HEX文件用于燒寫芯片,將制定程序?qū)懭胍言O(shè)計(jì)好的電路板中,使其能根據(jù)我們的要現(xiàn)相應(yīng)的功能;最后將HEX文件燒寫入AT89C51芯片,運(yùn)行電路,讓其實(shí)現(xiàn)八路搶答的功能。如圖4-1所示。圖4-1 Keil uVision軟件4.3 Proteus仿真本設(shè)計(jì)用到Proteus仿真軟件。首先將電路圖根據(jù)設(shè)計(jì)要求在軟件中準(zhǔn)確地畫出,即進(jìn)行ISIS原理圖設(shè)計(jì),我們的仿真也是完全基于ISIS原理圖模塊下進(jìn)行的,Proteus有兩種截然不同的仿真方式:交互式仿真和基于圖表的仿真,在本設(shè)計(jì)中我們用到的是交互式仿真,用于校驗(yàn)所設(shè)計(jì)的電路是否能正常運(yùn)行。如圖4-2所示。

32、圖4-2 八路搶答器原理圖然后將Keil uVision2生成的HEX文件到該中原理圖,即設(shè)計(jì)文檔的建立。如圖4-3所示。圖4-3 建立設(shè)計(jì)文檔文檔建立好之后,按Ctrl+F12開始運(yùn)行,然后按F12,執(zhí)行程序。下面是幾組仿真圖。圖4-4 復(fù)位顯示FFF圖4-5 啟動(dòng)開始鍵,倒計(jì)時(shí)30s圖4-6 3號(hào)選手非法搶答圖4-7 5號(hào)選手正常搶答第5章 總 結(jié)此次設(shè)計(jì)主要以硬件系統(tǒng)為基礎(chǔ),硬件系統(tǒng)關(guān)系到電子產(chǎn)品的好壞,如系統(tǒng)的抗干擾性,安全性和可行性等,所以要合理地選擇,合理地安排,盡量減少干擾,以提高系統(tǒng)性能。單片機(jī)是很容易受干擾的控制器,當(dāng)采用外部晶振時(shí),應(yīng)盡量讓其靠近單片機(jī),以減少對(duì)其的干擾,防

33、止程序的混亂現(xiàn)象。硬件系統(tǒng)的好壞很大部分在于經(jīng)驗(yàn),比如焊接是否干凈利落,器件是否完好,操作是否規(guī)等,所以我們要有好的動(dòng)手能力。而軟件設(shè)計(jì)確實(shí)設(shè)計(jì)的核心,具有多樣化,靈活性高,易移植等優(yōu)點(diǎn)。首先我們要深深領(lǐng)會(huì)各指令的含義才能更加熟練應(yīng)用。中斷的合理利用可以有效減少對(duì)CPU的占用,更好的處理好其他功能。延時(shí)的應(yīng)用會(huì)順利地實(shí)現(xiàn)顯示,鳴笛等功能,同時(shí)還可以去掉系統(tǒng)固有的不穩(wěn)定性。定時(shí)的應(yīng)用則比較實(shí)際,能實(shí)現(xiàn)我們所需的功能。軟件的設(shè)計(jì)大部分采用模塊化設(shè)計(jì)的方法以方便調(diào)試,并使其可讀性大大增強(qiáng),方便更改和移植。在此次設(shè)計(jì)中,我總結(jié)了很多不足,同時(shí)也學(xué)到了很多新的知識(shí),并且鞏固了課堂知識(shí),但最終設(shè)計(jì)的系統(tǒng)仍

34、有不足,敬請(qǐng)?zhí)岢觯「?錄附錄一 主程序清單OK EQU 20H;搶答開始標(biāo)志位RING EQU 22H;響鈴標(biāo)志位ORG 0000HAJMP MAINORG 0003HAJMP INT00ORG 000BHAJMP T00ORG 0013HAJMP INT11ORG 001BHAJMP T11ORG 0040HMAIN:MOV R1,#30;設(shè)搶答時(shí)間30sMOV R2,#60;設(shè)答題時(shí)間60s MOV TMOD,#11H;設(shè)置定時(shí)器為模式1 MOV TH0,#0F0H MOV TL0,#0FFH MOV TH1,#3CH MOV TL1,#0B0H;50ms為一次溢出中斷 SETB EASE

35、TB ET0 SETB ET1 SETB EX0 SETB EX1;允許四個(gè)中斷T0/T1/INT0/INT1CLR OK CLR RING SETB TR1SETB TR0;一開始運(yùn)行定時(shí)器,開始顯示FFFLOOP:MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;調(diào)用顯示FFF子程序 P3.0,LOOP1;判斷未開始答題,若有人按下?lián)尨穑絃OOP1非法搶答處理程序 ACALL DELAY P3.0,LOOP1;判斷已開始答題,則向下執(zhí)行 ACALL BARK;蜂鳴器響 MOV A,R1 MOV R6,A;將R1中30s送入R6 SETB

36、 OK;復(fù)位,用于COUNT中判斷是否查詢搶答 MOV R7,#01H;讀搶答鍵按下數(shù),要求只讀一次有用信號(hào) MOV R3,#0AH;搶答時(shí)間指顯示計(jì)時(shí),不顯示號(hào)數(shù) AJMP COUNT;進(jìn)入COUNT倒計(jì)時(shí)子程序,查詢有效搶答程序LOOP1:JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,FALSE7 JNB P1.7,FALSE8 AJMP LOOP;非法搶答查詢程序,若沒有跳回主程序FALSE1:MOV R3,#01H;1號(hào)選手

37、違規(guī) AJMP ERROR;跳轉(zhuǎn)到ERROR非法搶答處理程序FALSE2:MOV R3,#02H AJMP ERRORFALSE3:MOV R3,#03H AJMP ERRORFALSE4:MOV R3,#04H AJMP ERRORFALSE5:MOV R3,#05H AJMP ERRORFALSE6:MOV R3,#06H AJMP ERRORFALSE7:MOV R3,#07H AJMP ERRORFALSE8:MOV R3,#08H AJMP ERROR;=中斷=INT00:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH

38、 ACALL DISPLAY;在時(shí)間LED上顯示搶答時(shí)間30s JNB P3.4,INC0 JNB P3.5,DEC0 JNB P3.1,BACK0 AJMP INT00INC0:MOV A,R1CJNE A,#63H,ADD0;如果不是99,則跳轉(zhuǎn)到ADD0加1程序,否則往下執(zhí)行,置0,重新加起 MOV R1,#00H ACALL DELAY AJMP INT00ADD0:INC R1 ACALL DELAY AJMP INT00DEC0:MOV A,R1 JZ SETT;如果R1中值為0,則跳到SETT程序,R1置99 DEC R1ACALL DELAYAJMP INT00SETT:MOV

39、 R1,#63H ACALL DELAY AJMP INT00BACK0:RETIINT11:MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT11INC1:MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY AJMP INT11ADD1:INC R2 ACALL DELAY AJMP INT11DEC1:MOV A,R2 JZ SET1 DEC R2 A

40、CALL DELAY AJMP INT11;=計(jì)時(shí)查詢=SET1:MOV R2,#63H ACALL DELAY AJMP INT11BACK1:RETI;=倒計(jì)時(shí)程序=REPEAT:MOV A,R2;新一輪重新計(jì)時(shí) MOV R6,ACLR RINGCOUNT:MOV R0,#00H;重置定時(shí)器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H;重置定時(shí)器RECOUNT:MOV A,R6;將回答時(shí)間60s給A MOV B,#0AH DIV AB;除10,分出個(gè)位和十位 MOV 30H,A;十位存于30H MOV 31H,B;個(gè)位存于31H MOV R5,30H;取十位 MOV R4

41、,31H;取個(gè)位 MOV A,R6 SUBB A,#07H JNC MAX;大于5s跳轉(zhuǎn)到MAX,小于5s則向下執(zhí)行,蜂鳴器響 MOV A,R0 CJNE A,#0AH,FULL CLR RING AJMP CHECK;回答60s倒計(jì)時(shí)FULL:CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號(hào)數(shù),并清R0 SETB RING MOV A,R6 JZ QUIT;計(jì)時(shí)完畢,跳轉(zhuǎn)到QUIT,否則繼續(xù)向下執(zhí)行 MOV R0,#00H DEC R6;一秒減一 AJMP CHECKMAX:MOV A,R0CJNE A,#14H,CHECK;如果剩1s向下運(yùn)行,否則跳轉(zhuǎn)到CHECK查詢“停止

42、”程序DEC R6MOV R0,#00HCHECK:JNB P3.1,QUIT;如果查詢按下停止鍵,則退出;否則向下 JNB OK,CHECK1;判斷是否在回答倒計(jì)時(shí),如果不在跳到CHECK1判斷是否開始新一輪;否則向下繼續(xù)執(zhí)行AJMP NEXT1CHECK1:JNB P3.0,REPEAT;判斷是否重新開始NEXT1:ACALL DISPLAY OK,ACCOUT;判斷是否是搶答倒計(jì)時(shí),若是則跳轉(zhuǎn)到ACCOUT查詢搶答;否則向下執(zhí)行繼續(xù)倒計(jì)時(shí)AJMP RECOUNTACCOUT:MOV A,36HJNB ACC.0,TRUE1JNB ACC.1,TRUE2JNB ACC.2,TRUE3JNB

43、 ACC.3,TRUE4JNB ACC.4,TRUE5JNB ACC.5,TRUE6 JNB ACC.6,TRUE7JNB ACC.7,TRUE8AJMP RECOUNTQUIT:CLR OK;停止鍵按下程序CLR RINGAJMP LOOP;=正常搶答處理程序=TRUE1:ACALL BARKMOV A,R2MOV R6,A;搶答時(shí)間R2送R6MOV R3,#01HCLR OK;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答AJMP COUNTTRUE2:ACALL BARKMOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3:ACALL BARKMO

44、V A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4:ACALL BARKMOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5:ACALL BARKMOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6: ACALL BARKMOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTTRUE7:ACALL BARKMOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP COUNTTRUE8:ACALL BARKMOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;=犯規(guī)搶答程序=ERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3;犯規(guī)號(hào)數(shù)暫存與(34H)HERE: MOV A,R0CJNE A,#06H,FLASH;0.3s向下運(yùn)行->滅并停響CLR RINGMOV R3

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論