基于51單片機(jī)的搶答器設(shè)計(jì)及基于51單片機(jī)酒精濃度檢測(cè)儀的設(shè)計(jì)畢業(yè)論文設(shè)計(jì)_第1頁(yè)
基于51單片機(jī)的搶答器設(shè)計(jì)及基于51單片機(jī)酒精濃度檢測(cè)儀的設(shè)計(jì)畢業(yè)論文設(shè)計(jì)_第2頁(yè)
基于51單片機(jī)的搶答器設(shè)計(jì)及基于51單片機(jī)酒精濃度檢測(cè)儀的設(shè)計(jì)畢業(yè)論文設(shè)計(jì)_第3頁(yè)
基于51單片機(jī)的搶答器設(shè)計(jì)及基于51單片機(jī)酒精濃度檢測(cè)儀的設(shè)計(jì)畢業(yè)論文設(shè)計(jì)_第4頁(yè)
基于51單片機(jī)的搶答器設(shè)計(jì)及基于51單片機(jī)酒精濃度檢測(cè)儀的設(shè)計(jì)畢業(yè)論文設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGEPAGE68目錄第一章?lián)尨鹌鞯母攀?.1系統(tǒng)設(shè)計(jì)的功能1.2搶答器需求分析1.3搶答器的工作原理第二章單片機(jī)的功能簡(jiǎn)介2.189系列單片機(jī)的概述2.2AT89S51的功能2.2.1TA89S51特殊功能寄存器2.2.2A第三節(jié)硬件電路的設(shè)計(jì)總電路原理時(shí)鐘頻率電路的設(shè)計(jì)復(fù)位電路的設(shè)計(jì)復(fù)位電路的可靠性設(shè)計(jì)人工復(fù)位顯示電路的設(shè)計(jì)控制電路的實(shí)現(xiàn)發(fā)聲系統(tǒng)復(fù)位軟件設(shè)計(jì)軟件任務(wù)分析顯示子程序的設(shè)計(jì)定時(shí)器T0、T1中斷服務(wù)程序的設(shè)計(jì)搶答器處理程序的設(shè)計(jì)主程序及分析元器件及焊接調(diào)試設(shè)計(jì)小結(jié)致謝參考文獻(xiàn)摘

