版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要摘要:本論文簡單地介紹了紅外線遙控發(fā)射和接收系統(tǒng)原理,在文中給出了MCS89C51作為遙控接收系統(tǒng)和作為發(fā)射系統(tǒng)的重要位置,以及完整的51匯編程序代碼和MCS89C51的各種功能簡介,尤其是它在作為紅外線遙控系統(tǒng)中幾個重要的方面如中斷、定時器和其與鍵盤的連接方面作了更詳盡的介紹。本文中包括紅外線發(fā)射和紅外線接收的原理圖,并給出多種方案。還對紅外線遙控的發(fā)送程序、紅外線接收程序、定時中斷程序、發(fā)送周期程序、發(fā)送數(shù)據(jù)程序和發(fā)送“0”和“1”等程序進行了編制。另外對各種程序的流程圖進行了繪制,從而較全面地完成此設(shè)計的要點,參考流程方框圖的構(gòu)思過程,就可以編寫應(yīng)用軟件,便是本論文的特點。利用MCS89C51多次發(fā)送及反碼校驗功能,防止了其它遙控碼和未知代碼的干擾,從而提高了產(chǎn)品的可靠性。又由于紅外線遙控裝置具有體積小,功耗低、功能強和成本低等特點,是現(xiàn)代日常生活中一種重要的遙控設(shè)備,因此也是本次作為設(shè)計課題的重要理由之一。關(guān)鍵詞:MSC89C51、紅外線遙控、鍵盤接口。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第一章紅外線遙控簡介 10156831.1紅外線的概念 1040791.2紅外線遙控的特點 10152391.3紅外線遙控系統(tǒng) 10272261.4遙控發(fā)射器及其編碼 11132481.5電路方案: 12219841.6總電路原理圖 15134961.6.1接收電路的電源部分 16184211.7接收電路各功能部分 16165441.7.1OFF功能 16149521.7.2定時功能 17288991.7.3ON/風類功能 17134211.7.4搖頭功能 17321431.7.5風速控制部分 1819670第二章MCS—51的簡介 19279442.1Mcs8051單片機的中斷系統(tǒng) 22305102.2MCS8051的鍵盤接口與編程 2761062.3MCS8951的定時/計數(shù)器的方式控制字 36149952.3.1計數(shù)器與定時器 36167352.4定時/計數(shù)器的四種工作方式 39103742.4.1工作方式 39264032.5定時器/計數(shù)器的定時/計數(shù)范圍 4123301第三章遙控的鍵盤控制 433171結(jié)論與展望 4715531參考文獻 4923640致謝 50緒論紅外線遙控是目前應(yīng)用最廣泛的一種通信和遙控手段。由于紅外線遙控器具有體積小、功耗低、功能強、成本低等特點。因此,彩電、錄像機、音響設(shè)備、空調(diào)、玩具、門鈴以及遙控汽車路牌等其它小型裝置上也紛紛采用紅外線遙控。紅外線技術(shù)和其他通信技術(shù)如藍牙(bluetooth)共享無線接入?yún)f(xié)議(swap)/homerf等系統(tǒng)一樣在發(fā)展的過程中有一個相當長的歷史時期。1832年莫爾斯發(fā)明了電報,它傳送的信息是由眾所周知的點劃碼組成的,即人類最早的通信是采用數(shù)字方式進行的。以后貝爾又發(fā)明了電話,并由此造就一個電信產(chǎn)業(yè)。一個多世紀以來,以電話服務(wù)為主的電信業(yè)走了一條成功之路,取得了極大的發(fā)展;無線通信是指采用電磁波或者各種能載波的信號進行信息傳遞的通信方式。早在1897年,馬可尼使用800khz中波信號進行了從英國至北美紐芬蘭的世界上第一次橫跨大西洋的線無電報通信試驗,開創(chuàng)了人類無線通信的新紀元。在無線通信初期,受技術(shù)條件的限制,人們大量使用長波及中波進行通信。20世紀20年代初人們發(fā)現(xiàn)的短波通信,直到20世紀60年代衛(wèi)星通信興起前,它一直是遠程國際通信的重要手段,并且目前對應(yīng)急通信和軍用通信依然有一定實用價值。在進距離數(shù)據(jù)傳輸或者遙控方面多使用紅外線藍牙等技術(shù)。20世紀40年代到50年代產(chǎn)生了傳輸頻帶較寬、性能較穩(wěn)定的微波通信,成為長距離大容量地面干線無線傳輸?shù)闹匾侄?。模擬調(diào)頻傳輸容量高達2700路,亦可同時傳輸高質(zhì)量彩色電視信號;爾號逐步進入中容量至大容量數(shù)字微波傳輸。80年代中期以來,隨著頻率選擇性色散衰落對數(shù)字微波傳輸中斷影響的發(fā)現(xiàn)及一系列自適應(yīng)衰落對抗技術(shù)與高狀態(tài)調(diào)制與檢測技術(shù)的發(fā)展,使數(shù)字微波傳輸產(chǎn)生了一個革命性變化。隨著國民經(jīng)濟和社會發(fā)展的信息化,人們要通信息化開創(chuàng)新的工作方式、管理方式、商貿(mào)方式、金融方式、思想交流方式、文化教育方式、醫(yī)療保健方式以及消費與生活方式。無線通信和遙控等技術(shù)也從固定方式發(fā)展為移動方式,移動通信和控制發(fā)展至今大約經(jīng)歷了以下五個階段:第一階段為20年代初至50年代初,主要用于艦船及軍有,采用短波頻及電子管技術(shù),至該階段末期才出現(xiàn)150mhzvhf單工汽車公用移動電話系統(tǒng)mts。第二階段為50年代到60年代,此時頻段擴展至uhf450mhz,器件技術(shù)已向半導體過渡,大都為移動環(huán)境中的專用系統(tǒng),并解決了移動電話與公用電話網(wǎng)的接續(xù)問題。第三階段為70年代初至80年代初頻段擴展至800mhz,美國bell研究所提出了蜂窩系統(tǒng)概念并于70年代末進行了amps試驗。第四階段為80年代初至90年代中,為第二代數(shù)字移動通信興起與大發(fā)展階段,并逐步向個人通信業(yè)務(wù)方向邁進;此時出現(xiàn)了d-amps、tacs、etacs、gsm/dcs、cdmaone、pdc、phs、dect、pacs、pcs等各類系統(tǒng)與業(yè)務(wù)運行,頻段擴展至900mhz~1.9ghz,而且除公眾蜂窩電話通信系統(tǒng)外,無線尋呼系統(tǒng)、無繩電話系統(tǒng)、集群系統(tǒng)、無中心多信道選址移動通信系統(tǒng)等各類移動通信手段適應(yīng)用戶市場需求同時興起并各顯神通。第五階段為20世紀90年代中至今,隨著數(shù)據(jù)通信與多媒體業(yè)務(wù)需求的發(fā)展,適應(yīng)移動數(shù)據(jù)、移動計算及移動多媒體運作需要的第三代移動通信開始興起,其全球標準化及相應(yīng)融合工作與樣機研制和現(xiàn)場試驗工作在快速推進,包括從第二代至第三代移動通信的平滑過渡問題在內(nèi)。對于第三代移動tmt-2000紛紛參與標準的制定,經(jīng)多次融合努力在1999年10月25日至11月5日芬蘭赫爾辛基召開的itu-rtg8/1第18次會議上5類rtt技術(shù)標準共6種方案成為最終結(jié)果。中國的td-scdma方案也已成為其中之一。應(yīng)該指出,utrawcdmads及tiacdma2000mc的相應(yīng)起步樣機已經(jīng)誕生,包括以gsm、csmaone后向兼容為基礎(chǔ)的第二代半過渡設(shè)備(g)edge、cdmais-95bhdr(2.4mbit/s峰值速率,64qam調(diào)制)及cdma2000-1x等亦已推出。此外,為接續(xù)internet移動游覽應(yīng)用的無線應(yīng)用協(xié)議(wap)與無線連接技術(shù)藍牙(bluetooth)已經(jīng)產(chǎn)生。從網(wǎng)絡(luò)的角度來看,接入網(wǎng)可分成有線接入網(wǎng)和無線接入網(wǎng)、光纜同軸混合接入網(wǎng)、銅線電纜、對絞線、電話(一般為銅線)接入網(wǎng)等等;無線接入技術(shù)是近些年迅速發(fā)展起來的新技術(shù)領(lǐng)域,它從概念上產(chǎn)生了一個重大的飛躍,即不需要纜線類物理傳輸媒質(zhì)而采用無線傳播手段來代替部分接入網(wǎng)甚至入網(wǎng)的全部,從而達到降低成本、提高靈活性和擴展傳輸距離的目的,紅外線遙控即是采用無線技術(shù)將操作者的想法或意識通過無線發(fā)射裝置將載有控制信號的紅外線發(fā)射出去,在接收端在通過解碼放大等過程達到控制的目的。短距離之內(nèi)的接入技術(shù)主要有藍牙(bluetooth)、紅外線、dect、ieee802.11和共享無線接入?yún)f(xié)議(swap)/homerf等系統(tǒng)。比較而言,bluetooth系統(tǒng)更具有代表性,它正根據(jù)wpan的概念向前發(fā)展。事實上,bluetooth和wpan的概念相輔相成,bluetooth已經(jīng)是wpan的一個雛形。從它最初由ericsson,ibm,inter,nokia和toshiba公司作為原始發(fā)起組織而推出,1年多時間已吸引了近2000個國際上有影響的公司參與。1999年底,美國的4家公司3com,lucent,microsoft和motorola,與上述5公司一樣作為bluetooth的發(fā)起組織,使它在與swap、ieee802.11等類似應(yīng)用標準的競爭中脫穎而出,發(fā)展前景更加明朗。為了推動bluetooth的發(fā)展,bluetooth的標準是非專利的,bluetooth已成為目前通信領(lǐng)域的一個新熱點,21世紀的無線遙控及通信技術(shù)正進入一個關(guān)鍵的轉(zhuǎn)折時期,未來十年將是技術(shù)發(fā)展最為活躍的時期。信息化社會的到來以及ip技術(shù)的興起,正深刻的改變著無線遙控及通信技術(shù)的面貌以及未來技術(shù)發(fā)展的走向。未來無線遙控及通信技術(shù)發(fā)展的主要趨勢是寬帶化、分組化、綜合經(jīng)、個人化。預(yù)計不遠的將來就可成為小范圍無線多媒體通信的國際標準,但就現(xiàn)在而言紅外線已經(jīng)是一個相當成熟的短距離無線傳輸技術(shù),相對藍牙雖有它的不足方面但在人們的日常生活中卻起著不可缺少的作用。在本文的設(shè)計中,由于是電風扇的控制從其功能和實用方面來講紅外線遙控已經(jīng)足夠?qū)崿F(xiàn)其各種功能而且價格便宜便于生產(chǎn)制造,在使用上也相當方便。因此本文著重討論紅外線的遙控原理以及與其有關(guān)的單片機方面的技術(shù)和接口方面的知識。第一章紅外線遙控簡介1.1紅外線的概念紅外線又稱紅外光波,是指在紅光以外的,肉眼看不見的、具有熱效應(yīng)的光線。紅外線是太陽光中眾多不可見光線中的一種。在電磁波譜中,其波長為0.76um~1000um的光波為紅外光線。紅外光按波長范圍分為近紅外、中紅外、遠紅外、極紅外四類。紅外線遙控是利用近紅外光偉傳送遙控指令的。用近紅外光作為遙控光源,是因為目前紅外發(fā)射器件與紅外接收器件的發(fā)光與受光峰值波長一般為0.8um~0.9um。在近紅外光波段內(nèi),二者的光譜正好重合,能夠很好地匹配,可以獲得較高的傳輸效率及較高的可靠性。1.2紅外線遙控的特點遙控,就是指對被控對象,按照所確定的意圖對其內(nèi)部參數(shù)、工作狀態(tài)等進行遠距離操縱。遙控技術(shù)在現(xiàn)代工農(nóng)業(yè)生產(chǎn)、科研、國防等領(lǐng)域均有非常廣泛的應(yīng)用,隨著現(xiàn)代科技的發(fā)展,它們的應(yīng)用也越來越普遍?,F(xiàn)在各種家電都采用遙控技術(shù),給使用者帶來了很在的方便。遙控種類很多,按信息傳遞方式分為:有線遙控、無線遙控兩大類。紅外線遙控只能在十幾米之內(nèi),因此多用于家電方面。1.3紅外線遙控系統(tǒng)紅外線遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應(yīng)用編/解碼專用集成電路芯片來進行控制操作。發(fā)射過程接收過程1.4遙控發(fā)射器及其編碼采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms,周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期2.25ms的組合表示二進制的“1”,其波形如下圖所示:Bit“1“2.25ms0.56msBit”0”1.125ms0.56ms Bit“1“2.25ms0.56msBit”0”1.125ms0.56ms 上述“0”和“1”組成的32位二進制碼經(jīng)38KHZ的載頻進行地次調(diào)制以提高發(fā)射效率,達到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。遙控編碼是連續(xù)的32位二進制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電器設(shè)備,防止不同機種遙控碼的互相干擾。該芯片的用戶識別碼固定為十六進制01H;后16位為8位操作碼及其反碼。用戶識別碼用戶識別碼反碼操作碼操作碼反碼4.5ms 4.5ms9ms9ms引導碼遙控器在按下按鍵后,周期性的發(fā)出同一種32位的二進制碼,周期約為了108ms。一組碼本身的持續(xù)時間隨著它包含的二進制“0”和“1”的個數(shù)不同而不同,大約在45~63ms之間。1.5電路方案:發(fā)射芯片BA5104的引腳功能:腳位名稱I/O說明1,2C1,C2I用戶碼:接地代表:“0”,浮空代表“1”3~7,9~11K1~K8I遙控按鍵輸入,內(nèi)接上拉電阻8VSS-地位12,13OSC2,OSC1I/O455KHZOSC的輸入,輸出腳14LED0接LED顯示發(fā)射狀態(tài)15Do038Hz載波組號輸出16VDD-正電源BA8206BA4引腳功能:腳位名稱I/O功能說明腳位名稱I/O功能說明1DII遙控記號輸入10SHOO擺頭驅(qū)動輸出端2OFFI/O關(guān)機鍵或開/關(guān)鍵輸入及LED掃描輸出端11STRONGO強風驅(qū)動輸出端3TIMERI/O定時鍵輸入及LED掃描輸出端12MEDIUMO中風驅(qū)動輸出端4SPEEDI/O風速鍵輸入及LED掃描輸出端13LOWO弱風驅(qū)動輸出端5MODEI/O風類鍵輸入及LED掃描輸出端14VDD—正電源6COM1O用戶碼C1選擇及LED掃描公共端15BUZO蜂鳴器驅(qū)動輸出端7COM2O用戶碼C2選擇及LED掃描公共端16OSC2O晶振輸出端8COM3O用戶碼C3選擇及LED掃描公共端17OSC1O晶振輸入端9SWINGI擺頭鍵輸入及用戶碼選擇二極管連接端18VSS-負電源1.6總電路原理圖發(fā)射電路原理圖接收電路原理圖1.6.1接收電路的電源部分接收電路原理圖的第一圖為電源部分。220V交流直接接入電路的兩端,通過限流、濾波、穩(wěn)壓得到-5V,由V端輸出,引入到18腳,為芯片提供直流工作電源。紅外接收部分TL2380(紅外接收頭)接收到遙控器發(fā)射的信號后,經(jīng)過整形、濾波,從芯片的(2)腳引入,實現(xiàn)風扇的控制功能。1.7接收電路各功能部分1.7.1OFF功能在電風扇運行狀態(tài)下,紅外接收頭接收到OFF信號后,由芯片內(nèi)部控制,(2)腳產(chǎn)生觸發(fā)電平,使OFF功能實現(xiàn),此時風扇停止運轉(zhuǎn)。1.7.2定時功能在電風扇運行中,紅外接收頭收到定時信號后,由芯片內(nèi)部控制,(3)腳產(chǎn)生觸發(fā)電平,使定時功能實現(xiàn)。1.7.3ON/風類功能若風扇在停止狀態(tài),紅外接收頭接收到ON信號后,由芯片內(nèi)部控制,(4)腳產(chǎn)生觸發(fā)電平,使風扇開始以上一次停機的模式運轉(zhuǎn)。若風扇在運行狀態(tài),紅外接收頭接收到風類信號后,由芯片內(nèi)部控制,(4)腳產(chǎn)生觸發(fā)電平,使風扇的風類依次產(chǎn)生睡眠風,正常風,自然風的轉(zhuǎn)換。1.7.4搖頭功能在電風扇運行狀態(tài)下,紅外接收頭接收到搖頭信號后,由芯片內(nèi)部控制,(9)腳產(chǎn)生觸發(fā)電平,使(10)腳的雙向可控硅導通,使搖頭電機工作,實現(xiàn)搖頭功能。若電風扇工作在搖頭狀態(tài)下,則實現(xiàn)靜止功能。1.7.5風速控制部分在電風扇運行狀態(tài)下,紅外接收頭接收到風速改變信號后,由芯片內(nèi)部控制,(11)(12)(13)腳中對應(yīng)信號的引腳產(chǎn)生觸發(fā)電平,使其雙向可控硅導通,進而改變電機中電抗器的電感大小。第二章MCS—51的簡介8051是MCS-51系列單片機中的代表產(chǎn)品,它內(nèi)部集成了功能強大的中央處理器,包含了硬件乘除法器、21個專用控制寄存器、4kB的程序存儲器、128字節(jié)的數(shù)據(jù)存儲器、4組8位的并行口、兩個16位的可編程定時/計數(shù)器、一個全雙工的串行口以及布爾處理器。但在本設(shè)計中電風扇的遙控將使用和MCS8051除程序存儲器不一樣其他完全一樣的MCS89C51進行設(shè)計。
MCS-51具有比較大的尋址空間,地址線寬達16條,即外部數(shù)據(jù)存儲器和程序存儲器的尋址范圍達216=64kB,這作為單片機控制來說已是比較大的,這同時具備對I/O口的訪問能力。此外,MCS-51采用模塊化結(jié)構(gòu),可方便地增刪一個模塊就可引腳和指令兼容的新產(chǎn)品。從而容易使產(chǎn)品形成系列化。
由于MCS-51集成了幾乎完善的8位中央處理單元,處理功能強,中央處理單元中集成了方便靈活的專用寄存器,硬件的加、減、乘、除法器和布爾處理機及各種邏輯運算和轉(zhuǎn)移指令,這給應(yīng)用提供了極大的便利。
MCS-51的指令系統(tǒng)近乎完善,指令系統(tǒng)中包含了全面的數(shù)據(jù)傳送指令、完善的算術(shù)和邏輯運算指令、方便的邏輯操作和控制指令、對于編程來說,是相當靈活和方便的。
MCS-51單片機的工作頻率為2-12MHz,當振蕩頻率為12MHz時,一個機器周期為1us,這個速度應(yīng)該說是比較快的。
8051中集成了完善的各種中斷源,用戶可十分方便地控制和使用其功能,使得它的應(yīng)用范圍加大,可以說它可以滿足絕大部分的應(yīng)用場合。
MCS-51把微型計算機的主要部件都集成在一塊心片上,使得數(shù)據(jù)傳送距離大大縮短,可靠性更高,運行速度更塊。由于屬于芯片化的微型計算機,各功能部件在芯片中的布局和結(jié)構(gòu)達最優(yōu)化,抗干擾能力加強,工作亦相對穩(wěn)定。因此,在工業(yè)測控系統(tǒng)中,使用單片機是最理想的選擇。單片機屬于典型的嵌入式系統(tǒng),所以它是低端控制系統(tǒng)最佳器件。80C51是INTEL公司MCS-51系列單片機中最基本的產(chǎn)品,它采用INTEL公司可靠的CHMOS工藝技術(shù)制造的高性能8位單片機,屬于標準的MCS-51的HCMOS產(chǎn)品。它結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,它繼承和擴展了MCS-48單片機的體系結(jié)構(gòu)和指令系統(tǒng)。
80C51內(nèi)置中央處理單元、128字節(jié)內(nèi)部數(shù)據(jù)存儲器RAM、32個雙向輸入/輸出(I/O)口、2個16位定時/計數(shù)器和5個兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)時鐘振蕩電路。
此外,80C51還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時鐘振蕩停止,同時停止芯片內(nèi)其它功能。80C51有PDIP(40pin)和PLCC(44pin)兩種封裝形式主要功能特性:
·標準MCS-51內(nèi)核和指令系統(tǒng)·4kB內(nèi)部ROM(外部可擴展至64kB)
·32個可編程雙向I/O口·128x8bit內(nèi)部RAM(可擴充64kB外部存儲器)
·2個16位可編程定時/計數(shù)器·時鐘頻率0-16MHz
·5個中斷源·5.0V工作電壓
·可編程全雙工串行通信口·布爾處理器
·2層優(yōu)先級中斷結(jié)構(gòu)·電源空閑和掉電模式
·快速脈沖編程·2層程序加密位
·PDIP和PLCC封裝形式·兼容TTL和CMOS邏輯電平表格2—180C51主要功能特性其圖形如下:圖2—180C51的結(jié)構(gòu)圖87C51是INTEL公司MCS-51系列單片機中基本型產(chǎn)品,它采用INTEL公司可靠的CHMOS工藝技術(shù)制造的高性能8位單片機,屬于標準的MCS-51的體系結(jié)構(gòu)和指令系統(tǒng)。。它結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,是80C51BH的EPROM版本,電改寫光擦除的片內(nèi)4kBEPROM。
87C51內(nèi)置中央處理單元、128字節(jié)內(nèi)部數(shù)據(jù)存儲器RAM、32個雙向輸入/輸出(I/O)口、2個16位定時/計數(shù)器和5個兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)時鐘振蕩電路??焖倜}沖編程,如編寫4kB片內(nèi)ROM僅需12秒。
此外,87C51還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時鐘振蕩停止,同時停止芯片內(nèi)其它功能。87C51有PDIP和PLCC兩種封裝形式。主要功能特性:
·標準MCS-51內(nèi)核和指令系統(tǒng)·4kB內(nèi)部ROM(外部可擴展至64kB)
·32個可編程雙向I/O口·128x8bit內(nèi)部EPRAM(可擴充64kB外部存儲器)
·2個16位可編程定時/計數(shù)器·時鐘頻率0-16MHz
·5個中斷源·5.0V工作電壓
·可編程全雙工串行通信口·布爾處理器
·2層優(yōu)先級中斷結(jié)構(gòu)·電源空閑和掉電模式
·快速脈沖編程·2層程序加密位
·PDIP和PLCC封裝形式·兼容TTL和CMOS邏輯電平表格2—287C51主要功能特性其圖形如下:圖2—287C51的結(jié)構(gòu)圖2.1Mcs8051單片機的中斷系統(tǒng)2.11有關(guān)中斷的概念什么是中斷,我們從一個生活中的例子引入。如你正在家中看書,突然電話鈴響了,你放下書本,去接電話,和來電話的人交談,然后放下電話,回來繼續(xù)看你的書。這就是生活中的“中斷”現(xiàn)象,就是正常的工作過程被外部的事件打斷了。第一、什么可引起中斷,生活中很多事件可以引起中斷:有人按了門鈴,電話鈴響了,你的鬧鐘響了,你燒的水開了….等等諸如此類的事件,我們把可以引起中斷的事件稱之為中斷源,單片機中也有一些可以引起中斷的事件,其中一共有五個:兩個外部中斷,兩個計數(shù)/定時器中斷,一個串行口中斷。第二、中斷的嵌套與優(yōu)先級處理:設(shè)想一下,我們正在看書,電話鈴響了,同時又有人按了門鈴,你該先做那樣呢?如果你正是在等一個很重要的電話,你一般不會去理會門鈴的,而反之,你正在等一個重要的客人,則可能就不會去理會電話了。如果不是這兩者(即不等電話,也不是等人上門),你可能會按你通常的習慣去處理。總之這里存在一個優(yōu)先級的問題,單片機中也是如此,也有優(yōu)先級的問題。優(yōu)先級的問題不僅僅發(fā)生在兩個中斷同時產(chǎn)生的情況,也發(fā)生在一個中斷已產(chǎn)生,又有一個中斷產(chǎn)生的情況,比如你正接電話,又有人按門鈴的情況,或你正開門與人交談,又有電話響了情況??紤]一下我們會怎么辦吧。第三、中斷的響應(yīng)過程:當有事件產(chǎn)生,進入中斷之前我們必須先記住現(xiàn)在看第幾頁了,或拿一個書簽放在當前頁的位置,然后去處理不同的事情(因為處理完了,我們還要回來繼續(xù)看書):電話鈴響我們要到放電話的地方去,門鈴響我們要到門口去,也說是不同的中斷,我們要在不同的地點處理,而這個地點通常還是固定的。計算機中也是采用這種方法,五個中斷源,每個中斷產(chǎn)生后都到一個固定的地方去處理這個中斷程序,當然在去之前首先要保存下面將要執(zhí)行指令的地址,以便處理完中斷后回到原來的地方繼續(xù)往下執(zhí)行程序。具體地說,中斷響應(yīng)可以分為以下幾個步驟:1、保護斷點,即保存下一個將要執(zhí)行指令的地址,就是把這個地址送入堆棧。2、尋找中斷程序入口,根據(jù)5個不同的中斷源所產(chǎn)生的中斷,查找5個不同的入口地址。以上工作是由計算機自動完成的,與編程者無關(guān)。在這5個入口地址處存放有中斷處理程序(這是程序編寫時放在那兒的,如果沒把中斷程序放在那兒,就錯了,中斷程序就不能被執(zhí)行)。3、執(zhí)行中斷處理程序。4、中斷返回:執(zhí)行完中斷指令后,就從中斷處返回到主程序,繼續(xù)執(zhí)行后面程序。2.12中斷系統(tǒng)的結(jié)構(gòu):由與中斷有關(guān)的特殊功能寄存器、中斷入口、順序查詢邏輯電路等組成,包括5個中斷請求源,4個用于中斷控制的寄存器IE、IP、ECON和SCON來控制中斷,中斷的開、關(guān)和各種中斷源的優(yōu)先級確定。(1)外部中斷請求源:即外中斷0和1,經(jīng)由外部引腳引入的,在單片機上有兩個引腳,名稱為INT0、INT1,也就是P3.2、P3.3這兩個引腳。在內(nèi)部的TCON中有四位是與外中斷有關(guān)的。IT0:INT0觸發(fā)方式控制位,可由軟件進行置位和復(fù)位,IT0=0,INT0為低電平觸發(fā)方式,IT0=1,INT0為負跳變觸發(fā)方式。這兩種方式的差異將在以后再談。IE0:INT0中斷請求標志位。當有外部的中斷請求時,該位就會置1(這由硬件來完成),在CPU響應(yīng)中斷后,由硬件將IE0清0。IT1、IE1的用途和IT0、IE0相同。TF0:定時器T0的溢出中斷標記,當T0計數(shù)產(chǎn)生溢出時,由硬件置位TF0。當CPU響應(yīng)中斷后,再由硬件將TF0清0。TF1:與TF0類似。TI、RI:串行口發(fā)送、接收中斷,在串口中再講解。2.13中斷允許寄存器IE在MCS-8051中斷系統(tǒng)中,中斷的允許或禁止是由片內(nèi)可進行位尋址的8位中斷允許寄存器IE來控制的。見下表EAXXESET1EX1ET0EX0表格2—38位中斷允許寄存器的控制其中EA是總開關(guān),如果它等于0,則所有中斷都不允許。ES-串行口中斷允許ET1-定時器1中斷允許EX1-外中斷1中斷允許。ET0-定時器0中斷允許EX0-外中斷0中斷允許。如果我們要設(shè)置允許外中斷1,定時器1中斷允許,其它不允許,則IE可以是EAXXESET1EX1ET0EX010001100表格2—4MCS-8051中斷系統(tǒng)中的IE即8CH,當然,我們也可以用位操作指令SETBEA
SETBET1SETBEX1來實現(xiàn)它。五個中斷源的自然優(yōu)先級與中斷服務(wù)入口地址外中斷0:0003H定時器0:000BH外中斷1:0013H定時器1:001BH串口:0023H它們的自然優(yōu)先級由高到低排列。寫到這里,大家應(yīng)當明白,為什么前面有一些程序一開始我們這樣寫:ORG0000HLJMPSTARTORG0030HSTART:這樣寫的目地,就是為了讓出中斷源所占用的向量地址。當然,在程序中沒用中斷時,直接從0000H開始寫程序,在原理上并沒有錯,但在實際工作中最好不這樣做。優(yōu)先級:單片機采用了自然優(yōu)先級和人工設(shè)置高、低優(yōu)先級的策略,即可以由程序員設(shè)定那些中斷是高優(yōu)先級、哪些中斷是低優(yōu)先級,由于只有兩級,必有一些中斷處于同一級別,處于同一級別的,就由自然優(yōu)先級確定。開機時,每個中斷都處于低優(yōu)先級,我們可以用指令對優(yōu)先級進行設(shè)置??幢?-5中斷優(yōu)先級中由中斷優(yōu)先級寄存器IP來高置的,IP中某位設(shè)為1,相應(yīng)的中斷就是高優(yōu)先級,否則就是低優(yōu)先級。XXXPSPT1PX1PT0PX0表格2—5例:設(shè)有如下要求,將T0、外中斷1設(shè)為高優(yōu)先級,其它為低優(yōu)先級,求IP的值。IP的首3位沒用,可任意取值,設(shè)為000,后面根據(jù)要求寫就可以了XXXPSPT1PX1PT0PX000000110表格2—6因此,最終,IP的值就是06H。例:在上例中,如果5個中斷請求同時發(fā)生,求中斷響應(yīng)的次序。響應(yīng)次序為:定時器0->外中斷1->外中斷0->實時器1->串行中斷。2.14MCS-8051的中斷響應(yīng)過程:1、中斷響應(yīng)的條件:講到這兒,我們依然對于計算機響應(yīng)中斷感到神奇,我們?nèi)丝梢皂憫?yīng)外界的事件,是因為我們有多種“傳感器“――眼、耳可以接受不同的信息,計算機是如何做到這點的呢?其實說穿了,一點都不希奇,MCS8051工作時,在每個機器周期中都會去查詢一下各個中斷標記,看他們是否是“1“,如果是1,就說明有中斷請求了,所以所謂中斷,其實也是查詢,不過是每個周期都查一下而已。這要換成人來說,就相當于你在看書的時候,每一秒鐘都會抬起頭來看一看,查問一下,是不是有人按門鈴,是否有電話。很蠢,不是嗎?可計算機本來就是這樣,它根本沒人聰明。了解了上述中斷的過程,就不難理解中斷響應(yīng)的條件了。在下列三種情況之一時,CPU將封鎖對中斷的響應(yīng):1.CPU正在處理一個同級或更高級別的中斷請求。2.現(xiàn)行的機器周期不是當前正執(zhí)行指令的最后一個周期。我們知道,單片機有單周期、雙周期、三周期指令,當前執(zhí)行指令是單字節(jié)沒有關(guān)系,如果是雙字節(jié)或四字節(jié)的,就要等整條指令都執(zhí)行完了,才能響應(yīng)中斷(因為中斷查詢是在每個機器周期都可能查到的)。3.當前正執(zhí)行的指令是返回指令(RETI)或訪問IP、IE寄存器的指令,則CPU至少再執(zhí)行一條指令才能響應(yīng)中斷。這些都是與中斷有關(guān)的,如果正訪問IP、IE則可能會開、關(guān)中斷或改變中斷的優(yōu)先級,而中斷返回指令則說明本次中斷還沒有處理完,所以都要等本指令處理結(jié)束,再執(zhí)行下一條指令才可以響應(yīng)中斷。2、中斷響應(yīng)過程CPU響應(yīng)中斷時,首先把當前指令的下一條指令(就是中斷返回后將要執(zhí)行的指令)的地址送入堆棧,然后根據(jù)中斷標記,將相應(yīng)的中斷入口地址送入PC,PC是程序指針,CPU取指令就根據(jù)PC中的值,PC中是什么值,就會到什么地方去取指令,所以程序就會轉(zhuǎn)到中斷入口處繼續(xù)執(zhí)行。這些工作都是由硬件來完成的,不必我們?nèi)タ紤]。這里還有個問題,即每個中斷向量地址只間隔了8個單元,如0003-000B,在如此少的空間中如何完成中斷程序呢?一個完整的主程序看起來應(yīng)該是這樣的:ORG0000HLJMPSTARTORG0003HLJMPINT0;轉(zhuǎn)外中斷0ORG000BHRETI;沒有用定時器0中斷,在此放一條RETI,萬一“不小心“產(chǎn)生了中斷,也不會有太大的后果。中斷程序完成后,一定要執(zhí)行一條RETI指令,執(zhí)行這條指令后,CPU將會把堆棧中保存著的地址取出,送回PC,那么程序就會從主程序的中斷處繼續(xù)往下執(zhí)行了。但是CPU所做的保護工作是很有限的,只保護了一個地址,而其它的所有東西都不保護,所以如果在主程序中用到了如A、PSW等,在中斷程序中又要用它們,還要保證回到主程序后這里面的數(shù)據(jù)還是沒執(zhí)行中斷以前的數(shù)據(jù),就得自己保護起來。2.2MCS8051的鍵盤接口與編程鍵盤是由若干按鍵組成的開關(guān)矩陣,它是微型計算機最常用的輸入設(shè)備,用戶可以通過鍵盤向計算機輸入指令、地址和數(shù)據(jù)。一般單片機系統(tǒng)中采用非編碼鍵盤,非編碼鍵盤是由軟件來識別鍵盤上的閉合鍵,它具有結(jié)構(gòu)簡單,使用靈活等特點,因此被廣泛應(yīng)用于單片機系統(tǒng)。2.2.1按鍵開關(guān)的抖動問題:組成鍵盤的按鍵有觸點式和非觸點式兩種,單片機中應(yīng)用的一般是由機械觸點構(gòu)成的。在下圖中,當開圖2—3觸點式按鍵關(guān)S未被按下時,P1.0輸入為高電平,S閉合后,P1。0輸入為低電平。由于按鍵是機械觸點,當機械觸點斷開、閉合時,會有抖動,P1。0輸入端的波形如圖2所示。這種抖動對于人來說是感覺不到的,但對計算機來說,則是完全可以感應(yīng)到的,因為計算機處理的速度是在微秒級,而機械抖動的時間至少是毫秒級,對計算機而言,這已是一個“漫長”的時間了。前面我們講到中斷時曾有個問題,就是說按鍵有時靈,有時不靈,其實就是這個原因,你只按了一次按鍵,可是計算機卻已執(zhí)行了多次中斷的過程,如果執(zhí)行的次數(shù)正好是奇數(shù)次,那么結(jié)果正如你所料,如果執(zhí)行的次數(shù)是偶數(shù)次,那就不對了。為使CPU能正確地讀出P1口的狀態(tài),對每一次按鍵只作一次響應(yīng),就必須考慮如何去除抖動,常用的去抖動的方法有兩種:硬件方法和軟件方法。單片機中常用軟件法,因此,對于硬件方法我們不介紹。軟件法其實很簡單,就是在單片機獲得P1。0口為低的信息后,不是立即認定S1已被按下,而是延時10毫秒或更長一些時間后再次檢測P1。0口,如果仍為低,說明S1的確按下了,這實際上是避開了按鍵按下時的抖動時間。而在檢測到按鍵釋放后(P1。0為高)再延時5-10個毫秒,消除后沿的抖動,然后再對鍵值處理。不過一般情況下,我們通常不對按鍵釋放的后沿進行處理,實踐證明,也能滿足一定的要求。當然,實際應(yīng)用中,對按鍵的要求也是千差萬別,要根據(jù)不同的需要來編制處理程序,但以上是消除鍵抖動的原則。2.2.2鍵盤與單片機的連接:圖2—4鍵盤單片機的與連接1、通過1/0口連接。將每個按鍵的一端接到單片機的I/O口,另一端接地,這是最簡單的方法,如圖3所示是實驗板上按鍵的接法,四個按鍵分別接到P3.2、P3.3、P3.4和P3.5。對于這種鍵各程序可以采用不斷查詢的方法,功能就是:檢測是否有鍵閉合,如有鍵閉合,則去除鍵抖動,判斷鍵號并轉(zhuǎn)入相應(yīng)的鍵處理。下面給出一個例程。其功能很簡單,四個鍵定義如下:P3.2:開始,按此鍵則燈開始流動(由上而下)P3.3:停止,按此鍵則停止流動,所有燈為暗P3.4:上,按此鍵則燈由上向下流動P3.5:下,按此鍵則燈由下向上流動UpDownEQU00H;上下行標志StartEndEQU01H;起動及停止標志LAMPCODEEQU21H;存放流動的數(shù)據(jù)代碼ORG0000HAJMPMAINORG30HMAIN:MOVSP,#5FHMOVP1,#0FFHCLRUpDown;啟動時處于向上的狀態(tài)CLRStartEnd;啟動時處于停止狀態(tài)MOVLAMPCODE,#0FEH;單燈流動的代碼LOOP:ACALLKEY;調(diào)用鍵盤程序JNBF0,LNEXT;如果無鍵按下,則繼續(xù)ACALLKEYPROC;否則調(diào)用鍵盤處理程序LNEXT:ACALLLAMP;調(diào)用燈顯示程序AJMPLOOP;反復(fù)循環(huán),主程序到此結(jié)束;DELAY:MOVR7,#100D1:MOVR6,#100DJNZR6,$DJNZR7,D1RET;延時程序,鍵盤處理中調(diào)用KEYPROC:MOVA,B;從B寄存器中獲取鍵值JBACC.2,KeyStart;分析鍵的代碼,某位被按下,則該位為1(因為在鍵盤程序中已取反)JBACC.3,KeyOverJBACC.4,KeyUpJBACC.5,KeyDownAJMPKEY_RETKeyStart:SETBStartEnd;第一個鍵按下后的處理AJMPKEY_RETKeyOver:CLRStartEnd;第二個鍵按下后的處理AJMPKEY_RETKeyUp:SETBUpDown;第三個鍵按下后的處理AJMPKEY_RETKeyDown:CLRUpDown;第四個鍵按下后的處理KEY_RET:RETKEY:CLRF0;清F0,表示無鍵按下。ORLP3,#00111100B;將P3口的接有鍵的四位置1MOVA,P3;取P3的值ORLA,#11000011B;將其余4位置1CPLA;取反JZK_RET;如果為0則一定無鍵按下ACALLDELAY;否則延時去鍵抖ORLP3,#00111100BMOVA,P3ORLA,#11000011BCPLAJZK_RETMOVB,A;確實有鍵按下,將鍵值存入B中SETBF0;設(shè)置有鍵按下的標志K_RET:ORLP3,#00111100B;此處循環(huán)等待鍵的釋放MOVA,P3ORLA,#11000011BCPLAJZK_RET1;直到讀取的數(shù)據(jù)取反后為0說明鍵釋放了,才從鍵盤處理程序中返回AJMPK_RETK_RET1:RET;D500MS:;流水燈的延遲時間PUSHPSWSETBRS0MOVR7,#200D51:MOVR6,#250D52:NOPNOPNOPNOPDJNZR6,D52DJNZR7,D51POPPSWRET;LAMP:JBStartEnd,LampStart;如果StartEnd=1,則啟動MOVP1,#0FFHAJMPLAMPRET;否則關(guān)閉所有顯示,返回LampStart:JBUpDown,LAMPUP;如果UpDown=1,則向上流動MOVA,LAMPCODERLA;實際就是左移位而已MOVLAMPCODE,AMOVP1,ALCALLD500MSAJMPLAMPRETLAMPUP:MOVA,LAMPCODERRA;向下流動實際就是右移MOVLAMPCODE,AMOVP1,ALCALLD500MSLAMPRET:RETEND以上程序功能很簡單,但它演示了一個鍵盤處理程序的基本思路,程序本身很簡單,也不很實用,實際工作中還會有好多要考慮的因素,比如主循環(huán)每次都調(diào)用燈的循環(huán)程序,會造成按鍵反應(yīng)“遲鈍”,而如果一直按著鍵不放,則燈不會再流動,一直要到松開手為止,等等,大家可以仔細考慮一下這些問題,再想想有什么好的解決辦法。2、采用中斷方式:如圖4所示。各個按鍵都接到一個與非上,當有任何一個按鍵按下時,都會使與門輸出為低電平,從而引起單片機的中斷,它的好處是不用在主程序中不斷地循環(huán)查詢,如果有鍵按下,單片機再去做相應(yīng)的處理。1.
矩陣式鍵盤的結(jié)構(gòu)與工作原理:在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,比直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。圖2—5矩陣式鍵盤的結(jié)構(gòu)矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識別及編程方法如下所述。矩陣式鍵盤的按鍵識別方法確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。判斷鍵盤中有無鍵按下將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。判斷閉合鍵所在的位置在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。如上圖所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個上拉電阻到正電源+5V,并把列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線。4根行線和4根列線形成16個相交點。檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。若有鍵被按下,應(yīng)識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:P1.71110P1.61101P1.51011P1.40111在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時的抖動。鍵盤掃描程序:從以上分析得到鍵盤掃描程序的流程圖如圖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鍵盤處理程序就作這么一個簡單的介紹,實際上,鍵盤、顯示處理是很復(fù)雜的,它往往占到一個應(yīng)用程序的大部份代碼,可見其重要性,但說到,這種復(fù)雜并不來自于單片機的本身,而是來自于操作者的習慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當?shù)乃惴ū硎境鰜?,最后再去寫代碼,這樣,才能快速有效地寫好代碼。2.3MCS8951的定時/計數(shù)器的方式控制字2.3.1計數(shù)器與定時器一、計數(shù)概念的引入從選票的統(tǒng)計談起:畫“正”。這就是計數(shù),生活中計數(shù)的例子處處可見。例:錄音機上的計數(shù)器、家里面用的電度表、汽車上的里程表等等,再舉一個工業(yè)生產(chǎn)中的例子,電線生產(chǎn)出來之后要計米,也就是測量長度,怎么測法呢?用尺量?不現(xiàn)實,太長不說,要一邊做一邊量呢,怎么辦呢?行業(yè)中有很巧妙的方法,用一個周長是1米的輪子,將電纜繞在上面一周,由線帶輪轉(zhuǎn),這樣輪轉(zhuǎn)一周不就是線長1米嘛,所以只要記下輪轉(zhuǎn)了多少圈,就可以知道走過的線有多長了。二、計數(shù)器的容量從一個生活中的例子看起:一個水盆在水龍頭下,水龍頭沒關(guān)緊,水一滴滴地滴入盆中。水滴不斷落下,盆的容量是有限的,過一段時間之后,水就會逐漸變滿。錄音機上的計數(shù)器最多只計到999….那么單片機中的計數(shù)器有多大的容量呢?8031單片機中有兩個計數(shù)器,分別稱之為T0和T1,這兩個計數(shù)器分別是由兩個8位的RAM單元組成的,即每個計數(shù)器都是16位的計數(shù)器,最大的計數(shù)量是65536。三、定時8031中的計數(shù)器除了可以作為計數(shù)之用外,還可以用作時鐘,時鐘的用途當然很大,如打鈴器,電視機定時關(guān)機,空調(diào)定時開關(guān)等等,那么計數(shù)器是如何作為定時器來用的呢?一個鬧鐘,我們將它定在1個小時后鬧響,換言之,也可以說是秒針走了(3600)次,所以時間就轉(zhuǎn)化為秒針走的次數(shù),也就是計數(shù)的次數(shù)了,可見,計數(shù)的次數(shù)和時間之間的確十分相關(guān)。那么它們的關(guān)系是什么呢?那就是秒針每一次走動的時間正好是1秒。結(jié)論:只要計數(shù)脈沖的間隔相等,則計數(shù)值就代表了時間的流逝。由此,單片機中的定時器和計數(shù)器是一個東西,只不過計數(shù)器是記錄的外界發(fā)生的事情,而定時器則是由單片機提供一個非常穩(wěn)定的計數(shù)源。那么提供定時器的計數(shù)源是什么呢?看圖1,原來就是由單片機的晶振經(jīng)過12分頻后獲得的一個脈沖源。晶振的頻率當然很準,所以這個計數(shù)脈沖的時間間隔也很準。問題:一個12M的晶振,它提供給計數(shù)器的脈沖時間間隔是多少呢?當然這很容易,就是12M/12等于1M,也就是1個微秒。結(jié)論:計數(shù)脈沖的間隔與晶振有關(guān),12M的晶振,計數(shù)脈沖的間隔是1微秒。四、溢出讓我們再來看水滴的例子,當水不斷落下,盆中的水不斷變滿,最終有一滴水使得盆中的水滿了。這時如果再有一滴水落下,就會發(fā)生什么現(xiàn)象?水會漫出來,用個術(shù)語來講就是“溢出”。水溢出是流到地上,而計數(shù)器溢出后將使得TF0變?yōu)椤?”。至于TF0是什么我們稍后再談。一旦TF0由0變成1,就是產(chǎn)生了變化,產(chǎn)生了變化就會引發(fā)事件,就象定時的時間一到,鬧鐘就會響一樣。至于會引發(fā)什么事件,我們下一課再介紹,現(xiàn)在我們來研究另一個問題:要有多少個計數(shù)脈沖才會使TF0由0變?yōu)?。五、任意定時及計數(shù)的方法剛才已研究過,計數(shù)器的容量是16位,也就是最大的計數(shù)值到65536,因此計數(shù)計到65536就會產(chǎn)生溢出。這個沒有問題,問題是我們現(xiàn)實生活中,經(jīng)常會有少于65536個計數(shù)值的要求,如包裝線上,一打為12瓶,一瓶藥片為100粒,怎么樣來滿足這個要求呢?……提示:如果是一個空的盆要1萬滴水滴進去才會滿,我在開始滴水之前就先放入一勺水,還需要10000滴嘛?對了,我們采用預(yù)置數(shù)的方法,我要計100,那我就先放進65436,再來100個脈沖,不就到了65536了嗎。定時也是如此,每個脈沖是1微秒,則計滿65536個脈沖需時65.536毫秒,但現(xiàn)在我只要10毫秒就可以了,怎么辦?10個毫秒為10000個微秒,所以,只要在計數(shù)器里面放進55536就可以了。在單片機中有兩個特殊功能寄存器與定時/計數(shù)有關(guān),這就是TMOD和TCON。順便說一下,TMOD和TCON是名稱,我們在寫程序時就可以直接用這個名稱來指定它們,當然也可以直接用它們的地址89H和88H來指定它們(其實用名稱也就是直接用地址,匯編軟件幫你翻譯一下而已)。符號地址功能介紹BF0HB寄存器ACCE0H累加器PSWD0H程序狀態(tài)字IPB8H中斷優(yōu)先級控制寄存器P3B0HP3口鎖存器IEA8H中斷允許控制寄存器P2A0HP2口鎖存器SBUF99H串行口鎖存器SCON98H串行口控制寄存器P190HP1口鎖存器TH18DH定時器/計數(shù)器1(高8位)TH08CH定時器/計數(shù)器1(低8位)TL18BH定時器/計數(shù)器0(高8位)TL08AH定時器/計數(shù)器0(低8位)TMOD89A定時器/計數(shù)器方式控制寄存器TCON88H定時器/計數(shù)器控制寄存器DPH83H數(shù)據(jù)地址指針(高8位)DPL82H數(shù)據(jù)地址指針(低8位)SP81H堆棧指針P080HP0口鎖存器PCON87H電源控制寄存器圖1從圖1中我們可以看出,TMOD被分成兩部份,每部份4位。分別用于控制T1和T0,至于這里面是什么意思,我們下面介紹。從圖2中我們可以看出,TCON也被分成兩部份,高4位用于定時/計數(shù)器,低4位則用于中斷(我們暫不管)。而TF1(0)我們上節(jié)課已提到了,當計數(shù)溢出后TF1(0)就由0變?yōu)?。原來TF1(0)在這兒!那么TR0、TR1又是什么呢?看上節(jié)課的圖。 計數(shù)脈沖要進入計數(shù)器還真不容易,有層層關(guān)要通過,最起碼,就是TR0(1)要為1,開關(guān)才能合上,脈沖才能過來。因此,TR0(1)稱之為運行控制位,可用指令SETB來置位以啟動計數(shù)器/定時器運行,用指令CLR來關(guān)閉定時/計數(shù)器的工作,一切盡在自已的掌握中。2.4定時/計數(shù)器的四種工作方式2.4.1工作方式定時器/計數(shù)器的工作方式0稱之為13位定時/計數(shù)方式。它由TL(1/0)的低5位和TH(0/1)的8位構(gòu)成13位的計數(shù)器,此時TL(1/0)的高3位未用。我們用這個圖來討論幾個問題:1.
M1M0:定時/計數(shù)器一共有四種工作方式,就是用M1M0來控制的,2位正好是四種組合。2.
C/T:前面我們說過,定時/計數(shù)器即可作定時用也可計數(shù)用,到底作什么用,由我們根據(jù)需要自行決定,也就是說決定權(quán)在我們編程者。如果C/T為0就是用作定時器(開關(guān)往上打),如果C/T為1就是用作計數(shù)器(開關(guān)往下打)。順便提一下:一個定時/計數(shù)器同一時刻要么作定時用,要么作計數(shù)用,不能同時用,這是個極普通的常識,幾乎沒有教材會提這一點,但很多初學者卻會有此困惑。3.
GATE:看圖,當我們選擇了定時或計數(shù)工作方式后,定時/計數(shù)脈沖卻不一定能到達計數(shù)器端,中間還有一個開關(guān),顯然這個開關(guān)不合上,計數(shù)脈沖就沒法過去,那么開關(guān)什么時候過去呢?有兩種情況(1)GATE=0,分析一下邏輯,GATE非后是1,進入或門,或門總是輸出1,和或門的另一個輸入端INT1無關(guān),在這種情況下,開關(guān)的打開、合上只取決于TR1,只要TR1是1,開關(guān)就合上,計數(shù)脈沖得以暢通無阻,而如果TR1等于0則開關(guān)打開,計數(shù)脈沖無法通過,因此定時/計數(shù)是否工作,只取決于TR1。(2)GATE=1,在此種情況下,計數(shù)脈沖通路上的開關(guān)不僅要由TR1來控制,而且還要受到INT1引腳的控制,只有TR1為1,且INT1引腳也是高電平,開關(guān)才合上,計數(shù)脈沖才得以通過。這個特性可以用來測量一個信號的高電平的寬度,想想看,怎么測?為什么在這種模式下只用13位呢?干嗎不用16位,這是為了和51機的前輩48系列兼容而設(shè)的一種工作模式,如果你覺得用得不順手,那就干脆用第二種工作方式。工作方式1工作方式1是16位的定時/計數(shù)方式,將M1M0設(shè)為01即可,其它特性與工作方式0相同。工作方式2在介紹這種方式之前先讓我們思考一個問題:上一次課我們提到過任意計數(shù)及任意定時的問題,比如我要計1000個數(shù),可是16位的計數(shù)器要計到65536才滿,怎么辦呢?我們討論后得出的辦法是用預(yù)置數(shù),先在計數(shù)器里放上64536,再來1000個脈沖,不就行了嗎?是的,但是計滿了之后我們又該怎么辦呢?要知道,計數(shù)總是不斷重復(fù)的,流水線上計滿后馬上又要開始下一次計數(shù),下一次的計數(shù)還是1000嗎?當計滿并溢出后,計數(shù)器里面的值變成了0(為什么,可以參考前面課程的說明),因此下一次將要計滿65536后才會溢出,這可不符合要求,怎么辦?當然辦法很簡單,就是每次一溢出時執(zhí)行一段程序(這通常是需要的,要不然要溢出干嗎?)可以在這段程序中把預(yù)置數(shù)64536送入計數(shù)器中。所以采用工作方式0或1都要在溢出后做一個重置預(yù)置數(shù)的工作,做工作當然就得要時間,一般來說這點時間不算什么,可是有一些場合我們還是要計較的,所以就有了第三種工作方式自動再裝入預(yù)置數(shù)的工作方式。既然要自動裝入預(yù)置數(shù),那么預(yù)置數(shù)就得放在一個地方,要不然裝什么呢?那么預(yù)置數(shù)放在什么地方呢?它放在T(0/1)的高8位,那么這樣高8位不就不能參與計數(shù)了嗎?是的,在工作方式2,只有低8位參與計數(shù),而高8位不參與計數(shù),用作預(yù)置數(shù)的存放,這樣計數(shù)范圍就小多了,當然做任何事總要付出代價的,關(guān)鍵看值不值,如果我根本不需要計那么多數(shù),那么就可以用這種方式。看圖4,每當計數(shù)溢出,就會打開T(0/1)的高、低8位之間的開關(guān),預(yù)置數(shù)進入高8位。這是由硬件自動完成的,不需要人工干預(yù)。通常這種方式用于波特率發(fā)生器(我們將在串行接口中講解),用于這種用途時,定時器就是為了提供一個時間基準。計數(shù)溢出后不需要做事情,要做的僅僅只有一件,就是重新裝入預(yù)置數(shù),再開始計數(shù),而且中間不要任何延遲,可見這個任務(wù),用方式2來完成是最妙不過了。工作方式3這種方式之下,定時/計數(shù)器0被拆成2個獨立的定時/計數(shù)器來用。其中,TL0可以構(gòu)成8位的定時器或計數(shù)器的工作方式,而TH0則只能作為定時器來用。我們知道作定時、計數(shù)器來用,需要控制,計滿后溢出需要有溢出標記,T0被分成兩個來用,那就要兩套控制、溢出標記了,從何而來呢?TL0還是用原來的T0標記,而TH0則借用T1的標記。如此T1不是無標記、控制可用了嗎?是的。一般情況處,只有在T1以工作方式2運行(當波特率發(fā)生器用)時,才讓T0工作于方式3的。2.5定時器/計數(shù)器的定時/計數(shù)范圍工作方式0:13位定時/計數(shù)方式,因此,最多可以計到2的13次方,也就是8192次。工作方式1:16位定時/計數(shù)方式,因此,最多可以計到2的16次方,也就是65536次。工作方式2和工作方式3,都是8位的定時/計數(shù)方式,因此,最多可以計到2的8次方,也說是256次。預(yù)置值計算:用最大計數(shù)量減去需要的計數(shù)次數(shù)即可。例:流水線上一個包裝是12盒,要求每到12盒就產(chǎn)生一個動作,用單片機的工作方式0來控制,應(yīng)當預(yù)置多大的值呢?對了,就是8192-12=8180。以上是計數(shù),明白了這個道理,定時也是一樣。這在前面的課程已提到,我們不再重復(fù),請參考前面的例子.第三章遙控的鍵盤控制電風扇控制步驟和主要功能如下:搖頭:剛開機系統(tǒng)默認為不搖頭,按下?lián)u頭鍵則開始搖頭。風速調(diào)節(jié)鍵:剛開機系統(tǒng)默認為中速,隨著每次按下則按中→弱→強→中的順序進行風速調(diào)節(jié)。定時:剛開機時系統(tǒng)默認常開,即不定時。此時常態(tài)綠色指示燈亮,若需定時則按下此定時鍵則綠色燈熄滅紅色定時指示燈按定時不同而各個點亮如,剛按下去則按如下順序綠燈亮→1小時紅燈亮→3小時紅燈亮→5小時紅燈亮→8小時紅燈亮綠燈亮循環(huán)。遙控器面板如圖:定時定時搖頭開關(guān)強中弱圖3—1遙控器接收面板圖大致可以設(shè)計如下:強強弱中搖頭指示手動開關(guān)定時指示燈1358紅外線接收孔圖3—2電風扇接收面板開機鍵:和遙控器開關(guān)一樣起待機作用。為了方便和防止遙控器意外失靈在電風扇壁及接收板處還狀有受動按扭其功能和遙控器完全相同。在接收紅外線譯碼的電路圖大致可以擬訂如下:1K1KΩ1KΩ+5v+5v繼電器繼電器六個功能輸出80C51P1.00P1.5VccT0INT0INT1圖3—3接收電路圖個功能鍵的程序段如下:搖頭子程序: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;定時1小時子程序:OENHOUR:CPL,DATA-H0;LCALL,SEND;RET;定時3小時子程序:THREEHOURS:CPL,DATA-H,1;LCALL,SEND;RET;定時5小時子程序:FIVEHOURS:CPL,DATA-H,2;
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 森林公園建設(shè)擋土墻施工勞務(wù)合同
- 軟裝設(shè)計裝修合同
- 城市體育中心運動木地板安裝協(xié)議
- 城市供水膜結(jié)構(gòu)施工合同
- 一般代理權(quán)授予協(xié)議
- 掛靠生產(chǎn)合同范例
- 黃金飾品銷售合同三篇
- 車輛合買協(xié)議書(2篇)
- 脫硝空氣預(yù)熱器技術(shù)協(xié)議書
- 土地協(xié)議合同書范本
- 老年性白內(nèi)障臨床路徑(2021年版)
- 廣東省公共數(shù)據(jù)管理辦法
- 露天礦山危險源辨識與風險評價
- 六年級下冊數(shù)學教案-第3課時 鴿巢問題(練習課)-人教版
- DGJ 08-70-2021 建筑物、構(gòu)筑物拆除技術(shù)標準
- 閥芯設(shè)計計算
- 百草園項目實施方案
- 史學概論考試復(fù)習資料(共13頁)
- 2024年義務(wù)教育國家課程設(shè)置實施方案
- 某乳業(yè)公司價格策略研究
- T∕CIAPS 0012-2021 磷酸鐵鋰電池壽命加速循環(huán)試驗方法
評論
0/150
提交評論