版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
貴州航天職業(yè)技術(shù)學(xué)院PAGEPAGE321畢業(yè)設(shè)計論文題目智能搶答器姓名郝強。.。..。?。.?。。?。。.。。.。。??。。?專業(yè)電子自動化技術(shù) 學(xué)號110433330指導(dǎo)老師孟卓摘要隨著科學(xué)技術(shù)的發(fā)展和普及,各種各樣的競賽越來越多,其中搶答器的作用也越來越重要。本文設(shè)計出以AT89S51單片機為核心的八路搶答器,采用了數(shù)字顯示器直接指示,自動鎖存顯示結(jié)果,并自動復(fù)位的設(shè)計思想,它能根據(jù)不同的搶答輸入信號,經(jīng)過單片機的控制處理并產(chǎn)生不同的與輸入信號相對應(yīng)的輸出信號,最后通過LED數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組的搶答時間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,充分利用了單片機系統(tǒng)結(jié)構(gòu)簡單、功能強大、可靠性好、實用性強的特點.本設(shè)計是以搶答為出發(fā)點??紤]到依需設(shè)定限時回答的功能,利用89S51單片機及外圍接口實現(xiàn)的搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間.用開關(guān)做鍵盤輸出,揚聲器發(fā)生提示。同時系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;滿時后系統(tǒng)計時自動復(fù)位及主控強制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法【關(guān)鍵詞】搶答器單片機LED數(shù)碼顯示管定時器/計數(shù)器揚聲器.貴州航天職業(yè)技術(shù)學(xué)院 目錄摘要……………………2緒論………………………5一、搶答器的概述………………61。1系統(tǒng)設(shè)計的功能…………61.1.2擴展功能…………………61.2搶答器需求分析…………61。3搶答器的硬件設(shè)計………………………71.4搶答器的工作過程………………………7二、單片機的功能簡介………………………82.189系列單片機的概述……………………72.2AT89S51的功能…………82。2.1AT89S51單片機的內(nèi)部結(jié)構(gòu)……………三、硬件電路的設(shè)計…………103.1總電路原理……………103.2時鐘頻率電路的設(shè)計…………………113。3復(fù)位電路的設(shè)計………………………123.3。1復(fù)位電路的可靠性設(shè)計………………123。3。2人工復(fù)位………………133.4顯示電路的設(shè)計…………143。5控制電路的實現(xiàn)…………163.6發(fā)聲………………………173.7系統(tǒng)復(fù)位…………………17四、軟件設(shè)計………………194。1軟件任務(wù)分析…………194.2顯示子程序的設(shè)計……………………204.3定時器T0、T1中斷服務(wù)程序的設(shè)計…………………204。4搶答器處理程序的設(shè)計………………214.5主程序及分析…………23五、設(shè)計總結(jié)…………………31參考文獻………………………32致謝……………33貴州航天職業(yè)技術(shù)學(xué)院系統(tǒng)設(shè)計的功能緒論數(shù)字技術(shù)是當(dāng)前發(fā)展最快的學(xué)科之一,數(shù)字邏輯器件已從60年代的小規(guī)模集成電路(SSI)發(fā)展到目前的中、大規(guī)模集成電路(MSI、LSI)及超大規(guī)模集成電(VLSI).相應(yīng)地,數(shù)字邏輯電路的設(shè)計方法在不斷地演變和發(fā)展,由原來的單一的硬件邏輯設(shè)計發(fā)展成三個分支,即硬件邏輯設(shè)計(中、小規(guī)模集成器件)、軟件邏輯設(shè)計(軟件組裝的LSI和VSI,如微處理器、單片機等)及兼有二者優(yōu)點的專用集成電路(ASIC)設(shè)計。目前數(shù)字電子技術(shù)已經(jīng)廣泛地應(yīng)用于計算機,自動控制,電子測量儀表,電視,雷達,通信等各個領(lǐng)域。例如在現(xiàn)代測量技術(shù)中,數(shù)字測量儀表不僅比模擬測量儀表精度高,功能高,而且容易實現(xiàn)測量的自動化和智能化。隨著集成技術(shù)的發(fā)展,尤其是中,大規(guī)模和超大規(guī)模集成電路的發(fā)展,數(shù)字電子技術(shù)的應(yīng)用范圍將會更廣泛地滲透到國民經(jīng)濟的各個部門,并將產(chǎn)生越來越深刻的影響。隨著現(xiàn)代社會的電子科技的迅速發(fā)展,要求我們要理論聯(lián)系實際,數(shù)字電子邏輯課程設(shè)計的進行使我們有了這個非常關(guān)鍵的機會。通過這種綜合性訓(xùn)練,我們要達到以下的目的和要求:1。結(jié)合課程中所學(xué)的理論知識,獨立設(shè)計方案。達到學(xué)有所用的目的.2。學(xué)會查閱相關(guān)手冊與資料,通過查閱手冊和文獻資料,進一步熟悉常用電子器件類型和特性,并掌握合理選用的原則,培養(yǎng)獨立分析與解決問題的能力,對于搶答器我們大家都知道那是用于選手做搶答題時用的,選手進行搶答,搶到題的選手來回答問題。搶答器不僅考驗選手的反應(yīng)速度同時也要求選手具備足夠的知識面和一定的勇氣。選手們都站在同一個起跑線上,體現(xiàn)了公平公正的原則。第一章?lián)尨鹌鞯母攀觯保?系統(tǒng)設(shè)計的功能1。1.1(1)同時供8名選手比賽,分別用8個按鈕S0~S7表示。(2)設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制.(3)搶答器具有鎖存與顯示功能.即選手按動按鈕,鎖存相應(yīng)的編號,揚聲器發(fā)出聲響提示,并在七段數(shù)碼管上顯示選手號碼。選手搶答實行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。1.1.2(1)搶答器具有定時搶答功能,且一次搶答的時間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動"開始"鍵后,定時器進行減計時。(2)參賽選手在設(shè)定的時間內(nèi)進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。(3)如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00。1.2搶答器的需求分析1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效.2、搶答限定時間和回答問題的時間可是在1~99s設(shè)定.3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示。4、搶答時間和回答問題時間倒記時顯示,時間完后系統(tǒng)自動復(fù)位。5、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。貴州航天職業(yè)技術(shù)學(xué)院搶答器的工作原理及流程單片機的功能簡介89系列單片機的概況MCS-51單片機是美國INTE公司于1980年推出的產(chǎn)品,典型產(chǎn)品有8031、8051和8751等通用產(chǎn)品,一直到現(xiàn)在,MCS—51內(nèi)核系列兼容的單片機仍是應(yīng)用的主流產(chǎn)品,各高校及專業(yè)學(xué)校的培訓(xùn)教材仍與MCS—51單片機作為代表進行理論基礎(chǔ)學(xué)習(xí)。我們常說的已經(jīng)停產(chǎn)的89C51指的是ATMEL公司的AT89C51單片機,同時是在原基礎(chǔ)上增強了許多特性,如時鐘,更優(yōu)秀的是由Flash(程序存儲器的內(nèi)容至少可以改寫1000次)存儲器取帶了原來的ROM(一次性寫入),AT89C51的性能相對于8051已經(jīng)算是非常優(yōu)越的了.89C51的缺陷在于不支持ISP(在線更新程序)功能,必須加上ISP功能等新功能才能更好延續(xù)MCS-51的傳奇。89S51就是在這樣的背景下取代89C51的,現(xiàn)在,89S51目前已經(jīng)成為了實際應(yīng)用市場上新的寵兒,作為市場占有率第一的Atmel目前公司已經(jīng)停產(chǎn)AT89C51,將用AT89S51代替。89S51在工藝上進行了改進,89S51采用0。35新工藝,成本降低,而且將功能提升,增加了競爭力。89SXX可以像下兼容89CXX等51系列芯片。市場上見到的89C51實際都是Atmel前期生產(chǎn)的巨量庫存而以。如果市場需要,Atmel當(dāng)然也可以再恢復(fù)生產(chǎn)AT89C51。AT89S51/LS51單片機是低功耗的、具有4KB在線課編程Flash存儲器的單片機。它與通用80C51系列單片機的指令系統(tǒng)和引腳兼容。片內(nèi)的Flash可允許在線重新編程,也可使用非易失性存儲器編程。他將通用CPU和在線可編程Flash集成在一個芯片上,形成了功能強大、使用靈活和具有較高性能性價比的微控制器。2。2AT89S51單片機的內(nèi)部結(jié)構(gòu)AT89S51單片機內(nèi)部由CPU、4KB的FPEROM,128B的RAM,兩個16位的定時/計數(shù)器T0和T1,4個8位的I/O端P0、P1、P2、P3等組成。單片微機內(nèi)部最核心的部分是CPU。CPU主要功能是產(chǎn)生各種控制信號,控制存儲器、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運算、邏輯運算以及位操作處理等,CPU按其功能可分為運算器和控制器兩部分。控制器由程序計數(shù)器PC、指令儲存器、指令譯碼器、實時控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進行譯碼,通過實時控制電路,在規(guī)定的時刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運算器由算術(shù)邏輯器部件ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW,BCD碼運算調(diào)整電路等組成。外部定外部定時元件復(fù)位中斷電源系統(tǒng)時鐘ROMCPU定時/計數(shù)器串行I/O口并行I/O口RAM單片機的內(nèi)部結(jié)構(gòu)圖為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個通用寄存器B和一些專用寄存器,還增加了位處理邏輯電路的功能[3]。其內(nèi)部結(jié)構(gòu)如圖2-3所示。硬件電路的設(shè)計3.1設(shè)計原理本系統(tǒng)采用AT89S52單片機作為核心,控制系統(tǒng)的四個模塊分別為:單片機最小系統(tǒng)、顯示模塊、顯示驅(qū)動模塊、搶答開關(guān)模塊。搶答器原理框圖如圖3.1所示。圖3。1搶答器原理框圖總體設(shè)計之后,然后進行單元電路設(shè)計。單元電路設(shè)計分為電源電路設(shè)計、時鐘和復(fù)位電路、鍵盤電路、顯示報警電路等??傠娐吩頌槭褂布娐吩O(shè)計盡可能合理,應(yīng)注意以下幾方面:(1)盡可能采用功能強的芯片,以簡化電路,功能強的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價格不斷下降,并不一定比若干普通芯片價格的總和高.(2)留有設(shè)計余地。在設(shè)計硬件電路時,要考慮到將來修改擴展的方便。因為很少有一錘定音的電路設(shè)計,如果現(xiàn)在不留余地,將來可能要為一點小小的修改或擴展而被迫進行全面返工。(3)程序空間,選用片內(nèi)程序空間足夠大的單片機,本設(shè)計采用AT89C51單片機.(4)RAM空間,AT89S51內(nèi)部RAM不多,當(dāng)要增強軟件數(shù)據(jù)處理功能時,往往覺得不足。如果系統(tǒng)配置了外部RAM,則建議多留一些空間.如選用8155作I/O接口,就可以增強256字節(jié)RAM.如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的RAM,如6264,62256等。隨著軟件設(shè)計水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級換代.只要在硬件電路設(shè)計初期考慮到這一點,就應(yīng)該為系統(tǒng)將來升級留足夠的RAM空間,哪怕多設(shè)計一個RAM的插座,暫不插芯片也好.(5)I/O端口:在樣機研制出來后進行現(xiàn)場試用時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計就預(yù)留出一些I/O端口,雖然當(dāng)時空著沒用,那么用的時候就派上用場了。P2。4為開始搶答[9],P2。5為加分,P2.6為減分,P1.0-P1.7為六八搶答輸入,數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P2.7口。3.2時鐘頻率電路的設(shè)計時鐘電路是計算機的心臟,它控制著計算機的工作節(jié)奏.MCS—51單片機允許的時鐘頻率是因型號而異的。晶振的選擇:6MHz的晶振,其機器周期是2us。12MHz的晶振,其機器周期是1us,也就是說在執(zhí)行同一條指令時用6MHz的晶振所用的時間是12MHz晶振的兩倍。為了提高整個系統(tǒng)的性能我選擇了12MHz的晶振。振蕩方式的選擇:內(nèi)部振蕩方式,MCS-51內(nèi)部都有一個反相放大器,XTAL1、XTAL2分別為反相放大器輸入和輸出端,外接定時反饋元件以后就組成振蕩器,產(chǎn)生時鐘送至單片機內(nèi)部的各個部件。這樣就構(gòu)成了內(nèi)部振蕩方式外部振蕩方式是把已有的時鐘信號引入單片機內(nèi)。這種方式適合用來使單片機的時鐘與外部信號一致。在我的這個設(shè)計中沒有也無需與外部時鐘信號一致,所以我選擇了內(nèi)部振蕩方式,由于單片機內(nèi)部有一個高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時鐘脈沖.晶振我選擇了12MHz,相對于6MHz的晶振,整個系統(tǒng)的運行速度更快了。電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值我選擇了30pF。內(nèi)部振蕩方式所得的時鐘信號穩(wěn)定性高。圖3-2時鐘電路的設(shè)計單片機必須在時鐘的驅(qū)動下才能工作.在單片機內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的工作速度。一般選用石英晶體振蕩器.此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調(diào).C1,C2的典型值為30PF。單片機在工作時,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),常用fosc表示.如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12μs。復(fù)位電路的設(shè)計3.3。1復(fù)位電路的可靠性設(shè)計計算機在啟動運行是都需要復(fù)位,使中央處理器CPU和系統(tǒng)中的其它部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。MCS-51的復(fù)位輸入引腳RST為MCS—51提供了初始化的手段,可以使程序從指定處開始執(zhí)行,在MCS—51的時鐘電路工作后,只要RST引腳上出現(xiàn)超過兩個機器周期以上的高電平時,即可產(chǎn)生復(fù)位的操作。只要RST保持高電平,則MCS—51循環(huán)復(fù)位.只有當(dāng)RST由高電平變低電平以后,MCS—51才從0000H地址開始執(zhí)行程序。本系統(tǒng)采用按鍵復(fù)位方式的復(fù)位電路。MCS-51單片機有一個復(fù)位引腳RST,它是施密特觸發(fā)輸入,當(dāng)振蕩器起振后,該引腳上出現(xiàn)2個機器周期(即24個時鐘周期)以上的高電平。使器件復(fù)位,只要RST保持高電平,MCS-51保持復(fù)位狀態(tài)。此時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ù)位端接一個電容至VccHE一個電阻至Vss,就能實現(xiàn)上電自動復(fù)位,對于CMOS單片機只要接一個電容至Vcc即可。如圖,在加電瞬間,電容通過電阻充電,就在RST端出現(xiàn)一定時間的高電平,只要高電平時間足夠長,就可以使MCS—51有效地復(fù)位.RST端在加電時應(yīng)保持的高電平時間包括Vcc的上升時間和振蕩器起振時間,Vcc上升時間若為10ms,振蕩器起振時間和頻率有關(guān).10MHz時間約為1ms,1MHz時約為10ms,所以一般為了可靠地復(fù)位,RST在上電時應(yīng)保持20ms以上的高電平.圖2.5中,RC時間常數(shù)越大,上電時RST端保持高電平的時間越長。當(dāng)振蕩頻率為12MHZ時,典型值為C=10uF,R=8.2kΩ.圖3-3上電復(fù)位電路3.3.2人工復(fù)位除上電自動復(fù)位以外,常常需要人工復(fù)位,將一個按鈕開關(guān)并聯(lián)于上電自動復(fù)位電路,按一下開關(guān)就RST端出現(xiàn)一段時間的高電平,即使器件復(fù)位。如圖所示圖3-4上電和開關(guān)復(fù)位而我們在這次的畢業(yè)設(shè)計中運用的人工復(fù)位電路.其中電平復(fù)位是通過RST端經(jīng)電阻和電源Vcc接通而實現(xiàn)的,按鍵手動電平復(fù)位電路如圖。當(dāng)時鐘頻率選用12MHz時,C選?。?uF,R選擇1000歐.3.4顯示電路的設(shè)計顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來解決.3。4。1顯示模塊在系統(tǒng)硬件中的安排操作者主要設(shè)計從顯示設(shè)備上獲取微機系統(tǒng)的信息的,因此,操作者每操作一下,顯示設(shè)備商都應(yīng)該有一定的反應(yīng)。這說明,顯示模塊與操作有關(guān),即監(jiān)控程序是需要調(diào)用顯示模塊。不同的操作需要顯示不同的內(nèi)容,這又說明各執(zhí)行模塊對顯示模塊的驅(qū)動方式是不同的。另一方面,在操作者沒有進行操作時,顯示內(nèi)容也是變化的,如顯示現(xiàn)場各物理量的變化情況.這時顯示模塊不是由操作者通過命令鍵來驅(qū)動,而是由各類自動執(zhí)行的功能模塊來驅(qū)動。自動執(zhí)行的各類模塊在安排在各種中斷子程序中,這就是說,各種中斷子程序也要調(diào)用顯示模塊。如果監(jiān)控安排在中斷子程序中,兩者的要求就統(tǒng)一了,問題比較好解決,如果監(jiān)控程序安排在主程序中,在監(jiān)控程序調(diào)用顯示模塊的過程中發(fā)生了中斷,中斷子程序也調(diào)用顯示模塊,這時就容易出問題.一種比較妥善的辦法是只讓一處調(diào)用顯示模塊,其他各處均不得直接調(diào)用顯示模塊,但有權(quán)申請顯示。這就要設(shè)置一個顯示申請標(biāo)志,當(dāng)某模塊需要顯示時,將申請標(biāo)志置位,同時設(shè)定有關(guān)顯示內(nèi)容(或指針).由于一處調(diào)用顯示模塊,故不會發(fā)生沖突.為了使顯示模塊能及時反應(yīng)系統(tǒng)需要,應(yīng)將顯示模塊安排在一個重復(fù)執(zhí)行的循環(huán)(如監(jiān)控循環(huán)或時鐘中斷子程序)中。當(dāng)監(jiān)控程序(鍵盤解釋程序)安排在時鐘中斷子程序中時,處理比較方便,只要在監(jiān)控程序的匯合處調(diào)用顯示模塊就可以了.這里將顯示功能集中到一起,作為一個功能模塊,就要求它的功能全面,能根據(jù)系統(tǒng)軟件提供的信息自動完成顯示內(nèi)容的查找,變換和輸出驅(qū)動。這樣設(shè)計使得各功能模塊都不必考慮顯示問題,只要給出一個簡單的信息(如顯示格式編碼)甚至不用再提供額外信息,直接利用當(dāng)前狀態(tài)變量和軟件標(biāo)志就可以完成所需的顯示要求。如果編寫這樣一個集中顯示模塊有困難,也可以將顯示模塊編小一些,只完成顯示緩沖區(qū)的內(nèi)容輸出到顯示器件上的工作.這時各功能模塊在提出顯示申請時,還需要將顯示內(nèi)容按需要的格式送入顯示緩沖區(qū)中。這樣分而治之比較容易編程,但要小心出現(xiàn)顯示混亂。例如后臺程序需要調(diào)用顯示,將有關(guān)信息送入到現(xiàn)實緩沖區(qū)進行顯示;中斷返回后,后臺程序繼續(xù)送完后半部分顯示內(nèi)容,但前半部分內(nèi)容已經(jīng)變了,這樣就出現(xiàn)了顯示錯誤。解決的辦法是,在申請顯示前,先檢查是否已經(jīng)有顯示申請,如果有,就不再申請,等待下次機會;如果沒有,則先申請標(biāo)志位,再將顯示內(nèi)容送入顯示緩沖區(qū)。這時就不必?fù)?dān)心其他前臺模塊來打擾了,就可以得到一次完整的顯示機會。在這里我們使用的是七段數(shù)碼管顯示,通常在顯示[6]上我們采用的方法一般包括兩種:一種是靜態(tài)顯示,一種是動態(tài)顯示.其中靜態(tài)顯示的特點是顯示穩(wěn)定不閃爍,程序編寫簡單,但占用端口資源多;動態(tài)顯示的特點是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但是相對靜態(tài)顯示而言占用端口資源少。在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法。并通過查表法,將其在數(shù)碼管上顯示出來,其中P0口為字型碼輸入端,P2口低3位為字選段輸入端。在這里我們通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字,數(shù)碼管顯示原理如下:MOVA,R5MOVCA,@A+DPTR;查字型MOVP2,#01H;送位選碼MOVP0,A;送字型碼ACALLDELAY;調(diào)延時,去閃爍在七段數(shù)碼管顯示中可分為共陽極和共陰極兩種類型極。以共陰為例,要想a段亮,向a段送1就是,返之送0,共陽剛好相反。掃描電路的實現(xiàn)鍵盤是人與微機系統(tǒng)打交道的主要設(shè)備.關(guān)于鍵盤硬件電路的設(shè)計方法也可以在文獻和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程序。站在系統(tǒng)監(jiān)控軟件設(shè)計的立場上來看,僅僅完成鍵盤掃描,讀取當(dāng)前時刻的鍵盤狀態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們在操作鍵盤就容易引起誤操作和操作失控現(xiàn)象。在單片機應(yīng)用中鍵盤用得最多的形式是獨立鍵盤及矩陣鍵盤。它們各有自己的特點,其中獨立鍵盤硬件電路簡單,而且在程序設(shè)計上也不復(fù)雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時重復(fù)掃描法,延時法的原理為:因為“毛刺"脈沖一般持續(xù)時間短,約為幾ms,而我們按鍵的時間一般遠(yuǎn)遠(yuǎn)大于這個時間,所以當(dāng)單片機檢測到有按鍵動靜后再延時一段時間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。3.5。1按鈕輸入的硬件處理按鈕的觸點在閉合和斷開時均會產(chǎn)生抖動,這是觸點的邏輯電平是不穩(wěn)定的,如不妥善處理,將會引起按鍵命令的錯誤執(zhí)行或重復(fù)執(zhí)行?,F(xiàn)在一般均用軟件延時的方法來避開抖動階段,這一延時過程一般大于5ms,例如取10-20ms.如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺程序)或鍵盤中斷(外部中斷)子程序中,則該延時子程序便可直接插入讀鍵過程中。如果讀鍵過程安排在定時中斷子程序中,就可省去專門的延時子程序,利用兩次定時中斷的時間間隔來完成抖動處理。發(fā)聲我們知道,聲音的頻譜范圍約在幾十到幾千赫茲[7],若能利用程序來控制單片機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低"電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音.3.7系統(tǒng)復(fù)位使CPU進入初始狀態(tài),從0000H地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。從實現(xiàn)系統(tǒng)復(fù)位的方法來看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位.硬件復(fù)位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時間的高電位才能實現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位.硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個事實卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從0000H地址開始執(zhí)行.對各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實際需要去主程序初始化過程中完成。而對中斷激活標(biāo)志的清除工作常被遺忘,因為它沒有明確的位地址可供編程。有的編程人員用020000(LJMP0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000H地址就完成了軟件復(fù)位,就是這類錯誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進行的工作,這時程序出錯完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級中斷響應(yīng)。由于軟件看門是高級中斷,它將阻止說要中斷響應(yīng),由此可見清除中斷激活標(biāo)志的重要性。在所有的指令中,只有RETI指令能夠清除中斷激活標(biāo)志。前文各處提案到的出錯處理程序ERR主要完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。有復(fù)位時系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動”和“熱啟動"?!袄鋯印睍r,系統(tǒng)的狀態(tài)全部無效,進行徹底的初始化操作;而“熱啟動”時,對系統(tǒng)的當(dāng)前狀態(tài)進行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運行時,必須是“冷啟動”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動”初次上電投入運行時,必須是“冷啟動”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動”.為了使系統(tǒng)能正確決定采用何種啟動方式,常用上電標(biāo)志來區(qū)分,如圖3-6所示:復(fù)位復(fù)位關(guān)中斷,設(shè)定堆棧上電標(biāo)志冷啟自檢全面初始化熱啟動恢復(fù)被破壞的信息部分初始化建立上電標(biāo)志開始運轉(zhuǎn)圖3-6系統(tǒng)復(fù)位策略圖第四章軟件設(shè)計4.1軟件任務(wù)分析軟件任務(wù)分析和硬件電路設(shè)計結(jié)合進行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計基本定型后,也就基本上決定下來了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計做一個總體規(guī)劃.從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實質(zhì)性的功能,如測量,計算,顯示,打印[8],輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計方法各有特色,執(zhí)行軟件的設(shè)計偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時,應(yīng)將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義(輸入輸出定義).在各執(zhí)行模塊進行定義時,將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了.首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個廠長就比較難了。軟件任務(wù)分析的另一個內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個系統(tǒng)軟件可分為后臺程序(背景程序)和前臺程序。后臺程序指主程序及其調(diào)用的子程序,這類程序?qū)崟r性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實時性要求較高的內(nèi)容,如定時系統(tǒng)和外部中斷(如掉電中斷)。也可以將全部程序均安排在前臺,后臺程序為“使系統(tǒng)進入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾.顯示子程序的設(shè)計顯示子程序,及部分注解如下: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第一個為零,其他與上相同,因為十位如果為零顯示熄滅定時器T0、T1中斷服務(wù)程序的設(shè)計TO溢出中斷(響鈴程序)T0INT:
MOVTH0,#0ECHMOVTL0,#0FFHJNBRING,OUT;CPLP3。6;RING標(biāo)志位為1時候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音OUT:
RETI
T1溢出中斷(計時程序):T1INT:
MOVTH1,#3CHMOVTL1,#0B0HINCR0RETIEND搶答器處理程序的設(shè)計搶答器處理程序:TRUE1:ACALLBARK;按鍵發(fā)聲MOVA,R2MOVR6,A;搶答時間R2送R6MOVR3,#01HCLROK;因為答題的計時不再查詢搶答,所以就鎖了搶答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程序及分析單片機控制8路搶答器程序OKEQU20H;搶答開始標(biāo)志位RINGEQU22H;響鈴標(biāo)志位ORG0000HAJMPMAINORG0003HAJMPINT0SUBORG000BHAJMPT0INTORG0013HAJMPINT1SUBORG001BHAJMPT1INTORG0040HMAIN:MOVR1,#30;初設(shè)搶答時間為30sMOVR2,#60;初設(shè)答題時間為60sMOVTMOD,#11H;設(shè)置未定時器/模式1MOVTH0,#0F0HMOVTL0,#0FFH;越高發(fā)聲頻率越高,越尖MOVTH1,#3CHMOVTL1,#0B0H;50ms為一次溢出中斷SETBEASETBET0SETBET1SETBEX0SETBEX1;允許四個中斷,T0/T1/INT0/INT1CLROKCLRRINGSETBTR1SETBTR0;一開始就運行定時器,以開始顯示FFF。如果想重新計數(shù),重置TH1/TL1就可以了查詢程序START:MOVR5,#0BHMOVR4,#0BHMOVR3,#0BHACALLDISPLAY;未開始搶答時候顯示FFFJBP3。0,NEXTACALLDELAYJBP3.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢ACALLBARK;按鍵發(fā)聲MOVA,R1MOVR6,A;送R1—>R6,因為R1中保存了搶答時間SETBOK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答MOVR3,#0AH;搶答只顯示計時,滅號數(shù)AJMPCOUNT;進入倒計時程序,”查詢有效搶答的程序”在COUNT里面NEXT:JNBP1.0,FALSE1JNBP1.1,FALSE2JNBP1。2,FALSE3JNBP1。3,FALSE4JNBP1.4,FALSE5JNBP1。5,F(xiàn)ALSE6JNBP1.6,TZ1JNBP1。7,TZ2AJMPSTARTTZ1:JMPFALSE7TZ2:JMPFALSE8非法搶答處理程序FALSE1:ACALLBARK;按鍵發(fā)聲MOVR3,#01HAJMPERRORFALSE2:ACALLBARKMOVR3,#02HAJMPERRORFALSE3:ACALLBARKMOVR3,#03HAJMPERRORFALSE4:ACALLBARKMOVR3,#04HAJMPERRORFALSE5:ACALLBARKMOVR3,#05HAJMPERRORFALSE6:ACALLBARKMOVR3,#06HAJMPERRORFALSE7:ACALLBARKMOVR3,#07HAJMPERRORFALSE8:ACALLBARKMOVR3,#08HAJMPERRORINT0(搶答時間R1調(diào)整程序)INT0SUB:MOVA,R1MOVB,#0AHDIVA,BMOVR5,AMOVR4,BMOVR3,#0AHACALLDISPLAY;先在兩個時間LED上顯示R1JNBP3.4,INC0;P3.4為+1s鍵,如按下跳到INCOJNBP3.5,DEC0;P3。5為—1s鍵,如按下跳到DECOJNBP3。1,BACK0;P3。1為確定鍵,如按下跳到BACKOAJMPINT0SUBINC0:MOVA,R1CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起.MOVR1,#00HACALLDELAY1AJMPINT0SUBADD0:INCR1ACALLDELAY1AJMPINT0SUBDEC0:MOVA,R1JZSETR1;如果R1為0,R1就置99,DECR1ACALLDELAY1AJMPINT0SUBSETR1:MOVR1,#63HACALLDELAY1AJMPINT0SUBBACK0:RETI;=====INT1(回答時間R2調(diào)整程序)=====INT1SUB:MOVA,R2MOVB,#0AHDIVABMOVR5,AMOVR4,BMOVR3,#0AHACALLDISPLAYJNBP3.4,INC1JNBP3。5,DEC1JNBP3。1,BACK1AJMPINT1SUBINC1:MOVA,R2CJNEA,#63H,ADD1MOVR2,#00HACALLDELAY1AJMPINT1SUBADD1:INCR2ACALLDELAY1AJMPINT1SUBDEC1:MOVA,R2JZSETR2DECR2ACALLDELAY1AJMPINT1SUBSETR2:MOVR2,#63HACALLDELAY1AJMPINT1SUBBACK1:RETI;=====倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=====COUNT:MOVR0,#00H;重置定時器中斷次數(shù)MOVTH1,#3CHMOVTL1,#0B0H;重置定時器RECOUNT:MOVA,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6MOVB,#0AHDIVAB;除十分出個位/十位MOV30H,A;十位存于(30H)MOV31H,B;個位存于(31H)MOVR5,30H;取十位MOVR4,31H;取個位MOVA,R6SUBBA,#07HJNCLARGER;大于5s跳到LARGER,小于等于5s會提醒MOVA,R0CJNEA,#0AH,FULL;1s中0。5s向下運行CLRRINGAJMPCHECKFULL:CJNEA,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并清R0,重新計SETBRINGMOVA,R6JZQUIT;計時完畢MOVR0,#00HDECR6;一秒標(biāo)志減1AJMPCHECKLARGER:MOVA,R0CJNEA,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示"DECR6;計時一秒R6自動減1MOVR0,#00HCHECK:JNBP3。1,QUIT;如按下停止鍵退出ACALLDISPLAYJBOK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)AJMPRECOUNTACCOUT:JNBP1.0,TRUE1JNBP1.1,TRUE2JNBP1.2,TRUE3JNBP1。3,TRUE4JNBP1.4,TRUE5JNBP1.5,TRUE6JNBP1。6,TZ3JNBP1。7,TZ4AJMPRECOUNTTZ3:JMPTRUE7TZ4:JMPTRUE8QUIT:CLROK;如果按下了"停止鍵"執(zhí)行的程序CLRRINGAJMPSTART;=====正常搶答處理程序=====TRUE1:ACALLBARK;按鍵發(fā)聲MOVA,R2MOVR6,A;搶答時間R2送R6MOVR3,#01HCLROK;因為答題的計時不再查詢搶答,所以就鎖了搶答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;=====犯規(guī)搶答程序=====ERROR:MOVR0,#00HMOVTH1,#3CHMOVTL1,#0B0HMOV34H,R3;犯規(guī)號數(shù)暫存與(34H)HERE:MOVA,R0CJNEA,#0AH,F(xiàn)LASH;0。5s向下運行->滅并停響CLRRINGMOVR3,#0AHMOVR4,#0AHMOVR5,#0AH;三燈全滅AJMPCHECK1FLASH:CJNEA,#14H,CHECK1;下面是1s的情況,響并顯示號數(shù)并清R0,重新計SETBRINGMOVR0,#00HMOVR3,34H;取回號數(shù)MOVR5,#0BHMOVR4,#0BH;顯示FF和號數(shù)AJMPCHECK1CHECK1:JNBP3。1,QUIT1ACALLDISPLAYAJMPHEREQUIT1:CLRRINGCLROKAJMPSTART;=====顯示程序=====DISPLAY:MOVDPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,MOVA,R3MOVCA,@A+DPTRMOVP2,#0feHMOVP0,AACALLDELAYMOVDPTR,#DAT2MOVA,R5MOVCA,@A+DPTRMOVP2,#0fdHMOVP0,AACALLDELAY
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024簡單房屋買賣合同書范本
- 二零二五年度城市新能源項目電費保證金合同3篇
- 2025年上海市建筑安全員B證考試題庫附答案
- 二零二五年度制造業(yè)股權(quán)激勵及研發(fā)投入合同3篇
- 2025版智能系統(tǒng)性能測試與評估服務(wù)合同3篇
- 2024年餐飲管理有限公司加盟合同
- 2025年浙江建筑安全員考試題庫
- 2025廣東建筑安全員《A證》考試題庫及答案
- 二零二五年勞動合同:某大型企業(yè)與新入職員工之間的勞動合同規(guī)定3篇
- 2025年度燒烤飯店外賣配送員招聘合同
- 2024-2030年串番茄行業(yè)市場發(fā)展分析及前景趨勢與投資研究報告
- 城市燃?xì)夤芫W(wǎng)改造合同
- 2024-2025學(xué)年廣東省東莞市高三思想政治上冊期末試卷及答案
- 《水電站建筑物》課件
- 9-XX人民醫(yī)院樣本外送檢測管理制度(試行)
- 場地硬化合同范文
- 智力殘疾送教上門教案
- 2024北京市公安局平谷分局勤務(wù)輔警人員招聘筆試參考題庫含答案解析
- 單位信息化建設(shè)IT建設(shè)項目后評估報告(模板)
- 計算機網(wǎng)絡(luò)實驗教程資料
- 機電傳動單向數(shù)控平臺-礦大-機械電子-有圖
評論
0/150
提交評論