要隨著科學(xué)技術(shù)的發(fā)展和普及,各種各樣的競(jìng)賽越來(lái)越多,其中搶答器的作用也就顯而易見。目前很多搶答器基本上采用小規(guī)模數(shù)字集成電路設(shè)計(jì),使用起來(lái)不夠理想。因此設(shè)計(jì)一更易于使用和區(qū)分度高的搶答器成了非常迫切的任務(wù)?,F(xiàn)在單片機(jī)已進(jìn)入各個(gè)領(lǐng)域,以其功耗小、智能化而著稱,所以若利用單片機(jī)來(lái)設(shè)計(jì)搶答器,便使以上問題得以解決.針對(duì)以上情況,本文設(shè)計(jì)出以AT89S51單片機(jī)為核心的八路搶答器。我們采用了數(shù)字顯示器直接指示,自動(dòng)鎖存顯示結(jié)果,并自動(dòng)復(fù)位的設(shè)計(jì)思想,它能根據(jù)不同的搶答輸入信號(hào),經(jīng)過單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號(hào)相對(duì)應(yīng)的輸出信號(hào),最后通過LED數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組的搶答時(shí)間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,它充分利用了單片機(jī)系統(tǒng)的優(yōu)點(diǎn),具有結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大、可靠性好、實(shí)用性強(qiáng)的特點(diǎn)。本設(shè)計(jì)是以八路搶答為基本理念??紤]到依需設(shè)定限時(shí)回答的功能,利用89S51單片機(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í)間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無(wú)效;滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無(wú)效非法。第一章?lián)尨鹌鞯母攀?.1系統(tǒng)設(shè)計(jì)的功能1.基本功能:(1)同時(shí)供8名選手比賽,分別用8個(gè)按鈕S0~S7表示。(2)設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。(3)搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),揚(yáng)聲器發(fā)出聲響提示,并在七段數(shù)碼管上顯示選手號(hào)碼。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。2.擴(kuò)展功能:(1)搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動(dòng)"開始"鍵后,定時(shí)器進(jìn)行減計(jì)時(shí)。(2)參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。在這段(3)如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。1.2搶答器的需求分析1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無(wú)效。2、搶答限定時(shí)間和回答問題的時(shí)間可是在1~99s設(shè)定。3、可以顯示是哪位選手有效搶答和無(wú)效搶答,正確按鍵后有音樂提示。4、搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,時(shí)間完后系統(tǒng)自動(dòng)復(fù)位。5、按鍵鎖定,在有效狀態(tài)下,按鍵無(wú)效非法。1.3搶答的工作過程圖2-4搶答器電路表2-174LS148的功能真值表1、如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按"加一"鍵或"減一"鍵進(jìn)入調(diào)節(jié)狀態(tài),此時(shí)會(huì)顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下"減1s"鍵,時(shí)間LED上會(huì)顯示改變后的時(shí)間,調(diào)整范圍為0~99s,0s時(shí)再減1s會(huì)跳到99,99s時(shí)再加1s會(huì)變到0s。2、主持人按"搶答開始"鍵,會(huì)有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)20s搶答時(shí)間),如有選手搶答,會(huì)有提示音,并會(huì)顯示其號(hào)數(shù)并立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè)20s搶答時(shí)間),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。3、如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按"停止"按鍵,系統(tǒng)會(huì)自動(dòng)進(jìn)入準(zhǔn)備狀態(tài),等待主持人按"搶答開始"進(jìn)入下次搶答計(jì)時(shí)。4、如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不顯示任何結(jié)果,直到按下"停止"鍵為止。1.4搶答器的工作原理及流程搶答器的基本工作原理:在搶答競(jìng)賽或呼叫時(shí)[2],有多個(gè)信號(hào)同時(shí)或不同時(shí)送入主電路中,搶答器內(nèi)部的寄存器工作,并識(shí)別、記錄第一個(gè)號(hào)碼,同時(shí)內(nèi)部的定時(shí)器開始工作,記錄有關(guān)時(shí)間并產(chǎn)生超時(shí)信號(hào)。在整個(gè)搶答器工作過程中,顯示電路、語(yǔ)音電路等還要根據(jù)現(xiàn)場(chǎng)的實(shí)際情況向外電路輸出相應(yīng)信號(hào)。搶答器的工作流程分為、系統(tǒng)復(fù)位、正常流程、違例流程等幾部分,如圖2-2所示,下面分別予以介紹。單片機(jī)的功能簡(jiǎn)介89系列單片機(jī)的概況MCS-51單片機(jī)是美國(guó)INTE公司于1980年推出的產(chǎn)品,典型產(chǎn)品有8031(內(nèi)部沒有程序存儲(chǔ)器,實(shí)際使用方面已經(jīng)被市場(chǎng)淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,實(shí)際使用方面已經(jīng)被市場(chǎng)淘汰)和8751等通用產(chǎn)品,一直到現(xiàn)在,MCS-51內(nèi)核系列兼容的單片機(jī)仍是應(yīng)用的主流產(chǎn)品(比如目前流行的89S51、已經(jīng)停產(chǎn)的89C51等),各高校及專業(yè)學(xué)校的培訓(xùn)教材仍與MCS-51單片機(jī)作為代表進(jìn)行理論基礎(chǔ)學(xué)習(xí)。有些文獻(xiàn)甚至也將8051泛指MCS-51系列單片機(jī),8051是早期的最典型的代表作,由于MCS-51單片機(jī)影響極深遠(yuǎn),許多公司都推出了兼容系列單片機(jī),就是說(shuō)MCS-51內(nèi)核實(shí)際上已經(jīng)成為一個(gè)8位單片機(jī)的標(biāo)準(zhǔn)。其他的公司的51單片機(jī)產(chǎn)品都是和MCS-51內(nèi)核兼容的產(chǎn)品而以。同樣的一段程序,在各個(gè)單片機(jī)廠家的硬件上運(yùn)行的結(jié)果都是一樣的,如ATMEL的89C51(已經(jīng)停產(chǎn))、89S51,PHILIPS(菲利浦),和WINBOND(華邦)等,我們常說(shuō)的已經(jīng)停產(chǎn)的89C51指的是ATMEL公司的AT89C51單片機(jī),同時(shí)是在原基礎(chǔ)上增強(qiáng)了許多特性,如時(shí)鐘,更優(yōu)秀的是由Flash(程序存儲(chǔ)器的內(nèi)容至少可以改寫1000次)存儲(chǔ)器取帶了原來(lái)的ROM(一次性寫入),AT89C51的性能相對(duì)于8051已經(jīng)算是非常優(yōu)越的了。不過在市場(chǎng)化方面,89C51受到了PIC單片機(jī)陣營(yíng)的挑戰(zhàn),89C51最致命的缺陷在于不支持ISP(在線更新程序)功能,必須加上ISP功能等新功能才能更好延續(xù)MCS-51的傳奇。89S51就是在這樣的背景下取代89C51的,現(xiàn)在,89S51目前已經(jīng)成為了實(shí)際應(yīng)用市場(chǎng)上新的寵兒,作為市場(chǎng)占有率第一的Atmel目前公司已經(jīng)停產(chǎn)AT89C51,將用AT89S51代替。89S51在工藝上進(jìn)行了改進(jìn),89S51采用0.35新工藝,成本降低,而且將功能提升,增加了競(jìng)爭(zhēng)力。89SXX可以像下兼容89CXX等51系列芯片。市場(chǎng)上見到的89C51實(shí)際都是Atmel前期生產(chǎn)的巨量庫(kù)存而以。如果市場(chǎng)需要,Atmel當(dāng)然也可以再恢復(fù)生產(chǎn)AT89C51。AT89S51/LS51單片機(jī)是低功耗的、具有4KB在線課編程Flash存儲(chǔ)器的單片機(jī)。它與通用80C51系列單片機(jī)的指令系統(tǒng)和引腳兼容。片內(nèi)的Flash可允許在線重新編程,也可使用非易失性存儲(chǔ)器編程。他將通用CPU和在線可編程Flash集成在一個(gè)芯片上,形成了功能強(qiáng)大、使用靈活和具有較高性能性價(jià)比的微控制器。AT89S51的功能AT89S51特殊功能寄存器特殊功能寄存器也稱專用寄存器,是具有特殊功能的所有寄存器的集合,簡(jiǎn)稱SFR(SpecialFunctionRegister)。特殊功能寄存器共含有22個(gè)不同寄存器。它們的地址分配在80H~FFH中,即在RAM地址中。這些寄存器的名稱和地址見表2-2。表2-1器件選型方案的詳細(xì)清單器件名稱器件名稱規(guī)格型號(hào)數(shù)量微處理器AT89S511電阻3WTT10K8電容30PF3晶振12MHZ1按鈕11反相器37段數(shù)碼管7SEG-MPX4CC4揚(yáng)聲器1雖然特殊功能寄存器地址在80H~FFH之中,但在80H~FFH的地址單元中,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的,如果對(duì)這些單元進(jìn)行操作,得到的是一些隨機(jī)數(shù),而寫入則無(wú)效。所以,用戶編程時(shí)不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元,它們是公司留待將來(lái)開發(fā)新產(chǎn)品時(shí)使用的表2-2AT89S51特殊功能寄存器列表符號(hào)地址注釋*ACCE0H累加器*BF0H乘法寄存器*PSWD0H程序狀態(tài)字SP81H堆棧指針DPL82H數(shù)據(jù)存儲(chǔ)器指針低8位DPH83H數(shù)據(jù)存儲(chǔ)器指針高8位*IEA8H中斷允許控制器*IPD8H中斷優(yōu)先控制器*P080H端口0*P190H端口1*P2A0H端口2*P3B0H端口3PCON87H電源控制及波特率選擇*SCON98H串行口控制器SBUF99H串行數(shù)據(jù)緩沖器*TCON88H定時(shí)器控制TMOD89H定時(shí)器方式選擇TL08AH定時(shí)器0低8位TL18BH定時(shí)器1低8位TH08CH定時(shí)器0低8位TH18DH定時(shí)器1高8位注:帶*號(hào)的特殊功能寄存器都是可以位尋址的寄存器2.2.2AT89S51單片機(jī)的內(nèi)部結(jié)構(gòu)AT89S51單片機(jī)內(nèi)部由CPU、4KB的FPEROM,128B的RAM,兩個(gè)16位的定時(shí)/計(jì)數(shù)器T0和T1,4個(gè)8位的I/O端P0、P1、P2、P3等組成。單片微機(jī)內(nèi)部最核心的部分是CPU。CPU主要功能是產(chǎn)生各種控制信號(hào),控制存儲(chǔ)器、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算以及位操作處理等,CPU按其功能可分為運(yùn)算器和控制器兩部分。控制器由程序計(jì)數(shù)器PC、指令儲(chǔ)存器、指令譯碼器、實(shí)時(shí)控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對(duì)來(lái)自存儲(chǔ)器中的指令進(jìn)行譯碼,通過實(shí)時(shí)控制電路,在規(guī)定的時(shí)刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號(hào),使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運(yùn)算器由算術(shù)邏輯器部件ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW,BCD碼運(yùn)算調(diào)整電路等組成。外部定外部定時(shí)元件復(fù)位中斷電源系統(tǒng)時(shí)鐘ROMCPU定時(shí)/計(jì)數(shù)器串行I/O口并行I/O口RAM圖2-3AT89S51單片機(jī)的內(nèi)部結(jié)構(gòu)圖為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個(gè)通用寄存器B和一些專用寄存器,還增加了位處理邏輯電路的功能[3]。其內(nèi)部結(jié)構(gòu)如圖2-3所示。硬件電路的設(shè)計(jì)總電路原理為使硬件電路設(shè)計(jì)盡可能合理,應(yīng)注意以下幾方面:(1)盡可能采用功能強(qiáng)的芯片,以簡(jiǎn)化電路,功能強(qiáng)的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價(jià)格不斷下降,并不一定比若干普通芯片價(jià)格的總和高。(2)留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路時(shí),要考慮到將來(lái)修改擴(kuò)展的方便。因?yàn)楹苌儆幸诲N定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來(lái)可能要為一點(diǎn)小小的修改或擴(kuò)展而被迫進(jìn)行全面返工。(3)程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計(jì)采用AT89C51單片機(jī)。(4)RAM空間,AT89S51內(nèi)部RAM不多,當(dāng)要增強(qiáng)軟件數(shù)據(jù)處理功能時(shí),往往覺得不足。如果系統(tǒng)配置了外部RAM,則建議多留一些空間。如選用8155作I/O接口,就可以增強(qiáng)256字節(jié)RAM.如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的RAM,如6264,62256等。隨著軟件設(shè)計(jì)水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級(jí)換代。只要在硬件電路設(shè)計(jì)初期考慮到這一點(diǎn),就應(yīng)該為系統(tǒng)將來(lái)升級(jí)留足夠的RAM空間,哪怕多設(shè)計(jì)一個(gè)RAM的插座,暫不插芯片也好。(5)I/O端口:在樣機(jī)研制出來(lái)后進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來(lái)解決的。如有些新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計(jì)就預(yù)留出一些I/O端口,雖然當(dāng)時(shí)空著沒用,那么用的時(shí)候就派上用場(chǎng)了。P2.4為開始搶答[9],P2.5為加分,P2.6為減分,P1.0-P1.7為六八搶答輸入,數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P2.7口。3.2時(shí)鐘頻率電路的設(shè)計(jì)時(shí)鐘電路是計(jì)算機(jī)的心臟,它控制著計(jì)算機(jī)的工作節(jié)奏。MCS-51單片機(jī)允許的時(shí)鐘頻率是因型號(hào)而異的。晶振的選擇:6MHz的晶振,其機(jī)器周期是2us。12MHz的晶振,其機(jī)器周期是1us,也就是說(shuō)在執(zhí)行同一條指令時(shí)用6MHz的晶振所用的時(shí)間是12MHz晶振的兩倍。為了提高整個(gè)系統(tǒng)的性能我選擇了12MHz的晶振。振蕩方式的選擇:內(nèi)部振蕩方式,MCS-51內(nèi)部都有一個(gè)反相放大器,XTAL1、XTAL2分別為反相放大器輸入和輸出端,外接定時(shí)反饋元件以后就組成振蕩器,產(chǎn)生時(shí)鐘送至單片機(jī)內(nèi)部的各個(gè)部件。這樣就構(gòu)成了內(nèi)部振蕩方式外部振蕩方式是把已有的時(shí)鐘信號(hào)引入單片機(jī)內(nèi)。這種方式適合用來(lái)使單片機(jī)的時(shí)鐘與外部信號(hào)一致。在我的這個(gè)設(shè)計(jì)中沒有也無(wú)需與外部時(shí)鐘信號(hào)一致,所以我選擇了內(nèi)部振蕩方式,由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。晶振我選擇了12MHz,相對(duì)于6MHz的晶振,整個(gè)系統(tǒng)的運(yùn)行速度更快了。電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值我選擇了30pF。內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)穩(wěn)定性高。圖3-2時(shí)鐘電路的設(shè)計(jì)單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容C1,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為12MHz,即fosc=12MHz,則時(shí)鐘周期為1/12μs。復(fù)位電路的設(shè)計(jì)3.3.1復(fù)位電路的可靠性設(shè)計(jì)計(jì)算機(jī)在啟動(dòng)運(yùn)行是都需要復(fù)位,使中央處理器CPU和系統(tǒng)中的其它部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。MCS-51的復(fù)位輸入引腳RST為MCS-51提供了初始化的手段,可以使程序從指定處開始執(zhí)行,在MCS-51的時(shí)鐘電路工作后,只要RST引腳上出現(xiàn)超過兩個(gè)機(jī)器周期以上的高電平時(shí),即可產(chǎn)生復(fù)位的操作。只要RST保持高電平,則MCS-51循環(huán)復(fù)位。只有當(dāng)RST由高電平變低電平以后,MCS-51才從0000H地址開始執(zhí)行程序。本系統(tǒng)采用按鍵復(fù)位方式的復(fù)位電路。MCS-51單片機(jī)有一個(gè)復(fù)位引腳RST,它是施密特觸發(fā)輸入,當(dāng)振蕩器起振后,該引腳上出現(xiàn)2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘周期)以上的高電平。使器件復(fù)位,只要RST保持高電平,MCS-51保持復(fù)位狀態(tài)。此時(shí)ALE、/PSEN、P0、P1、P2、P3口都輸出高電平。RST變?yōu)榈碗娖胶螅顺鰪?fù)位,CPU從初始狀態(tài)開始工作。復(fù)位以后內(nèi)部寄存器的初始狀態(tài)為(SP=07,P0、P1、P2、P3為0FFH外,其它寄存器都為0。在RST復(fù)位端接一個(gè)電容至VccHE一個(gè)電阻至Vss,就能實(shí)現(xiàn)上電自動(dòng)復(fù)位,對(duì)于CMOS單片機(jī)只要接一個(gè)電容至Vcc即可。如圖,在加電瞬間,電容通過電阻充電,就在RST端出現(xiàn)一定時(shí)間的高電平,只要高電平時(shí)間足夠長(zhǎng),就可以使MCS-51有效地復(fù)位。RST端在加電時(shí)應(yīng)保持的高電平時(shí)間包括Vcc的上升時(shí)間和振蕩器起振時(shí)間,Vcc上升時(shí)間若為10ms,振蕩器起振時(shí)間和頻率有關(guān)。10MHz時(shí)間約為1ms,1MHz時(shí)約為10ms,所以一般為了可靠地復(fù)位,RST在上電時(shí)應(yīng)保持20ms以上的高電平。圖2.5中,RC時(shí)間常數(shù)越大,上電時(shí)RST端保持高電平的時(shí)間越長(zhǎng)。當(dāng)振蕩頻率為12MHZ時(shí),典型值為C=10uF,R=8.2kΩ.圖3-3上電復(fù)位電路3.3.2人工復(fù)位除上電自動(dòng)復(fù)位以外,常常需要人工復(fù)位,將一個(gè)按鈕開關(guān)并聯(lián)于上電自動(dòng)復(fù)位電路,按一下開關(guān)就RST端出現(xiàn)一段時(shí)間的高電平,即使器件復(fù)位。如圖所示圖3-4上電和開關(guān)復(fù)位而我們?cè)谶@次的畢業(yè)設(shè)計(jì)中運(yùn)用的人工復(fù)位電路.其中電平復(fù)位是通過RST端經(jīng)電阻和電源Vcc接通而實(shí)現(xiàn)的,按鍵手動(dòng)電平復(fù)位電路如圖。當(dāng)時(shí)鐘頻率選用12MHz時(shí),C選取10uF,R選擇1000歐。3.4顯示電路的設(shè)計(jì)顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來(lái)解決。3.4.1顯示模塊在系統(tǒng)硬件中的安排操作者主要設(shè)計(jì)從顯示設(shè)備上獲取微機(jī)系統(tǒng)的信息的,因此,操作者每操作一下,顯示設(shè)備商都應(yīng)該有一定的反應(yīng)。這說(shuō)明,顯示模塊與操作有關(guān),即監(jiān)控程序是需要調(diào)用顯示模塊。不同的操作需要顯示不同的內(nèi)容,這又說(shuō)明各執(zhí)行模塊對(duì)顯示模塊的驅(qū)動(dòng)方式是不同的。另一方面,在操作者沒有進(jìn)行操作時(shí),顯示內(nèi)容也是變化的,如顯示現(xiàn)場(chǎng)各物理量的變化情況。這時(shí)顯示模塊不是由操作者通過命令鍵來(lái)驅(qū)動(dòng),而是由各類自動(dòng)執(zhí)行的功能模塊來(lái)驅(qū)動(dòng)。自動(dòng)執(zhí)行的各類模塊在安排在各種中斷子程序中,這就是說(shuō),各種中斷子程序也要調(diào)用顯示模塊。如果監(jiān)控安排在中斷子程序中,兩者的要求就統(tǒng)一了,問題比較好解決,如果監(jiān)控程序安排在主程序中,在監(jiān)控程序調(diào)用顯示模塊的過程中發(fā)生了中斷,中斷子程序也調(diào)用顯示模塊,這時(shí)就容易出問題。一種比較妥善的辦法是只讓一處調(diào)用顯示模塊,其他各處均不得直接調(diào)用顯示模塊,但有權(quán)申請(qǐng)顯示。這就要設(shè)置一個(gè)顯示申請(qǐng)標(biāo)志,當(dāng)某模塊需要顯示時(shí),將申請(qǐng)標(biāo)志置位,同時(shí)設(shè)定有關(guān)顯示內(nèi)容(或指針)。由于一處調(diào)用顯示模塊,故不會(huì)發(fā)生沖突。為了使顯示模塊能及時(shí)反應(yīng)系統(tǒng)需要,應(yīng)將顯示模塊安排在一個(gè)重復(fù)執(zhí)行的循環(huán)(如監(jiān)控循環(huán)或時(shí)鐘中斷子程序)中。當(dāng)監(jiān)控程序(鍵盤解釋程序)安排在時(shí)鐘中斷子程序中時(shí),處理比較方便,只要在監(jiān)控程序的匯合處調(diào)用顯示模塊就可以了。這里將顯示功能集中到一起,作為一個(gè)功能模塊,就要求它的功能全面,能根據(jù)系統(tǒng)軟件提供的信息自動(dòng)完成顯示內(nèi)容的查找,變換和輸出驅(qū)動(dòng)。這樣設(shè)計(jì)使得各功能模塊都不必考慮顯示問題,只要給出一個(gè)簡(jiǎn)單的信息(如顯示格式編碼)甚至不用再提供額外信息,直接利用當(dāng)前狀態(tài)變量和軟件標(biāo)志就可以完成所需的顯示要求。如果編寫這樣一個(gè)集中顯示模塊有困難,也可以將顯示模塊編小一些,只完成顯示緩沖區(qū)的內(nèi)容輸出到顯示器件上的工作。這時(shí)各功能模塊在提出顯示申請(qǐng)時(shí),還需要將顯示內(nèi)容按需要的格式送入顯示緩沖區(qū)中。這樣分而治之比較容易編程,但要小心出現(xiàn)顯示混亂。例如后臺(tái)程序需要調(diào)用顯示,將有關(guān)信息送入到現(xiàn)實(shí)緩沖區(qū)進(jìn)行顯示;中斷返回后,后臺(tái)程序繼續(xù)送完后半部分顯示內(nèi)容,但前半部分內(nèi)容已經(jīng)變了,這樣就出現(xiàn)了顯示錯(cuò)誤。解決的辦法是,在申請(qǐng)顯示前,先檢查是否已經(jīng)有顯示申請(qǐng),如果有,就不再申請(qǐng),等待下次機(jī)會(huì);如果沒有,則先申請(qǐng)標(biāo)志位,再將顯示內(nèi)容送入顯示緩沖區(qū)。這時(shí)就不必?fù)?dān)心其他前臺(tái)模塊來(lái)打擾了,就可以得到一次完整的顯示機(jī)會(huì)。在這里我們使用的是七段數(shù)碼管顯示,通常在顯示[6]上我們采用的方法一般包括兩種:一種是靜態(tài)顯示,一種是動(dòng)態(tài)顯示。其中靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,程序編寫簡(jiǎn)單,但占用端口資源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但是相對(duì)靜態(tài)顯示而言占用端口資源少。在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法。并通過查表法,將其在數(shù)碼管上顯示出來(lái),其中P0口為字型碼輸入端,P2口低3位為字選段輸入端。在這里我們通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字,數(shù)碼管顯示原理如下:MOVA,R5MOVCA,@A+DPTR;查字型碼MOVP2,#01H;送位選碼MOVP0,A;送字型碼ACALLDELAY;調(diào)延時(shí),去閃爍在七段數(shù)碼管顯示中可分為共陽(yáng)極和共陰極兩種類型極。以共陰為例,要想a段亮,向a段送1就是,返之送0,共陽(yáng)剛好相反。掃描電路的實(shí)現(xiàn)鍵盤是人與微機(jī)系統(tǒng)打交道的主要設(shè)備。關(guān)于鍵盤硬件電路的設(shè)計(jì)方法也可以在文獻(xiàn)和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程序。站在系統(tǒng)監(jiān)控軟件設(shè)計(jì)的立場(chǎng)上來(lái)看,僅僅完成鍵盤掃描,讀取當(dāng)前時(shí)刻的鍵盤狀態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們?cè)诓僮麈I盤就容易引起誤操作和操作失控現(xiàn)象。在單片機(jī)應(yīng)用中鍵盤用得最多的形式是獨(dú)立鍵盤及矩陣鍵盤。它們各有自己的特點(diǎn),其中獨(dú)立鍵盤硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤與獨(dú)立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨(dú)立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢(shì)得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無(wú)效。3.5.1按鈕輸入的硬件處理按鈕的觸點(diǎn)在閉合和斷開時(shí)均會(huì)產(chǎn)生抖動(dòng),這是觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不妥善處理,將會(huì)引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行?,F(xiàn)在一般均用軟件延時(shí)的方法來(lái)避開抖動(dòng)階段,這一延時(shí)過程一般大于5ms,例如取10-20ms。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺(tái)程序)或鍵盤中斷(外部中斷)子程序中,則該延時(shí)子程序便可直接插入讀鍵過程中。如果讀鍵過程安排在定時(shí)中斷子程序中,就可省去專門的延時(shí)子程序,利用兩次定時(shí)中斷的時(shí)間間隔來(lái)完成抖動(dòng)處理。發(fā)聲我們知道,聲音的頻譜范圍約在幾十到幾千赫茲[7],若能利用程序來(lái)控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。3.7系統(tǒng)復(fù)位使CPU進(jìn)入初始狀態(tài),從0000H地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。從實(shí)現(xiàn)系統(tǒng)復(fù)位的方法來(lái)看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時(shí)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對(duì)片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動(dòng)清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個(gè)事實(shí)卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來(lái)模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從0000H地址開始執(zhí)行。對(duì)各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實(shí)際需要去主程序初始化過程中完成。而對(duì)中斷激活標(biāo)志的清除工作常被遺忘,因?yàn)樗鼪]有明確的位地址可供編程。有的編程人員用020000(LJMP0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000H地址就完成了軟件復(fù)位,就是這類錯(cuò)誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進(jìn)行的工作,這時(shí)程序出錯(cuò)完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級(jí)中斷響應(yīng)。由于軟件看門是高級(jí)中斷,它將阻止說(shuō)要中斷響應(yīng),由此可見清除中斷激活標(biāo)志的重要性。在所有的指令中,只有RETI指令能夠清除中斷激活標(biāo)志。前文各處提案到的出錯(cuò)處理程序ERR主要完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。有復(fù)位時(shí)系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動(dòng)”和“熱啟動(dòng)”?!袄鋯?dòng)”時(shí),系統(tǒng)的狀態(tài)全部無(wú)效,進(jìn)行徹底的初始化操作;而“熱啟動(dòng)”時(shí),對(duì)系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”。復(fù)位關(guān)中斷,設(shè)定堆棧復(fù)位關(guān)中斷,設(shè)定堆棧上電標(biāo)志冷啟自檢全面初始化熱啟動(dòng)恢復(fù)被破壞的信息部分初始化建立上電標(biāo)志開始運(yùn)轉(zhuǎn)圖3-6系統(tǒng)復(fù)位策略圖第四章軟件設(shè)計(jì)4.1軟件任務(wù)分析軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計(jì)基本定型后,也就基本上決定下來(lái)了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來(lái)看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量,計(jì)算,顯示,打印[8],輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對(duì)來(lái)講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個(gè)廠長(zhǎng)就比較難了。軟件任務(wù)分析的另一個(gè)內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個(gè)系統(tǒng)軟件可分為后臺(tái)程序(背景程序)和前臺(tái)程序。后臺(tái)程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時(shí)性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺(tái)程序中執(zhí)行;而前臺(tái)程序安排一些實(shí)時(shí)性要求較高的內(nèi)容,如定時(shí)系統(tǒng)和外部中斷(如掉電中斷)。也可以將全部程序均安排在前臺(tái),后臺(tái)程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾。顯示子程序的設(shè)計(jì)顯示子程序,及部分注解如下:DISPLAY:MOVDPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,MOVA,R3MOVCA,@A+DPTRMOVP2,#0feHMOVP0,AACALLDELAYMOVDPTR,#DAT2MOVA,R5MOVCA,@A+DPTRMOVP2,#0fdHMOVP0,AACALLDELAYMOVA,R4MOVCA,@A+DPTRMOVP2,#0fbHMOVP0,AACALLDELAYRETDAT1:DB00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;"滅","1","2","3","4","5","6","7","8","9","滅","F"DAT2:DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅定時(shí)器T0、T1中斷服務(wù)程序的設(shè)計(jì)=====TO溢出中斷(響鈴程序)=====T0INT:

