基于51單片機(jī)八路搶答器課程設(shè)計(jì)_第1頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)_第2頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)_第3頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)_第4頁
基于51單片機(jī)八路搶答器課程設(shè)計(jì)_第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ì)16

2、3.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)成的

3、控制系統(tǒng),正以前所未有的速度被單片機(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í)顯示搶答選手的號(hào)碼和搶答時(shí)間的功能,同時(shí)還利用匯編語言編

4、程,使其實(shí)現(xiàn)復(fù)位、定時(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ā)出一次提示音,以示有人搶

5、答本題;如果在規(guī)定的30s時(shí)間內(nèi)沒有人做出搶答,則此題作廢,開始新一輪的搶答。在搶答和回答時(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ì)、壽命長、

6、設(shè)計(jì)簡(jiǎn)單。對(duì)此我們作了詳細(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ù)處理的速度要求不高,fpga的高速處理的優(yōu)勢(shì)得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時(shí)由于芯片的引腳較多,實(shí)物硬件電路板布線

7、復(fù)雜,加重了電路設(shè)計(jì)和實(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ù)字,信息量比較少,

8、且液晶屏是以點(diǎn)陣的模式顯示各種符號(hào),需要利用控制芯片創(chuàng)建字符庫,編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時(shí),不能有靜電干擾,否則易燒壞液晶顯示芯片,不易維護(hù)。方案二:使用傳統(tǒng)的數(shù)碼管顯示。數(shù)碼管具有低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對(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)生鍵碼,而

9、后者則用硬件方法來產(chǎn)生鍵碼。在單片機(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),能夠有效地

10、提高單片機(jī)系統(tǒng)中i/o的利用率。cpu對(duì)鍵盤的掃描可以采用取程序控制的隨機(jī)方式,即只有在cpu空閑是時(shí)才去掃描鍵盤,響應(yīng)操作人員的鍵盤輸入,即利用單片機(jī)內(nèi)部定時(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é)的論證,通過綜合考慮,我們的

11、芯片選擇如表2-1。表2-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ò)充了更多的

12、i/o功能,速度提高了2-5倍。1. 主要特性:(1) 適于控制應(yīng)用的8位cpu。(2) 擴(kuò)展的邏輯處理能力。(3) 4kb片內(nèi)程序存儲(chǔ)空間。其片外可尋址的范圍為64kb,主要用于存放已編程的程序,也可存放一些原始數(shù)據(jù)和表格。(4) 128b的片內(nèi)數(shù)據(jù)ram。其片外數(shù)據(jù)存儲(chǔ)器的尋址范圍為64kb用于存放可讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果和最終結(jié)果。(5) 32根雙向可單獨(dú)尋址的輸入輸出線。(6) 2個(gè)16位定時(shí)/計(jì)數(shù)器,片內(nèi)時(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),它可以

13、接收外部中斷請(qǐng)求、定時(shí)器/計(jì)數(shù)器中斷申請(qǐng)和串行口中斷申請(qǐng)。2. 程序指令at89c51單片機(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分頻,如

14、果使用12mhz的時(shí)鐘頻率,一個(gè)機(jī)器周期就是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è)帶內(nèi)部上拉電阻的8位雙向i/o口,向p1口寫入“1”時(shí),p1口被內(nèi)部電路上拉為高電平,可用作輸入口。當(dāng)作為輸出口時(shí),被外部拉低的p1口會(huì)因?yàn)閮?nèi)部上拉電阻的存在而輸出電流。u p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,當(dāng)p2口被寫“1”時(shí),其管腳被內(nèi)部電路上拉為高電平,可作輸入口。當(dāng)作為輸出口時(shí),

15、被外部拉低的p2口會(huì)因?yàn)閮?nèi)部上拉電阻的存在而輸出電流。在訪問外部程序存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器時(shí),p2口可作為地址總線的高八位地址線。 p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,當(dāng)p3口寫入“1”后,它們被內(nèi)部電路上拉為高電平,并用作輸入口。當(dāng)作為輸出口時(shí),被外部拉低的p3口會(huì)因?yàn)閮?nèi)部上拉電阻的存在而輸出電流。p3口也可作為at89c51的一些特殊功能口,如下表所示:p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口)p3.2 /int0(外部中斷0) p3.3 /int1(外部中斷1) p3.4 t0(記時(shí)器0外部輸入) p3.5 t1(記時(shí)器1外部輸入) p3.6 /wr

