基于單片機(jī)的電子智能搶答器畢業(yè)論文_第1頁(yè)
基于單片機(jī)的電子智能搶答器畢業(yè)論文_第2頁(yè)
基于單片機(jī)的電子智能搶答器畢業(yè)論文_第3頁(yè)
基于單片機(jī)的電子智能搶答器畢業(yè)論文_第4頁(yè)
基于單片機(jī)的電子智能搶答器畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、. . . . 本科畢業(yè)論文(設(shè)計(jì))題目基于單片機(jī)的電子智能搶答器基于單片機(jī)的電子智能搶答器目錄第1章引言11.1單片機(jī)的應(yīng)用與發(fā)展11.2搶答器系統(tǒng)的發(fā)展分析31.3 研究目標(biāo)與容第2章總體方案設(shè)計(jì)42.1系統(tǒng)主要功能42.2系統(tǒng)工作流程52.3軟硬件方案選擇52.3.1硬件方案選擇62.3.2軟件方案選擇10第3章硬件設(shè)計(jì)123.1總體設(shè)計(jì)123.2時(shí)鐘頻率電路的設(shè)計(jì)133.3鍵盤掃描電路的設(shè)計(jì)143.4復(fù)位電路的設(shè)計(jì)153.5發(fā)聲電路的設(shè)計(jì)163.6 綜合PCB板的設(shè)計(jì)163.6.1 布局的原則173.6.2 布線173.6.3焊盤17第4章軟件設(shè)計(jì)204.1軟件任務(wù)分析204.2主要模

2、塊的流程圖與分析214.2.1按鍵掃描程序224.2.2計(jì)時(shí)模塊224.2.3顯示模塊234.2.4 初始化模塊254.2.5計(jì)分模塊264.2.6發(fā)聲模塊26第5章系統(tǒng)綜合調(diào)試275.1系統(tǒng)實(shí)現(xiàn)的功能275.2系統(tǒng)運(yùn)行效果27第6章總結(jié)32參考文獻(xiàn)34致35附錄1:主程序源代碼MAIN.C36附錄2:字模數(shù)據(jù)和類型定義頭文件DATA.H46摘要:近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)日新月異更新。本文介紹一種用AT89C51作為核心部件進(jìn)行邏輯控制與信號(hào)產(chǎn)生的單片機(jī)技術(shù)和C語言編程設(shè)計(jì)的8路數(shù)字搶答器。文章對(duì)搶答器的背景與現(xiàn)狀、硬件設(shè)計(jì)、軟件設(shè)計(jì)與其仿真都做

3、了詳細(xì)的介紹,使我們不僅元器件的原理與設(shè)計(jì)有了深入的了解,也對(duì)單片機(jī)的設(shè)計(jì)研發(fā)過程有了更加深刻的體會(huì) 本設(shè)計(jì)主要采用單片機(jī)控制,采用手動(dòng)搶答的方式,有人搶答后,系統(tǒng)自動(dòng)封鎖其他人的搶答按鈕,使其不能再搶答,從而實(shí)現(xiàn)搶答功能。 該系統(tǒng)還增加了搶答倒計(jì)時(shí)和答題對(duì)錯(cuò)判斷功能,另外搶答倒計(jì)時(shí)的時(shí)間可以調(diào)整。若有人在主持人按下開始按鈕之前按下?lián)尨鸢粹o,系統(tǒng)不會(huì)顯示選手的,只有在開始按鈕被按下之后,選手才可以有效的搶答,使搶答達(dá)到公平、公開的效果。關(guān)鍵詞:?jiǎn)纹瑱C(jī);搶答器;AT89C51;液晶第1章引言1.1 搶答器的研究意義 隨著我國(guó)經(jīng)濟(jì)和文化事業(yè)的發(fā)展,在很多公開競(jìng)爭(zhēng)場(chǎng)合要求有公正的

4、競(jìng)爭(zhēng)裁決,諸如證券、股票交易與各種智力競(jìng)賽等,因此出現(xiàn)了搶答器。搶答器一般是由很多電路組成的,線路復(fù)雜,可靠性不高,功能也比較簡(jiǎn)單,特別是當(dāng)搶答路數(shù)很多時(shí),實(shí)現(xiàn)起來就更為困難。因此我們?cè)O(shè)計(jì)了以單片機(jī)為核心的新型智能的搶答器,在保留原始搶答器的基本功能的同時(shí)又增加了數(shù)碼管顯示電路實(shí)現(xiàn)了其他功能。搶答器又稱為第一信號(hào)鑒別器,其主要應(yīng)用于各種知識(shí)競(jìng)賽、文藝活動(dòng)等場(chǎng)合。1.2搶答器系統(tǒng)的發(fā)展分析在2007年以前,搶答器作為一種競(jìng)賽設(shè)備,一直沒有得到多大的提高,在使用過程中只起到搶答作用,而且在設(shè)計(jì)上基本是采用模擬電路的方式,搶答的精確度不夠高,而且要受到線路和距離的限制。隨著電腦的普與率在大幅提高,在

5、新的信息化時(shí)代中,各類競(jìng)賽活動(dòng)也發(fā)生了一些大的變化,不再是現(xiàn)場(chǎng)主持人念題,選手回答,這種固定的、單調(diào)且死板的方式。現(xiàn)場(chǎng)要求有更多互動(dòng)和更多娛樂的效果。活動(dòng)的策劃者們?cè)诓粩嗟乃伎己驮诨顒?dòng)環(huán)節(jié)上進(jìn)行設(shè)計(jì)。電腦搶答器的出現(xiàn)解決了策劃者們面對(duì)的難題,電腦搶答器是以電腦做為操作平臺(tái),控制器方面采用了數(shù)字電路和單片機(jī)的方式和電腦進(jìn)行通信,這樣設(shè)計(jì)使知識(shí)競(jìng)賽長(zhǎng)期以來固定的模式被打破 鄭州卓豫公司. 搶答器系統(tǒng)的發(fā)展分析EB/OL. 2013-4-30. :/ youboy /s57021498.html.。活動(dòng)中出現(xiàn)了更多的設(shè)計(jì)和新玩法,使知識(shí)競(jìng)賽走向了新的方向。以電腦做為平臺(tái)的搶答器系統(tǒng),可以通過競(jìng)賽軟件

6、控制搶答器,答題器,記分屏,燈光效果等等。通過知識(shí)競(jìng)賽軟件可以做到各個(gè)環(huán)節(jié)中的題目顯示,選手可以通過手中的搶答器搶答,搶答結(jié)果會(huì)顯示在大屏幕上和分?jǐn)?shù)會(huì)顯示在LED記分屏中。選手還能通過答題器對(duì)題目進(jìn)行按鍵回答,在顯示設(shè)備上顯示出每位選手答題的情況,這樣的方式很大程度的提高了比賽的檔次和娛樂性。除了電腦搶答器外還有數(shù)字電路式、單片機(jī)式的搶答器。對(duì)數(shù)字電路式的搶答器來說電路復(fù)雜,且成本偏高,故障率高,顯示方式簡(jiǎn)單,電腦搶答器不夠便攜 何伶俐. 基于STC89C52的四路搶答器設(shè)計(jì)J. 科技致富向?qū)? 2012(9):106.。隨著單片機(jī)的應(yīng)用不斷深入,以單片機(jī)為核心的搶答器不斷出現(xiàn)。利用單片機(jī)的優(yōu)

