紅外遙控電風(fēng)扇的設(shè)計(jì)畢業(yè)論文初稿_第1頁(yè)
紅外遙控電風(fēng)扇的設(shè)計(jì)畢業(yè)論文初稿_第2頁(yè)
紅外遙控電風(fēng)扇的設(shè)計(jì)畢業(yè)論文初稿_第3頁(yè)
紅外遙控電風(fēng)扇的設(shè)計(jì)畢業(yè)論文初稿_第4頁(yè)
紅外遙控電風(fēng)扇的設(shè)計(jì)畢業(yè)論文初稿_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

摘要摘要:本論文簡(jiǎn)單地介紹了紅外線遙控發(fā)射和接收系統(tǒng)原理,在文中給出了MCS89C51作為遙控接收系統(tǒng)和作為發(fā)射系統(tǒng)的重要位置,以及完整的51匯編程序代碼和MCS89C51的各種功能簡(jiǎn)介,尤其是它在作為紅外線遙控系統(tǒng)中幾個(gè)重要的方面如中斷、定時(shí)器和其與鍵盤(pán)的連接方面作了更詳盡的介紹。本文中包括紅外線發(fā)射和紅外線接收的原理圖,并給出多種方案。還對(duì)紅外線遙控的發(fā)送程序、紅外線接收程序、定時(shí)中斷程序、發(fā)送周期程序、發(fā)送數(shù)據(jù)程序和發(fā)送“0”和“1”等程序進(jìn)行了編制。另外對(duì)各種程序的流程圖進(jìn)行了繪制,從而較全面地完成此設(shè)計(jì)的要點(diǎn),參考流程方框圖的構(gòu)思過(guò)程,就可以編寫(xiě)應(yīng)用軟件,便是本論文的特點(diǎn)。利用MCS89C51多次發(fā)送及反碼校驗(yàn)功能,防止了其它遙控碼和未知代碼的干擾,從而提高了產(chǎn)品的可靠性。又由于紅外線遙控裝置具有體積小,功耗低、功能強(qiáng)和成本低等特點(diǎn),是現(xiàn)代日常生活中一種重要的遙控設(shè)備,因此也是本次作為設(shè)計(jì)課題的重要理由之一。關(guān)鍵詞:MSC89C51、紅外線遙控、鍵盤(pán)接口。Summarysummary:Andacceptionsystemprinciplethatthisthesishasrecommendedinfraredremote-controlcommandtolaunchbriefly,provideMCS89C51astheacceptionsystemofremotecontrolinthearticleandastheimportantpositionthatlaunchthesystem,andbriefintroductionof51intactassemblercodesandvariousfunctionsofMCS89C51,especiallyuntilseveralimportantrespectsuchascutoff,timerandtheirmakemoreexhaustiveintroductionwithconnectionofkeyboardasinfraredremote-controlcommandsystemit.Includetheprinciplepicturethattheinfraredraywaslaunchedandtheinfraredrayreceivedinthistext,providemanykindsofschemes.Procedureofsendingstilltoinfraredremote-controlcommand,infraredrayreceiveprocedure,cutoffprocedure,sendcycleprocedure,senddataprocedureandsend"0"and"1",ceduregoon,makeregularly.Inadditionhasdrawnvariousflowdiagramsofprocedure,thusfinishthismainpointdesignedinanall-roundway,consulttheplotcourseoftheprocedureblock-diagram,canwritetheapplicationsoftware,itisacharacteristicofathesis.UtilizeMCS89C51sendandyardsofcheck-upfunctioninsteadmanytimes,preventotherremotecontrolyardandunknowninterferenceofcodefrom,thusimprovedthedependabilityoftheproducts.Becauseagainbecausetheinfraredremote-controlcommanddeviceissmall,lowpowerdissipation,functionarestrongwiththelowgradecharacteristicofthecost,itisakindofimportantremotecontrolapparatusinmoderndailylife,soregardedasoneoftheimportantreasonsfordesigningthesubjectthistimetoo.Keyword:MSC89C51,infraredremote-controlcommand,keyboardinterface目錄TOC\o"1-3"\h\u2340摘要 317580Summary 424250目錄 623758緒論 710063第一章紅外線遙控簡(jiǎn)介 10156831.1紅外線的概念 1040791.2紅外線遙控的特點(diǎn) 10152391.3紅外線遙控系統(tǒng) 10272261.4遙控發(fā)射器及其編碼 11132481.5電路方案: 12219841.6總電路原理圖 15134961.6.1接收電路的電源部分 16184211.7接收電路各功能部分 16165441.7.1OFF功能 16149521.7.2定時(shí)功能 17288991.7.3ON/風(fēng)類(lèi)功能 17134211.7.4搖頭功能 17321431.7.5風(fēng)速控制部分 1819670第二章MCS—51的簡(jiǎn)介 19279442.1Mcs8051單片機(jī)的中斷系統(tǒng) 22305102.2MCS8051的鍵盤(pán)接口與編程 2761062.3MCS8951的定時(shí)/計(jì)數(shù)器的方式控制字 36149952.3.1計(jì)數(shù)器與定時(shí)器 36167352.4定時(shí)/計(jì)數(shù)器的四種工作方式 39103742.4.1工作方式 39264032.5定時(shí)器/計(jì)數(shù)器的定時(shí)/計(jì)數(shù)范圍 4123301第三章遙控的鍵盤(pán)控制 433171結(jié)論與展望 4715531參考文獻(xiàn) 4923640致謝 50緒論紅外線遙控是目前應(yīng)用最廣泛的一種通信和遙控手段。由于紅外線遙控器具有體積小、功耗低、功能強(qiáng)、成本低等特點(diǎn)。因此,彩電、錄像機(jī)、音響設(shè)備、空調(diào)、玩具、門(mén)鈴以及遙控汽車(chē)路牌等其它小型裝置上也紛紛采用紅外線遙控。紅外線技術(shù)和其他通信技術(shù)如藍(lán)牙(bluetooth)共享無(wú)線接入?yún)f(xié)議(swap)/homerf等系統(tǒng)一樣在發(fā)展的過(guò)程中有一個(gè)相當(dāng)長(zhǎng)的歷史時(shí)期。1832年莫爾斯發(fā)明了電報(bào),它傳送的信息是由眾所周知的點(diǎn)劃碼組成的,即人類(lèi)最早的通信是采用數(shù)字方式進(jìn)行的。以后貝爾又發(fā)明了電話,并由此造就一個(gè)電信產(chǎn)業(yè)。一個(gè)多世紀(jì)以來(lái),以電話服務(wù)為主的電信業(yè)走了一條成功之路,取得了極大的發(fā)展;無(wú)線通信是指采用電磁波或者各種能載波的信號(hào)進(jìn)行信息傳遞的通信方式。早在1897年,馬可尼使用800khz中波信號(hào)進(jìn)行了從英國(guó)至北美紐芬蘭的世界上第一次橫跨大西洋的線無(wú)電報(bào)通信試驗(yàn),開(kāi)創(chuàng)了人類(lèi)無(wú)線通信的新紀(jì)元。在無(wú)線通信初期,受技術(shù)條件的限制,人們大量使用長(zhǎng)波及中波進(jìn)行通信。20世紀(jì)20年代初人們發(fā)現(xiàn)的短波通信,直到20世紀(jì)60年代衛(wèi)星通信興起前,它一直是遠(yuǎn)程國(guó)際通信的重要手段,并且目前對(duì)應(yīng)急通信和軍用通信依然有一定實(shí)用價(jià)值。在進(jìn)距離數(shù)據(jù)傳輸或者遙控方面多使用紅外線藍(lán)牙等技術(shù)。20世紀(jì)40年代到50年代產(chǎn)生了傳輸頻帶較寬、性能較穩(wěn)定的微波通信,成為長(zhǎng)距離大容量地面干線無(wú)線傳輸?shù)闹匾侄?。模擬調(diào)頻傳輸容量高達(dá)2700路,亦可同時(shí)傳輸高質(zhì)量彩色電視信號(hào);爾號(hào)逐步進(jìn)入中容量至大容量數(shù)字微波傳輸。80年代中期以來(lái),隨著頻率選擇性色散衰落對(duì)數(shù)字微波傳輸中斷影響的發(fā)現(xiàn)及一系列自適應(yīng)衰落對(duì)抗技術(shù)與高狀態(tài)調(diào)制與檢測(cè)技術(shù)的發(fā)展,使數(shù)字微波傳輸產(chǎn)生了一個(gè)革命性變化。隨著國(guó)民經(jīng)濟(jì)和社會(huì)發(fā)展的信息化,人們要通信息化開(kāi)創(chuàng)新的工作方式、管理方式、商貿(mào)方式、金融方式、思想交流方式、文化教育方式、醫(yī)療保健方式以及消費(fèi)與生活方式。無(wú)線通信和遙控等技術(shù)也從固定方式發(fā)展為移動(dòng)方式,移動(dòng)通信和控制發(fā)展至今大約經(jīng)歷了以下五個(gè)階段:第一階段為20年代初至50年代初,主要用于艦船及軍有,采用短波頻及電子管技術(shù),至該階段末期才出現(xiàn)150mhzvhf單工汽車(chē)公用移動(dòng)電話系統(tǒng)mts。第二階段為50年代到60年代,此時(shí)頻段擴(kuò)展至uhf450mhz,器件技術(shù)已向半導(dǎo)體過(guò)渡,大都為移動(dòng)環(huán)境中的專(zhuān)用系統(tǒng),并解決了移動(dòng)電話與公用電話網(wǎng)的接續(xù)問(wèn)題。第三階段為70年代初至80年代初頻段擴(kuò)展至800mhz,美國(guó)bell研究所提出了蜂窩系統(tǒng)概念并于70年代末進(jìn)行了amps試驗(yàn)。第四階段為80年代初至90年代中,為第二代數(shù)字移動(dòng)通信興起與大發(fā)展階段,并逐步向個(gè)人通信業(yè)務(wù)方向邁進(jìn);此時(shí)出現(xiàn)了d-amps、tacs、etacs、gsm/dcs、cdmaone、pdc、phs、dect、pacs、pcs等各類(lèi)系統(tǒng)與業(yè)務(wù)運(yùn)行,頻段擴(kuò)展至900mhz~1.9ghz,而且除公眾蜂窩電話通信系統(tǒng)外,無(wú)線尋呼系統(tǒng)、無(wú)繩電話系統(tǒng)、集群系統(tǒng)、無(wú)中心多信道選址移動(dòng)通信系統(tǒng)等各類(lèi)移動(dòng)通信手段適應(yīng)用戶(hù)市場(chǎng)需求同時(shí)興起并各顯神通。第五階段為20世紀(jì)90年代中至今,隨著數(shù)據(jù)通信與多媒體業(yè)務(wù)需求的發(fā)展,適應(yīng)移動(dòng)數(shù)據(jù)、移動(dòng)計(jì)算及移動(dòng)多媒體運(yùn)作需要的第三代移動(dòng)通信開(kāi)始興起,其全球標(biāo)準(zhǔn)化及相應(yīng)融合工作與樣機(jī)研制和現(xiàn)場(chǎng)試驗(yàn)工作在快速推進(jìn),包括從第二代至第三代移動(dòng)通信的平滑過(guò)渡問(wèn)題在內(nèi)。對(duì)于第三代移動(dòng)tmt-2000紛紛參與標(biāo)準(zhǔn)的制定,經(jīng)多次融合努力在1999年10月25日至11月5日芬蘭赫爾辛基召開(kāi)的itu-rtg8/1第18次會(huì)議上5類(lèi)rtt技術(shù)標(biāo)準(zhǔn)共6種方案成為最終結(jié)果。中國(guó)的td-scdma方案也已成為其中之一。應(yīng)該指出,utrawcdmads及tiacdma2000mc的相應(yīng)起步樣機(jī)已經(jīng)誕生,包括以gsm、csmaone后向兼容為基礎(chǔ)的第二代半過(guò)渡設(shè)備(g)edge、cdmais-95bhdr(2.4mbit/s峰值速率,64qam調(diào)制)及cdma2000-1x等亦已推出。此外,為接續(xù)internet移動(dòng)游覽應(yīng)用的無(wú)線應(yīng)用協(xié)議(wap)與無(wú)線連接技術(shù)藍(lán)牙(bluetooth)已經(jīng)產(chǎn)生。從網(wǎng)絡(luò)的角度來(lái)看,接入網(wǎng)可分成有線接入網(wǎng)和無(wú)線接入網(wǎng)、光纜同軸混合接入網(wǎng)、銅線電纜、對(duì)絞線、電話(一般為銅線)接入網(wǎng)等等;無(wú)線接入技術(shù)是近些年迅速發(fā)展起來(lái)的新技術(shù)領(lǐng)域,它從概念上產(chǎn)生了一個(gè)重大的飛躍,即不需要纜線類(lèi)物理傳輸媒質(zhì)而采用無(wú)線傳播手段來(lái)代替部分接入網(wǎng)甚至入網(wǎng)的全部,從而達(dá)到降低成本、提高靈活性和擴(kuò)展傳輸距離的目的,紅外線遙控即是采用無(wú)線技術(shù)將操作者的想法或意識(shí)通過(guò)無(wú)線發(fā)射裝置將載有控制信號(hào)的紅外線發(fā)射出去,在接收端在通過(guò)解碼放大等過(guò)程達(dá)到控制的目的。短距離之內(nèi)的接入技術(shù)主要有藍(lán)牙(bluetooth)、紅外線、dect、ieee802.11和共享無(wú)線接入?yún)f(xié)議(swap)/homerf等系統(tǒng)。比較而言,bluetooth系統(tǒng)更具有代表性,它正根據(jù)wpan的概念向前發(fā)展。事實(shí)上,bluetooth和wpan的概念相輔相成,bluetooth已經(jīng)是wpan的一個(gè)雛形。從它最初由ericsson,ibm,inter,nokia和toshiba公司作為原始發(fā)起組織而推出,1年多時(shí)間已吸引了近2000個(gè)國(guó)際上有影響的公司參與。1999年底,美國(guó)的4家公司3com,lucent,microsoft和motorola,與上述5公司一樣作為bluetooth的發(fā)起組織,使它在與swap、ieee802.11等類(lèi)似應(yīng)用標(biāo)準(zhǔn)的競(jìng)爭(zhēng)中脫穎而出,發(fā)展前景更加明朗。為了推動(dòng)bluetooth的發(fā)展,bluetooth的標(biāo)準(zhǔn)是非專(zhuān)利的,bluetooth已成為目前通信領(lǐng)域的一個(gè)新熱點(diǎn),21世紀(jì)的無(wú)線遙控及通信技術(shù)正進(jìn)入一個(gè)關(guān)鍵的轉(zhuǎn)折時(shí)期,未來(lái)十年將是技術(shù)發(fā)展最為活躍的時(shí)期。信息化社會(huì)的到來(lái)以及ip技術(shù)的興起,正深刻的改變著無(wú)線遙控及通信技術(shù)的面貌以及未來(lái)技術(shù)發(fā)展的走向。未來(lái)無(wú)線遙控及通信技術(shù)發(fā)展的主要趨勢(shì)是寬帶化、分組化、綜合經(jīng)、個(gè)人化。預(yù)計(jì)不遠(yuǎn)的將來(lái)就可成為小范圍無(wú)線多媒體通信的國(guó)際標(biāo)準(zhǔn),但就現(xiàn)在而言紅外線已經(jīng)是一個(gè)相當(dāng)成熟的短距離無(wú)線傳輸技術(shù),相對(duì)藍(lán)牙雖有它的不足方面但在人們的日常生活中卻起著不可缺少的作用。在本文的設(shè)計(jì)中,由于是電風(fēng)扇的控制從其功能和實(shí)用方面來(lái)講紅外線遙控已經(jīng)足夠?qū)崿F(xiàn)其各種功能而且價(jià)格便宜便于生產(chǎn)制造,在使用上也相當(dāng)方便。因此本文著重討論紅外線的遙控原理以及與其有關(guān)的單片機(jī)方面的技術(shù)和接口方面的知識(shí)。第一章紅外線遙控簡(jiǎn)介1.1紅外線的概念紅外線又稱(chēng)紅外光波,是指在紅光以外的,肉眼看不見(jiàn)的、具有熱效應(yīng)的光線。紅外線是太陽(yáng)光中眾多不可見(jiàn)光線中的一種。在電磁波譜中,其波長(zhǎng)為0.76um~1000um的光波為紅外光線。紅外光按波長(zhǎng)范圍分為近紅外、中紅外、遠(yuǎn)紅外、極紅外四類(lèi)。紅外線遙控是利用近紅外光偉傳送遙控指令的。用近紅外光作為遙控光源,是因?yàn)槟壳凹t外發(fā)射器件與紅外接收器件的發(fā)光與受光峰值波長(zhǎng)一般為0.8um~0.9um。在近紅外光波段內(nèi),二者的光譜正好重合,能夠很好地匹配,可以獲得較高的傳輸效率及較高的可靠性。1.2紅外線遙控的特點(diǎn)遙控,就是指對(duì)被控對(duì)象,按照所確定的意圖對(duì)其內(nèi)部參數(shù)、工作狀態(tài)等進(jìn)行遠(yuǎn)距離操縱。遙控技術(shù)在現(xiàn)代工農(nóng)業(yè)生產(chǎn)、科研、國(guó)防等領(lǐng)域均有非常廣泛的應(yīng)用,隨著現(xiàn)代科技的發(fā)展,它們的應(yīng)用也越來(lái)越普遍?,F(xiàn)在各種家電都采用遙控技術(shù),給使用者帶來(lái)了很在的方便。遙控種類(lèi)很多,按信息傳遞方式分為:有線遙控、無(wú)線遙控兩大類(lèi)。紅外線遙控只能在十幾米之內(nèi),因此多用于家電方面。1.3紅外線遙控系統(tǒng)紅外線遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應(yīng)用編/解碼專(zhuān)用集成電路芯片來(lái)進(jìn)行控制操作。發(fā)射過(guò)程接收過(guò)程1.4遙控發(fā)射器及其編碼采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms,周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期2.25ms的組合表示二進(jìn)制的“1”,其波形如下圖所示:Bit“1“2.25ms0.56msBit”0”1.125ms0.56ms Bit“1“2.25ms0.56msBit”0”1.125ms0.56ms 上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38KHZ的載頻進(jìn)行地次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過(guò)紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶(hù)識(shí)別碼,能區(qū)別不同的電器設(shè)備,防止不同機(jī)種遙控碼的互相干擾。該芯片的用戶(hù)識(shí)別碼固定為十六進(jìn)制01H;后16位為8位操作碼及其反碼。用戶(hù)識(shí)別碼用戶(hù)識(shí)別碼反碼操作碼操作碼反碼4.5ms 4.5ms9ms9ms引導(dǎo)碼遙控器在按下按鍵后,周期性的發(fā)出同一種32位的二進(jìn)制碼,周期約為了108ms。一組碼本身的持續(xù)時(shí)間隨著它包含的二進(jìn)制“0”和“1”的個(gè)數(shù)不同而不同,大約在45~63ms之間。1.5電路方案:發(fā)射芯片BA5104的引腳功能:腳位名稱(chēng)I/O說(shuō)明1,2C1,C2I用戶(hù)碼:接地代表:“0”,浮空代表“1”3~7,9~11K1~K8I遙控按鍵輸入,內(nèi)接上拉電阻8VSS-地位12,13OSC2,OSC1I/O455KHZOSC的輸入,輸出腳14LED0接LED顯示發(fā)射狀態(tài)15Do038Hz載波組號(hào)輸出16VDD-正電源BA8206BA4引腳功能:腳位名稱(chēng)I/O功能說(shuō)明腳位名稱(chēng)I/O功能說(shuō)明1DII遙控記號(hào)輸入10SHOO擺頭驅(qū)動(dòng)輸出端2OFFI/O關(guān)機(jī)鍵或開(kāi)/關(guān)鍵輸入及LED掃描輸出端11STRONGO強(qiáng)風(fēng)驅(qū)動(dòng)輸出端3TIMERI/O定時(shí)鍵輸入及LED掃描輸出端12MEDIUMO中風(fēng)驅(qū)動(dòng)輸出端4SPEEDI/O風(fēng)速鍵輸入及LED掃描輸出端13LOWO弱風(fēng)驅(qū)動(dòng)輸出端5MODEI/O風(fēng)類(lèi)鍵輸入及LED掃描輸出端14VDD—正電源6COM1O用戶(hù)碼C1選擇及LED掃描公共端15BUZO蜂鳴器驅(qū)動(dòng)輸出端7COM2O用戶(hù)碼C2選擇及LED掃描公共端16OSC2O晶振輸出端8COM3O用戶(hù)碼C3選擇及LED掃描公共端17OSC1O晶振輸入端9SWINGI擺頭鍵輸入及用戶(hù)碼選擇二極管連接端18VSS-負(fù)電源1.6總電路原理圖發(fā)射電路原理圖接收電路原理圖1.6.1接收電路的電源部分接收電路原理圖的第一圖為電源部分。220V交流直接接入電路的兩端,通過(guò)限流、濾波、穩(wěn)壓得到-5V,由V端輸出,引入到18腳,為芯片提供直流工作電源。紅外接收部分TL2380(紅外接收頭)接收到遙控器發(fā)射的信號(hào)后,經(jīng)過(guò)整形、濾波,從芯片的(2)腳引入,實(shí)現(xiàn)風(fēng)扇的控制功能。1.7接收電路各功能部分1.7.1OFF功能在電風(fēng)扇運(yùn)行狀態(tài)下,紅外接收頭接收到OFF信號(hào)后,由芯片內(nèi)部控制,(2)腳產(chǎn)生觸發(fā)電平,使OFF功能實(shí)現(xiàn),此時(shí)風(fēng)扇停止運(yùn)轉(zhuǎn)。1.7.2定時(shí)功能在電風(fēng)扇運(yùn)行中,紅外接收頭收到定時(shí)信號(hào)后,由芯片內(nèi)部控制,(3)腳產(chǎn)生觸發(fā)電平,使定時(shí)功能實(shí)現(xiàn)。1.7.3ON/風(fēng)類(lèi)功能若風(fēng)扇在停止?fàn)顟B(tài),紅外接收頭接收到ON信號(hào)后,由芯片內(nèi)部控制,(4)腳產(chǎn)生觸發(fā)電平,使風(fēng)扇開(kāi)始以上一次停機(jī)的模式運(yùn)轉(zhuǎn)。若風(fēng)扇在運(yùn)行狀態(tài),紅外接收頭接收到風(fēng)類(lèi)信號(hào)后,由芯片內(nèi)部控制,(4)腳產(chǎn)生觸發(fā)電平,使風(fēng)扇的風(fēng)類(lèi)依次產(chǎn)生睡眠風(fēng),正常風(fēng),自然風(fēng)的轉(zhuǎn)換。1.7.4搖頭功能在電風(fēng)扇運(yùn)行狀態(tài)下,紅外接收頭接收到搖頭信號(hào)后,由芯片內(nèi)部控制,(9)腳產(chǎn)生觸發(fā)電平,使(10)腳的雙向可控硅導(dǎo)通,使搖頭電機(jī)工作,實(shí)現(xiàn)搖頭功能。若電風(fēng)扇工作在搖頭狀態(tài)下,則實(shí)現(xiàn)靜止功能。1.7.5風(fēng)速控制部分在電風(fēng)扇運(yùn)行狀態(tài)下,紅外接收頭接收到風(fēng)速改變信號(hào)后,由芯片內(nèi)部控制,(11)(12)(13)腳中對(duì)應(yīng)信號(hào)的引腳產(chǎn)生觸發(fā)電平,使其雙向可控硅導(dǎo)通,進(jìn)而改變電機(jī)中電抗器的電感大小。第二章MCS—51的簡(jiǎn)介8051是MCS-51系列單片機(jī)中的代表產(chǎn)品,它內(nèi)部集成了功能強(qiáng)大的中央處理器,包含了硬件乘除法器、21個(gè)專(zhuān)用控制寄存器、4kB的程序存儲(chǔ)器、128字節(jié)的數(shù)據(jù)存儲(chǔ)器、4組8位的并行口、兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器、一個(gè)全雙工的串行口以及布爾處理器。但在本設(shè)計(jì)中電風(fēng)扇的遙控將使用和MCS8051除程序存儲(chǔ)器不一樣其他完全一樣的MCS89C51進(jìn)行設(shè)計(jì)。