MOVTH0,#0ECHMOVTL0,#0FFHJNBRING,OUT;CPLP3.6;RING標(biāo)志位為1時(shí)候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音OUT:

RETI

T1溢出中斷(計(jì)時(shí)程序):T1INT:

MOVTH1,#3CHMOVTL1,#0B0HINCR0RETIEND搶答器處理程序的設(shè)計(jì)搶答器處理程序:TRUE1:ACALLBARK;按鍵發(fā)聲MOVA,R2MOVR6,A;搶答時(shí)間R2送R6MOVR3,#01HCLROK;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答AJMPCOUNTTRUE2:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#02HCLROKAJMPCOUNTTRUE3:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#03HCLROKAJMPCOUNTTRUE4:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#04HCLROKAJMPCOUNTTRUE5:

ACALLBARK;MOVA,R2MOVR6,AMOVR3,#05HCLROKAJMPCOUNTTRUE6:

ACALLBARK;MOVA,R2MOVR6,AMOVR3,#06HCLROKAJMPCOUNTTRUE7:

ACALLBARK;MOVA,R2MOVR6,AMOVR3,#07HCLROKAJMPCOUNTTRUE8:

ACALLBARK;MOVA,R2MOVR6,AMOVR3,#08HCLROKAJMPCOUNT程序及分析單片機(jī)控制8路搶答器程序