7、點(diǎn),使搶答器具有結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大、性能可靠等特點(diǎn)。1.3 研究目標(biāo)與容本系統(tǒng)采用模塊化設(shè)計(jì)搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個(gè)搶答按鈕。主持人有開始和結(jié)束、復(fù)位鍵。在后臺(tái)主持人可以修改,搶答時(shí)間和選手回答問題的時(shí)間設(shè)置,原始狀態(tài)下?lián)尨饡r(shí)間為30s,回答問題時(shí)間為60s。通過加鍵和減鍵修改上述時(shí)間,改完后確認(rèn)鍵確定。新時(shí)間開始有效,主持人按鍵開始后,選手開始搶答為有效,數(shù)碼顯示屏顯示選手號(hào)和搶答時(shí)間倒計(jì)時(shí),在最后五秒揚(yáng)聲器發(fā)生提示。如果主持人沒有按下開始鍵而選手就搶答視為犯規(guī),數(shù)碼顯示屏顯示犯規(guī)者的代號(hào),揚(yáng)聲器持續(xù)發(fā)生。主持人可按鍵結(jié)束,新一輪搶答開始。第2章總體方案設(shè)計(jì)2.1系統(tǒng)主要

8、功能本系統(tǒng)是以單片機(jī)為主控芯片的八路搶答器,它包括了8路搶答按鈕、計(jì)時(shí)顯示、倒計(jì)時(shí)提示、開始與復(fù)位控制按鈕、加時(shí)減時(shí)控制按鈕。系統(tǒng)的主要功能模塊框圖如圖2-1所示。圖2-1 搶答器的總體框圖Fig. 2-1 the overall block diagram of the responder在搶答比賽中八路搶答按鈕分別對(duì)應(yīng)一組選手。計(jì)時(shí)顯示以與其他的各種顯示功能都由LCD1602液晶實(shí)現(xiàn)。倒計(jì)時(shí)即將結(jié)束時(shí)蜂鳴器會(huì)響鈴提示。開始、復(fù)位、加時(shí)、減時(shí)按鈕都由主持人控制。在主持人按下開始鍵后才能開始搶答,在搶答時(shí)選手的搶答犯規(guī)、搶答成功都會(huì)顯示在液晶屏幕上。一輪搶答結(jié)束之后由主持人按下復(fù)位鍵復(fù)位。在本

9、設(shè)計(jì)中我們?cè)O(shè)定開始之后有5秒中的預(yù)備時(shí)間,在預(yù)備時(shí)間結(jié)束前搶答為犯規(guī)蜂鳴器持續(xù)響,預(yù)備時(shí)間結(jié)束之后可以開始搶答,有15秒搶答時(shí)間,15秒無人搶答則本輪搶答結(jié)束,由主持人復(fù)位,復(fù)位后顯示所有選手的得分。在倒計(jì)時(shí)最后5秒時(shí),每一秒蜂鳴器都會(huì)響鈴提示。總結(jié)其系統(tǒng)的需求分析如下:1、在搶答時(shí)只有主持人按下開始后才能搶答。在預(yù)備時(shí)間結(jié)束前搶答視為犯規(guī)。2、可以顯示搶答成功的選手和搶答犯規(guī)的選手。搶答成功的選手顯示他當(dāng)前得分。3、顯示倒計(jì)時(shí),倒計(jì)時(shí)將要結(jié)束時(shí)有響鈴提示。4、搶答成功后鎖定按鍵,使其他選手的按鍵無效。6、主持人復(fù)位后進(jìn)入下一輪搶答。2.2系統(tǒng)工作流程系統(tǒng)的工作流程圖如圖2-2所示。圖2-2搶

10、答器系統(tǒng)工作流程圖Fig. 2-2 responder system workflow chart根據(jù)圖1-2所示的流程,一次具體的搶答過程如下:上電后屏幕顯示所有選手的得分,初始狀態(tài)下得分都為10。主持人按下開始鍵,進(jìn)入5秒預(yù)備搶答的倒計(jì)時(shí)階段,每一秒會(huì)響鈴提示。在5秒結(jié)束前有選手搶答判定為犯規(guī),屏幕顯示犯規(guī)選手編號(hào),主持人按下復(fù)位鍵進(jìn)入下一輪搶答。預(yù)備時(shí)間結(jié)束后進(jìn)入15秒倒計(jì)時(shí)的搶答階段,有選手率先搶答時(shí)倒計(jì)時(shí)停止,屏幕顯示搶答成功的選手編號(hào),并鎖定鍵盤,使其他選手的搶答無效。此時(shí)搶答成功的選手進(jìn)行答題,答題結(jié)束后主持人可以為該選手加分或減分(也可以既不加分也不減分),之后由主持人按復(fù)位鍵

11、進(jìn)行下一輪搶答,此時(shí)屏幕顯示所有選手的得分。如一直無人搶答,在最后5秒倒計(jì)時(shí)的每一秒會(huì)響鈴提示,直到倒計(jì)時(shí)結(jié)束還無人搶答,則屏幕顯示無人搶答,主持人復(fù)位進(jìn)入下一輪搶答。2.3軟硬件方案選擇2.3.1硬件方案選擇(1)主控芯片選擇方案根據(jù)以上我們提出的需求,搶答器系統(tǒng)的主控芯片可以有多種選擇方案。嵌入式微處理器一般可分為四類,嵌入式微處理器(MPU)、嵌入式微控制器(MCU)、嵌入式DSP(DSP)、嵌入式片上系統(tǒng)(SoC) 王曉春. 嵌入式系統(tǒng)技術(shù)-基于ARM的嵌入式系統(tǒng)M. 高等教育, 2010 :3-4.。這些處理器都可以用于本設(shè)計(jì)。除此之外,可編程邏輯器件(FPGA/CPLD)也可以用來

12、作為主控芯片。在本設(shè)計(jì)中,我們用MCU(又稱單片機(jī))中較為常見的8051系列單片機(jī)作為主控芯片。該芯片相較于DSP、FPGA、ARM等芯片簡(jiǎn)單易用、價(jià)格便宜,而且完全能夠滿足本設(shè)計(jì)的要求。能夠加快我們?cè)O(shè)計(jì)的進(jìn)程、節(jié)約設(shè)計(jì)成本。本設(shè)計(jì)中使用的主控制器是宏晶科技生產(chǎn)的STC89C51RC。該產(chǎn)品標(biāo)準(zhǔn)易用,價(jià)格便宜,是新一代超強(qiáng)抗干擾、高速、低功耗的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī)。該型號(hào)單片機(jī)有LQFP44、PDIP、PLCC、PQFP四種封裝,在本次設(shè)計(jì)中我們采用PDIP-40這種封裝,其外部結(jié)構(gòu)圖如圖2-3所示 宏晶科技. STC89C52RC使用手冊(cè)EB/OL. 2007: 5.。

13、圖2-3 STC89C52RC外部結(jié)構(gòu)圖Fig. 2-3 STC89C52RC external structure主要功能特性:l 8K的Flash程序存儲(chǔ)器可擦寫100000次以上l 512字節(jié)的RAM數(shù)據(jù)存儲(chǔ)器l EEPROM功能l 工作頻率圍:0-40MHzl 通用I/O口(32個(gè)),復(fù)位后為:P1/P2/P3是準(zhǔn)雙向口(普通8051傳統(tǒng)I/O口)P0是開漏輸出,作為總線擴(kuò)展用時(shí),不加上拉電阻,做I/O口時(shí)需要加上拉電阻。l ISP/IAP,無需專用編程器/仿真器可通過串口(P3.0/P3.1)直接下載用戶程序。l 看門狗l 共3個(gè)16位定時(shí)器/計(jì)數(shù)器,其中定時(shí)器0還可當(dāng)成2個(gè)8位定時(shí)