MCS-51具有比較大的尋址空間,地址線寬達(dá)16條,即外部數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器的尋址范圍達(dá)216=64kB,這作為單片機(jī)控制來(lái)說(shuō)已是比較大的,這同時(shí)具備對(duì)I/O口的訪問(wèn)能力。此外,MCS-51采用模塊化結(jié)構(gòu),可方便地增刪一個(gè)模塊就可引腳和指令兼容的新產(chǎn)品。從而容易使產(chǎn)品形成系列化。

由于MCS-51集成了幾乎完善的8位中央處理單元,處理功能強(qiáng),中央處理單元中集成了方便靈活的專(zhuān)用寄存器,硬件的加、減、乘、除法器和布爾處理機(jī)及各種邏輯運(yùn)算和轉(zhuǎn)移指令,這給應(yīng)用提供了極大的便利。

MCS-51的指令系統(tǒng)近乎完善,指令系統(tǒng)中包含了全面的數(shù)據(jù)傳送指令、完善的算術(shù)和邏輯運(yùn)算指令、方便的邏輯操作和控制指令、對(duì)于編程來(lái)說(shuō),是相當(dāng)靈活和方便的。

MCS-51單片機(jī)的工作頻率為2-12MHz,當(dāng)振蕩頻率為12MHz時(shí),一個(gè)機(jī)器周期為1us,這個(gè)速度應(yīng)該說(shuō)是比較快的。

