基于51單片機八路搶答器課程設(shè)計.doc
《基于51單片機八路搶答器課程設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《基于51單片機八路搶答器課程設(shè)計.doc(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
目 錄 第1章 緒 論 1 1.1 例題的仿真 1.2 選題背景、意義 3 1.3 八路搶答器的功能簡介 4 第2章 系統(tǒng)硬件設(shè)計 5 2.1 芯片的選擇 5 2.1.1 控制器的選擇 5 2.1.2 顯示模塊的選擇 5 2.1.3 鍵盤的選擇 6 2.2.4 芯片最終選擇方案 6 2.2 AT89C51單片機簡單概述 7 2.2.1 51系列單片機的功能特性 7 2.2.2 AT89C51單片機結(jié)構(gòu)說明 8 2.3 硬件的構(gòu)成及功能 10 2.3.1 搶答器的硬件圖 11 2.3.2 時鐘頻率控制電路 11 2.3.3 復位電路的設(shè)計 12 2.3.4 報警電路的設(shè)計 13 2.3.5 顯示電路的設(shè)計 13 2.3.6 鍵盤掃描電路的設(shè)計 14 第3章 系統(tǒng)軟件設(shè)計 16 3.1 系統(tǒng)主程序設(shè)計 16 3.2 鍵盤掃描程序設(shè)計 17 3.3 顯示程序設(shè)計 18 第4章 系統(tǒng)調(diào)試與軟件仿真 19 4.1 硬件調(diào)試 19 4.2 Keil uVision2軟件調(diào)試 19 4.3 Proteus仿真 20 第5章 總 結(jié) 23 附 錄 23 附錄一 主程序清單 23 附錄二 單片機八路智能搶答器原理圖 37 參 考 文 獻 38 第一章 緒 論 1.2 課本例題仿真 例題 4-6 在Keil uVision2軟件中調(diào)試程序程序如下: 例題 5-1 在Keil uVision2軟件中調(diào)試程序程序如下: 1.2 選題背景、意義 當今時代是一個新技術(shù)層出不窮的時代,在電子領(lǐng)域尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未有的速度被單片機智能化控制所取代。單片機具有體積小、功能強、成本低、應(yīng)用面廣等優(yōu)點,可以說智能化控制與自動控制的核心就是單片機。 目前,搶答器已經(jīng)作為一種必不可少的工具廣泛應(yīng)用于各種智力和知識競賽場合,但一般的搶答器可靠性低,使用壽命短,介于這些不方便因素,此次設(shè)計提出了用AT89C51單片機為核心控制元件,設(shè)計一個簡易的八路搶答器。 本方案以AT89C51單片機作為主控核心,與晶振、數(shù)碼管、蜂鳴器等通過外圍接口實現(xiàn)的八路搶答器,利用了單片機的延時電路、按鍵復位電路、時鐘電路、定時器/計數(shù)器等,設(shè)計的八路搶答器不僅具有實時顯示搶答選手的號碼和搶答時間的功能,同時還利用匯編語言編程,使其實現(xiàn)復位、定時和報警的功能。本次設(shè)計的系統(tǒng)實用性強、判斷精確、操作簡單、擴展功能強。 1.3 八路搶答器的功能簡介 此次設(shè)計的搶答器具有同步顯示的功能,并且有蜂鳴器的輔助,使得整個設(shè)計更加完整。 在每次競賽開始前,主持人讀完比賽規(guī)則,可以對搶答器進行的時間進行預設(shè)。時間設(shè)定按鍵組共有4個按鍵,其中一個鍵為搶答時間修改鍵,一個為回答時間按鍵,剩下的兩個按鍵為加一和減一按鍵。 比賽開始,主持人讀完題之后按下“開始鍵”,即搶答開始,蜂鳴器提示一次,此時數(shù)碼管開始顯示30s的倒計時;直到有一個選手按下?lián)尨疰I,對應(yīng)的會在數(shù)碼管上顯示出該選手的編號和回答剩余的時間,同時蜂鳴器也會發(fā)出一次提示音,以示有人搶答本題;如果在規(guī)定的30s時間內(nèi)沒有人做出搶答,則此題作廢,開始新一輪的搶答。在搶答和回答時間的最后5s,蜂鳴器都會給予報警提示。在倒計時過程中,主持人可以隨時按“停止鍵”結(jié)束本次回答或者搶答。 在主持未按下開始鍵,若果有人按下?lián)尨疰I,則屬于犯規(guī)搶答,此時,數(shù)碼管上會顯示違規(guī)選手的編號,同時蜂鳴器會以1s一次的頻率發(fā)出警告。在每次搶答前后,主持人都可以按下復位鍵讓系統(tǒng)清零,此時數(shù)碼管上會顯示“FFF”。 第2章 系統(tǒng)硬件設(shè)計 硬件電路部分是一個完整電路的關(guān)鍵部分,硬件性能的好壞關(guān)系到整個系統(tǒng)的性能。本章節(jié)主要介紹了八路搶答器的硬件的選擇及電路的設(shè)計。 2.1 芯片的選擇 芯片選擇的原則是經(jīng)濟、壽命長、設(shè)計簡單。對此我們作了詳細的論證。 2.1.1 控制器的選擇 控制器主要用于對顯示、搶答、音樂、計分等模塊進行控制。控制器的選擇有以下兩種方案。 方案一:采用FPGA(現(xiàn)場可編程門列陣)作為系統(tǒng)的控制器。FPGA可以實現(xiàn)各種復雜的邏輯功能,規(guī)模大,密度高,它將所有器件集成在一塊芯片上,減小了體積,提高了穩(wěn)定性,并且可以應(yīng)用EDA軟件仿真、調(diào)試,易于進行功能擴展。FPGA采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)模實時系統(tǒng)的控制核心。但由于本設(shè)計對數(shù)據(jù)處理的速度要求不高,F(xiàn)PGA的高速處理的優(yōu)勢得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時由于芯片的引腳較多,實物硬件電路板布線復雜,加重了電路設(shè)計和實際焊接的工作。 方案二:采用AT89C51作為系統(tǒng)控制器的CPU方案。單片機算術(shù)運算功能強、軟件編程靈活、自由度大,可以用軟件編程實現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點,使其在各個領(lǐng)域應(yīng)用廣泛。 基于以上分析,本次設(shè)計我采用方案二。 2.1.2 顯示模塊的選擇 顯示模塊主要是顯示時間和編號??紤]有以下兩種顯示方案。 方案一:使用液晶屏顯示時間。液晶顯示屏(LCD)具有輕薄短小、低耗電量、無輻射危險,平面直角顯示以及影像穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好,分辨率高,抗干擾能力強的特點。但由于只需要顯示時間和轉(zhuǎn)向、相數(shù)這樣的數(shù)字,信息量比較少,且液晶屏是以點陣的模式顯示各種符號,需要利用控制芯片創(chuàng)建字符庫,編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時,不能有靜電干擾,否則易燒壞液晶顯示芯片,不易維護。 方案二:使用傳統(tǒng)的數(shù)碼管顯示。數(shù)碼管具有低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護的優(yōu)點,同時其精度高,稱量快,精確可靠,操作簡單。數(shù)碼顯示是采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。 根據(jù)以上的論述,我采用方案二。 2.1.3 鍵盤的選擇 鍵盤是單片機不可缺少的輸入設(shè)備,是實現(xiàn)人機對話的紐帶。鍵盤按結(jié)構(gòu)形式可以分為非編碼鍵盤和編碼鍵盤,前者用軟件方法產(chǎn)生鍵碼,而后者則用硬件方法來產(chǎn)生鍵碼。在單片機中使用的都是非編碼鍵盤,因為非編碼鍵盤結(jié)構(gòu)簡單,成本低廉,非編碼鍵盤的類型很多,常用的有獨立式鍵盤,行列式鍵盤等。 方案一:獨立式鍵盤 獨立式鍵盤接口中使用幾根I/O線,就有幾個按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。因此可以根據(jù)實際需要對鍵盤中的按鍵靈活編碼。獨立式鍵盤的缺點是需要占用比較多的I/O口線,當單片機應(yīng)用系統(tǒng)鍵盤中需要的按鍵比較少或I/O口線比較富余時,可以采用這樣類型的鍵盤。 方案二:行列式鍵盤 行列式鍵盤是用N條I/O線作為行線,M條I/O線作為列線組成的鍵盤,按鍵在行線和列線的每個交叉點上。這種形式的鍵盤結(jié)構(gòu),能夠有效地提高單片機系統(tǒng)中I/O的利用率。 CPU對鍵盤的掃描可以采用取程序控制的隨機方式,即只有在CPU空閑是時才去掃描鍵盤,響應(yīng)操作人員的鍵盤輸入,即利用單片機內(nèi)部定時器每隔一定時間對鍵盤掃描一次,這樣控制方式,不管鍵盤上有無鍵閉合,CPU總是定時的關(guān)心鍵盤狀態(tài)。在大多數(shù)情況下,CPU對鍵盤可能進行空掃描。為了提高CPU的效率而又能及時響應(yīng)鍵盤輸入,可以采用中斷方式,即CPU平時不必掃描鍵盤,只要當鍵盤上有鍵盤閉合時就產(chǎn)生中斷請求,向CPU申請中斷后,立即對鍵盤上有鍵盤進性掃描,識別閉合鍵,并做相應(yīng)的處理。 根據(jù)以上的論述,我采用方案一。 2.2.4 芯片最終選擇方案 根據(jù)上幾節(jié)的論證,通過綜合考慮,我們的芯片選擇如表2-1。 表2-1 器件選擇方案詳單 器件名稱 規(guī)格型號 數(shù)量 微處理器 AT89C51 1 電阻 220歐姆 8 8K 1 1K 1 瓷片電容 30pF 2 電解電容 10uF 1 晶振 12MHZ 1 按鈕 CD4013 15 器件名稱 規(guī)格型號 數(shù)量 七段數(shù)碼管 7SEG-MPX-CC 4 蜂鳴器 1 2.2 AT89C51單片機簡單概述 AT89C51單片機屬于51系列單片機,本次設(shè)計所用的核心元件即為AT89C51,本節(jié)主要介紹了AT89C51的管腳功能。 2.2.1 51系列單片機的功能特性 MSC-51單片機是美國英特爾公司于1980年起推出的第二代產(chǎn)品。與8084相比,8051的硬件結(jié)構(gòu)和指令系統(tǒng)均有很大改進,可支持更大存儲空間擴充了更多的I/O功能,速度提高了2-5倍。 1. 主要特性: (1) 適于控制應(yīng)用的8位CPU。 (2) 擴展的邏輯處理能力。 (3) 4KB片內(nèi)程序存儲空間。其片外可尋址的范圍為64KB,主要用于存放已編程的程序,也可存放一些原始數(shù)據(jù)和表格。 (4) 128B的片內(nèi)數(shù)據(jù)RAM。其片外數(shù)據(jù)存儲器的尋址范圍為64KB用于存放可讀寫的數(shù)據(jù),如運算的中間結(jié)果和最終結(jié)果。 (5) 32根雙向可單獨尋址的輸入輸出線。 (6) 2個16位定時/計數(shù)器,片內(nèi)時鐘發(fā)生器。它可以設(shè)置為計數(shù)方式,對外部事件進行計數(shù),也可以設(shè)置為定時方式進行定時。 (7) 全雙工異步發(fā)送/接收器。 (8) 具有5個中斷源,可編程為兩個優(yōu)先級的中斷系統(tǒng),它可以接收外部中斷請求、定時器/計數(shù)器中斷申請和串行口中斷申請。 2. 程序指令 AT89C51單片機的時序單位有四個,分別是節(jié)拍、狀態(tài)、機器周期和指令周期。 節(jié)拍與狀態(tài): 我們把振蕩脈沖的周期定義為節(jié)拍(P),振蕩脈沖經(jīng)過兩個分頻后即得到整個單片機工作系統(tǒng)的時鐘信號,把時鐘信號的周期定義為狀態(tài)(S),這樣一個狀態(tài)就有兩個節(jié)拍,前半個周期相應(yīng)的節(jié)拍我們定義為P1,后半周期對應(yīng)的節(jié)拍定義為P2。 機器周期: AT89C51有固定的機器周期,規(guī)定一個機器周期有6個狀態(tài),分別表示為S1-S6,而一個狀態(tài)包含兩個節(jié)拍,那么一個機器周期就有12個節(jié)拍,即一個機器周期包含12個振蕩脈沖,即機器周期就是振蕩脈沖的12分頻,如果使用12MHZ的時鐘頻率,一個機器周期就是1us。 2.2.2 AT89C51單片機結(jié)構(gòu)說明 AT89C51單片機的管腳圖如圖2-1所示: 圖2-1 AT89C51單片機管腳圖 u P0口:P0口是一組8位漏極開路雙向I/O口,在訪問外部存儲器時用作8位低地址線和數(shù)據(jù)總線。 u P1口: P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,向P1口寫入“1”時,P1口被內(nèi)部電路上拉為高電平,可用作輸入口。當作為輸出口時,被外部拉低的P1口會因為內(nèi)部上拉電阻的存在而輸出電流。 u P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,當P2口被寫“1”時,其管腳被內(nèi)部電路上拉為高電平,可作輸入口。當作為輸出口時,被外部拉低的P2口會因為內(nèi)部上拉電阻的存在而輸出電流。在訪問外部程序存儲器和外部數(shù)據(jù)存儲器時,P2口可作為地址總線的高八位地址線。 ◆ P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,當P3口寫入“1”后,它們被內(nèi)部電路上拉為高電平,并用作輸入口。當作為輸出口時,被外部拉低的P3口會因為內(nèi)部上拉電阻的存在而輸出電流。 P3口也可作為AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲器讀選通) u RST:復位信號輸入端。當振蕩器工作時,RET引腳出現(xiàn)兩個機器周期以上的高電平將使單片機復位。 u ALE/PROG:ALE是地址鎖存允許信號。它的作用是把CPU從P0口分時輸出的低8位地址鎖存在鎖存器中。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6,可用作外部時鐘或定時。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。如果CPU在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 u /PSEN:讀片外程序存儲器選通信號輸出端。當執(zhí)行外部程序存儲器數(shù)據(jù)時,/PSEN將產(chǎn)生負脈沖作為外部程序存儲器的讀選通信號。在訪問外部數(shù)據(jù)存儲器和內(nèi)部程序存儲器時,/PSEN無效。 u /EA/VPP:讀片內(nèi)與片外程序存儲器的選擇端。當/EA為高電平時,低4KB的地址為片內(nèi)程序存儲器單元,高于4KB以上的地址為片外程序存儲器單元;當/EA為低電平時,則只能讀片外程序存儲器。 u XTAL1:片內(nèi)振蕩電路反向放大器的輸入端,采用外部時鐘時該引腳接地。 XTAL2:片內(nèi)振蕩電路反向放大器的輸出端,采用外部時鐘時該引腳為振蕩信號的輸入端。 2.3 硬件的構(gòu)成及功能 本節(jié)主要介紹了搶答器的硬件部分的設(shè)計,硬件部分的設(shè)計是比不可少的,也是此次設(shè)計的核心。 2.3.1 搶答器的硬件圖 根據(jù)所要實現(xiàn)的功能,我們先大概將搶答器的硬件分為這幾部分:CPU、聲音電路、顯示電路、定時電路、開始結(jié)束鍵輸入和搶答按鍵輸入。硬件圖如圖2-2所示。 圖2-2 搶答器硬件圖 2.3.2 時鐘頻率控制電路 單片機必須在時鐘的驅(qū)動下才能工作。AT89C51中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的工作速度。時鐘頻率控制電路如圖2-3所示。 圖2-3 外部振蕩電路 內(nèi)部時鐘振蕩器一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容C1、C2選用30PF大小,其作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調(diào)。 單片機在工作時,由內(nèi)部振蕩器產(chǎn)生或由外部直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù)。該設(shè)計中時鐘頻率選為12MHz。 2.3.3 復位電路的設(shè)計 在搶答器中復位是為定時做鋪墊的,在搶答之前要復位,搶答完畢要復位,按了復位鍵之后LED顯示F。單片機的復位引腳RST出現(xiàn)2個機器周期以上的高電平時即可實現(xiàn)復位,復位后單片機的各狀態(tài)都恢復到初始化狀態(tài),其電路圖如圖2-4所示。 圖2-4 復位電路 圖中復位電路由按鍵和電解電容C3、電阻R9構(gòu)成的按鍵及上電復位電路。由于單片機是高電平復位,所以當按鍵按下時,單片機的9腳RESET管腳處于高電平,此時單片機處于復位狀態(tài)。當上電后由于電容緩慢充電,單片機的9腳電壓逐步由高向低轉(zhuǎn)化,經(jīng)過一段時間后,單片機的9腳處于穩(wěn)定的低電平狀態(tài),此時單片機上電復位完畢,系統(tǒng)程序從0000H開始執(zhí)行。 在此設(shè)計中使用了硬件復位和軟件復位兩種。硬件復位可將寄存器及存儲器的值都恢復到初始值。而在設(shè)計中,倒計時時間存在記憶功能,因此還設(shè)計了軟復位功能。軟復位實際上就是當程序執(zhí)行完畢后,講程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到該段程序的起始地址。 2.3.4 報警電路的設(shè)計 我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個管腳的高低電平,則在該管腳上就能產(chǎn)生一定頻率的矩形波,接上蜂鳴器就能發(fā)出一定頻率的聲音,若利用延時程序控制高低電平的持續(xù)時間,就能改變輸出頻率,從而改變蜂鳴器發(fā)出的音調(diào)。在本設(shè)計中此電路起到報警功能。它會在第一位選手按下?lián)尨鸢粹o時響一次,以提示有人搶答本題,并且在該選手的60秒搶答過程中或30秒等待過程中剩余最后5秒時響起,以提示到此題結(jié)束還有5秒鐘。 本次設(shè)計如圖2-5所示,圖中用到單片機的10、11和16管腳。10管腳具有讀入功能,11管腳具有輸出功能,而16管腳具有外部數(shù)據(jù)寫功能,單片機通過內(nèi)部定時器的操作實現(xiàn)交替變換的波形輸出驅(qū)動蜂鳴器發(fā)生。 圖2-5 報警電路 2.3.5 顯示電路的設(shè)計 顯示功能與硬件的關(guān)系極大,顯示電路有兩種選擇,液晶屏顯示和傳統(tǒng)數(shù)碼管顯示。液晶屏具有輕薄、無輻射危險、可視面積大、分辨率高和抗干擾能力強的特點,但是由于顯示信息少、編程工作量大和成本偏高。而數(shù)碼管具有低耗能、低損耗、低壓、壽命長和精確度高、操作簡單的優(yōu)點,本設(shè)計中采用的是4位七段數(shù)碼管顯示。數(shù)碼管顯示通常顯示分為動態(tài)顯示和靜態(tài)顯示。其中,靜態(tài)顯示的特點是顯示穩(wěn)定不閃爍,編程簡單,顯示亮度高,但占用I/O口多,實際應(yīng)用時必須增加譯碼驅(qū)動器進行驅(qū)動,增加了硬件電路的復雜性。而動態(tài)顯示的穩(wěn)定性雖沒靜態(tài)顯示的好,編程復雜,但是相對靜態(tài)顯示而言占用的端口資源少。 本設(shè)計采用的是動態(tài)顯示方法。通過查表法將值在數(shù)碼管上顯示出來。其中單片機的P0口為字型碼輸入端,P2口得低三位為字選段輸入端。 4位七段數(shù)碼管顯示電路如圖2-6。 圖2-6 七段數(shù)碼管顯示電路 數(shù)碼管有共陰極和共陽極兩種接法。共陰極接法,各發(fā)光二極管的陰極連在一起并接地,當某一發(fā)光二極管的陽極輸入高電平時,則該段發(fā)光;共陽極接法,各發(fā)光二極管的陽極連在一起并接電源,當某一發(fā)光二極管的陰極輸入低電平時,則該段發(fā)光。 本設(shè)計采用4位一體的七段共陰極數(shù)碼管,其中A-G段分別接到單片機的P0口,由單片機輸出的P0口數(shù)據(jù)來決定段碼值,位選碼COM1,COM3,COM4分別接到單片機的P2.0,P2.1,P2.2,由單片機來決定當前該顯示的是哪一位。在電路圖中還有8個220歐姆的電阻分別連接在P0口上,用作P0口的上拉電阻,保證P0口沒有數(shù)據(jù)輸出時處于高電平狀態(tài)。 2.3.6 鍵盤掃描電路的設(shè)計 鍵盤掃描電路由兩部分組成:搶答電路和定時電路。 鍵盤是人機交互的主要設(shè)備,鍵盤電路分為獨立式和矩陣式。其中,獨立式鍵盤硬件電路簡單,而且在程序設(shè)計上也不復雜,一般用在對硬件電路要求不高的簡單電路中;矩陣式鍵盤硬件電路比獨立式鍵盤電路復雜,而且程序設(shè)計繁瑣,但它節(jié)省端口,適合于多按鍵電路。 本設(shè)計基于簡單硬件電路要求的基礎(chǔ)上,采用的是獨立鍵盤的方式。 在定時電路的設(shè)計中,有1個搶答時間調(diào)整按鍵、1個回答時間調(diào)整按鍵、加一按鍵、減一按鍵和1個開始按鍵、1個結(jié)束按鍵。電路圖如圖2-7所示。 圖2-7 定時電路 圖2-8 搶答電路 圖中和AT89C51芯片的12管腳連接的為搶答時間30s的調(diào)整按鍵,和13管腳連接的為回答時間60s的調(diào)整按鍵,與14管腳連接的為加一按鍵,與15管腳連接的為減一按鍵。這四個按鍵用于主持人對回答時間和搶答時間的調(diào)整。 開始按鍵與單片機的10管腳連接,停止按鍵與11管腳連接。這里用到了單片機10、11管腳復合功能中的IO端口功能,單片機通過讀取10、11腳的P3.0、P3.1的IO端口值來判斷當前是否處于搶答開始狀態(tài)或搶答結(jié)束狀態(tài)。當主持人按下開始鍵,搶答電路和定時電路將進入正常搶答狀態(tài);當回答完畢,主持人可以按下結(jié)束鍵停止計時。 搶答電路完成兩個功能:一是分辨出選手按鍵先后,并鎖存優(yōu)先搶答者的編號,同時譯碼顯示電路顯示編號;二是其他選手操作無效。搶答電路如圖2-8所示,圖中8個搶答按鍵分別接入單片機的P1.0-P1.7端口,單片機通過讀取P1.0-P1.7的值來判斷當前輸入的是8個搶答按鍵中的哪一個。如果主持人未按下開始按鍵判斷到有人違規(guī)操作,蜂鳴器會發(fā)出警報聲,并且數(shù)碼管會顯示出犯規(guī)者的編號。 第3章 系統(tǒng)軟件設(shè)計 3.1 系統(tǒng)主程序設(shè)計 1. 系統(tǒng)主程序設(shè)計思路 為了能達到公平、公正、合理的設(shè)計理念,應(yīng)該在主持人發(fā)布搶答命令之前設(shè)定好搶答時間。當時間設(shè)定好了之后,主持人發(fā)布搶答命令。按下開始按鍵后,程序開始打開,定時中斷開始倒計時,然后調(diào)用鍵盤掃描子程序,當掃描到有人按下了搶答鍵,馬上關(guān)閉搶答中斷計時器T1,調(diào)用顯示程序,此時封鎖搶答鍵盤,啟動計時器T0。 2. 主程序框圖 根據(jù)搶答器設(shè)計要求,其軟件設(shè)計部分流程圖如圖3-1: 圖3-1 主程序流程圖 3.2 鍵盤掃描程序設(shè)計 搶答選手的搶答程序設(shè)計是本設(shè)計的關(guān)鍵。鍵盤掃描流程圖如圖3-2所示。 圖3-2 鍵盤掃描程序流程圖 3.3 顯示程序設(shè)計 本次設(shè)計的顯示部分在按下開始鍵時,后兩個數(shù)碼管顯示倒計時間,以1s變換一次,并且調(diào)用延時程序,此時定時器采用中斷方式,可以充分利用CPU。在有選手按下?lián)尨疰I時,第一個數(shù)碼管顯示選手號,最后兩個數(shù)碼管顯示倒計時,定時器同樣采用中斷方式。 除此之外,本設(shè)計數(shù)碼管具有閃爍功能,當有違規(guī)搶答時,第一個數(shù)碼管會顯示選手號,后兩個數(shù)碼管會閃爍顯示FF,一個周期為每秒1次。以示搶答無效,此時定時器采用定時中斷的工作方式。 連接時段選信號接在P0口的P0.0~P0.6七個I/O口上,P1口是準雙向I/O接口在輸出驅(qū)動部分,所以在接電阻時選擇接220Ω限流電阻。而在位選方面采用P2口的P2.0~P2.2,用單片機P2.2三個I/O口作為位選信號的輸出口。 第4章 系統(tǒng)調(diào)試與軟件仿真 系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,二者密不可分。我們設(shè)計好的硬件電路和軟件程序必須經(jīng)過聯(lián)合調(diào)試才能驗證其正確性。 4.1 硬件調(diào)試 硬件調(diào)試分為單元電路調(diào)試和聯(lián)機調(diào)試,單元電路調(diào)試在硬件電路設(shè)計中已經(jīng)進行,這里只對其印刷版電路進行檢驗。 線路檢查:根據(jù)硬件邏輯設(shè)計圖,仔細檢查電路是否正確,并且核對元器件的型號、規(guī)格和安裝是否符合要求,必要時可用萬用表檢測線路通斷情況。先用萬用表檢查各管腳之間是否有短路、虛焊、漏焊現(xiàn)象。檢查無誤后,測試各個芯片是否有損,待檢查完畢后,將各個芯片插入各自的槽位。 電源調(diào)試:電路的第一次通電測試很重要,調(diào)試方法有兩種:一種是斷開電路穩(wěn)壓電源的輸出端,檢查空載時電源的工作情況;另一種是拔下電路上的主要繼承芯片,檢查電源的負載能力。確保電源無故障并符合性能要求。 通電檢查:首先按下復位鍵,用萬用表測試復位鍵的第四引腳是否有高電平輸出,然后測試其第一管腳是否有低電平輸出,如果是的話說明電路連接正確。然后按下開始鍵,再按下?lián)尨疰I1,之后依次按下?lián)尨疰I2、3、4、5、6、7、8,分別觀察數(shù)碼管有無變化。最后對蜂鳴器進行驗證,看看是否正常發(fā)聲。同理分別按下其它7個搶答鍵進行檢查。 4.2 Keil uVision2軟件調(diào)試 軟件調(diào)試是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。 本設(shè)計用到了Keil uVision2軟件,首先打開Keil uVision2,將程序輸入;然后進行調(diào)試,將程序中的語法錯誤和邏輯錯誤糾正,調(diào)試完畢后,創(chuàng)建HEX文件,HEX文件用于燒寫芯片,將制定程序?qū)懭胍言O(shè)計好的電路板中,使其能根據(jù)我們的要求實現(xiàn)相應(yīng)的功能;最后將HEX文件燒寫入AT89C51芯片,運行電路,讓其實現(xiàn)八路搶答的功能。如圖4-1所示。 圖4-1 Keil uVision軟件 4.3 Proteus仿真 本設(shè)計用到Proteus仿真軟件。首先將電路圖根據(jù)設(shè)計要求在軟件中準確地畫出,即進行ISIS原理圖設(shè)計,我們的仿真也是完全基于ISIS原理圖模塊下進行的,Proteus有兩種截然不同的仿真方式:交互式仿真和基于圖表的仿真,在本設(shè)計中我們用到的是交互式仿真,用于校驗所設(shè)計的電路是否能正常運行。如圖4-2所示。 圖4-2 八路搶答器原理圖 然后將Keil uVision2生成的HEX文件鏈接到該中原理圖,即設(shè)計文檔的建立。如圖4-3所示。 圖4-3 建立設(shè)計文檔 文檔建立好之后,按Ctrl+F12開始運行,然后按F12,執(zhí)行程序。下面是幾組仿真圖。 圖4-4 復位顯示FFF 圖4-5 啟動開始鍵,倒計時30s 圖4-6 3號選手非法搶答 圖4-7 5號選手正常搶答 第5章 總 結(jié) 此次設(shè)計主要以硬件系統(tǒng)為基礎(chǔ),硬件系統(tǒng)關(guān)系到電子產(chǎn)品的好壞,如系統(tǒng)的抗干擾性,安全性和可行性等,所以要合理地選擇,合理地安排,盡量減少干擾,以提高系統(tǒng)性能。單片機是很容易受干擾的控制器,當采用外部晶振時,應(yīng)盡量讓其靠近單片機,以減少對其的干擾,防止程序的混亂現(xiàn)象。硬件系統(tǒng)的好壞很大部分在于經(jīng)驗,比如焊接是否干凈利落,器件是否完好,操作是否規(guī)范等,所以我們要有好的動手能力。 而軟件設(shè)計確實設(shè)計的核心,具有多樣化,靈活性高,易移植等優(yōu)點。首先我們要深深領(lǐng)會各指令的含義才能更加熟練應(yīng)用。中斷的合理利用可以有效減少對CPU的占用,更好的處理好其他功能。延時的應(yīng)用會順利地實現(xiàn)顯示,鳴笛等功能,同時還可以去掉系統(tǒng)固有的不穩(wěn)定性。定時的應(yīng)用則比較實際,能實現(xiàn)我們所需的功能。軟件的設(shè)計大部分采用模塊化設(shè)計的方法以方便調(diào)試,并使其可讀性大大增強,方便更改和移植。 在此次設(shè)計中,我總結(jié)了很多不足,同時也學到了很多新的知識,并且鞏固了課堂知識,但最終設(shè)計的系統(tǒng)仍有不足,敬請?zhí)岢觯? 附 錄 附錄一 主程序清單 OK EQU 20H;搶答開始標志位 RING EQU 22H;響鈴標志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT00 ORG 000BH AJMP T00 ORG 0013H AJMP INT11 ORG 001BH AJMP T11 ORG 0040H MAIN:MOV R1,#30;設(shè)搶答時間30s MOV R2,#60;設(shè)答題時間60s MOV TMOD,#11H;設(shè)置定時器為模式1 MOV TH0,#0F0H MOV TL0,#0FFH MOV TH1,#3CH MOV TL1,#0B0H;50ms為一次溢出中斷 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1;允許四個中斷T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0;一開始運行定時器,開始顯示FFF LOOP:MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;調(diào)用顯示FFF子程序 JB P3.0,LOOP1;判斷未開始答題,若有人按下?lián)尨穑絃OOP1非法搶答處理程序 ACALL DELAY JB P3.0,LOOP1;判斷已開始答題,則向下執(zhí)行 ACALL BARK;蜂鳴器響 MOV A,R1 MOV R6,A;將R1中30s送入R6 SETB OK;復位,用于COUNT中判斷是否查詢搶答 MOV R7,#01H;讀搶答鍵按下數(shù),要求只讀一次有用信號 MOV R3,#0AH;搶答時間指顯示計時,不顯示號數(shù) AJMP COUNT;進入COUNT倒計時子程序,查詢有效搶答程序 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號選手違規(guī) AJMP ERROR;跳轉(zhuǎn)到ERROR非法搶答處理程序 FALSE2:MOV R3,#02H AJMP ERROR FALSE3:MOV R3,#03H AJMP ERROR FALSE4:MOV R3,#04H AJMP ERROR FALSE5:MOV R3,#05H AJMP ERROR FALSE6:MOV R3,#06H AJMP ERROR FALSE7:MOV R3,#07H AJMP ERROR FALSE8: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;在時間LED上顯示搶答時間30s JNB P3.4,INC0 JNB P3.5,DEC0 JNB P3.1,BACK0 AJMP INT00 INC0:MOV A,R1 CJNE A,#63H,ADD0;如果不是99,則跳轉(zhuǎn)到ADD0加1程序,否則往下執(zhí)行,置0,重新加起 MOV R1,#00H ACALL DELAY AJMP INT00 ADD0:INC R1 ACALL DELAY AJMP INT00 DEC0:MOV A,R1 JZ SETT;如果R1中值為0,則跳到SETT程序,R1置99 DEC R1 ACALL DELAY AJMP INT00 SETT:MOV R1,#63H ACALL DELAY AJMP INT00 BACK0:RETI INT11: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 INT11 INC1:MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY AJMP INT11 ADD1:INC R2 ACALL DELAY AJMP INT11 DEC1:MOV A,R2 JZ SET1 DEC R2 ACALL DELAY AJMP INT11 ;====計時查詢==== SET1:MOV R2,#63H ACALL DELAY AJMP INT11 BACK1:RETI ;====倒計時程序==== REPEAT:MOV A,R2;新一輪重新計時 MOV R6,A CLR RING COUNT:MOV R0,#00H;重置定時器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H;重置定時器 RECOUNT:MOV A,R6;將回答時間60s給A MOV B,#0AH DIV AB;除10,分出個位和十位 MOV 30H,A;十位存于30H MOV 31H,B;個位存于31H MOV R5,30H;取十位 MOV R4,31H;取個位 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倒計時 FULL:CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù),并清R0 SETB RING MOV A,R6 JZ QUIT;計時完畢,跳轉(zhuǎn)到QUIT,否則繼續(xù)向下執(zhí)行 MOV R0,#00H DEC R6;一秒減一 AJMP CHECK MAX:MOV A,R0 CJNE A,#14H,CHECK;如果剩1s向下運行,否則跳轉(zhuǎn)到CHECK查詢“停止”程序 DEC R6 MOV R0,#00H CHECK:JNB P3.1,QUIT;如果查詢按下停止鍵,則退出;否則向下 JNB OK,CHECK1;判斷是否在回答倒計時內(nèi),如果不在跳到CHECK1判斷是否開始新一輪;否則向下繼續(xù)執(zhí)行 AJMP NEXT1 CHECK1:JNB P3.0,REPEAT;判斷是否重新開始 NEXT1:ACALL DISPLAY JB OK,ACCOUT;判斷是否是搶答倒計時,若是則跳轉(zhuǎn)到ACCOUT查詢搶答;否則向下執(zhí)行繼續(xù)倒計時 AJMP RECOUNT ACCOUT:MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TRUE7 JNB ACC.7,TRUE8 AJMP RECOUNT QUIT:CLR OK;停止鍵按下程序 CLR RING AJMP LOOP ;=====正常搶答處理程序===== TRUE1:ACALL BARK MOV A,R2 MOV R6,A;搶答時間R2送R6 MOV R3,#01H CLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答 AJMP COUNT TRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNT TRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNT TRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNT TRUE5:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNT TRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNT TRUE7:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNT TRUE8:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT ;=====犯規(guī)搶答程序===== ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯規(guī)號數(shù)暫存與(34H) HERE: MOV A,R0 CJNE A,#06H,FLASH;0.3s向下運行->滅并停響 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三燈全滅 AJMP CHECK2 FLASH:CJNE A,#0CH,CHECK2;下面是0.8s的情況,響并顯示號數(shù)并清R0 SETB RING MOV R0,#00H MOV R3,34H;取回號數(shù) MOV R5,#0BH MOV R4,#0BH;顯示FF和號數(shù) AJMP CHECK2 CHECK2: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HERE QUIT1:CLR RING CLR OK AJMP MAIN ;====顯示程序==== DISPLAY:MOV DPTR,#DAT1 MOV A,R3 MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A ACALL DELAY2 MOV DPTR,#DAT2 MOV A,R5 MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A ACALL DELAY2 MOV A,R4 MOVC A,@A+DPTR MOV P2,#0FBH MOV P0,A ACALL DELAY2 RET DAT1:DB 00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H;對應(yīng)“滅”,“1”,“2” ,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“滅”,“F” DAT2:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H;第一個顯示“0” ;====顯示延時==== DELAY:MOV 35H,#08H DELAY3:ACALL DISPLAY DJNZ 35H,DELAY3 RET ;====去抖動(按鍵延時4236個機器周期)==== DELAY1:MOV 32H,#12H DELAY4:MOV 33H,#0AFH DELAY5:DJNZ 33H,DELAY5 DJNZ 32H,DELAY4 RET ;====顯示延時(延時4236個機器周期)==== DELAY2:MOV 32H,#43H DELAY6:MOV 33H,#1EH MOV A,R7;每隔60-70個機器周期讀一次P1口,全1為無效,繼續(xù)讀,有一個不為1時,轉(zhuǎn)到正常搶答處理 JNZ LOOP3;沒讀到有效數(shù)轉(zhuǎn)到LOOP3繼續(xù)循環(huán) DELAY7:DJNZ 33H,DELAY7 DJNZ 32H,DELAY6 RET LOOP3:MOV A,P1 CJNE A,#0FFH,LOOP5 LOOP4:MOV 36H,A AJMP DELAY7 LOOP5:DEC R7 AJMP LOOP4 ;====發(fā)聲程序==== BARK:SETB RING ACALL DELAY ACALL DELAY CLR RING RET ;====T0溢出中斷==== T00:MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT CPL P3.6 OUT:RETI ;====T1溢出中斷==== T11:MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END 附錄二 單片機八路智能搶答器原理圖 參 考 文 獻 [1] 孫蕙芹.單片機實用教程.北京:中國電力出版社,2009 [2] 賈海瀛.數(shù)字電子技術(shù)與實訓.北京:機械工業(yè)出版社,2008.1 [3] 李雅軒.模擬電子技術(shù)-2版.西安:西安電子科技大學出版社,2006.7 [4] 張永飛.電工基礎(chǔ).天津:天津大學出版社,2008.9 [5] 張立科.單片機典型模塊設(shè)計實例導航.第一版.人民郵電出版社,1988 [6] 潘新民.微型計算機控制技術(shù).北京:電子工業(yè)出版社,2003 [7] 李響初.基于MCS-51單片機的智能時鐘控制系統(tǒng)設(shè)計.世界電子元件,2007,7:97~98 [8] Proteus入門講義 百度文庫 [9] C51 Keil uVision2 百度文庫 29- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 51 單片機 八路 搶答 課程設(shè)計
鏈接地址:http://m.appdesigncorp.com/p-6683933.html