14、器使用。l 外部中斷4路,下降沿中斷或低電平觸發(fā)中斷??尚行苑治觯簭纳鲜鰡纹瑱C(jī)的基本參數(shù)來看,STC89C552RC單片機(jī)擁有8K的程序空間,對(duì)于本設(shè)計(jì)而言是完全足夠的。而且本設(shè)計(jì)中除了液晶模塊為了保證顯示無延遲用了并行方式傳輸數(shù)據(jù)外,其它模塊采用了盡量節(jié)省I/O口的設(shè)計(jì)思路,能保證單片機(jī)的I/O口足夠。而且有3個(gè)定時(shí)器,本設(shè)計(jì)只需用到1個(gè)。綜上所述,STC89C52單片機(jī)能夠滿足設(shè)計(jì)需求。(2)搶答器顯示模塊選擇方案在搶答器系統(tǒng)運(yùn)行的整個(gè)過程中都伴隨著信息的顯示,選擇一種合理的信息顯示方式能給我們的設(shè)計(jì)帶來方便。本設(shè)計(jì)中可用的顯示設(shè)備有數(shù)碼管、液晶。數(shù)碼管結(jié)構(gòu)簡(jiǎn)單,易于控制,程序算法也相對(duì)簡(jiǎn)

15、單,缺點(diǎn)是數(shù)碼管占用端口資源多。液晶顯示(LCD)由于具有可編程驅(qū)動(dòng)、接口控制方便、體積小、功耗低、具有良好的可視化人機(jī)界面等優(yōu)點(diǎn),在各種電子設(shè)備中得到廣泛使用 陶慶紅. 談單片機(jī)控制的液晶顯示控制J. 科學(xué)與財(cái)富, 2011(5).。本設(shè)計(jì)考慮到需要顯示的容較多,用數(shù)碼管作為顯示模塊需要占用很多端口資源,所以本設(shè)計(jì)采用帶字庫(kù)的12864液晶作為顯示模塊,利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面 韓成, 張延偉. 拿來就用單片機(jī)M. 市:人民郵電, 2008 :64.。它的外部結(jié)構(gòu)圖如圖2-4所示。圖2-4 12864外部結(jié)構(gòu)圖Fig. 2-4 12864

16、external structure該液晶模塊可顯示8×4行16×16的漢字,也可以顯示128×64像素的圖形。其基本特性:l 低電源電壓(VDD:+3.0V-+5.5V)。l 顯示分辨率:128×64點(diǎn)。l 置漢字庫(kù),提供8192個(gè)16×16點(diǎn)陣漢字。l 置128個(gè)16×8點(diǎn)陣字符。l 2MHz始終頻率。l 顯示方式:STN、案頭、正顯。l 視角方向:6點(diǎn)。l 通訊方式:串行、并行可選。LCD12864的引腳功能表2-1所示。表2-1 12864引腳說明Table 2-1 12864 pin description引腳號(hào)引腳名稱功能

17、說明1GND電源地2VCC電源正端3V0對(duì)比度調(diào)整4RS(CS)并行數(shù)據(jù)/指令選擇型號(hào);串行片選信號(hào)5R/W(SID)并行讀寫選擇信號(hào);串行的數(shù)據(jù)口6E(CLK)并行使能信號(hào);串行同步時(shí)鐘7-14DB0-DB7數(shù)據(jù)0-數(shù)據(jù)715PSB并/串行接口選擇:H-并行 L-串行16NC空腳17/RST復(fù)位低電平有效18VOUT倍壓輸出腳(VDD=+3.3V有效)19LED_A背光源正極(LED+5V)20LED_K背光源負(fù)極(LED-0V)在本設(shè)計(jì)中我們采用并行的方式在單片機(jī)和12864模快之間通信。8為并行連接時(shí)序圖如圖2-5和圖2-6所示。圖2-5 MPU寫資料到模塊Fig. 2-5 MPU wr

18、ite data to the module圖2-6 MPU讀出資料Fig. 2-6 MPU read data可行性分析:本設(shè)計(jì)中需要顯示的信息有倒計(jì)時(shí)的顯示,選手分?jǐn)?shù)顯示,搶答成功和犯規(guī)的顯示。由ST7920驅(qū)動(dòng)的12864液晶,能夠顯示漢字、圖形、數(shù)字、字母以與其他ASCII字符,完全能夠滿足本設(shè)計(jì)的需求。(3)搶答器鍵盤的選擇方案在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,鍵盤是系統(tǒng)中并不可少的輸入設(shè)備,是控制系統(tǒng)與操作人員對(duì)話的窗口。鍵盤通常有兩種結(jié)構(gòu)形式:線性鍵盤和矩陣鍵盤。在不同的場(chǎng)合下,這兩種鍵盤都得到了廣泛的應(yīng)用,線性鍵盤是由若干獨(dú)立的按鍵構(gòu)成,每個(gè)按鍵的一端與單片機(jī)的一個(gè)I/O口相連 王懷瑞,

19、 頊慶坤. 單片機(jī)I/O口鍵盤擴(kuò)展方法C. 冶金自動(dòng)化, 2004.。有幾個(gè)按鍵就要有幾根連線與單片機(jī)的I/O口相連,因此,線性鍵盤一般只適用于按鍵較少的場(chǎng)合。矩陣式鍵盤的按鍵是按N行M列排列,每個(gè)按鍵在行列的一個(gè)交點(diǎn)上,需要的I/O口數(shù)目是N+M,能提供的最大按鍵數(shù)是N×M。顯然,用矩陣鍵盤可以有效減少單片機(jī)I/O口的連線數(shù),簡(jiǎn)化結(jié)構(gòu),是一般單片機(jī)常用的鍵盤結(jié)構(gòu)。根據(jù)矩陣鍵盤的識(shí)鍵和譯鍵方法的不同,矩陣鍵盤又分為非編碼鍵盤和編碼鍵盤兩種。非編碼鍵盤是用軟件的方法識(shí)鍵和譯鍵。根據(jù)按鍵掃描方法的不同,可以分為掃描行法、掃描列法和反轉(zhuǎn)法3種。編碼鍵盤是用硬件來實(shí)現(xiàn)按鍵的掃描和識(shí)別,一般使

20、用專用接口芯片,在硬件上要求較高。行列式鍵盤有節(jié)省I/O口的優(yōu)點(diǎn)??紤]到本設(shè)計(jì)所需的按鍵較多,為了節(jié)省端口資源,降低硬件要求本設(shè)計(jì)采用非編碼行列式鍵盤。(4)發(fā)聲模塊選擇方案有源蜂鳴器和普通揚(yáng)聲器相比,最重要一個(gè)特點(diǎn)是只要按照極性要求加合適的直流電壓,就可以發(fā)出固有頻率的聲音,因此使用起來比揚(yáng)聲器簡(jiǎn)單 徐瑋, 彭敏芳, 魏巍, 等. 輕松學(xué)PIC之蜂鳴器和繼電器J. 電子制作, 2010(5):70-71.。由此可知,有源蜂鳴器的控制和LED的控制對(duì)單片機(jī)而言是沒有區(qū)別的。無源蜂鳴器則要交流驅(qū)動(dòng),改變驅(qū)動(dòng)頻率可以奏簡(jiǎn)單音樂。本設(shè)計(jì)中的發(fā)聲裝置只需要發(fā)出固定頻率的提示音即可,無需改變發(fā)聲的頻率。

21、為求簡(jiǎn)化軟件設(shè)計(jì),本設(shè)計(jì)中選用有源蜂鳴器作為發(fā)聲裝置。可行性分析:發(fā)聲模塊在本設(shè)計(jì)中用于報(bào)警,只要能夠發(fā)出一定頻率的提示音即可。使用蜂鳴器即可滿足設(shè)計(jì)需求。2.3.2軟件方案選擇C語言和匯編語言是單片機(jī)應(yīng)用系統(tǒng)開發(fā)常用的編程工具。C語言是一種高級(jí)編程語言。早在1985年便出現(xiàn)了51單片機(jī)專用的C語言,簡(jiǎn)稱C5l。C51除了遵循一般C語言的語法規(guī)則外,還有自身的特點(diǎn)。它增加了變量數(shù)據(jù)類型(如bit、sb)、中斷服務(wù)函數(shù)(如interrupt n),對(duì)80C5l單片機(jī)的特殊功能寄存器的定義是C51特有的,是對(duì)標(biāo)準(zhǔn)C語言的擴(kuò)展。C語言作為一種高級(jí)語言,接近人的自然語言,編寫的程序與人們通常的思路相近