8051中集成了完善的各種中斷源,用戶(hù)可十分方便地控制和使用其功能,使得它的應(yīng)用范圍加大,可以說(shuō)它可以滿(mǎn)足絕大部分的應(yīng)用場(chǎng)合。

MCS-51把微型計(jì)算機(jī)的主要部件都集成在一塊心片上,使得數(shù)據(jù)傳送距離大大縮短,可靠性更高,運(yùn)行速度更塊。由于屬于芯片化的微型計(jì)算機(jī),各功能部件在芯片中的布局和結(jié)構(gòu)達(dá)最優(yōu)化,抗干擾能力加強(qiáng),工作亦相對(duì)穩(wěn)定。因此,在工業(yè)測(cè)控系統(tǒng)中,使用單片機(jī)是最理想的選擇。單片機(jī)屬于典型的嵌入式系統(tǒng),所以它是低端控制系統(tǒng)最佳器件。80C51是INTEL公司MCS-51系列單片機(jī)中最基本的產(chǎn)品,它采用INTEL公司可靠的CHMOS工藝技術(shù)制造的高性能8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS-51的HCMOS產(chǎn)品。它結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,它繼承和擴(kuò)展了MCS-48單片機(jī)的體系結(jié)構(gòu)和指令系統(tǒng)。

80C51內(nèi)置中央處理單元、128字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM、32個(gè)雙向輸入/輸出(I/O)口、2個(gè)16位定時(shí)/計(jì)數(shù)器和5個(gè)兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩電路。

此外,80C51還可工作于低功耗模式,可通過(guò)兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時(shí)器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時(shí)鐘振蕩停止,同時(shí)停止芯片內(nèi)其它功能。80C51有PDIP(40pin)和PLCC(44pin)兩種封裝形式主要功能特性:

·標(biāo)準(zhǔn)MCS-51內(nèi)核和指令系統(tǒng)·4kB內(nèi)部ROM(外部可擴(kuò)展至64kB)

·32個(gè)可編程雙向I/O口·128x8bit內(nèi)部RAM(可擴(kuò)充64kB外部存儲(chǔ)器)

·2個(gè)16位可編程定時(shí)/計(jì)數(shù)器·時(shí)鐘頻率0-16MHz

·5個(gè)中斷源·5.0V工作電壓

·可編程全雙工串行通信口·布爾處理器

·2層優(yōu)先級(jí)中斷結(jié)構(gòu)·電源空閑和掉電模式

·快速脈沖編程·2層程序加密位

·PDIP和PLCC封裝形式·兼容TTL和CMOS邏輯電平表格2—180C51主要功能特性其圖形如下:圖2—180C51的結(jié)構(gòu)圖87C51是INTEL公司MCS-51系列單片機(jī)中基本型產(chǎn)品,它采用INTEL公司可靠的CHMOS工藝技術(shù)制造的高性能8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS-51的體系結(jié)構(gòu)和指令系統(tǒng)。。它結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,是80C51BH的EPROM版本,電改寫(xiě)光擦除的片內(nèi)4kBEPROM。