OKEQU20H;搶答開始標(biāo)志位

RINGEQU22H;響鈴標(biāo)志位

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040HMAIN:

MOVR1,#30;初設(shè)搶答時(shí)間為30s

MOVR2,#60;初設(shè)答題時(shí)間為60s

MOVTMOD,#11H;設(shè)置未定時(shí)器/模式1

MOVTH0,#0F0H

MOVTL0,#0FFH;越高發(fā)聲頻率越高,越尖

MOVTH1,#3CH

MOVTL1,#0B0H;50ms為一次溢出中斷

SETBEA

SETBET0

SETBET1

SETBEX0

SETBEX1;允許四個(gè)中斷,T0/T1/INT0/INT1

CLROK

CLRRING

SETBTR1

SETBTR0;一開始就運(yùn)行定時(shí)器,以開始顯示FFF.如果想重新計(jì)數(shù),重置TH1/TL1就可以了;=====查詢程序=====START:

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;未開始搶答時(shí)候顯示FFF

JBP3.0,NEXT;ddddddd

ACALLDELAY

JBP3.0,NEXT;去抖動(dòng),如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢

ACALLBARK;按鍵發(fā)聲

MOVA,R1

MOVR6,A;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間

SETBOK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答

MOVR3,#0AH;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)

AJMPCOUNT;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在COUNT里面NEXT:

JNBP1.0,FALSE1

JNBP1.1,FALSE2

JNBP1.2,FALSE3

JNBP1.3,FALSE4

JNBP1.4,FALSE5

JNBP1.5,FALSE6

JNBP1.6,TZ1

JNBP1.7,TZ2

AJMPSTART

TZ1:JMPFALSE7TZ2:JMPFALSE8;=====非法搶答處理程序=====FALSE1:ACALLBARK;按鍵發(fā)聲MOVR3,#01H

AJMPERRORFALSE2:ACALLBARKMOVR3,#02H

AJMPERRORFALSE3:ACALLBARKMOVR3,#03H

AJMPERRORFALSE4:ACALLBARKMOVR3,#04H

AJMPERRORFALSE5:ACALLBARKMOVR3,#05H

AJMPERRORFALSE6:ACALLBARKMOVR3,#06H

AJMPERRORFALSE7:ACALLBARKMOVR3,#07H

AJMPERRORFALSE8:ACALLBARKMOVR3,#08H

AJMPERROR

;=====INT0(搶答時(shí)間R1調(diào)整程序)=====INT0SUB:MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY;先在兩個(gè)時(shí)間LED上顯示R1

JNBP3.4,INC0;P3.4為+1s鍵,如按下跳到INCO

JNBP3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO

JNBP3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO

AJMPINT0SUBINC0:

MOVA,R1CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。

MOVR1,#00H

ACALLDELAY1AJMPINT0SUBADD0:

INCR1

ACALLDELAY1