22、,而且不依賴于計(jì)算機(jī)的結(jié)構(gòu)和指令系統(tǒng),是面向過程而且獨(dú)立于機(jī)器的通用語言,容易學(xué)習(xí)、通用性好、便于移植。匯編語言是為了方便使用而設(shè)計(jì)的一種符號(hào)語言。它用易于理解和記憶的英文名稱或縮寫形式(助記符)來表示二進(jìn)制指令。指令助記符、語句標(biāo)號(hào)、數(shù)據(jù)變量、偽指令以與它們的使用規(guī)則構(gòu)成了整個(gè)匯編語言的容。匯編語言的程序占用存少,執(zhí)行速度快,并且可以直接對(duì)硬件進(jìn)行編程,能夠充分發(fā)揮計(jì)算機(jī)的硬件功能。它是計(jì)算機(jī)所能提供的最快、最有效的語言。主要應(yīng)用在實(shí)時(shí)性要求高、對(duì)硬件設(shè)備進(jìn)行控制的場(chǎng)合。使用C語言與使用匯編語言相比:不需要掌握8051系列單片機(jī)的指令集,只需了解單片機(jī)部特殊功能寄存器的用途;編程人員不必考慮

23、寄存器的分配和尋址方式等細(xì)節(jié),都有編程器自動(dòng)進(jìn)行管理;利于結(jié)構(gòu)化編程,易于維護(hù);由于可以實(shí)現(xiàn)模塊化編程技術(shù),大量例程直接調(diào)用,節(jié)省開發(fā)時(shí)間,提高效率 徐小菲, 劉輝. 基于單片機(jī)C語言和匯編語言程序J. 青春歲月, 2012(6):362.。基于以上所講述的在單片機(jī)領(lǐng)域中的C語言和匯編語言編程各自的優(yōu)缺點(diǎn)。考慮到本設(shè)計(jì)整體結(jié)構(gòu)簡(jiǎn)單,生成的代碼占用空間小,一般的單片機(jī)足以滿足需求,并且對(duì)時(shí)序的要求不高。所以采用C語言編寫程序能更方便快捷的完成我們的設(shè)計(jì),并且具有良好的可移植性,方便以后移植系統(tǒng)到其他硬件設(shè)備上。在集成開發(fā)環(huán)境(IDE)上我們選擇目前最流行的Keil C51,KeilC51是Kei

24、l Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在的完整開發(fā)方案。如果你使用C語言編程,那么Keil幾乎就是你的不二之選。Keil C51生成目標(biāo)代碼的效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。Proteus軟件是Lab Center Electronics公司的一款電路設(shè)計(jì)與仿真軟件,它包括ISIS,ARES等模塊,它能仿真大量的單片機(jī)芯片,比如MCS-51系列,PIC系列等等,以與單片機(jī)外圍電路 蔡朝陽(yáng). 單片機(jī)控制實(shí)習(xí)于專題制作M. 航空航

25、天大學(xué), 2006.。通過Proteus軟件的使用我們能很容易獲得一個(gè)強(qiáng)大,方便的單片機(jī)實(shí)驗(yàn)系統(tǒng)。同時(shí)Proteus兼有PCB板繪制的功能。并且Proteus與Keil的結(jié)合使用能很方便的完成單片機(jī)的調(diào)試工作。作為目前市場(chǎng)上最流行的單片機(jī)仿真軟件,它的好處是資源豐富,在網(wǎng)上能獲得最多的技術(shù)支持與幫助。本設(shè)計(jì)即是采用Keil作為集成開發(fā)環(huán)境,以Proteus作為仿真原理圖、PCB設(shè)計(jì)工具。第3章硬件設(shè)計(jì)3.1總體設(shè)計(jì)本設(shè)計(jì)包含了硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分,兩者緊密結(jié)合,不可分離。硬件設(shè)計(jì)是這個(gè)系統(tǒng)運(yùn)行的基礎(chǔ),沒有硬件一切都無從談起。軟件設(shè)計(jì)是系統(tǒng)正常運(yùn)轉(zhuǎn)的核心,在硬件的基礎(chǔ)上軟件控制著系統(tǒng)的運(yùn)作,

26、實(shí)現(xiàn)系統(tǒng)的功能。隨著技術(shù)的發(fā)展,硬件電路的集成度越來越高,各種功能強(qiáng)大的芯片降低了硬件設(shè)計(jì)的復(fù)雜程度。為是硬件電路設(shè)計(jì)更加合理,應(yīng)注意以下幾個(gè)方面:(1)盡量使用集成度更高功能更強(qiáng)的芯片,以簡(jiǎn)化電路。功能更強(qiáng)大的芯片能只占用較少的端口資源就完成同樣的甚至是跟多的功能。本設(shè)計(jì)中除了主控制芯片以外,顯示模塊采用了一塊高度集成的12864液晶,在兼顧顯示界面的友好美觀的情況下極大程度的簡(jiǎn)化了硬件電路的設(shè)計(jì)工作,而且節(jié)約了單片機(jī)的I/O端口。(2)留有一定設(shè)計(jì)余地。在硬件設(shè)計(jì)是,往往不是一次成型的??紤]到以后修改擴(kuò)展的方便。要留有一定的余地,以避免為了一點(diǎn)小小的修改而全面返工。本次設(shè)計(jì)采用的硬件電路均

27、在一塊開發(fā)板上,硬件電路已經(jīng)經(jīng)過生產(chǎn)廠商的測(cè)試,比較可靠,可以放心的使用,將更多經(jīng)歷投入到軟件的設(shè)計(jì)過程中去。(3)程序空間。應(yīng)該選擇部程序空間足夠大的單片機(jī)。所以你需要估計(jì)自己設(shè)計(jì)程序的復(fù)雜程度,選擇相匹配的單片機(jī)。本設(shè)計(jì)所采用STC89C52RC單片機(jī)擁有8K的程序空間,基本上能夠滿足電子搶答器的設(shè)計(jì)所需的空間大小。(4)RAM空間,單片機(jī)部的RAM空間不多。如果片空間不夠就需要增加片外RAM,設(shè)計(jì)時(shí)需要預(yù)留I/O接口。在本設(shè)計(jì)中,系統(tǒng)的功能簡(jiǎn)單,已有的單片機(jī)完全可以滿足需要,無需考慮這個(gè)問題。(5)I/O端口:在設(shè)計(jì)的初期就要對(duì)各個(gè)I/O口資源合理分配,可以預(yù)留若干備用,也許在后期的調(diào)試

28、過程中就會(huì)派上用場(chǎng)。在本設(shè)計(jì)中使用的開發(fā)板上硬件電路已經(jīng)固定,I/O端口的分配也很合理,無需再重新分配I/O端口。本次設(shè)計(jì)的總體硬件電路原理圖如圖3-1所示。圖3-1硬件電路原理圖Fig. 3-1 hardware circuit principle diagram圖2-1中主控制器為STC89C52RC單片機(jī),顯示模塊為一塊集成的LCD12864液晶。由于采用并行傳輸數(shù)據(jù),液晶模塊的DB0-DB7接單片機(jī)P0口。RS腳接P1.0、R/W腳接P1.1、E腳接P2.5、PSE腳接P1.2、RST腳接P1.4。所有的按鍵全部在接在P3口的鍵盤陣列中,第一行和第二行按鍵為8為選手的搶答按鍵,第三行是