87C51內(nèi)置中央處理單元、128字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM、32個(gè)雙向輸入/輸出(I/O)口、2個(gè)16位定時(shí)/計(jì)數(shù)器和5個(gè)兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩電路??焖倜}沖編程,如編寫(xiě)4kB片內(nèi)ROM僅需12秒。

此外,87C51還可工作于低功耗模式,可通過(guò)兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時(shí)器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時(shí)鐘振蕩停止,同時(shí)停止芯片內(nèi)其它功能。87C51有PDIP和PLCC兩種封裝形式。主要功能特性:

·標(biāo)準(zhǔn)MCS-51內(nèi)核和指令系統(tǒng)·4kB內(nèi)部ROM(外部可擴(kuò)展至64kB)

·32個(gè)可編程雙向I/O口·128x8bit內(nèi)部EPRAM(可擴(kuò)充64kB外部存儲(chǔ)器)

·2個(gè)16位可編程定時(shí)/計(jì)數(shù)器·時(shí)鐘頻率0-16MHz

·5個(gè)中斷源·5.0V工作電壓

·可編程全雙工串行通信口·布爾處理器

·2層優(yōu)先級(jí)中斷結(jié)構(gòu)·電源空閑和掉電模式

·快速脈沖編程·2層程序加密位

·PDIP和PLCC封裝形式·兼容TTL和CMOS邏輯電平表格2—287C51主要功能特性其圖形如下:圖2—287C51的結(jié)構(gòu)圖2.1Mcs8051單片機(jī)的中斷系統(tǒng)2.11有關(guān)中斷的概念什么是中斷,我們從一個(gè)生活中的例子引入。如你正在家中看書(shū),突然電話鈴響了,你放下書(shū)本,去接電話,和來(lái)電話的人交談,然后放下電話,回來(lái)繼續(xù)看你的書(shū)。這就是生活中的“中斷”現(xiàn)象,就是正常的工作過(guò)程被外部的事件打斷了。第一、什么可引起中斷,生活中很多事件可以引起中斷:有人按了門(mén)鈴,電話鈴響了,你的鬧鐘響了,你燒的水開(kāi)了….等等諸如此類(lèi)的事件,我們把可以引起中斷的事件稱(chēng)之為中斷源,單片機(jī)中也有一些可以引起中斷的事件,其中一共有五個(gè):兩個(gè)外部中斷,兩個(gè)計(jì)數(shù)/定時(shí)器中斷,一個(gè)串行口中斷。第二、中斷的嵌套與優(yōu)先級(jí)處理:設(shè)想一下,我們正在看書(shū),電話鈴響了,同時(shí)又有人按了門(mén)鈴,你該先做那樣呢?如果你正是在等一個(gè)很重要的電話,你一般不會(huì)去理會(huì)門(mén)鈴的,而反之,你正在等一個(gè)重要的客人,則可能就不會(huì)去理會(huì)電話了。如果不是這兩者(即不等電話,也不是等人上門(mén)),你可能會(huì)按你通常的習(xí)慣去處理??傊@里存在一個(gè)優(yōu)先級(jí)的問(wèn)題,單片機(jī)中也是如此,也有優(yōu)先級(jí)的問(wèn)題。優(yōu)先級(jí)的問(wèn)題不僅僅發(fā)生在兩個(gè)中斷同時(shí)產(chǎn)生的情況,也發(fā)生在一個(gè)中斷已產(chǎn)生,又有一個(gè)中斷產(chǎn)生的情況,比如你正接電話,又有人按門(mén)鈴的情況,或你正開(kāi)門(mén)與人交談,又有電話響了情況。考慮一下我們會(huì)怎么辦吧。第三、中斷的響應(yīng)過(guò)程:當(dāng)有事件產(chǎn)生,進(jìn)入中斷之前我們必須先記住現(xiàn)在看第幾頁(yè)了,或拿一個(gè)書(shū)簽放在當(dāng)前頁(yè)的位置,然后去處理不同的事情(因?yàn)樘幚硗炅?,我們還要回來(lái)繼續(xù)看書(shū)):電話鈴響我們要到放電話的地方去,門(mén)鈴響我們要到門(mén)口去,也說(shuō)是不同的中斷,我們要在不同的地點(diǎn)處理,而這個(gè)地點(diǎn)通常還是固定的。計(jì)算機(jī)中也是采用這種方法,五個(gè)中斷源,每個(gè)中斷產(chǎn)生后都到一個(gè)固定的地方去處理這個(gè)中斷程序,當(dāng)然在去之前首先要保存下面將要執(zhí)行指令的地址,以便處理完中斷后回到原來(lái)的地方繼續(xù)往下執(zhí)行程序。具體地說(shuō),中斷響應(yīng)可以分為以下幾個(gè)步驟:1、保護(hù)斷點(diǎn),即保存下一個(gè)將要執(zhí)行指令的地址,就是把這個(gè)地址送入堆棧。2、尋找中斷程序入口,根據(jù)5個(gè)不同的中斷源所產(chǎn)生的中斷,查找5個(gè)不同的入口地址。以上工作是由計(jì)算機(jī)自動(dòng)完成的,與編程者無(wú)關(guān)。在這5個(gè)入口地址處存放有中斷處理程序(這是程序編寫(xiě)時(shí)放在那兒的,如果沒(méi)把中斷程序放在那兒,就錯(cuò)了,中斷程序就不能被執(zhí)行)。3、執(zhí)行中斷處理程序。4、中斷返回:執(zhí)行完中斷指令后,就從中斷處返回到主程序,繼續(xù)執(zhí)行后面程序。2.12中斷系統(tǒng)的結(jié)構(gòu):由與中斷有關(guān)的特殊功能寄存器、中斷入口、順序查詢(xún)邏輯電路等組成,包括5個(gè)中斷請(qǐng)求源,4個(gè)用于中斷控制的寄存器IE、IP、ECON和SCON來(lái)控制中斷,中斷的開(kāi)、關(guān)和各種中斷源的優(yōu)先級(jí)確定。(1)外部中斷請(qǐng)求源:即外中斷0和1,經(jīng)由外部引腳引入的,在單片機(jī)上有兩個(gè)引腳,名稱(chēng)為INT0、INT1,也就是P3.2、P3.3這兩個(gè)引腳。在內(nèi)部的TCON中有四位是與外中斷有關(guān)的。IT0:INT0觸發(fā)方式控制位,可由軟件進(jìn)行置位和復(fù)位,IT0=0,INT0為低電平觸發(fā)方式,IT0=1,INT0為負(fù)跳變觸發(fā)方式。這兩種方式的差異將在以后再談。IE0:INT0中斷請(qǐng)求標(biāo)志位。當(dāng)有外部的中斷請(qǐng)求時(shí),該位就會(huì)置1(這由硬件來(lái)完成),在CPU響應(yīng)中斷后,由硬件將IE0清0。IT1、IE1的用途和IT0、IE0相同。TF0:定時(shí)器T0的溢出中斷標(biāo)記,當(dāng)T0計(jì)數(shù)產(chǎn)生溢出時(shí),由硬件置位TF0。當(dāng)CPU響應(yīng)中斷后,再由硬件將TF0清0。TF1:與TF0類(lèi)似。TI、RI:串行口發(fā)送、接收中斷,在串口中再講解。2.13中斷允許寄存器IE在MCS-8051中斷系統(tǒng)中,中斷的允許或禁止是由片內(nèi)可進(jìn)行位尋址的8位中斷允許寄存器IE來(lái)控制的。見(jiàn)下表EAXXESET1EX1ET0EX0表格2—38位中斷允許寄存器的控制其中EA是總開(kāi)關(guān),如果它等于0,則所有中斷都不允許。ES-串行口中斷允許ET1-定時(shí)器1中斷允許EX1-外中斷1中斷允許。ET0-定時(shí)器0中斷允許EX0-外中斷0中斷允許。如果我們要設(shè)置允許外中斷1,定時(shí)器1中斷允許,其它不允許,則IE可以是EAXXESET1EX1ET0EX010001100表格2—4MCS-8051中斷系統(tǒng)中的IE即8CH,當(dāng)然,我們也可以用位操作指令SETBEA