16、(外部數(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禁止,置位無效。u /psen:讀片外程序存儲(chǔ)器選通信號(hào)輸出端。當(dāng)執(zhí)行外部程序存儲(chǔ)器數(shù)據(jù)時(shí)

17、,/psen將產(chǎn)生負(fù)脈沖作為外部程序存儲(chǔ)器的讀選通信號(hào)。在訪問外部數(shù)據(jù)存儲(chǔ)器和內(nèi)部程序存儲(chǔ)器時(shí),/psen無效。u /ea/vpp:讀片內(nèi)與片外程序存儲(chǔ)器的選擇端。當(dāng)/ea為高電平時(shí),低4kb的地址為片內(nèi)程序存儲(chǔ)器單元,高于4kb以上的地址為片外程序存儲(chǔ)器單元;當(dāng)/ea為低電平時(shí),則只能讀片外程序存儲(chǔ)器。u xtal1:片內(nèi)振蕩電路反向放大器的輸入端,采用外部時(shí)鐘時(shí)該引腳接地。xtal2:片內(nèi)振蕩電路反向放大器的輸出端,采用外部時(shí)鐘時(shí)該引腳為振蕩信號(hào)的輸入端。2.3 硬件的構(gòu)成及功能本節(jié)主要介紹了搶答器的硬件部分的設(shè)計(jì),硬件部分的設(shè)計(jì)是比不可少的,也是此次設(shè)計(jì)的核心。2.3.1 搶答器的硬件圖

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

19、3v左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容c1、c2選用30pf大小,其作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外部直接輸入的送至內(nèi)部控制邏輯單元的時(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ù)到初始化狀態(tài),其電路圖如圖2-4所示。圖2-4 復(fù)位電路圖中復(fù)

20、位電路由按鍵和電解電容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)指令讓它跳轉(zhuǎn)到該段程序的起始地址。2.3.4 報(bào)警電路的設(shè)計(jì)我們知道

21、,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機(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ù)據(jù)寫功能,單片機(jī)通過內(nèi)部定時(shí)器的操作實(shí)現(xiàn)交替變換的波形輸

22、出驅(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ù)碼管具有低耗能、低損耗、低壓、壽命長和精確度高、操作簡(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)顯示的穩(wěn)定性雖沒靜態(tài)顯示的好,編程復(fù)雜,但是相對(duì)靜態(tài)顯示而

23、言占用的端口資源少。本設(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ù)來決定段碼值,位選碼com1,com3,com4分別接到單片機(jī)的p2.0

24、,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ú)立鍵盤的方式。在定時(shí)電路的設(shè)計(jì)中,有1個(gè)搶答時(shí)間調(diào)整按鍵、1個(gè)回

25、答時(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)或搶答結(jié)束狀態(tài)。當(dāng)主持人按下開始鍵,搶答電路和定時(shí)電路將進(jìn)

26、入正常搶答狀態(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ā)布搶答命令之前設(shè)定好搶答時(shí)間。當(dāng)時(shí)間設(shè)定好了之后,主

27、持人發(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í)器采用中斷方式,可以充分利用cpu。在有選手按下?lián)尨疰I時(shí),第一個(gè)數(shù)碼管顯

28、示選手號(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ì)好的硬件電路和軟件程序必須經(jīng)過聯(lián)合調(diào)試才能驗(yàn)證其正確性。4.

29、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ù)載能力。確保電源無故障并符合性能要求。通電檢查:首先按下復(fù)位鍵,用萬

30、用表測(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ò)誤和邏輯錯(cuò)誤糾正,調(diào)試完畢后,創(chuàng)建hex文件,hex

31、文件用于燒寫芯片,將制定程序?qū)懭胍言O(shè)計(jì)好的電路板中,使其能根據(jù)我們的要求實(shí)現(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所示。圖4-2 八路搶答器原理圖然后將keil uvi

32、sion2生成的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ì)其的干擾,防止程序的混亂現(xiàn)象。硬件系統(tǒng)的好壞很大部分在于

33、經(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)仍有不足,敬請(qǐng)?zhí)岢?!?錄附錄一 主程序清單

34、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 easetb et0 setb et1 setb

35、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子程序 jb p3.0,loop1;判斷未開始答題,若有人按下?lián)尨?,跳到loop1非法搶答處理程序 acall delay jb p3.0,loop1;判斷已開始答題,則向下執(zhí)行 acall bark;蜂鳴器響 mov a,r1 mov r6,a;將r1中30s送入r6 setb ok;復(fù)位,用于count中

36、判斷是否查詢搶答 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)選手違規(guī) ajmp error;跳

37、轉(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 acall display;

38、在時(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 r1,#63h acall

39、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 acall delay ajmp

40、 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,31h;取個(gè)位 mov a,

41、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查詢“停止”程序dec r6mov r0

42、,#00hcheck:jnb p3.1,quit;如果查詢按下停止鍵,則退出;否則向下 jnb ok,check1;判斷是否在回答倒計(jì)時(shí)內(nèi),如果不在跳到check1判斷是否開始新一輪;否則向下繼續(xù)執(zhí)行ajmp next1check1:jnb p3.0,repeat;判斷是否重新開始next1:acall displayjb 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 acc.3,true4

43、jnb 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 barkmov a,r2mov r6

44、,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,#0ahmov r4,#0ahmov r5,#0ah;三燈

溫馨提示

  • 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)論