29、主持人控制按鍵,左一為加分鍵、左二為減分鍵、左三為開始鍵、左四為復(fù)位鍵。BUZ1為蜂鳴器,作為系統(tǒng)中的響鈴提示功能。3.2時(shí)鐘頻率電路的設(shè)計(jì)單片機(jī)與其他微機(jī)一樣,它的各種操作都是按著節(jié)拍有序的工作的。89C51部有一個(gè)高增益反響放大器,用于構(gòu)成振蕩器。反相放大器的輸入端為XTAL1,輸出端為XTAL2,兩斷跨接石英晶體與兩個(gè)電容就可以構(gòu)成穩(wěn)點(diǎn)的自己振蕩器。時(shí)鐘電路如圖2-2所示。圖3-2外部震蕩源電路Fig. 3-2 external oscillators circuitC1和C2通常取30pF左右,可以穩(wěn)定頻率并對(duì)震蕩頻率有微調(diào)作用 李朝青. 單片機(jī)原理與接口技術(shù)M. :航空航天大學(xué), 2

30、006 :34.。震蕩脈沖頻率圍為fosc=024MHz,我們所用的震蕩頻率為12MHz。3.3鍵盤掃描電路的設(shè)計(jì)鍵盤是單片機(jī)應(yīng)用中必不可少的硬件之一,由于其設(shè)計(jì)方法多種多樣,所以在應(yīng)用系統(tǒng)設(shè)計(jì)時(shí),應(yīng)根據(jù)整個(gè)系統(tǒng)的硬件結(jié)構(gòu)、軟件設(shè)計(jì)等信息綜合考慮,設(shè)計(jì)出穩(wěn)定可靠、結(jié)構(gòu)緊湊、成本低廉、簡(jiǎn)單易用、性能優(yōu)良的人機(jī)鍵盤界面 陳銘. 單片機(jī)矩陣式鍵盤的設(shè)計(jì)J. 工業(yè)控制計(jì)算機(jī), 2012, 25(1):99-100.。鍵盤是進(jìn)行人機(jī)交互的主要設(shè)備。在單片機(jī)應(yīng)用中主要是獨(dú)立鍵盤和矩陣鍵盤。其中獨(dú)立鍵盤結(jié)構(gòu)簡(jiǎn)單,程序設(shè)計(jì)也較為簡(jiǎn)單,一般用于對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤在硬件結(jié)構(gòu)上較為復(fù)雜,程序算

31、法上也比獨(dú)立鍵盤復(fù)雜得多,但是矩陣鍵盤更加能夠節(jié)省端口資源,適合在按鍵較多的電路中使用。在本設(shè)計(jì)中,為了節(jié)省端口資源,采用矩陣鍵盤。按鍵電路如圖3-3所示。圖3-3 按鍵電路Fig. 3-3 key circuit在這個(gè)4*3的矩陣鍵盤中,上兩行8個(gè)按鍵是8為選手的搶答按鍵,最下面一行是主持人控制的加減分按鍵和開始、復(fù)位按鍵。這個(gè)矩陣鍵盤接在單片機(jī)的P3端口上,P3.0到P3.2接行線,P3.4到P3.7接列線,在必要的時(shí)候可以再加一行按鍵,行線接P3.3擴(kuò)展為4*4的矩陣鍵盤。在按鍵的過程中會(huì)出現(xiàn)抖動(dòng)現(xiàn)象,這種現(xiàn)象會(huì)造成按下按鍵判定不準(zhǔn)確,要消除這種影響就需要在掃描程序中采用消抖動(dòng)處理 徐志

32、軍, 王金明. EDA技術(shù)與PLD設(shè)計(jì)M. :人民郵電, 2005 :49.。通常采用的方法是,延時(shí)重復(fù)掃描的辦法,在檢測(cè)到按鍵按下之后延時(shí)一段時(shí)間再次檢測(cè)按鍵電平是否保持原狀態(tài),進(jìn)行多次掃描后如果鍵盤的電平保持不變則判定按鍵被按下,否則判定為無效。3.4復(fù)位電路的設(shè)計(jì)使CPU回到初始狀態(tài),從0000H地址開始執(zhí)行程序的過程腳系統(tǒng)復(fù)位,系統(tǒng)的復(fù)位可分為硬件復(fù)位和軟件復(fù)位 程相波, 衛(wèi)安軍. 基于MCS-51單片機(jī)的八路搶答器設(shè)計(jì)方法研究J. 工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2007, 6(2).。硬件復(fù)位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時(shí)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鍵

33、復(fù)位和看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各個(gè)寄存器狀態(tài)唄初始化,對(duì)片通用寄存器的容沒有影響。軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能。軟件復(fù)位中對(duì)中斷標(biāo)志的清除工作常被遺忘,但清除中斷標(biāo)志非常重要。在本設(shè)計(jì)中的主持人控制的復(fù)位按鍵只是使程序結(jié)束當(dāng)前的搶答過程進(jìn)入到下一輪的搶答環(huán)節(jié),并不是真正意義上的對(duì)整個(gè)單片機(jī)系統(tǒng)進(jìn)行復(fù)位。對(duì)整個(gè)系統(tǒng)復(fù)位后,所有選手的分?jǐn)?shù)也將會(huì)清零。復(fù)位電路如圖2-4所示。圖3-4 復(fù)位電路Fig. 3-4 reset circuit復(fù)位電路主要由電解電容C3、電阻R1、按鍵S1組成。由于單片機(jī)是高電平復(fù)位,所以當(dāng)復(fù)位鍵按下時(shí)候,單片機(jī)的9腳RESET管腳處于高電平,此時(shí)

34、單片機(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í)行。需要強(qiáng)調(diào)的是,在本設(shè)計(jì)中的主持人復(fù)位,并沒有使系統(tǒng)回到0000H開始執(zhí)行,只是回到搶答的開始階段開始執(zhí)行程序,不屬于以上所述的復(fù)位的疇。如果需要整個(gè)系統(tǒng)重新啟動(dòng)進(jìn)行工作,則可以按下Reset鍵進(jìn)行硬件復(fù)位。3.5發(fā)聲電路的設(shè)計(jì)蜂鳴器是眾多電子產(chǎn)品中常用的發(fā)聲器件,本設(shè)計(jì)中也使用蜂鳴器作為發(fā)聲裝置,本設(shè)計(jì)中的發(fā)聲電路如圖2-5所示。圖3-5發(fā)聲電路Fig. 3-5 sounding circuit本設(shè)計(jì)中的發(fā)聲

35、裝置一端接在單片機(jī)的P2.3腳,當(dāng)P2.3腳為低電平是蜂鳴器發(fā)聲,當(dāng)P2.3為高電平時(shí)蜂鳴器靜音。單片機(jī)部通過編程控制I/O口的高低電平就能控制蜂鳴器的響鈴時(shí)常和頻率。3.6 綜合PCB板的設(shè)計(jì)印制電路板(PCB)是各種電子產(chǎn)品中電路元器件的載體,PCB提供了電路元件和器件之間的電氣連接,PCB設(shè)計(jì)的好壞對(duì)產(chǎn)品性能有很大影響 夏青. 電子線路設(shè)計(jì):PCB設(shè)計(jì)的一般原則J. 大家, 2011(12):236.。因此,在進(jìn)行PCB設(shè)計(jì)時(shí)。必須遵守PCB設(shè)計(jì)的一般性原則,并應(yīng)符合抗干擾設(shè)計(jì)的要求。為了設(shè)計(jì)出優(yōu)質(zhì)低廉的PCB,應(yīng)遵循一些原則。3.6.1布局的原則1、要考慮PCB尺寸大小。PCB尺寸過大