SETBET1SETBEX1來(lái)實(shí)現(xiàn)它。五個(gè)中斷源的自然優(yōu)先級(jí)與中斷服務(wù)入口地址外中斷0:0003H定時(shí)器0:000BH外中斷1:0013H定時(shí)器1:001BH串口:0023H它們的自然優(yōu)先級(jí)由高到低排列。寫(xiě)到這里,大家應(yīng)當(dāng)明白,為什么前面有一些程序一開(kāi)始我們這樣寫(xiě):ORG0000HLJMPSTARTORG0030HSTART:這樣寫(xiě)的目地,就是為了讓出中斷源所占用的向量地址。當(dāng)然,在程序中沒(méi)用中斷時(shí),直接從0000H開(kāi)始寫(xiě)程序,在原理上并沒(méi)有錯(cuò),但在實(shí)際工作中最好不這樣做。優(yōu)先級(jí):?jiǎn)纹瑱C(jī)采用了自然優(yōu)先級(jí)和人工設(shè)置高、低優(yōu)先級(jí)的策略,即可以由程序員設(shè)定那些中斷是高優(yōu)先級(jí)、哪些中斷是低優(yōu)先級(jí),由于只有兩級(jí),必有一些中斷處于同一級(jí)別,處于同一級(jí)別的,就由自然優(yōu)先級(jí)確定。開(kāi)機(jī)時(shí),每個(gè)中斷都處于低優(yōu)先級(jí),我們可以用指令對(duì)優(yōu)先級(jí)進(jìn)行設(shè)置??幢?-5中斷優(yōu)先級(jí)中由中斷優(yōu)先級(jí)寄存器IP來(lái)高置的,IP中某位設(shè)為1,相應(yīng)的中斷就是高優(yōu)先級(jí),否則就是低優(yōu)先級(jí)。XXXPSPT1PX1PT0PX0表格2—5例:設(shè)有如下要求,將T0、外中斷1設(shè)為高優(yōu)先級(jí),其它為低優(yōu)先級(jí),求IP的值。IP的首3位沒(méi)用,可任意取值,設(shè)為000,后面根據(jù)要求寫(xiě)就可以了XXXPSPT1PX1PT0PX000000110表格2—6因此,最終,IP的值就是06H。例:在上例中,如果5個(gè)中斷請(qǐng)求同時(shí)發(fā)生,求中斷響應(yīng)的次序。響應(yīng)次序?yàn)椋憾〞r(shí)器0->外中斷1->外中斷0->實(shí)時(shí)器1->串行中斷。2.14MCS-8051的中斷響應(yīng)過(guò)程:1、中斷響應(yīng)的條件:講到這兒,我們依然對(duì)于計(jì)算機(jī)響應(yīng)中斷感到神奇,我們?nèi)丝梢皂憫?yīng)外界的事件,是因?yàn)槲覀冇卸喾N“傳感器“――眼、耳可以接受不同的信息,計(jì)算機(jī)是如何做到這點(diǎn)的呢?其實(shí)說(shuō)穿了,一點(diǎn)都不希奇,MCS8051工作時(shí),在每個(gè)機(jī)器周期中都會(huì)去查詢(xún)一下各個(gè)中斷標(biāo)記,看他們是否是“1“,如果是1,就說(shuō)明有中斷請(qǐng)求了,所以所謂中斷,其實(shí)也是查詢(xún),不過(guò)是每個(gè)周期都查一下而已。這要換成人來(lái)說(shuō),就相當(dāng)于你在看書(shū)的時(shí)候,每一秒鐘都會(huì)抬起頭來(lái)看一看,查問(wèn)一下,是不是有人按門(mén)鈴,是否有電話。很蠢,不是嗎?可計(jì)算機(jī)本來(lái)就是這樣,它根本沒(méi)人聰明。了解了上述中斷的過(guò)程,就不難理解中斷響應(yīng)的條件了。在下列三種情況之一時(shí),CPU將封鎖對(duì)中斷的響應(yīng):1.CPU正在處理一個(gè)同級(jí)或更高級(jí)別的中斷請(qǐng)求。2.現(xiàn)行的機(jī)器周期不是當(dāng)前正執(zhí)行指令的最后一個(gè)周期。我們知道,單片機(jī)有單周期、雙周期、三周期指令,當(dāng)前執(zhí)行指令是單字節(jié)沒(méi)有關(guān)系,如果是雙字節(jié)或四字節(jié)的,就要等整條指令都執(zhí)行完了,才能響應(yīng)中斷(因?yàn)橹袛嗖樵?xún)是在每個(gè)機(jī)器周期都可能查到的)。3.當(dāng)前正執(zhí)行的指令是返回指令(RETI)或訪問(wèn)IP、IE寄存器的指令,則CPU至少再執(zhí)行一條指令才能響應(yīng)中斷。這些都是與中斷有關(guān)的,如果正訪問(wèn)IP、IE則可能會(huì)開(kāi)、關(guān)中斷或改變中斷的優(yōu)先級(jí),而中斷返回指令則說(shuō)明本次中斷還沒(méi)有處理完,所以都要等本指令處理結(jié)束,再執(zhí)行下一條指令才可以響應(yīng)中斷。2、中斷響應(yīng)過(guò)程CPU響應(yīng)中斷時(shí),首先把當(dāng)前指令的下一條指令(就是中斷返回后將要執(zhí)行的指令)的地址送入堆棧,然后根據(jù)中斷標(biāo)記,將相應(yīng)的中斷入口地址送入PC,PC是程序指針,CPU取指令就根據(jù)PC中的值,PC中是什么值,就會(huì)到什么地方去取指令,所以程序就會(huì)轉(zhuǎn)到中斷入口處繼續(xù)執(zhí)行。這些工作都是由硬件來(lái)完成的,不必我們?nèi)タ紤]。這里還有個(gè)問(wèn)題,即每個(gè)中斷向量地址只間隔了8個(gè)單元,如0003-000B,在如此少的空間中如何完成中斷程序呢?一個(gè)完整的主程序看起來(lái)應(yīng)該是這樣的:ORG0000HLJMPSTARTORG0003HLJMPINT0;轉(zhuǎn)外中斷0ORG000BHRETI;沒(méi)有用定時(shí)器0中斷,在此放一條RETI,萬(wàn)一“不小心“產(chǎn)生了中斷,也不會(huì)有太大的后果。中斷程序完成后,一定要執(zhí)行一條RETI指令,執(zhí)行這條指令后,CPU將會(huì)把堆棧中保存著的地址取出,送回PC,那么程序就會(huì)從主程序的中斷處繼續(xù)往下執(zhí)行了。但是CPU所做的保護(hù)工作是很有限的,只保護(hù)了一個(gè)地址,而其它的所有東西都不保護(hù),所以如果在主程序中用到了如A、PSW等,在中斷程序中又要用它們,還要保證回到主程序后這里面的數(shù)據(jù)還是沒(méi)執(zhí)行中斷以前的數(shù)據(jù),就得自己保護(hù)起來(lái)。2.2MCS8051的鍵盤(pán)接口與編程鍵盤(pán)是由若干按鍵組成的開(kāi)關(guān)矩陣,它是微型計(jì)算機(jī)最常用的輸入設(shè)備,用戶(hù)可以通過(guò)鍵盤(pán)向計(jì)算機(jī)輸入指令、地址和數(shù)據(jù)。一般單片機(jī)系統(tǒng)中采用非編碼鍵盤(pán),非編碼鍵盤(pán)是由軟件來(lái)識(shí)別鍵盤(pán)上的閉合鍵,它具有結(jié)構(gòu)簡(jiǎn)單,使用靈活等特點(diǎn),因此被廣泛應(yīng)用于單片機(jī)系統(tǒng)。2.2.1按鍵開(kāi)關(guān)的抖動(dòng)問(wèn)題:組成鍵盤(pán)的按鍵有觸點(diǎn)式和非觸點(diǎn)式兩種,單片機(jī)中應(yīng)用的一般是由機(jī)械觸點(diǎn)構(gòu)成的。在下圖中,當(dāng)開(kāi)圖2—3觸點(diǎn)式按鍵關(guān)S未被按下時(shí),P1.0輸入為高電平,S閉合后,P1。0輸入為低電平。由于按鍵是機(jī)械觸點(diǎn),當(dāng)機(jī)械觸點(diǎn)斷開(kāi)、閉合時(shí),會(huì)有抖動(dòng),P1。0輸入端的波形如圖2所示。這種抖動(dòng)對(duì)于人來(lái)說(shuō)是感覺(jué)不到的,但對(duì)計(jì)算機(jī)來(lái)說(shuō),則是完全可以感應(yīng)到的,因?yàn)橛?jì)算機(jī)處理的速度是在微秒級(jí),而機(jī)械抖動(dòng)的時(shí)間至少是毫秒級(jí),對(duì)計(jì)算機(jī)而言,這已是一個(gè)“漫長(zhǎng)”的時(shí)間了。前面我們講到中斷時(shí)曾有個(gè)問(wèn)題,就是說(shuō)按鍵有時(shí)靈,有時(shí)不靈,其實(shí)就是這個(gè)原因,你只按了一次按鍵,可是計(jì)算機(jī)卻已執(zhí)行了多次中斷的過(guò)程,如果執(zhí)行的次數(shù)正好是奇數(shù)次,那么結(jié)果正如你所料,如果執(zhí)行的次數(shù)是偶數(shù)次,那就不對(duì)了。為使CPU能正確地讀出P1口的狀態(tài),對(duì)每一次按鍵只作一次響應(yīng),就必須考慮如何去除抖動(dòng),常用的去抖動(dòng)的方法有兩種:硬件方法和軟件方法。單片機(jī)中常用軟件法,因此,對(duì)于硬件方法我們不介紹。軟件法其實(shí)很簡(jiǎn)單,就是在單片機(jī)獲得P1。0口為低的信息后,不是立即認(rèn)定S1已被按下,而是延時(shí)10毫秒或更長(zhǎng)一些時(shí)間后再次檢測(cè)P1。0口,如果仍為低,說(shuō)明S1的確按下了,這實(shí)際上是避開(kāi)了按鍵按下時(shí)的抖動(dòng)時(shí)間。而在檢測(cè)到按鍵釋放后(P1。0為高)再延時(shí)5-10個(gè)毫秒,消除后沿的抖動(dòng),然后再對(duì)鍵值處理。不過(guò)一般情況下,我們通常不對(duì)按鍵釋放的后沿進(jìn)行處理,實(shí)踐證明,也能滿(mǎn)足一定的要求。當(dāng)然,實(shí)際應(yīng)用中,對(duì)按鍵的要求也是千差萬(wàn)別,要根據(jù)不同的需要來(lái)編制處理程序,但以上是消除鍵抖動(dòng)的原則。2.2.2鍵盤(pán)與單片機(jī)的連接:圖2—4鍵盤(pán)單片機(jī)的與連接1、通過(guò)1/0口連接。將每個(gè)按鍵的一端接到單片機(jī)的I/O口,另一端接地,這是最簡(jiǎn)單的方法,如圖3所示是實(shí)驗(yàn)板上按鍵的接法,四個(gè)按鍵分別接到P3.2、P3.3、P3.4和P3.5。對(duì)于這種鍵各程序可以采用不斷查詢(xún)的方法,功能就是:檢測(cè)是否有鍵閉合,如有鍵閉合,則去除鍵抖動(dòng),判斷鍵號(hào)并轉(zhuǎn)入相應(yīng)的鍵處理。下面給出一個(gè)例程。其功能很簡(jiǎn)單,四個(gè)鍵定義如下:P3.2:開(kāi)始,按此鍵則燈開(kāi)始流動(dòng)(由上而下)P3.3:停止,按此鍵則停止流動(dòng),所有燈為暗P3.4:上,按此鍵則燈由上向下流動(dòng)P3.5:下,按此鍵則燈由下向上流動(dòng)UpDownEQU00H;上下行標(biāo)志StartEndEQU01H;起動(dòng)及停止標(biāo)志LAMPCODEEQU21H;存放流動(dòng)的數(shù)據(jù)代碼ORG0000HAJMPMAINORG30HMAIN:MOVSP,#5FHMOVP1,#0FFHCLRUpDown;啟動(dòng)時(shí)處于向上的狀態(tài)CLRStartEnd;啟動(dòng)時(shí)處于停止?fàn)顟B(tài)MOVLAMPCODE,#0FEH;單燈流動(dòng)的代碼LOOP:ACALLKEY;調(diào)用鍵盤(pán)程序JNBF0,LNEXT;如果無(wú)鍵按下,則繼續(xù)ACALLKEYPROC;否則調(diào)用鍵盤(pán)處理程序LNEXT:ACALLLAMP;調(diào)用燈顯示程序AJMPLOOP;反復(fù)循環(huán),主程序到此結(jié)束;DELAY:MOVR7,#100D1:MOVR6,#100DJNZR6,$DJNZR7,D1RET;延時(shí)程序,鍵盤(pán)處理中調(diào)用KEYPROC:MOVA,B;從B寄存器中獲取鍵值JBACC.2,KeyStart;分析鍵的代碼,某位被按下,則該位為1(因?yàn)樵阪I盤(pán)程序中已取反)JBACC.3,KeyOverJBACC.4,KeyUpJBACC.5,KeyDownAJMPKEY_RETKeyStart:SETBStartEnd;第一個(gè)鍵按下后的處理AJMPKEY_RETKeyOver:CLRStartEnd;第二個(gè)鍵按下后的處理AJMPKEY_RETKeyUp:SETBUpDown;第三個(gè)鍵按下后的處理AJMPKEY_RETKeyDown:CLRUpDown;第四個(gè)鍵按下后的處理KEY_RET:RETKEY:CLRF0;清F0,表示無(wú)鍵按下。ORLP3,#00111100B;將P3口的接有鍵的四位置1MOVA,P3;取P3的值ORLA,#11000011B;將其余4位置1CPLA;取反JZK_RET;如果為0則一定無(wú)鍵按下ACALLDELAY;否則延時(shí)去鍵抖ORLP3,#00111100BMOVA,P3ORLA,#11000011BCPLAJZK_RETMOVB,A;確實(shí)有鍵按下,將鍵值存入B中SETBF0;設(shè)置有鍵按下的標(biāo)志K_RET:ORLP3,#00111100B;此處循環(huán)等待鍵的釋放MOVA,P3ORLA,#11000011BCPLAJZK_RET1;直到讀取的數(shù)據(jù)取反后為0說(shuō)明鍵釋放了,才從鍵盤(pán)處理程序中返回AJMPK_RETK_RET1:RET;D500MS:;流水燈的延遲時(shí)間PUSHPSWSETBRS0MOVR7,#200D51:MOVR6,#250D52:NOPNOPNOPNOPDJNZR6,D52DJNZR7,D51POPPSWRET;LAMP:JBStartEnd,LampStart;如果StartEnd=1,則啟動(dòng)MOVP1,#0FFHAJMPLAMPRET;否則關(guān)閉所有顯示,返回LampStart:JBUpDown,LAMPUP;如果UpDown=1,則向上流動(dòng)MOVA,LAMPCODERLA;實(shí)際就是左移位而已MOVLAMPCODE,AMOVP1,ALCALLD500MSAJMPLAMPRETLAMPUP:MOVA,LAMPCODERRA;向下流動(dòng)實(shí)際就是右移MOVLAMPCODE,AMOVP1,ALCALLD500MSLAMPRET:RETEND以上程序功能很簡(jiǎn)單,但它演示了一個(gè)鍵盤(pán)處理程序的基本思路,程序本身很簡(jiǎn)單,也不很實(shí)用,實(shí)際工作中還會(huì)有好多要考慮的因素,比如主循環(huán)每次都調(diào)用燈的循環(huán)程序,會(huì)造成按鍵反應(yīng)“遲鈍”,而如果一直按著鍵不放,則燈不會(huì)再流動(dòng),一直要到松開(kāi)手為止,等等,大家可以仔細(xì)考慮一下這些問(wèn)題,再想想有什么好的解決辦法。2、采用中斷方式:如圖4所示。各個(gè)按鍵都接到一個(gè)與非上,當(dāng)有任何一個(gè)按鍵按下時(shí),都會(huì)使與門(mén)輸出為低電平,從而引起單片機(jī)的中斷,它的好處是不用在主程序中不斷地循環(huán)查詢(xún),如果有鍵按下,單片機(jī)再去做相應(yīng)的處理。1.