AJMPINT0SUBDEC0:

MOVA,R1

JZSETR1;如果R1為0,R1就置99,

DECR1

ACALLDELAY1

AJMPINT0SUBSETR1:

MOVR1,#63H

ACALLDELAY1

AJMPINT0SUBBACK0:

RETI;=====INT1(回答時(shí)間R2調(diào)整程序)=====INT1SUB:MOVA,R2

MOVB,#0AH

DIVABMOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY

JNBP3.4,INC1

JNBP3.5,DEC1

JNBP3.1,BACK1

AJMPINT1SUBINC1:

MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ACALLDELAY1AJMPINT1SUBADD1:

INCR2

ACALLDELAY1

AJMPINT1SUBDEC1:

MOVA,R2

JZSETR2

DECR2

ACALLDELAY1

AJMPINT1SUBSETR2:

MOVR2,#63H

ACALLDELAY1

AJMPINT1SUBBACK1:

RETI;=====倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)=====COUNT:

MOVR0,#00H;重置定時(shí)器中斷次數(shù)

MOVTH1,#3CH

MOVTL1,#0B0H;重置定時(shí)器RECOUNT:MOVA,R6;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6

MOVB,#0AH

DIVAB;除十分出個(gè)位/十位

MOV30H,A;十位存于(30H)

MOV31H,B;個(gè)位存于(31H)

MOVR5,30H;取十位

MOVR4,31H;取個(gè)位

MOVA,R6

SUBBA,#07H

JNCLARGER;大于5s跳到LARGER,小于等于5s會(huì)提醒

MOVA,R0

CJNEA,#0AH,FULL;1s中0.5s向下運(yùn)行

CLRRING

AJMPCHECKFULL:

CJNEA,#14H,CHECK;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)

SETBRING

MOVA,R6

JZQUIT;計(jì)時(shí)完畢

MOVR0,#00H

DECR6;一秒標(biāo)志減1

AJMPCHECKLARGER:MOVA,R0

CJNEA,#14H,CHECK;如果1s向下運(yùn)行,否者跳到查"停/顯示"

DECR6;計(jì)時(shí)一秒R6自動(dòng)減1

MOVR0,#00HCHECK:JNBP3.1,QUIT;如按下停止鍵退出

ACALLDISPLAY

JBOK,ACCOUT;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)

AJMPRECOUNTACCOUT:JNBP1.0,TRUE1

JNBP1.1,TRUE2

JNBP1.2,TRUE3

JNBP1.3,TRUE4

JNBP1.4,TRUE5

JNBP1.5,TRUE6

JNBP1.6,TZ3

JNBP1.7,TZ4

AJMPRECOUNT

TZ3:JMPTRUE7

TZ4:JMPTRUE8

QUIT:

CLROK;如果按下了"停止鍵"執(zhí)行的程序

CLRRING

AJMPSTART;=====正常搶答處理程序=====TRUE1:ACALLBARK;按鍵發(fā)聲

MOVA,R2

MOVR6,A;搶答時(shí)間R2送R6

MOVR3,#01H

CLROK;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答

AJMPCOUNTTRUE2:ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#02H

CLROK

AJMPCOUNTTRUE3:ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#03H

CLROK

AJMPCOUNTTRUE4:ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#04H

CLROK

AJMPCOUNTTRUE5:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#05H

CLROK

AJMPCOUNTTRUE6:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#06H

CLROK

AJMPCOUNTTRUE7:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#07H

CLROK

AJMPCOUNTTRUE8:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#08H

CLROK

AJMPCOUNT

;=====犯規(guī)搶答程序=====ERROR:

MOVR0,#00H

MOVTH1,#3CH

MOVTL1,#0B0H

MOV34H,R3;犯規(guī)號(hào)數(shù)暫存與(34H)HERE:

MOVA,R0

CJNEA,#0AH,FLASH;0.5s向下運(yùn)行->滅并停響

CLRRING

MOVR3,#0AH

MOVR4,#0AH

MOVR5,#0AH;三燈全滅

AJMPCHECK1FLASH:

CJNEA,#14H,CHECK1;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)

SETBRING

MOVR0,#00H

MOVR3,34H;取回號(hào)數(shù)

MOVR5,#0BH

MOVR4,#0BH;顯示FF和號(hào)數(shù)

AJMPCHECK1CHECK1:JNBP3.1,QUIT1

ACALLDISPLAY

AJMPHEREQUIT1:

CLRRING

CLROK

AJMPSTART;=====顯示程序=====DISPLAY:MOVDPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,

MOVA,R3

MOVCA,@A+DPTR

MOVP2,#0feH

MOVP0,A

ACALLDELAY

MOVDPTR,#DAT2

MOVA,R5

MOVCA,@A+DPTR

MOVP2,#0fdH

MOVP0,A

ACALLDELAY

MOVA,R4

MOVCA,@A+DPTR

MOVP2,#0fbH

MOVP0,A

ACALLDELAY

RETDAT1:DB00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;"滅","1","2","3","4","5","6","7","8","9","滅","F"DAT2:DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅;====加減時(shí)間延時(shí)(起到不會(huì)按下就加N個(gè)數(shù))======DELAY1:MOV35H,#08HLOOP0:

ACALLDISPLAY

DJNZ35H,LOOP0

RET;=====延時(shí)(顯示和去抖動(dòng)用到)=====DELAY:

MOV32H,#12HLOOP:

MOV33H,#0AFHLOOP1:

DJNZ33H,LOOP1

DJNZ32H,LOOP

RET;=====發(fā)聲程序=====BARK:

SETBRING

ACALLDELAY1

ACALLDELAY1

CLRRING;按鍵發(fā)聲

RET;=====TO溢出中斷(響鈴程序)=====T0INT:

MOVTH0,#0ECH

MOVTL0,#0FFH

JNBRING,OUT;

CPLP3.6;RING標(biāo)志位為1時(shí)候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音OUT:

RETI;=====T1溢出中斷(計(jì)時(shí)程序)=====T1INT:

MOVTH1,#3CH

MOVTL1,#0B0H

INCR0

RETIEND第五章元器件及焊接調(diào)試5.1蜂鳴器\o"查看圖片"

蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。;蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器在電路中用字母“H”或“HA”(舊標(biāo)準(zhǔn)用“FM”、“LB”、“JD”等)表示。\o"查看圖片"

蜂鳴器5.2數(shù)碼管1、說(shuō)明(1)電子板上電時(shí)數(shù)碼顯示管顯示OPEN(2)每按下一次數(shù)字鍵蜂鳴器鳴叫一聲,數(shù)碼顯示管顯示該數(shù)字,表示該鍵輸入已被承認(rèn)。(3)操作鍵板上“*”用于表示消除“#”鍵用于表示確認(rèn)和開啟報(bào)警程序。(4)按下任意鍵則喚醒進(jìn)入功能操作。2、個(gè)人密碼的設(shè)置與更改(1)按下設(shè)置,蜂鳴器鳴叫長(zhǎng)響一聲,數(shù)碼顯示管顯示C1IN個(gè)人密碼開始設(shè)置或更改。(2)任意輸入1至12位數(shù)字(輸入多于12位的成個(gè)人密碼設(shè)置無(wú)效)后“?!辨I確認(rèn),蜂鳴器鳴叫長(zhǎng)響一聲,數(shù)碼顯示管顯示SETCI表示個(gè)人設(shè)置成功,如無(wú)任何操作系統(tǒng)自動(dòng)進(jìn)入休眠狀態(tài)。(3)除非斷電至信息丟失或執(zhí)行步驟個(gè)人密碼的設(shè)置與更改(1),否則個(gè)人密碼永遠(yuǎn)保存,不變更。3、管理密碼的設(shè)置(1)按下兩次“0”鍵再按下設(shè)置鍵,蜂鳴器鳴叫長(zhǎng)響一聲,數(shù)碼顯示管顯示C2IN,個(gè)人密碼開始設(shè)置或更改。(2)任意輸入1至12位數(shù)字(輸入多于12位的成個(gè)人密碼設(shè)置無(wú)效)后按“#”鍵確認(rèn),蜂鳴器鳴叫長(zhǎng)響一聲,數(shù)碼顯示管顯示SETC2表示個(gè)人設(shè)置成功,如無(wú)任何操作系統(tǒng)自動(dòng)進(jìn)入休眠狀態(tài)。(3)除非斷電至信息丟失或執(zhí)行步驟管理密碼的設(shè)置(1),否則管理密碼永遠(yuǎn)保存,不變更。4、開門,鎖門(1)輸入正確的管理密碼或個(gè)人密碼后按“#”鍵確認(rèn),蜂鳴器鳴叫長(zhǎng)響一聲,數(shù)碼顯示管顯示SETCI或SETC2表示密碼正確,電磁鐵吸合,可以開門、鎖門動(dòng)作。(2)約6秒以后,電磁鐵釋放。(3)如果密碼輸入不正確,按下“#”鍵確認(rèn)蜂鳴器鳴會(huì)發(fā)出急促的提示音,數(shù)碼顯示管顯示ERROR。(4)如果三次輸入均不正確,數(shù)碼顯示管顯示REJEC,3分鐘內(nèi)將不接受輸入密碼。5、報(bào)警在休眠狀態(tài)下按“?!?/p>