36、時(shí),印制線就條長(zhǎng),同時(shí)阻抗增加,抗噪聲能力也會(huì)下降,成本也增加;過小,則散熱不好,而且鄰近線條易受干擾。2、確定特殊元件的位置。在確定特殊元件的位置時(shí)要遵守以下原則:a) 縮短高頻元器件間的連線,以減少它們的分布參數(shù)和相互的電磁干擾。容易受干擾的元器件不能太近,輸入和輸出元件要盡量遠(yuǎn)離。b) 某些元器件或?qū)Ь€之間可能有比較高的電位差,應(yīng)該增加它們之間的距離,以避免放電引發(fā)意外短路。c) 較重的元器件應(yīng)該用支架固定,再焊接。那些笨重、發(fā)熱量多的元器件,不宜裝在印制板上,應(yīng)裝在機(jī)箱底板上,熱敏元件應(yīng)遠(yuǎn)離發(fā)熱元件。d) 應(yīng)留出印制板定位孔與固定支架所占用的位置。3、根據(jù)電路的功能模塊,對(duì)全部元器件進(jìn)

37、行布局時(shí),要符合以下原則:a) 按照電路的流程安排電路中各個(gè)功能單元的位置,使布局放便信號(hào)流通,并使信號(hào)盡量保持一致的方向。b) 以每個(gè)功能電路的核心元件為中心,圍繞它來進(jìn)行布局。元器件應(yīng)均勻、整齊、緊湊地排列在PCB上。盡量減少各元器件之間的引線和縮短連接。c) 一般應(yīng)當(dāng)使元器件平行排列。這樣,既美觀有容易裝焊,易于批量生產(chǎn)。3.6.2布線1、I/O口的導(dǎo)線應(yīng)盡量避免相鄰平行,最好加線間地線,以避免發(fā)生反饋藕合。2、導(dǎo)線的最小寬度主要由導(dǎo)線與絕緣基扳間的粘附強(qiáng)度和流過它們的電流大小決定。在條件允許的情況下盡量使用寬線。尤其是電源線和地線。導(dǎo)線間的最小距離主要由最壞情況下的線間絕緣電阻和擊穿電

38、壓決定。工藝允許的條件下,使間距盡量小。3、印制導(dǎo)線拐彎處一般采用圓弧形,直角或夾角在高頻電路中會(huì)影響電氣性能。還應(yīng)盡量不使用大面積銅箔。長(zhǎng)時(shí)間受熱時(shí),易發(fā)生銅箔膨脹和脫落現(xiàn)象。必須用大面積銅箔時(shí),最好用柵格狀。這樣有利于排除銅箔與基板間粘合劑受熱產(chǎn)生的揮發(fā)性氣體。3.6.3焊盤焊盤尺寸、焊盤的孔尺寸必須從元件引線直徑和公差尺寸以與鍍錫層厚度、孔徑公差、孔金屬化電鍍層厚度等方面考慮,一般以金屬引腳直徑加上0.2mm作為焊盤的孔直徑。而焊盤外徑應(yīng)該為焊盤孔徑加1.2mm,最小應(yīng)該為焊盤孔徑加1.0mm。當(dāng)焊盤直徑為1.5mm時(shí),為了增加焊盤的抗剝離強(qiáng)度,可采用方形焊盤。設(shè)計(jì)焊盤時(shí)的注意下列事項(xiàng):

39、1、焊盤孔邊緣到電路板邊緣要大于1mm,這樣可以防止加工時(shí)導(dǎo)致焊盤缺損。2、焊盤補(bǔ)淚滴,當(dāng)與焊盤連接的銅膜線較細(xì)時(shí),要將焊盤與銅膜線之間的連接設(shè)計(jì)成淚滴狀,這樣可以使焊盤不易被剝離,而銅膜線與焊盤之間的連線不易斷開。3、相鄰的焊盤盡量不要有銳角。根據(jù)上述要求,我們?cè)O(shè)計(jì)PCB。我們將各個(gè)模塊組合起來之后得到綜合電路原理圖(如圖3-1)。我們將綜合原理圖輸入Proteus中,就可以利用Proteus的PCB設(shè)計(jì)工具AERS自動(dòng)生成PCB圖。由Proteus生成PCB圖的主要有以下步驟:(1) 繪制原理圖。這是電路板設(shè)計(jì)的先期工作,主要是完成原理圖的繪制,包括生成網(wǎng)絡(luò)表。當(dāng)然,也可直接進(jìn)入PCB設(shè)計(jì)

40、,不繪制原理圖。原來用于仿真的原理圖需將信號(hào)源與測(cè)量?jī)x表的接口連上適當(dāng)?shù)倪B接器。(2) 規(guī)劃電路板。在繪制印制電路板之前,要對(duì)電路板有一個(gè)大體的規(guī)劃,比如電路板采用多大的物理尺寸,采用幾層電路板,各元件采用何種封裝形式與其安裝位置等。這是確定電路板設(shè)計(jì)的框架,都可以從菜單欄system里進(jìn)行設(shè)置。(3) 設(shè)置參數(shù)。設(shè)置參數(shù)主要是設(shè)置元件的布置參數(shù)、層參數(shù)、布線參數(shù)等。(4) 裝入網(wǎng)絡(luò)表與元件封裝。網(wǎng)表是原理圖設(shè)計(jì)系統(tǒng)與印制電路板設(shè)置系統(tǒng)的接口,只有將網(wǎng)絡(luò)表裝入之后,才可能完成對(duì)電路板的自動(dòng)布線。元件的封裝是元件的外形,對(duì)每個(gè)元件必須有相應(yīng)的外形封裝,才能保證電路板設(shè)計(jì)的順利進(jìn)行。本設(shè)計(jì)中的按鍵

41、,12864液晶沒有封裝,需自行封裝。(5) 元件布局。元件布局可以采用自動(dòng)布局和手工布局。一般自動(dòng)布局后進(jìn)行調(diào)整。(6) 布線。一般先進(jìn)行自動(dòng)布線,然后手工布線進(jìn)行調(diào)整。(7) 文件保存與輸出。完成電路板的布線后,保存完成的電路線路圖文件。按照需求可以打印成紙質(zhì)文檔。最終本設(shè)計(jì)生成的PCB圖如圖3-6所示。圖3-6 PCB設(shè)計(jì)圖Fig. 3-6 PCB design第4章軟件設(shè)計(jì)4.1軟件任務(wù)分析一個(gè)單片機(jī)系統(tǒng)是有軟硬件結(jié)合而成的,硬件電路的設(shè)計(jì)解決了系統(tǒng)的物理層面實(shí)現(xiàn),而要賦予這些硬件“靈魂”,就需要軟件來實(shí)現(xiàn)。軟件設(shè)計(jì)主要是針對(duì)主控芯片來講的,由軟件設(shè)計(jì)來告訴主控芯片如何去控制外圍電路完

42、成某些特定的功能。在本設(shè)計(jì)中,根據(jù)我們需要實(shí)現(xiàn)的功能來看,軟件設(shè)計(jì)主要可以分為一下機(jī)個(gè)部分:l 顯示模塊:在整個(gè)搶答過程中顯示信息的功能貫穿始終,是最主要的模塊??刂骑@示屏顯示正確的信息是顯示模塊軟件的主要職責(zé)。l 輸入模塊:本設(shè)計(jì)的輸入模塊是由4×3的矩陣鍵盤構(gòu)成的,正確檢測(cè)出從鍵盤上輸入的信息非常重要。輸入模塊軟件就是要完成這一任務(wù)。l 計(jì)時(shí)模塊:在搶答器的工作過程中多出設(shè)計(jì)的倒計(jì)時(shí)功能,計(jì)時(shí)模塊軟件主要完成準(zhǔn)確計(jì)時(shí)的功能。并在需要的時(shí)候提供當(dāng)前的時(shí)間供其他模塊調(diào)用。l 初始化模塊:整個(gè)系統(tǒng)要穩(wěn)定的運(yùn)行,就需要自始至終都在我們的控制之下。系統(tǒng)最初啟動(dòng)是所處的狀態(tài)無法確定,就需要初