矩陣式鍵盤(pán)的結(jié)構(gòu)與工作原理:在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I(mǎi)/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤(pán)中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比直接將端口線用于鍵盤(pán)多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤(pán),而直接用端口線則只能多出一鍵(9鍵)。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是合理的。圖2—5矩陣式鍵盤(pán)的結(jié)構(gòu)矩陣式結(jié)構(gòu)的鍵盤(pán)顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程方法如下所述。矩陣式鍵盤(pán)的按鍵識(shí)別方法確定矩陣式鍵盤(pán)上何鍵被按下介紹一種“行掃描法”。行掃描法行掃描法又稱(chēng)為逐行(或列)掃描查詢(xún)法,是一種最常用的按鍵識(shí)別方法,如上圖所示鍵盤(pán),介紹過(guò)程如下。判斷鍵盤(pán)中有無(wú)鍵按下將全部行線Y0-Y3置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤(pán)中無(wú)鍵按下。判斷閉合鍵所在的位置在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。如上圖所示。8031單片機(jī)的P1口用作鍵盤(pán)I/O口,鍵盤(pán)的列線接到P1口的低4位,鍵盤(pán)的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無(wú)鍵閉合,否則有鍵閉合。去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤(pán)的行線進(jìn)行掃描。P1.4-P1.7按下述4種組合依次輸出:P1.71110P1.61101P1.51011P1.40111在每組行輸出時(shí)讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒(méi)有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時(shí)的抖動(dòng)。鍵盤(pán)掃描程序:從以上分析得到鍵盤(pán)掃描程序的流程圖如圖2—6所示。程序如下SCAN:MOVP1,#0FHMOVA,P1ANLA,#0FHCJNEA,#0FH,NEXT1SJMPNEXT3NEXT1:ACALLD20MSMOVA,#0EFHNEXT2:MOVR1,AMOVP1,AMOVA,P1ANLA,#0FHCJNEA,#0FH,KCODE;MOVA,R1SETBCRLCAJCNEXT2NEXT3:MOVR0,#00HRETKCODE:MOVB,#0FBHNEXT4:RRCAINCBJCNEXT4MOVA,R1SWAPANEXT5:RRCAINCBINCBINCBINCBJCNEXT5NEXT6:MOVA,P1ANLA,#0FHCJNEA,#0FH,NEXT6MOVR0,#0FFHRET鍵盤(pán)處理程序就作這么一個(gè)簡(jiǎn)單的介紹,實(shí)際上,鍵盤(pán)、顯示處理是很復(fù)雜的,它往往占到一個(gè)應(yīng)用程序的大部份代碼,可見(jiàn)其重要性,但說(shuō)到,這種復(fù)雜并不來(lái)自于單片機(jī)的本身,而是來(lái)自于操作者的習(xí)慣等等問(wèn)題,因此,在編寫(xiě)鍵盤(pán)處理程序之前,最好先把它從邏輯上理清,然后用適當(dāng)?shù)乃惴ū硎境鰜?lái),最后再去寫(xiě)代碼,這樣,才能快速有效地寫(xiě)好代碼。2.3MCS8951的定時(shí)/計(jì)數(shù)器的方式控制字2.3.1計(jì)數(shù)器與定時(shí)器一、計(jì)數(shù)概念的引入從選票的統(tǒng)計(jì)談起:畫(huà)“正”。這就是計(jì)數(shù),生活中計(jì)數(shù)的例子處處可見(jiàn)。例:錄音機(jī)上的計(jì)數(shù)器、家里面用的電度表、汽車(chē)上的里程表等等,再舉一個(gè)工業(yè)生產(chǎn)中的例子,電線生產(chǎn)出來(lái)之后要計(jì)米,也就是測(cè)量長(zhǎng)度,怎么測(cè)法呢?用尺量?不現(xiàn)實(shí),太長(zhǎng)不說(shuō),要一邊做一邊量呢,怎么辦呢?行業(yè)中有很巧妙的方法,用一個(gè)周長(zhǎng)是1米的輪子,將電纜繞在上面一周,由線帶輪轉(zhuǎn),這樣輪轉(zhuǎn)一周不就是線長(zhǎng)1米嘛,所以只要記下輪轉(zhuǎn)了多少圈,就可以知道走過(guò)的線有多長(zhǎng)了。二、計(jì)數(shù)器的容量從一個(gè)生活中的例子看起:一個(gè)水盆在水龍頭下,水龍頭沒(méi)關(guān)緊,水一滴滴地滴入盆中。水滴不斷落下,盆的容量是有限的,過(guò)一段時(shí)間之后,水就會(huì)逐漸變滿(mǎn)。錄音機(jī)上的計(jì)數(shù)器最多只計(jì)到999….那么單片機(jī)中的計(jì)數(shù)器有多大的容量呢?8031單片機(jī)中有兩個(gè)計(jì)數(shù)器,分別稱(chēng)之為T(mén)0和T1,這兩個(gè)計(jì)數(shù)器分別是由兩個(gè)8位的RAM單元組成的,即每個(gè)計(jì)數(shù)器都是16位的計(jì)數(shù)器,最大的計(jì)數(shù)量是65536。三、定時(shí)8031中的計(jì)數(shù)器除了可以作為計(jì)數(shù)之用外,還可以用作時(shí)鐘,時(shí)鐘的用途當(dāng)然很大,如打鈴器,電視機(jī)定時(shí)關(guān)機(jī),空調(diào)定時(shí)開(kāi)關(guān)等等,那么計(jì)數(shù)器是如何作為定時(shí)器來(lái)用的呢?一個(gè)鬧鐘,我們將它定在1個(gè)小時(shí)后鬧響,換言之,也可以說(shuō)是秒針走了(3600)次,所以時(shí)間就轉(zhuǎn)化為秒針走的次數(shù),也就是計(jì)數(shù)的次數(shù)了,可見(jiàn),計(jì)數(shù)的次數(shù)和時(shí)間之間的確十分相關(guān)。那么它們的關(guān)系是什么呢?那就是秒針每一次走動(dòng)的時(shí)間正好是1秒。結(jié)論:只要計(jì)數(shù)脈沖的間隔相等,則計(jì)數(shù)值就代表了時(shí)間的流逝。由此,單片機(jī)中的定時(shí)器和計(jì)數(shù)器是一個(gè)東西,只不過(guò)計(jì)數(shù)器是記錄的外界發(fā)生的事情,而定時(shí)器則是由單片機(jī)提供一個(gè)非常穩(wěn)定的計(jì)數(shù)源。那么提供定時(shí)器的計(jì)數(shù)源是什么呢?看圖1,原來(lái)就是由單片機(jī)的晶振經(jīng)過(guò)12分頻后獲得的一個(gè)脈沖源。晶振的頻率當(dāng)然很準(zhǔn),所以這個(gè)計(jì)數(shù)脈沖的時(shí)間間隔也很準(zhǔn)。問(wèn)題:一個(gè)12M的晶振,它提供給計(jì)數(shù)器的脈沖時(shí)間間隔是多少呢?當(dāng)然這很容易,就是12M/12等于1M,也就是1個(gè)微秒。結(jié)論:計(jì)數(shù)脈沖的間隔與晶振有關(guān),12M的晶振,計(jì)數(shù)脈沖的間隔是1微秒。四、溢出讓我們?cè)賮?lái)看水滴的例子,當(dāng)水不斷落下,盆中的水不斷變滿(mǎn),最終有一滴水使得盆中的水滿(mǎn)了。這時(shí)如果再有一滴水落下,就會(huì)發(fā)生什么現(xiàn)象?水會(huì)漫出來(lái),用個(gè)術(shù)語(yǔ)來(lái)講就是“溢出”。水溢出是流到地上,而計(jì)數(shù)器溢出后將使得TF0變?yōu)椤?”。至于TF0是什么我們稍后再談。一旦TF0由0變成1,就是產(chǎn)生了變化,產(chǎn)生了變化就會(huì)引發(fā)事件,就象定時(shí)的時(shí)間一到,鬧鐘就會(huì)響一樣。至于會(huì)引發(fā)什么事件,我們下一課再介紹,現(xiàn)在我們來(lái)研究另一個(gè)問(wèn)題:要有多少個(gè)計(jì)數(shù)脈沖才會(huì)使TF0由0變?yōu)?。五、任意定時(shí)及計(jì)數(shù)的方法剛才已研究過(guò),計(jì)數(shù)器的容量是16位,也就是最大的計(jì)數(shù)值到65536,因此計(jì)數(shù)計(jì)到65536就會(huì)產(chǎn)生溢出。這個(gè)沒(méi)有問(wèn)題,問(wèn)題是我們現(xiàn)實(shí)生活中,經(jīng)常會(huì)有少于65536個(gè)計(jì)數(shù)值的要求,如包裝線上,一打?yàn)?2瓶,一瓶藥片為100粒,怎么樣來(lái)滿(mǎn)足這個(gè)要求呢?……提示:如果是一個(gè)空的盆要1萬(wàn)滴水滴進(jìn)去才會(huì)滿(mǎn),我在開(kāi)始滴水之前就先放入一勺水,還需要10000滴嘛?對(duì)了,我們采用預(yù)置數(shù)的方法,我要計(jì)100,那我就先放進(jìn)65436,再來(lái)100個(gè)脈沖,不就到了65536了嗎。定時(shí)也是如此,每個(gè)脈沖是1微秒,則計(jì)滿(mǎn)65536個(gè)脈沖需時(shí)65.536毫秒,但現(xiàn)在我只要10毫秒就可以了,怎么辦?10個(gè)毫秒為10000個(gè)微秒,所以,只要在計(jì)數(shù)器里面放進(jìn)55536就可以了。在單片機(jī)中有兩個(gè)特殊功能寄存器與定時(shí)/計(jì)數(shù)有關(guān),這就是TMOD和TCON。順便說(shuō)一下,TMOD和TCON是名稱(chēng),我們?cè)趯?xiě)程序時(shí)就可以直接用這個(gè)名稱(chēng)來(lái)指定它們,當(dāng)然也可以直接用它們的地址89H和88H來(lái)指定它們(其實(shí)用名稱(chēng)也就是直接用地址,匯編軟件幫你翻譯一下而已)。符號(hào)地址功能介紹BF0HB寄存器ACCE0H累加器PSWD0H程序狀態(tài)字IPB8H中斷優(yōu)先級(jí)控制寄存器P3B0HP3口鎖存器IEA8H中斷允許控制寄存器P2A0HP2口鎖存器SBUF99H串行口鎖存器SCON98H串行口控制寄存器P190HP1口鎖存器TH18DH定時(shí)器/計(jì)數(shù)器1(高8位)TH08CH定時(shí)器/計(jì)數(shù)器1(低8位)TL18BH定時(shí)器/計(jì)數(shù)器0(高8位)TL08AH定時(shí)器/計(jì)數(shù)器0(低8位)TMOD89A定時(shí)器/計(jì)數(shù)器方式控制寄存器TCON88H定時(shí)器/計(jì)數(shù)器控制寄存器DPH83H數(shù)據(jù)地址指針(高8位)DPL82H數(shù)據(jù)地址指針(低8位)SP81H堆棧指針P080HP0口鎖存器PCON87H電源控制寄存器圖1從圖1中我們可以看出,TMOD被分成兩部份,每部份4位。分別用于控制T1和T0,至于這里面是什么意思,我們下面介紹。從圖2中我們可以看出,TCON也被分成兩部份,高4位用于定時(shí)/計(jì)數(shù)器,低4位則用于中斷(我們暫不管)。而TF1(0)我們上節(jié)課已提到了,當(dāng)計(jì)數(shù)溢出后TF1(0)就由0變?yōu)?。原來(lái)TF1(0)在這兒!那么TR0、TR1又是什么呢?看上節(jié)課的圖。 計(jì)數(shù)脈沖要進(jìn)入計(jì)數(shù)器還真不容易,有層層關(guān)要通過(guò),最起碼,就是TR0(1)要為1,開(kāi)關(guān)才能合上,脈沖才能過(guò)來(lái)。因此,TR0(1)稱(chēng)之為運(yùn)行控制位,可用指令SETB來(lái)置位以啟動(dòng)計(jì)數(shù)器/定時(shí)器運(yùn)行,用指令CLR來(lái)關(guān)閉定時(shí)/計(jì)數(shù)器的工作,一切盡在自已的掌握中。2.4定時(shí)/計(jì)數(shù)器的四種工作方式2.4.1工作方式定時(shí)器/計(jì)數(shù)器的工作方式0稱(chēng)之為13位定時(shí)/計(jì)數(shù)方式。它由TL(1/0)的低5位和TH(0/1)的8位構(gòu)成13位的計(jì)數(shù)器,此時(shí)TL(1/0)的高3位未用。我們用這個(gè)圖來(lái)討論幾個(gè)問(wèn)題:1.