《七段數(shù)碼管引腳圖》數(shù)碼管使用條件:a、段及小數(shù)點(diǎn)上加限流電阻b、使用電壓:段:根據(jù)發(fā)光顏色決定;

小數(shù)點(diǎn):根據(jù)發(fā)光顏色決定c、使用電流:靜態(tài):總電流80mA(每段10mA);動(dòng)態(tài):平均電流4-5mA

峰值電流100mA上面這個(gè)只是七段數(shù)碼管引腳圖,其中共陽(yáng)極數(shù)碼管引腳圖和共陰極的是一樣的。5.3焊接與調(diào)試PCB板做好了,孔也打好了,接下來(lái)的工作就是焊接。先把烙鐵靠近焊盤,緊接著把錫絲往烙鐵上送,等錫絲熔了輕輕一提,一個(gè)又圓又亮的焊點(diǎn)就做好了。板子做好后在一個(gè)小時(shí)左右把元件都焊上去了。焊接后的板子如圖5.2和5.3所示。

圖5.2

圖5.3焊接好后的調(diào)試就是最激動(dòng)人心的時(shí)候,插上電源,發(fā)現(xiàn)數(shù)碼管不亮,當(dāng)按下復(fù)位鍵時(shí)數(shù)碼管就亮了,并且所有功能都能正常運(yùn)行,重新打了個(gè)撥動(dòng)開關(guān)的孔,用跳線把復(fù)位按紐接到了撥動(dòng)開關(guān),這樣搶答器功能基本實(shí)現(xiàn)了。第六章設(shè)計(jì)小結(jié)本文研究與設(shè)計(jì)的八路多功能搶答器采用了通用的電子元器件,利用AT89S51單片機(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í)間。計(jì)分接收的單片機(jī)部分利用匯編語(yǔ)言編寫。設(shè)計(jì)時(shí),首先通過在線編程,然后具體安裝,仿真,完全實(shí)現(xiàn)了設(shè)計(jì)功能。本設(shè)計(jì)中,利用常規(guī)的單片機(jī)掃描識(shí)別的方法。通過硬件電路的具體應(yīng)用和系統(tǒng)的仿真研究得出,本設(shè)計(jì)不僅安裝簡(jiǎn)單、成本低,更重要的是工作性能穩(wěn)定,是一個(gè)實(shí)用、創(chuàng)新型的工程設(shè)計(jì)。由于采用匯編語(yǔ)言設(shè)計(jì)電路,所以本設(shè)計(jì)在編程成功后,硬件電路基本上不需要調(diào)試就可正常使用。即使在設(shè)計(jì)完畢交給用戶使用后,對(duì)系統(tǒng)的功能改進(jìn)或升級(jí)也只是通過改寫程序來(lái)完成,極大地方便了用戶或設(shè)計(jì)者對(duì)電路更新?;仡^再看看該設(shè)計(jì),還可以將設(shè)計(jì)的擴(kuò)展功能增強(qiáng):1、可以設(shè)計(jì)聲控裝置,在主持人說(shuō)開始時(shí),系統(tǒng)自動(dòng)完成清零并開始計(jì)時(shí)的功能。2、在主持人讀題的過程中,禁止搶答,可以在主持人控制的開關(guān)上另接一個(gè)與其一樣的電路,即可實(shí)現(xiàn)“違規(guī)者可見”的功能,即在主持人讀題時(shí)如果有人違反比賽規(guī)定搶先按動(dòng)按鈕,顯示器可以顯示是哪個(gè)參賽隊(duì)搶先,便于作出相應(yīng)的處理。如果提供相應(yīng)的器材及時(shí)間上的寬限,一定可以完成上述擴(kuò)展功能,進(jìn)一步完善作品。經(jīng)過這半個(gè)學(xué)期的努力,在老師和同學(xué)的幫助下終于徹底的做完了畢業(yè)設(shè)計(jì)的所有工作。通過這次的畢業(yè)設(shè)計(jì),我能運(yùn)用已學(xué)的知識(shí)解決我在設(shè)計(jì)中遇到的問題,使自己的動(dòng)手能力和思考問題的能力得到了很大的提高。在做設(shè)計(jì)的過程中我查閱了很多的資料,并認(rèn)真的閱讀這些與我的設(shè)計(jì)相關(guān)的資料,從而我的專業(yè)涵養(yǎng)得到了提高,知識(shí)的儲(chǔ)備量也有所增加。在做設(shè)計(jì)時(shí),我復(fù)習(xí)了很多專業(yè)課的知識(shí),這使得我的專業(yè)知識(shí)在離校之前得到了鞏固。我認(rèn)為這是我在整個(gè)設(shè)計(jì)工程中得到的最好的回報(bào)。整個(gè)設(shè)計(jì)通過了軟件和硬件上的調(diào)試、仿真。我想這對(duì)于自己以后的學(xué)習(xí)和工作都會(huì)有很大的幫助的。在這次設(shè)計(jì)中遇到了很多實(shí)際性的問題,在實(shí)際設(shè)計(jì)中才發(fā)現(xiàn),書本上理論性的東西與在實(shí)際運(yùn)用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯(cuò)誤思維。對(duì)于單片機(jī)設(shè)計(jì),其硬件電路是比較簡(jiǎn)單的,主要是解決程序設(shè)計(jì)中的問題。而程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力。它才是一個(gè)設(shè)計(jì)的靈魂所在。因此在整個(gè)設(shè)計(jì)過程中大部分時(shí)間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個(gè)子程序才是關(guān)鍵的問題所在,這需要對(duì)單片機(jī)的結(jié)構(gòu)很熟悉。因此可以說(shuō)單片機(jī)的設(shè)計(jì)是軟件和硬件的結(jié)合,二者是密不可分的。但是,通過這次設(shè)計(jì)我也發(fā)現(xiàn)自己的很多不足之處。在設(shè)計(jì)過程中我發(fā)現(xiàn)自己考慮問題很不全面,自己的專業(yè)知識(shí)掌握的很不牢固,所掌握的計(jì)算機(jī)應(yīng)用軟件還不夠多,我希望自己的這些不足之處能在今后的工作和學(xué)習(xí)中得到改善。而且,通過這次設(shè)計(jì),我懂得了學(xué)習(xí)的重要性,學(xué)會(huì)了堅(jiān)持和努力,這將為以后的學(xué)習(xí)做出了最好的榜樣!同時(shí),該設(shè)計(jì)也有不足之處,缺少了答題計(jì)分等功能。我將會(huì)在以后的學(xué)習(xí)中繼續(xù)學(xué)習(xí)。參考文獻(xiàn)[1]陳大欽編.電子技術(shù)基礎(chǔ)實(shí)驗(yàn)(第二版)[M].湖北:機(jī)械工業(yè)出版社,2001[2]李廣弟.單片機(jī)基礎(chǔ)[M].北京:北航出版社,2010[3]胡學(xué)海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:京電子工業(yè)出版社,2005[4]盧飛躍.紅外遙控多路搶答器的設(shè)計(jì)[J].番禺職業(yè)技術(shù)學(xué)報(bào),2003,2(2):10-12.[5]王公堂.基于IP1C68F[6]梁超.一款基于單片機(jī)技術(shù)的電子搶答器[J].機(jī)電工程技術(shù),2005,34(1):48-52[7]齊向東.多功能數(shù)字顯示搶答器[J].黃石高等??茖W(xué)院學(xué)報(bào),1996,37(4):37-40[8]伊長(zhǎng)華.十六路微控?fù)尨鹌鞯脑O(shè)計(jì)[J].電子工程師,2001,14(5):27-28[9]龔昌來(lái).單片機(jī)控制的智能型控?fù)尨鹌鞯脑O(shè)計(jì)[J].廣東自動(dòng)化與信息工程,2003[10]周功明,周陳琛.基于單片機(jī)AT89C2051的九路多功能智力競(jìng)賽搶答器的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2006,(20):54-57[11]鄒其洪,黃智偉,高嵩,等編著.電工電子實(shí)驗(yàn)與計(jì)算機(jī)仿真[M].電子工業(yè)出版社,2005[12]黃思俞.多路搶答器的設(shè)計(jì)[J].三明高等專科學(xué)校學(xué)報(bào),2002,(02):89-90[13]尹長(zhǎng)華,趙海鴻,呂向陽(yáng),毛鵬翔.十六路微控?fù)尨鹌鞯脑O(shè)計(jì)[J].電子工程師,2001,(06):67-69致謝本課程設(shè)計(jì)是在我的導(dǎo)師恩德老師的親切關(guān)懷和細(xì)心指導(dǎo)下完成的,在設(shè)計(jì)過程中,自始至終凝聚著導(dǎo)師的心血。恩師那治學(xué)嚴(yán)謹(jǐn)?shù)膽B(tài)度,淵博的學(xué)識(shí)感染著我。他那誨人不倦、寬厚樸實(shí)的作風(fēng)給我們留下了不可磨滅的影響,是我學(xué)習(xí)的榜樣,使我終生受益無(wú)窮。在此論文完成之際,特向恩師表達(dá)誠(chéng)摯的謝意同時(shí)以最崇高的敬意。除此之外,在課題進(jìn)行當(dāng)中,還得到了其他老師,教授等的細(xì)心指導(dǎo)和諸多幫助。他們的無(wú)私幫助和耐心指導(dǎo)也是我得以完成本課題的關(guān)鍵。再此我向他們表示由衷的感謝和深切的問候。此間我還得到了同學(xué)等諸多指導(dǎo),再此表示感謝。我還要感謝我的一些同學(xué),他們?cè)谖易钚枰獛椭臅r(shí)候無(wú)私的伸出了援助之手,在此,對(duì)于他們無(wú)私的幫助我表示深深的感謝??梢哉f(shuō)如果沒有他們的幫助我就不可能順利的按時(shí)完成畢業(yè)設(shè)計(jì)。真誠(chéng)的感謝所有的幫助過我的老師們,同學(xué)們、家人和朋友們。感謝對(duì)本設(shè)計(jì)進(jìn)行評(píng)審的專家們,感謝他們給我提出的寶貴意見和建議。酒精濃度檢測(cè)儀的設(shè)計(jì)目錄一、前言 4二、酒精測(cè)試儀總體方案設(shè)計(jì) 42.1酒精濃度檢測(cè)儀設(shè)計(jì)要求分析 42.2酒精濃度檢測(cè)儀設(shè)計(jì)方案 4三、硬件設(shè)計(jì) ..53.1傳感器的選擇 ..53.2A/D轉(zhuǎn)換電路 63.389C51單片機(jī)系統(tǒng) 93.4LED顯示電路 123.5鍵盤電路 133.6報(bào)警電路 13四、軟件設(shè)計(jì) 144.1主程序框圖 144.2數(shù)據(jù)采集子程序程序框圖 154.3報(bào)警子程序程序框圖 15五、課程設(shè)計(jì)系的心得體會(huì) 17六、參考文獻(xiàn) 17附圖整體電路圖 18酒精濃度檢測(cè)儀的設(shè)計(jì)一、前言近年來(lái),我國(guó)越來(lái)越多的人有了自己的私家車,而酒后駕車造成的交通事故也頻繁發(fā)生。為此,我國(guó)將酒駕列入刑法范圍內(nèi),所以需要設(shè)計(jì)一智能儀器能夠檢測(cè)駕駛員體內(nèi)酒精含量。本課程設(shè)計(jì)研究的是一種以氣敏傳感器和單片機(jī)A/D轉(zhuǎn)換器為主,檢測(cè)駕駛員呼出氣體的酒精濃度,并具有聲光報(bào)警功能的空氣酒精濃度監(jiān)測(cè)儀。其可檢測(cè)出空氣環(huán)境中酒精濃度值,并可根據(jù)不同的環(huán)境設(shè)定不同的閾值,對(duì)超過的閾值進(jìn)行聲光報(bào)警來(lái)提示危害。本課題分為兩部分:硬件設(shè)計(jì)部分和軟件設(shè)計(jì)部分。硬件部分為利用MQ3氣敏傳感器測(cè)量空氣中酒精濃度,并轉(zhuǎn)換為電壓信號(hào),經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號(hào)后傳給單片機(jī)系統(tǒng),由單片機(jī)及其相應(yīng)外圍電路進(jìn)行信號(hào)的處理,顯示酒精濃度值以及超閾值聲光報(bào)警。程序采用模塊化設(shè)計(jì)思想,各個(gè)子程序的功能相對(duì)獨(dú)立,便于調(diào)試和修改。而硬件電路又大體可分為單片機(jī)小系統(tǒng)電路、A/D轉(zhuǎn)換電路、聲光報(bào)警電路、LED顯示電路,按鍵電路,各部分電路的設(shè)計(jì)及原理將會(huì)在硬件電路設(shè)計(jì)部分詳細(xì)介紹。二、酒精測(cè)試儀總體方案設(shè)計(jì)2.1酒精濃度檢測(cè)儀設(shè)計(jì)要求分析設(shè)計(jì)的酒精濃度測(cè)試儀應(yīng)具有如下特點(diǎn):(1)數(shù)據(jù)采集系統(tǒng)以單片機(jī)為控制核心,外圍電路帶有LED顯示以及鍵盤響應(yīng)電路,無(wú)需要其他計(jì)算機(jī),用戶就可以與之進(jìn)行交互工作,完成數(shù)據(jù)的采集、存儲(chǔ)、計(jì)算、分析等過程。(2)系統(tǒng)具有低功耗、小型化、高性價(jià)比等特點(diǎn)。(3)從便攜式的角度出發(fā),系統(tǒng)成功使用了數(shù)碼管顯示器以及小鍵盤。由單片機(jī)系統(tǒng)控制鍵盤和LED顯示來(lái)實(shí)現(xiàn)人機(jī)交互操作,界面友好。(4)軟件設(shè)計(jì)簡(jiǎn)單易懂。2.2酒精濃度檢測(cè)儀設(shè)計(jì)方案設(shè)計(jì)時(shí),考慮酒精濃度是由傳感器把非電量轉(zhuǎn)換為電量,傳感器輸出的是0-5伏的電壓值且電壓值穩(wěn)定,外部干擾小等。因此,可以直接把傳感器輸出電壓值經(jīng)過A/D轉(zhuǎn)換器轉(zhuǎn)換得到數(shù)據(jù)送入單片機(jī)進(jìn)行處理。此外,還需接人LED顯示,4*4鍵盤,報(bào)警電路等。其總體框圖如圖2-1所示。氣敏傳感器A/D轉(zhuǎn)換電路單片機(jī)氣敏傳感器A/D轉(zhuǎn)換電路單片機(jī)聲光報(bào)警電路LED顯示鍵盤空氣流量傳感器被測(cè)環(huán)境圖2-1基本工作原理圖三、硬件設(shè)計(jì)3.1.1傳感器的選擇本系統(tǒng)直接測(cè)量的是呼氣中的酒精濃度,再轉(zhuǎn)換為血液中的酒精含量濃度,故采用氣敏傳感器。考慮到周圍空氣中的氣體成分可能影響傳感器測(cè)量的準(zhǔn)確性,所以傳感器只能對(duì)酒精氣體敏感,對(duì)其他氣體不敏感,故選用MQ3型氣敏傳感器。其有很高的靈敏度、良好的選擇性、長(zhǎng)期的使用壽命和可靠的穩(wěn)定性。MQ3型氣敏傳感器由微型Al2O3,陶瓷管和SnO2敏感層、測(cè)量電極和加熱器構(gòu)成的敏感元件固定在塑料或不銹鋼的腔體內(nèi),加熱器為氣敏元件的工作提供了必要的工作條件。傳感器的標(biāo)準(zhǔn)回路有兩部分組成。其一為加熱回路,其二為信號(hào)輸出回路,它可以準(zhǔn)確反映傳感器表面電阻值的變化。傳感器的表面電阻RS的變化,是通過與其串聯(lián)的負(fù)載電阻RL上的有效電壓信號(hào)VRL輸出面獲得的。負(fù)載電阻RL可調(diào)為0.5-200K。加熱電壓Uh為5v。上述這些參數(shù)使得傳感器輸出電壓為0-5V。MQ3型氣敏傳感器的結(jié)構(gòu)和外形、標(biāo)準(zhǔn)回路、傳感器阻值變化率與酒精濃度、外界溫度的關(guān)系圖如圖3-3所示。為了使測(cè)量的精度達(dá)到最高,誤差最小,需要找到合適的溫度,一般在測(cè)量前需將傳感器預(yù)熱5分鐘。圖3-1MQ3結(jié)構(gòu)和外形圖3-2MQ3結(jié)構(gòu)圖圖3-3傳感器阻值變化率與酒精濃度、外界溫度之間的關(guān)系本系統(tǒng)測(cè)量時(shí)還需要測(cè)量呼氣量的大小,我們采用空氣流量傳感器空氣流量傳感器的熱線電阻和溫度補(bǔ)償電阻分別連接在電橋電路上,當(dāng)空氣流經(jīng)發(fā)熱元件(熱線電阻)時(shí),熱線的溫度和電阻發(fā)生變化,空氣帶走的熱量與流過發(fā)熱元件的空氣質(zhì)量具有成正比的對(duì)應(yīng)關(guān)系,使得電橋失去平衡,控制電路將改變供給發(fā)熱云件的電流,使其溫度保持在設(shè)定溫度。當(dāng)電橋電流改變時(shí),取樣電阻兩端的電壓也同時(shí)改變,從而將空氣流量的變化轉(zhuǎn)換為電壓信號(hào)的變化。信號(hào)電壓輸入adc0809中,輸出接8個(gè)發(fā)光二極管,根據(jù)發(fā)光二極管亮的多少判斷呼氣量的大小。3.2A/D轉(zhuǎn)換電路在單片機(jī)應(yīng)用系統(tǒng)中,被測(cè)量對(duì)象的有關(guān)變化量,如溫度、壓力、流量、速度等非電物理量,須經(jīng)傳感器轉(zhuǎn)換成連續(xù)變化的模擬電信號(hào)(電壓或電流),這些模擬電信號(hào)必須轉(zhuǎn)換成數(shù)字量后才能在單片機(jī)中用軟件進(jìn)行處理。實(shí)現(xiàn)模擬量轉(zhuǎn)換成數(shù)字量的器件稱為A/D轉(zhuǎn)換器(ADC)。A/D轉(zhuǎn)換器大致分有三類:一是雙積分A/D轉(zhuǎn)換器,優(yōu)點(diǎn)是精度高,抗干擾性好,價(jià)格便宜,但速度慢;二是逐次逼近型A/D轉(zhuǎn)換器,精度、速度、價(jià)格適中;三是∑-△A/D轉(zhuǎn)換器。該設(shè)計(jì)中選用的是ADC0809屬第二類,是8位A/D轉(zhuǎn)換器。0809具有8路模擬信號(hào)輸入端口,地址線(23-25腳)可決定那一路模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換。22腳為地址鎖存控制,當(dāng)輸入為高電平時(shí),對(duì)地址信號(hào)進(jìn)行鎖存。6腳為測(cè)試控制,當(dāng)輸入一個(gè)2μs的高電平脈沖時(shí),就開始A/D轉(zhuǎn)換。7引腳為A/D轉(zhuǎn)換結(jié)束標(biāo)志,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),7腳輸出高電平。9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許端,當(dāng)OE腳為高電平時(shí),A/D轉(zhuǎn)換數(shù)據(jù)輸出。10腳為0809的時(shí)鐘輸入端。3.2.1ADC0809的引腳及功能逐次比較型A/D轉(zhuǎn)換器在精度、速度、和價(jià)格上都適中,是最常用的A/D轉(zhuǎn)換器件。芯片采用的是ADC0809,以下介紹ADC0809的引腳及功能。芯片如圖3-4所示。圖3-4ADC0809的引腳ADC0809是一種逐次比較式8路模擬輸入、8位數(shù)字量輸出的A/D轉(zhuǎn)換器。由圖可見,ADC0809共有28個(gè)引腳,采用雙列直插式封裝。主要引腳功能如下:⑴IN0-IN7是8路模擬信號(hào)輸入端。⑵D0-D7是8位數(shù)字量輸入端。⑶A、B、C與ALE控制8路模擬通道的切換,A、B、C分別與3根地址線或數(shù)據(jù)線相連,3位編碼對(duì)應(yīng)8個(gè)通道地址端口。⑷OE、START、CLK為控制信號(hào)端,OE為輸出允許端,START為啟動(dòng)信號(hào)輸入端,CLK為時(shí)鐘信號(hào)輸入端。⑸VR(+)和VR(-)為參考電壓輸入端。3.2.2ADC0809的結(jié)構(gòu)及轉(zhuǎn)換原理ADC0809的結(jié)構(gòu)框圖如圖3-6。ADC0809采用逐次比較的方法完成A/D轉(zhuǎn)換的,由單一的+5V電源供電。片內(nèi)有鎖存功能的8路選1的模擬開關(guān),由C、B、A引腳的功能來(lái)決定所選的通道。0809完成一次轉(zhuǎn)換需100μs左右,輸出具有TTL三態(tài)鎖存緩沖器,可直接連接到MCS-51的數(shù)據(jù)總線上。通過適當(dāng)?shù)耐饨与娐罚?809可對(duì)0-5V的模擬信號(hào)進(jìn)行轉(zhuǎn)換。STARTCLKSTARTCLKOEVR(+)VR(-)VCCGNDEOCD0...D7三態(tài)輸出鎖存器8位A/D轉(zhuǎn)換器地址鎖存與密碼CBAALE8路模擬量開關(guān)IN7….IN0圖3-6ADC0809的結(jié)構(gòu)框圖3.2.3ADC0809連線圖ADC0809與單片機(jī)的連線圖如圖3-7:圖3-7ADC0809的連線圖3.389C51單片機(jī)系統(tǒng)單片機(jī)是一種集成電路芯片,采用超大規(guī)模技術(shù)把具有數(shù)據(jù)處理能力(如算術(shù)運(yùn)算,邏輯運(yùn)算、數(shù)據(jù)傳送、中斷處理)的微處理器(CPU),隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),只讀程序存儲(chǔ)器(ROM),輸入輸出電路(I/O口),可能還包括定時(shí)計(jì)數(shù)器,串行通信口(SCI),顯示驅(qū)動(dòng)電路(LCD或LED驅(qū)動(dòng)電路),脈寬調(diào)制電路(PWM),模擬多路轉(zhuǎn)換器及A/D轉(zhuǎn)換器等電路集成到一塊單塊芯片上,構(gòu)成一個(gè)雖小然而完善的計(jì)算機(jī)系統(tǒng)。這些電路能在軟件的控制下準(zhǔn)確、迅速、高效地完成程序設(shè)計(jì)者事先規(guī)定的任務(wù)。3.3.1單片機(jī)片內(nèi)結(jié)構(gòu)51單片機(jī)的片內(nèi)結(jié)構(gòu)如圖3-8所示。它把那些作為控制應(yīng)用所必需的基本內(nèi)容都集成在一個(gè)尺寸有限的集成電路芯片上。按功能劃分,它有如下功能部件組成:⑴微處理器(CPU)。⑵數(shù)據(jù)存儲(chǔ)器(RAM)。⑶程序存儲(chǔ)器(ROM/EPROM)。⑷4個(gè)8位并行I/O口(P0口、P1口、P2口、P3口)。⑸一個(gè)串行口。⑹2個(gè)16位定時(shí)器、計(jì)數(shù)器。⑹2個(gè)16位定時(shí)器、計(jì)數(shù)器。⑺中斷系統(tǒng)。⑻特殊功能寄存器(SFR)。上述功能部件都是通過片內(nèi)單一總線連接而成,其基本結(jié)構(gòu)依舊是CPU加上外圍芯片的傳統(tǒng)結(jié)構(gòu)模式。但CPU對(duì)各種功能部件的控制是采用特殊功能寄存器的集中控制方式。從硬件角度來(lái)看,與MCS-51指令完全兼容的新一代AT89CXX系列機(jī),比在片外加EPROM才能相當(dāng)?shù)?031單片機(jī)抗干擾性能強(qiáng),與87C51單片機(jī)技能相當(dāng),但功耗小。程序修改直接用+5V或+12V電源擦除,更顯方便、而且其工作電壓放寬至2.7V-6V,因而受電壓波動(dòng)的影響更小,而且4K的程序存儲(chǔ)器完全能滿足單片機(jī)系統(tǒng)的軟件要求,故AT89C51單片機(jī)是構(gòu)造本檢測(cè)系統(tǒng)的更理想的選擇。3.3.289C51芯片介紹掌握MCS-51單片機(jī),應(yīng)首先了解MCS-51的引腳,熟悉并牢記各引腳的功能,MCS-51系列中各種型號(hào)芯片的引腳是互相兼容的。制作工藝為HMOS的MCS-51的單片機(jī)都采用40只引腳的雙列直插封裝方式,如圖3-9所示。圖3-9AT89C51芯片管腳圖40只引腳按其功能來(lái)分,可分為如下3類:⑴電源及時(shí)鐘引腳:Vcc、Vss、XTAL1、XTAL2。電源引腳接入單片機(jī)的工作電源。Vcc接+5V電源,Vss接地。時(shí)鐘引腳XTAL1、XTAL2外接晶體與片內(nèi)的反相放大器構(gòu)成了1個(gè)晶體振蕩器,它為單片機(jī)提供了時(shí)鐘控制信號(hào)。2個(gè)時(shí)鐘引腳也可外接獨(dú)立的晶體振蕩器。XTAL1接外部的一個(gè)引腳。該引腳內(nèi)部是一個(gè)反相放大器的輸入端。這個(gè)反相放大器構(gòu)成了片內(nèi)振蕩器。如果采用外接晶體振蕩器時(shí),此引腳接地。XTAL2接外部晶體的另一端,在該引腳內(nèi)部接至內(nèi)部反相放大器的輸出端。若采用外部時(shí)鐘振蕩器時(shí),該引腳接受時(shí)鐘振蕩器的信號(hào),即

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論