43、始化程序?qū)τ布到y(tǒng)進(jìn)行設(shè)定,使之符合系統(tǒng)運(yùn)行的要求。本設(shè)計(jì)中初始化主要包括對(duì)單片機(jī)的初始化和對(duì)LCD12864液晶的初始化。l 主函數(shù)模塊:程序都是從主函數(shù)開始運(yùn)行的,主函數(shù)要控制這個(gè)程序運(yùn)行的流程,將各個(gè)模塊有機(jī)的結(jié)合起來,使系統(tǒng)穩(wěn)定的工作。軟件系統(tǒng)的模塊結(jié)構(gòu)圖如圖4-1所示。圖4-1軟件系統(tǒng)模塊結(jié)構(gòu)圖Fig. 4-1 module structure of software system圖4-1中列出了軟件系統(tǒng)的主要模塊的機(jī)構(gòu)組成。除了以上主要模塊外還包含一些其他函數(shù)和模塊,例如引腳定義、延時(shí)函數(shù)、加減分模塊等。4.2主要模塊的流程圖與分析本設(shè)計(jì)中根據(jù)我們的設(shè)計(jì)要求和搶答器系統(tǒng)的工作流程,

44、可以得到系統(tǒng)的程序總流程圖,如圖4-2所示。圖4-2 程序總流程圖Fig. 4-2 program flow chart圖4-2給出了程序的總體流程圖,之后,我們將對(duì)一些主要的程序進(jìn)行詳細(xì)的分析。4.2.1按鍵掃描程序本設(shè)計(jì)中采用的按鍵是矩陣式鍵盤。比較好的識(shí)別按鍵的方法是進(jìn)行按鍵掃描。對(duì)矩陣鍵盤進(jìn)行按鍵掃描的基本原理是對(duì)矩陣鍵盤的一條列線置為低電平,然后掃描行線,根據(jù)各行線的狀態(tài)就能判斷該列線上所有按鍵的狀態(tài)。依次分別對(duì)所有列線置低,再掃面行線,就完成了一次對(duì)所有按鍵的掃描。 余江, 李雪梅. 按鍵狀態(tài)掃描顯示電路的設(shè)計(jì)與實(shí)現(xiàn)J. 內(nèi)江科技, 2011, 32(5):116.考慮到可能出現(xiàn)的

45、毛刺現(xiàn)象在掃描按鍵的過程中要做消抖動(dòng)處理,消抖動(dòng)的原理在前面介紹過,這里不再敘述。根據(jù)上述原理,我們繪制出按鍵掃描程序的流程圖如圖4-3所示。圖4-3按鍵掃描流程圖Fig. 4-3 buttons scan flow chart從圖4-3中我們可以看出程序是先將一根行線置高,然后掃描列線。一次對(duì)所有行線置高之后就完成一次掃描,延時(shí)一段時(shí)間是為了消除按鍵抖動(dòng)的影響。最后返回對(duì)應(yīng)的按鍵鍵值。源程序見附錄。4.2.2計(jì)時(shí)模塊定時(shí)器分為軟件定時(shí)器和硬件定時(shí)器,軟件定時(shí)器是靠指令延時(shí)完成定時(shí)任務(wù)的。因此,軟件定時(shí)器的基本思想是使某條指令循環(huán)若干次達(dá)到定時(shí)效果,軟件定時(shí)主要用于定時(shí)進(jìn)度不高的情況下。 李強(qiáng)

46、. 單片機(jī)定時(shí)、計(jì)數(shù)器編程技術(shù)(上)J. 電子世界, 2004(9):31-32.軟件定時(shí)器的原理簡(jiǎn)單,但有時(shí)不能滿足需求,這是就需要硬件定時(shí)/技術(shù)器。硬件定時(shí)器的基本原理:硬件定時(shí)/技術(shù)器獨(dú)立于CPU工作,可以由軟件控制它的啟動(dòng)和停止。當(dāng)預(yù)定的定時(shí)時(shí)間后向CPU發(fā)送一次中斷請(qǐng)求,執(zhí)行中斷服務(wù)程序。定時(shí)/計(jì)數(shù)器有部定時(shí)和外部計(jì)數(shù)功能,但實(shí)質(zhì)上是計(jì)數(shù),數(shù)器對(duì)外部時(shí)間的計(jì)數(shù)就是計(jì)數(shù)器,以單片機(jī)部機(jī)器周期計(jì)數(shù)累加它就是系統(tǒng)定時(shí)器 李強(qiáng). 單片機(jī)定時(shí)、計(jì)數(shù)器編程技術(shù)(下)J. 電子世界, 2004(10):29-32.。選擇定時(shí)還是計(jì)數(shù)是可編程的。對(duì)計(jì)數(shù)的寄存器設(shè)定初值后,定時(shí)器與CPU并行工作,計(jì)數(shù)

47、器累加溢出時(shí)發(fā)出中斷請(qǐng)求,系統(tǒng)響應(yīng)中斷。為了確保計(jì)時(shí)的準(zhǔn)確性,本設(shè)計(jì)中我們采用單片機(jī)部的定時(shí)器并且以中斷的方式計(jì)數(shù)。定時(shí)器中斷服務(wù)函數(shù)流程圖如圖4-4所示。圖4-4 定時(shí)器中斷流程圖Fig. 4-4 flow charts of the timer interrupt從圖4-4中可以看出,在本設(shè)計(jì)中每次計(jì)數(shù)器累加溢出后進(jìn)入中斷服務(wù)程序,對(duì)Cent加一,返回繼續(xù)運(yùn)行主程序,累計(jì)到cent等于20時(shí)為1秒,這時(shí)對(duì)time的值減一,返回繼續(xù)運(yùn)行主程序。直到time為零時(shí)關(guān)閉定時(shí)器。4.2.3顯示模塊顯示模塊程序主要用于控制LCD12864顯示各種需要的信息。我們所使用的是由ST7920控制器控制的帶

48、字庫(kù)液晶,該液晶能夠顯示128×64像素的圖像和4行×8列的漢字以與4行×16列的半寬字符 胡洪坡, 梁書劍, 張愛民, 等. 基于ST7920的12864液晶的使用方法研究J. 山西電子技術(shù), 2011(6):82-84.22 Ma Xinyuan. Research of Microcontroller DevelopmentJ. System Control &Automation, 2004, (6): 69-71.23 Schultz T W. C and the 8051M. WOOD ISLAND PRINTS, 2008.。關(guān)于它的顯示原理

49、可以參考相關(guān)文獻(xiàn)和使用手冊(cè)。在這里僅對(duì)它的指令系統(tǒng)做一介紹。LCD12864與單片機(jī)之間的通信有并行和串行兩種方式。串行方式需要的端口較少,但是寫入指令和數(shù)據(jù)需要的時(shí)間比較長(zhǎng),并行方式占用端口多,寫入速度較快。本設(shè)計(jì)中我們才用并行方式進(jìn)行通信。對(duì)LCD12864的操作實(shí)際上是對(duì)ST7920驅(qū)動(dòng)芯片的操作,單片機(jī)將指令發(fā)送給ST7920再由ST7920控制LCD顯示頻顯示出各種圖形和文字。表4-1中給出了ST7920的主要指令表。表4-1 ST7920基本指令集Table 4-1 ST7920 basic instruction set指令指令碼RSR/WD7D6D5D4D3D2D1D0清除顯示

50、0000000001地址歸位000000001X顯示狀態(tài)開/關(guān)0000001DCB進(jìn)入點(diǎn)設(shè)定00000001I/DS游標(biāo)或顯示移位控制000001S/CR/LXX功能設(shè)定00001DLXREXX設(shè)定CGRAM 地址0001AC5AC4AC3AC2AC1AC0設(shè)定DDRAM 地址0010AC5AC4AC3AC2AC1AC0讀取忙標(biāo)志和地址01BFAC6AC5AC4AC3AC2AC1AC0寫數(shù)據(jù)到RAM10數(shù)據(jù)讀出 RAM的值11數(shù)據(jù)除了基本指令集外,還有擴(kuò)充指令集。關(guān)于各個(gè)指令的功能,在相關(guān)的手冊(cè)中都詳細(xì)的介紹,這里不再做進(jìn)一步講述。根據(jù)表4-1中的指令,我們就能夠根據(jù)我們自己的需求編寫出所需要