M1M0:定時(shí)/計(jì)數(shù)器一共有四種工作方式,就是用M1M0來(lái)控制的,2位正好是四種組合。2.

C/T:前面我們說(shuō)過(guò),定時(shí)/計(jì)數(shù)器即可作定時(shí)用也可計(jì)數(shù)用,到底作什么用,由我們根據(jù)需要自行決定,也就是說(shuō)決定權(quán)在我們編程者。如果C/T為0就是用作定時(shí)器(開(kāi)關(guān)往上打),如果C/T為1就是用作計(jì)數(shù)器(開(kāi)關(guān)往下打)。順便提一下:一個(gè)定時(shí)/計(jì)數(shù)器同一時(shí)刻要么作定時(shí)用,要么作計(jì)數(shù)用,不能同時(shí)用,這是個(gè)極普通的常識(shí),幾乎沒(méi)有教材會(huì)提這一點(diǎn),但很多初學(xué)者卻會(huì)有此困惑。3.

GATE:看圖,當(dāng)我們選擇了定時(shí)或計(jì)數(shù)工作方式后,定時(shí)/計(jì)數(shù)脈沖卻不一定能到達(dá)計(jì)數(shù)器端,中間還有一個(gè)開(kāi)關(guān),顯然這個(gè)開(kāi)關(guān)不合上,計(jì)數(shù)脈沖就沒(méi)法過(guò)去,那么開(kāi)關(guān)什么時(shí)候過(guò)去呢?有兩種情況(1)GATE=0,分析一下邏輯,GATE非后是1,進(jìn)入或門(mén),或門(mén)總是輸出1,和或門(mén)的另一個(gè)輸入端INT1無(wú)關(guān),在這種情況下,開(kāi)關(guān)的打開(kāi)、合上只取決于TR1,只要TR1是1,開(kāi)關(guān)就合上,計(jì)數(shù)脈沖得以暢通無(wú)阻,而如果TR1等于0則開(kāi)關(guān)打開(kāi),計(jì)數(shù)脈沖無(wú)法通過(guò),因此定時(shí)/計(jì)數(shù)是否工作,只取決于TR1。(2)GATE=1,在此種情況下,計(jì)數(shù)脈沖通路上的開(kāi)關(guān)不僅要由TR1來(lái)控制,而且還要受到INT1引腳的控制,只有TR1為1,且INT1引腳也是高電平,開(kāi)關(guān)才合上,計(jì)數(shù)脈沖才得以通過(guò)。這個(gè)特性可以用來(lái)測(cè)量一個(gè)信號(hào)的高電平的寬度,想想看,怎么測(cè)?為什么在這種模式下只用13位呢?干嗎不用16位,這是為了和51機(jī)的前輩48系列兼容而設(shè)的一種工作模式,如果你覺(jué)得用得不順手,那就干脆用第二種工作方式。工作方式1工作方式1是16位的定時(shí)/計(jì)數(shù)方式,將M1M0設(shè)為01即可,其它特性與工作方式0相同。工作方式2在介紹這種方式之前先讓我們思考一個(gè)問(wèn)題:上一次課我們提到過(guò)任意計(jì)數(shù)及任意定時(shí)的問(wèn)題,比如我要計(jì)1000個(gè)數(shù),可是16位的計(jì)數(shù)器要計(jì)到65536才滿(mǎn),怎么辦呢?我們討論后得出的辦法是用預(yù)置數(shù),先在計(jì)數(shù)器里放上64536,再來(lái)1000個(gè)脈沖,不就行了嗎?是的,但是計(jì)滿(mǎn)了之后我們又該怎么辦呢?要知道,計(jì)數(shù)總是不斷重復(fù)的,流水線上計(jì)滿(mǎn)后馬上又要開(kāi)始下一次計(jì)數(shù),下一次的計(jì)數(shù)還是1000嗎?當(dāng)計(jì)滿(mǎn)并溢出后,計(jì)數(shù)器里面的值變成了0(為什么,可以參考前面課程的說(shuō)明),因此下一次將要計(jì)滿(mǎn)65536后才會(huì)溢出,這可不符合要求,怎么辦?當(dāng)然辦法很簡(jiǎn)單,就是每次一溢出時(shí)執(zhí)行一段程序(這通常是需要的,要不然要溢出干嗎?)可以在這段程序中把預(yù)置數(shù)64536送入計(jì)數(shù)器中。所以采用工作方式0或1都要在溢出后做一個(gè)重置預(yù)置數(shù)的工作,做工作當(dāng)然就得要時(shí)間,一般來(lái)說(shuō)這點(diǎn)時(shí)間不算什么,可是有一些場(chǎng)合我們還是要計(jì)較的,所以就有了第三種工作方式自動(dòng)再裝入預(yù)置數(shù)的工作方式。既然要自動(dòng)裝入預(yù)置數(shù),那么預(yù)置數(shù)就得放在一個(gè)地方,要不然裝什么呢?那么預(yù)置數(shù)放在什么地方呢?它放在T(0/1)的高8位,那么這樣高8位不就不能參與計(jì)數(shù)了嗎?是的,在工作方式2,只有低8位參與計(jì)數(shù),而高8位不參與計(jì)數(shù),用作預(yù)置數(shù)的存放,這樣計(jì)數(shù)范圍就小多了,當(dāng)然做任何事總要付出代價(jià)的,關(guān)鍵看值不值,如果我根本不需要計(jì)那么多數(shù),那么就可以用這種方式??磮D4,每當(dāng)計(jì)數(shù)溢出,就會(huì)打開(kāi)T(0/1)的高、低8位之間的開(kāi)關(guān),預(yù)置數(shù)進(jìn)入高8位。這是由硬件自動(dòng)完成的,不需要人工干預(yù)。通常這種方式用于波特率發(fā)生器(我們將在串行接口中講解),用于這種用途時(shí),定時(shí)器就是為了提供一個(gè)時(shí)間基準(zhǔn)。計(jì)數(shù)溢出后不需要做事情,要做的僅僅只有一件,就是重新裝入預(yù)置數(shù),再開(kāi)始計(jì)數(shù),而且中間不要任何延遲,可見(jiàn)這個(gè)任務(wù),用方式2來(lái)完成是最妙不過(guò)了。工作方式3這種方式之下,定時(shí)/計(jì)數(shù)器0被拆成2個(gè)獨(dú)立的定時(shí)/計(jì)數(shù)器來(lái)用。其中,TL0可以構(gòu)成8位的定時(shí)器或計(jì)數(shù)器的工作方式,而TH0則只能作為定時(shí)器來(lái)用。我們知道作定時(shí)、計(jì)數(shù)器來(lái)用,需要控制,計(jì)滿(mǎn)后溢出需要有溢出標(biāo)記,T0被分成兩個(gè)來(lái)用,那就要兩套控制、溢出標(biāo)記了,從何而來(lái)呢?TL0還是用原來(lái)的T0標(biāo)記,而TH0則借用T1的標(biāo)記。如此T1不是無(wú)標(biāo)記、控制可用了嗎?是的。一般情況處,只有在T1以工作方式2運(yùn)行(當(dāng)波特率發(fā)生器用)時(shí),才讓T0工作于方式3的。2.5定時(shí)器/計(jì)數(shù)器的定時(shí)/計(jì)數(shù)范圍工作方式0:13位定時(shí)/計(jì)數(shù)方式,因此,最多可以計(jì)到2的13次方,也就是8192次。工作方式1:16位定時(shí)/計(jì)數(shù)方式,因此,最多可以計(jì)到2的16次方,也就是65536次。工作方式2和工作方式3,都是8位的定時(shí)/計(jì)數(shù)方式,因此,最多可以計(jì)到2的8次方,也說(shuō)是256次。預(yù)置值計(jì)算:用最大計(jì)數(shù)量減去需要的計(jì)數(shù)次數(shù)即可。例:流水線上一個(gè)包裝是12盒,要求每到12盒就產(chǎn)生一個(gè)動(dòng)作,用單片機(jī)的工作方式0來(lái)控制,應(yīng)當(dāng)預(yù)置多大的值呢?對(duì)了,就是8192-12=8180。以上是計(jì)數(shù),明白了這個(gè)道理,定時(shí)也是一樣。這在前面的課程已提到,我們不再重復(fù),請(qǐng)參考前面的例子.第三章遙控的鍵盤(pán)控制電風(fēng)扇控制步驟和主要功能如下:搖頭:剛開(kāi)機(jī)系統(tǒng)默認(rèn)為不搖頭,按下?lián)u頭鍵則開(kāi)始搖頭。風(fēng)速調(diào)節(jié)鍵:剛開(kāi)機(jī)系統(tǒng)默認(rèn)為中速,隨著每次按下則按中→弱→強(qiáng)→中的順序進(jìn)行風(fēng)速調(diào)節(jié)。定時(shí):剛開(kāi)機(jī)時(shí)系統(tǒng)默認(rèn)常開(kāi),即不定時(shí)。此時(shí)常態(tài)綠色指示燈亮,若需定時(shí)則按下此定時(shí)鍵則綠色燈熄滅紅色定時(shí)指示燈按定時(shí)不同而各個(gè)點(diǎn)亮如,剛按下去則按如下順序綠燈亮→1小時(shí)紅燈亮→3小時(shí)紅燈亮→5小時(shí)紅燈亮→8小時(shí)紅燈亮綠燈亮循環(huán)。遙控器面板如圖:定時(shí)定時(shí)搖頭開(kāi)關(guān)強(qiáng)中弱圖3—1遙控器接收面板圖大致可以設(shè)計(jì)如下:強(qiáng)強(qiáng)弱中搖頭指示手動(dòng)開(kāi)關(guān)定時(shí)指示燈1358紅外線接收孔圖3—2電風(fēng)扇接收面板開(kāi)機(jī)鍵:和遙控器開(kāi)關(guān)一樣起待機(jī)作用。為了方便和防止遙控器意外失靈在電風(fēng)扇壁及接收板處還狀有受動(dòng)按扭其功能和遙控器完全相同。在接收紅外線譯碼的電路圖大致可以擬訂如下:1K1KΩ1KΩ+5v+5v繼電器繼電器六個(gè)功能輸出80C51P1.00P1.5VccT0INT0INT1圖3—3接收電路圖個(gè)功能鍵的程序段如下:搖頭子程序:SHAKE:CPL,DATA-H,4;LCALL,SEND;RET;低速鍵子程序:LOW:CLR,DATA,6;SETB,DATA,5;LCALL,SEND;RET;中速鍵子程序:MID:CLR,DATA,5;SETB,DATA,6;LCALL,SEND;RET;高速鍵子程序:HIG:CLP,DATA,5;SETB,DATA,6;LCALL,SEND;RET;定時(shí)1小時(shí)子程序:OENHOUR:CPL,DATA-H0;LCALL,SEND;RET;定時(shí)3小時(shí)子程序:THREEHOURS:CPL,DATA-H,1;LCALL,SEND;RET;定時(shí)5小時(shí)子程序:FIVEHOURS:CPL,DATA-H,2;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論