51、的函數(shù)來命令12864液晶顯示特定的容。在本設(shè)計(jì)中,我們要顯示的容有圖片,漢字和數(shù)字等。需要我們自己編寫的程序主要有寫指令函數(shù)、設(shè)定顯示圖片、設(shè)定顯示漢字、LCD12864初始化函數(shù)、漢字寫入函數(shù)、圖片輸入函數(shù)等一系列的液晶控制函數(shù)。以上函數(shù)的源程序見附錄。有了上述的基本液晶控制函數(shù)之后,就可以通過調(diào)用以上的控制函數(shù)來進(jìn)一步的完成我們先是模塊的程序設(shè)計(jì)。首先應(yīng)該是倒計(jì)時(shí)顯示程序。在本設(shè)計(jì)中有兩處用到倒計(jì)時(shí),一處是主持人按下開始后的5秒預(yù)備時(shí)間,第二處是搶答時(shí)間的15秒倒計(jì)時(shí)。其中第一處倒計(jì)時(shí)顯示采用的是顯示圖像的方式,第二處則是采用顯示字符的方式。對(duì)圖像的顯示需要事先制作好圖像的字模數(shù)據(jù),將數(shù)

52、據(jù)存放在一個(gè)數(shù)組中以供圖像顯示函數(shù)調(diào)用。由于圖像字模要占用大量的代碼空間,所以為了節(jié)省空間本設(shè)計(jì)中只做了5秒倒計(jì)時(shí),第二處的15秒倒計(jì)時(shí)仍舊采用字符的顯示方式。并且為了進(jìn)一步的減少圖像字模數(shù)據(jù)占用的空間,本設(shè)計(jì)中的字模數(shù)據(jù)都刪除了每一行最后六個(gè)字節(jié)的無用字節(jié)。這樣帶來的問題是后六個(gè)字節(jié)刪除后會(huì)造成后六個(gè)字節(jié)的圖像顯示花屏。是因?yàn)镚DRAM中的這部分字節(jié)的值是隨機(jī)的,為了解決這個(gè)問題,我們需要事先清空繪圖區(qū)的數(shù)據(jù),即對(duì)繪圖區(qū)全部寫0。其次是犯規(guī)選手的顯示。犯規(guī)選手的顯示仍然是用字符顯示的方式,有選手犯規(guī)是在屏幕上顯示犯規(guī)選手的編號(hào)并響鈴提示。然后是搶答成功選手的顯示。搶答成功選手的顯示和犯規(guī)選手

53、顯示一樣,采用字符顯示方式。并且搶答成功后還會(huì)顯示該選手當(dāng)前的得分。分?jǐn)?shù)統(tǒng)計(jì)的顯示。本設(shè)計(jì)中要求主持人按下復(fù)位鍵后顯示所有選手的得分。這部分首先我們將8為選手的登封存在一個(gè)數(shù)組中,顯示程序根據(jù)需要來調(diào)用每位選手的分?jǐn)?shù)顯示在屏幕上。顯示模塊源代碼見附錄。4.2.4初始化模塊本設(shè)計(jì)中的初始化主要包含兩個(gè)部分。液晶的初始化和定時(shí)器的初始化。對(duì)液晶的初始化,生產(chǎn)廠商給了以下建議流程,如圖4-5所示。圖4-5 LCD12864初始化流程Fig. 4-5 LCD12864 initialization process根據(jù)上述流程對(duì)LCD12864液晶進(jìn)行初始化。第一步是功能設(shè)置,即選擇基本指令集還是擴(kuò)充指

54、令集。第二步是顯示開關(guān)控制,這一步選擇顯示的開關(guān)盒游標(biāo)的開關(guān)。第三步顯示清屏。第四步進(jìn)入點(diǎn)設(shè)定,設(shè)定游標(biāo)的移動(dòng)方向和指定顯示的位移。定時(shí)器的初始化主要在于選擇模式、開中斷和對(duì)累加寄存器賦初值。根據(jù)自己的設(shè)計(jì)需求計(jì)算初值即可。4.2.5計(jì)分模塊計(jì)分模塊主要功能是對(duì)所有選手的得分進(jìn)行統(tǒng)計(jì)并在主持人的控制下對(duì)以為選手的得分進(jìn)行加分或者減分的操作。設(shè)計(jì)中將所有選手的得分存在一個(gè)數(shù)組之中,需要顯示選手分?jǐn)?shù)時(shí)就從數(shù)組中調(diào)用對(duì)應(yīng)的值進(jìn)行顯示,需要進(jìn)行加減分操作時(shí),就對(duì)數(shù)組中對(duì)應(yīng)的值進(jìn)行加或減。加減分的操作主要由加分函數(shù)和減分函數(shù)兩個(gè)函來完成。4.2.6發(fā)聲模塊系統(tǒng)的發(fā)聲模塊由一個(gè)有源的蜂鳴器構(gòu)成,只要對(duì)響應(yīng)

55、的引腳置低,蜂鳴器就會(huì)發(fā)出一定頻率的聲響。這種操作簡(jiǎn)單便捷,在需要發(fā)出提示音的時(shí)候(本設(shè)計(jì)中需要發(fā)生的有倒計(jì)時(shí)的最后5秒提示音和選手搶答犯規(guī)是的告警音)能夠方便的的控制蜂鳴器的停啟。第5章系統(tǒng)綜合調(diào)試5.1系統(tǒng)實(shí)現(xiàn)的功能通過了一系列的硬件設(shè)計(jì)和軟件設(shè)計(jì),并將軟硬件進(jìn)行整合。最后我們需要對(duì)我們的設(shè)計(jì)進(jìn)行測(cè)試,看它是否能完成我們最初設(shè)定的各種功能。1、在搶答是只有,主持人按下開始后才能搶答。在預(yù)備時(shí)間結(jié)束前搶答視為犯規(guī)。2、可以顯示搶答成功的選手和搶答犯規(guī)的選手。搶答成功的選手顯示他當(dāng)前得分。3、顯示倒計(jì)時(shí),倒計(jì)時(shí)將要結(jié)束時(shí)有響鈴提示。4、搶答成功后鎖定按鍵,使其他選手的按鍵無效。5、選手答題后主

56、持人進(jìn)行加分或減分。并顯示為當(dāng)前得分。6、主持人復(fù)位后進(jìn)入下一輪搶答,并顯示所有選手的分?jǐn)?shù)。5.2系統(tǒng)運(yùn)行效果1、開機(jī)初始狀態(tài)。如圖5-1所示。圖5-1開機(jī)初始狀態(tài)Fig. 5-1 power on initial state上電啟動(dòng)后屏幕顯示當(dāng)前所有選手的分?jǐn)?shù),初始狀態(tài)下,所有選手得分都為10。這一步符合本設(shè)計(jì)的設(shè)計(jì)要求。2、預(yù)備搶答倒計(jì)時(shí)狀態(tài)。如圖5-2所示。圖5-2預(yù)備搶答倒計(jì)時(shí)狀態(tài)Fig. 5-2 the countdown of prepare to vies主持人按下開始鍵后進(jìn)入5秒倒計(jì)時(shí),并且在每一秒都發(fā)出提示音。這一步也符合設(shè)計(jì)要求。3、搶答犯規(guī)顯示。如圖5-3所示。圖5-3 搶答犯規(guī)顯示Fig. 5-3 vies foul display有選手在預(yù)備時(shí)間結(jié)束前按下?lián)尨疰I就會(huì)提示搶答犯規(guī),并在屏幕上顯示犯規(guī)信息,并且會(huì)響鈴告警。這一步功能符合設(shè)計(jì)要求。4、正式搶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論