單片機(jī)紅外控制發(fā)射器設(shè)計(jì)【非常詳細(xì)】
《單片機(jī)紅外控制發(fā)射器設(shè)計(jì)【非常詳細(xì)】》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)紅外控制發(fā)射器設(shè)計(jì)【非常詳細(xì)】(47頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單片機(jī)紅外控制發(fā)射器設(shè)計(jì)【詳細(xì)】 摘 要 隨著社會(huì)的發(fā)展、科技的進(jìn)步以及人們生活水平的逐步提高,各種方便于生活的遙控系統(tǒng)開始進(jìn)入了人們的生活。傳統(tǒng)的遙控器采用專用的遙控編碼及解碼集成電路,這種方法雖然制作簡單、容易,但由于功能鍵數(shù)及功能受到特定的限制,只實(shí)用于某一專用電器產(chǎn)品的應(yīng)用,應(yīng)用范圍受到限制。而采用單片機(jī)進(jìn)行遙控系統(tǒng)的應(yīng)用設(shè)計(jì),具有編程靈活多樣、操作碼個(gè)數(shù)可隨便設(shè)定等優(yōu)點(diǎn)。 本設(shè)計(jì)主要應(yīng)用了AT89C2051單片機(jī)作為核心,綜合應(yīng)用了單片機(jī)中斷系統(tǒng)、定時(shí)器、計(jì)數(shù)器等知識(shí),應(yīng)用紅外光的優(yōu)點(diǎn)。遙控操作的不同,遙控發(fā)射器通過對(duì)紅外光發(fā)射頻率的控制來區(qū)別不同的操作。遙控接收器通
2、過對(duì)紅外光接收頻率的識(shí)別,判斷出控制操作,來完成整個(gè)紅外遙控發(fā)射、接收過程。 其優(yōu)點(diǎn)硬件電路簡單,軟件功能完善,性價(jià)比較高等特點(diǎn),具有一定的使用和參考價(jià)值。 關(guān)鍵詞:單片機(jī),紅外遙控,中斷,定時(shí),計(jì)數(shù),頻率 Abstract With the development of our society and the gradual improvement of science and technology, various kinds of help remote control systems have began to enter people’s life. The tradi
3、tional remote controllers adopt special remote control code and decode integrated circuits, though this kind of method is simply and easily, it is only the practical application of some certain special electric equipments because of the counted functional keys is counted and the restricted function,
4、 so the range of application is limited. But the remote controllers which adopt the microprocessors have many advantages such as flexible operating and unceremonious manipulative keys. The design has used AT89C2051 microprocessor as core, integratively apply the interruptive system, timer , counter
5、 ,etc. mainly to design originally and also take the advantage of the infrared light. The remote control launcher distinguishes different operation through the control on frequency of infrared emission of light. The remote control receiver judges control operation by adopting the discerned frequenc
6、y of the received infrared light to finish the whole launching and receiving course. Its advantage is that the hardware circuit is simple, the software is with perfect function, have certain use and reference value Keywords: Microprocessor, Infrared remote control,Interrupt,Timing,Counting,
7、 Frequency 44 目 錄 摘 要 I Abstract II 1 緒 論 1 1.1 單片機(jī)的產(chǎn)生與發(fā)展 1 1.2紅外通信技術(shù)概述 3 1.2.1紅外概述 3 1.2.2 選擇紅外遙控的原因 3 1.2.3紅外的簡單發(fā)射接收原理 3 2.1 設(shè)計(jì)目的與原理 4 2.2單片機(jī)紅外遙控發(fā)射器設(shè)計(jì)原理 4 2.3 單片機(jī)紅外遙控接收器設(shè)計(jì)原理 5 3系統(tǒng)硬件電路設(shè)計(jì) 6 3.1有關(guān)AT89C2051單片機(jī)的介紹 6 3.1.1簡介 6 3.1.2引腳介紹 6 3.1.3 AT89C2051單片機(jī)的主要組成部分 8
8、3.2定時(shí)器/計(jì)數(shù)器 9 3.2.1主要特性 9 3.2.2定時(shí)/計(jì)數(shù)器0和1的控制和狀態(tài)寄存器 9 3.2.3 T0和T1的4種工作方式 11 3.3獨(dú)立式按鍵結(jié)構(gòu) 12 3.4低功耗控制電路 12 3.4.1低功耗的實(shí)現(xiàn)方法 12 3.4.2 掉電保護(hù)和低功耗的設(shè)計(jì) 13 3.5 CPU時(shí)鐘電路 15 3.6 復(fù)位電路 16 3.6.1復(fù)位狀態(tài) 16 3.6.2 復(fù)位電路 17 3.7 紅外發(fā)射電路的設(shè)計(jì) 17 3.8 紅外接收電路的設(shè)計(jì) 19 3.9 完整的系統(tǒng)電路設(shè)計(jì)圖 19 4 系統(tǒng)軟件設(shè)計(jì) 20 4.1遙控發(fā)射器程序設(shè)計(jì) 20 4.1.1程序總體
9、結(jié)構(gòu) 20 4.1.2 偽指令和初始化程序 22 4.1.3鍵盤掃描程序 24 4.1.4 中斷服務(wù)程序 24 4.2 遙控接收器程序設(shè)計(jì) 26 4.2.1 程序總體結(jié)構(gòu) 26 4.2.2 初始化程序 29 4.2.3 計(jì)數(shù)值比較程序 29 4.2.4 定時(shí)器1中斷服務(wù)程序 29 5 總結(jié)與展望 31 致 謝 32 參考文獻(xiàn) 33 附錄1 35 附錄2 36 1 緒 論 1.1 單片機(jī)的產(chǎn)生與發(fā)展
10、 為適應(yīng)社會(huì)發(fā)展的需要,微型計(jì)算機(jī)不斷的更新?lián)Q代,新產(chǎn)品層出不窮。在微型計(jì)算機(jī)的大家族中,幾年來單片微型計(jì)算機(jī)異軍突起,發(fā)展極為迅速。 單片微型計(jì)算機(jī)(Sing-Chip Microcomputer)簡稱單片機(jī)。它是在一塊芯片上集成中央微處理器(Central Processing Unit, CPU)、隨機(jī)存取存儲(chǔ)器(Random Access Memory, RAM)、只讀存儲(chǔ)器(Read Only Memory, ROM)、定時(shí)/計(jì)數(shù)器及I/O(Input/Output)接口電路等部件,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。它的特點(diǎn)是:高性能,高速度,體積小,價(jià)格低廉,穩(wěn)定可靠,應(yīng)用廣泛。 單
11、片機(jī)的發(fā)展史并不長,它的產(chǎn)生和發(fā)展與計(jì)算機(jī)的產(chǎn)生與發(fā)展大體同步,也經(jīng)歷了四個(gè)階段。 第一階段(1970年——1974年):為4位單片機(jī)階段。這種單片機(jī)的特點(diǎn)是:價(jià)格便宜控制功能強(qiáng),片內(nèi)含有多種I/O接口,有的根據(jù)不同用途還配有許多專用接口,有些甚至還包括A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換、聲音合成等電路。豐富的I/O功能大大增強(qiáng)了四位單片機(jī)應(yīng)用與錄音機(jī)、攝像機(jī)、電視機(jī)、電冰箱、洗衣機(jī)、錄像機(jī)和電子玩具等產(chǎn)品。 第二階段(1974年——1978年):為低中檔8位單片機(jī)階段。它是8位單片機(jī)的早期產(chǎn)品,以Inter公司的MCS-48系列單片機(jī)為代表,這個(gè)系列的單片機(jī)在片內(nèi)集成8位CPU、并行I/O口、8位
12、定時(shí)/計(jì)數(shù)器、RAM和ROM等,中斷處理較簡單,片內(nèi)RAM和ROM容量較小,且尋址范圍不大于4KB。 第三階段(1978年——1983年):為高檔8位單片機(jī)階段。這類單片機(jī)在低、中檔基礎(chǔ)上發(fā)展起來的,其性能有明顯提高。以Inter公司的MCS-48系列單片機(jī)為代表,在片內(nèi)增加了串行接口,有多級(jí)中斷處理系統(tǒng),有16位定時(shí)/計(jì)數(shù)器,片內(nèi)RAM、ROM容量增大,信紙范圍可達(dá)64KB,有的片內(nèi)帶有A/D轉(zhuǎn)換接口。這類單片機(jī)功能強(qiáng),應(yīng)用領(lǐng)域廣,是目前各類單片機(jī)中應(yīng)用最多的一種。 第四階段(1983年—現(xiàn)在):為8位單片機(jī)鞏固發(fā)展階段及16位單片機(jī)、32位單片機(jī)推出階段。此階段主要特點(diǎn)是:一方面不斷發(fā)
13、展16位單片機(jī)、32位單片機(jī)及專用單片機(jī)。16位單片機(jī)除CPU為16位外,片內(nèi)RAM為232B,ROM位8KB,片內(nèi)帶有高速輸入輸出部件,多通道10位A/D轉(zhuǎn)換部件,中斷處理為8級(jí),其實(shí)時(shí)處理能力強(qiáng)。今年來,各個(gè)計(jì)算機(jī)廠家已進(jìn)入高性能的32位單片機(jī)研制、生產(chǎn)階段,32位單片機(jī)除了具有更高的集成度外,主振頻率已達(dá)20MHz,這使32位單片機(jī)的數(shù)據(jù)處理速度比16位單片機(jī)快的多,性能比8位、16位單片機(jī)更加優(yōu)越。 需要提到的是,單片機(jī)的發(fā)展雖然經(jīng)歷了4位、8位、16位各階段,但4位、8位、16位單片機(jī)仍各有其應(yīng)用領(lǐng)域,如4位單片機(jī)在一些簡單家用電器、高檔玩具中仍有應(yīng)用,8位單片機(jī)在中、小規(guī)模應(yīng)用場
14、合仍占主流地位,16位單片機(jī)在比較復(fù)雜的控制系統(tǒng)中才有應(yīng)用,32位單片機(jī)因控制領(lǐng)域?qū)λ男枨蟛⒉皇制惹?,所?2位單片機(jī)在我過的應(yīng)用并不多。 正是由于單片機(jī)具有上述顯著的特點(diǎn),使單片機(jī)的應(yīng)用范圍日益擴(kuò)大。單片機(jī)的應(yīng)用打破了人們傳統(tǒng)設(shè)計(jì)思想,原來很多用模擬電路、脈沖數(shù)字電路和邏輯部件來實(shí)現(xiàn)的功能,現(xiàn)在均可以使用單片機(jī),使用軟件來實(shí)現(xiàn)。使用單片機(jī)具有體積小、可靠性高、性能價(jià)格比高和容易產(chǎn)品化的優(yōu)點(diǎn)。 單片機(jī)應(yīng)用的主要領(lǐng)域有以下幾點(diǎn)。 (1) 智能化儀器儀表。用單片機(jī)改造原有的測(cè)量、控制儀表,使儀器儀表數(shù)字化、智能化、多功能化和微型化,并使長期以來測(cè)量儀表中的誤差修正和線性化處理等難題迎刃而
15、解。有單片機(jī)構(gòu)成的智能儀表,集測(cè)量、處理控制功能于一身,從而賦予測(cè)量儀表以嶄新的面貌,是儀器儀表更新?lián)Q代的標(biāo)志。 (2) 機(jī)電一體化產(chǎn)品。機(jī)電一體化是機(jī)械工業(yè)發(fā)展的方向,機(jī)電一體化是指集機(jī)械技術(shù)、微電子技術(shù)和計(jì)算機(jī)技術(shù)于一體,具有智能化特征的機(jī)電產(chǎn)品。單片機(jī)的出現(xiàn)促進(jìn)了機(jī)電一體化的發(fā)展,它作為機(jī)電產(chǎn)品中的控制器,使傳統(tǒng)的機(jī)械產(chǎn)品結(jié)構(gòu)簡單化、控制智能化,構(gòu)成了新一代機(jī)電一體化產(chǎn)品。例如,在電傳打字機(jī)中,由于采用了單片機(jī)而取代了近千個(gè)機(jī)械部件。 (3) 測(cè)控系統(tǒng)。用單片機(jī)可以構(gòu)成各種工業(yè)控制系統(tǒng)、自適應(yīng)控制系統(tǒng)和數(shù)據(jù)采集系統(tǒng)。例如,溫度、濕度的自動(dòng)控制、鍋爐燃燒的自動(dòng)控制、電鍍生產(chǎn)線的自動(dòng)控制
16、和包裝生產(chǎn)線的自動(dòng)控制等。 (4) 計(jì)算機(jī)網(wǎng)絡(luò)及通信技術(shù)。高檔單片機(jī)集成有通信接口,位單片機(jī)在計(jì)算機(jī)網(wǎng)絡(luò)與通信設(shè)備中的應(yīng)用提供了良好的條件。例如,用MCS-51系列單片機(jī)控制的串行自動(dòng)呼叫應(yīng)答系統(tǒng)、列車無線通信系統(tǒng)、和無線遙控系統(tǒng)等 (5) 家用電器。由于單片機(jī)的價(jià)格低廉、體積小、邏輯判斷的控制功能強(qiáng),且內(nèi)部具有定時(shí)/計(jì)數(shù)器,所以廣泛應(yīng)用于家用設(shè)備??傊?,單片機(jī)將使人類的生活更加方便舒適、豐富多彩。[1] 1.2紅外通信技術(shù)概述 1.2.1紅外概述 從光學(xué)的角度而言,紅外是頻率低于紅色光的不可見光,的無線光譜的整個(gè)頻率中占有很小一個(gè)頻率段,波長為0.75—100微秒之間,其
17、中0.75—3微秒之間的紅外光稱為近紅外,3—30微秒之間的紅外光稱為中紅外,30—100微秒之間的稱為遠(yuǎn)紅外。紅外光就其性質(zhì)而言很簡單,與普通光線的頻率特性沒有很大的區(qū)別,但是,由于任何有熱量的物體均有能量產(chǎn)生,所以紅外的利用非常廣泛,而且不可取代,能否檢測(cè)紅外、能測(cè)到多少紅外或者紅外檢測(cè)的技術(shù)是否可以應(yīng)用于任何自然的或想象的場合是紅外應(yīng)用技術(shù)的關(guān)鍵。[2] 當(dāng)今紅外技術(shù)的一個(gè)重要分支是紅外通信技術(shù)的應(yīng)用,這個(gè)應(yīng)用的發(fā)展非常迅速,尤其是紅外通信應(yīng)用于計(jì)算機(jī)設(shè)備中,近幾年的發(fā)展已經(jīng)表現(xiàn)出其非常成熟的特性[3]。 1.2.2 選擇紅外遙控的原因 無線遙控方式可分為無線電波
18、式、聲控式、超聲波式和紅外線式。由于無線電式容易對(duì)其它電視機(jī)和無線電通訊設(shè)備造成干擾,而且,系統(tǒng)本身的抗干擾性能也很差,誤動(dòng)作多,所以未能大量使用。超聲波式頻帶較窄,易受噪聲干擾,系統(tǒng)抗干擾能力差以及聲控式識(shí)別正確率低,難度大而未能大量采用。紅外遙控方式是以紅外線作為載體來傳送控制信息的,同時(shí)隨著電子技術(shù)的發(fā)展,單片機(jī)的出現(xiàn),催生了數(shù)字編碼方式的紅外遙控系統(tǒng)的快速發(fā)展。另外,紅外遙控具有很多的優(yōu)點(diǎn),例如紅外線發(fā)射裝置采用紅外發(fā)光二極管,遙控發(fā)射器易于小型化且價(jià)格低廉;采用數(shù)字信號(hào)編碼和二次調(diào)制方式,不僅可以實(shí)現(xiàn)多路信息的控制,增加遙控功能,提高信號(hào)傳輸?shù)目垢蓴_性,減少誤動(dòng)作,而且功率消耗低;紅
19、外線不會(huì)向室外泄露,不會(huì)產(chǎn)生信號(hào)串?dāng)_;反應(yīng)速度快、傳輸效率高、工作穩(wěn)定可靠等。所以現(xiàn)在很多無線遙控方式都采用紅外遙控方式。[4] 1.2.3紅外的簡單發(fā)射接收原理 在發(fā)射端,輸入信號(hào)經(jīng)放大后送入紅外發(fā)射管發(fā)射,在接收端,接收管收到紅外信號(hào)后,由放大器放大處理后還原成信號(hào),這就是紅外的簡單發(fā)射接收原理。[5] 2 系統(tǒng)設(shè)計(jì)方案論證 2.1 設(shè)計(jì)目的與原理 目前市場上一般采用的遙控編碼及解碼集成電路。此方案具有制作簡單、容易等特點(diǎn),但由于功能鍵數(shù)及功能受到特定的限制,只適合用某一專用電器產(chǎn)品的應(yīng)用,應(yīng)用范圍受到限制。而采用單片機(jī)進(jìn)行遙控系統(tǒng)的應(yīng)用設(shè)計(jì),具有編程靈活多
20、樣、操作碼個(gè)數(shù)可隨意設(shè)定等優(yōu)點(diǎn)[6]。本單片機(jī)遙控應(yīng)用系統(tǒng)采用紅外線發(fā)射頻率的不同,來識(shí)別不同的遙控功能。當(dāng)我們按下某一個(gè)按鍵的時(shí)候,由單片機(jī)識(shí)別出該按鍵后,由CPU向接有紅外發(fā)射管的端口發(fā)射一定頻率的脈沖,該脈沖與38KHz左右的載波脈沖進(jìn)行調(diào)制,然后將已調(diào)制的脈沖進(jìn)行緩沖放大,激勵(lì)紅外發(fā)光二極管將電能轉(zhuǎn)化為光能,使得紅外發(fā)光二極管發(fā)射出一定頻率的紅外線[7],當(dāng)接收控制系統(tǒng)接收到該紅外光后,由單片機(jī)內(nèi)定時(shí)/計(jì)數(shù)器得到該紅外光的頻率,然后將該頻率送往CPU,由CPU對(duì)該信號(hào)進(jìn)行反編碼,識(shí)別出控制信號(hào),從而對(duì)控制電路實(shí)施控制功能。完成整個(gè)遙控功能[8] 2.2單片機(jī)紅外遙控發(fā)射器設(shè)計(jì)原理
21、單片機(jī)紅外遙控發(fā)射器主要有單片機(jī)、行列式鍵盤、低功耗空閑方式控制電路、紅外管發(fā)射電路以及單片機(jī)的一些電源、復(fù)位、震蕩子電路組成[9]。 單片機(jī)不工作時(shí)一直處于低功耗狀態(tài),采用了空閑節(jié)電工作方式。當(dāng)遙控器的某一按鍵被按下以后,外部中斷1產(chǎn)生中斷,喚醒單片機(jī)進(jìn)入工作狀態(tài),查詢鍵盤按下的是哪一個(gè)按鍵,當(dāng)確認(rèn)按鍵后,控制軟件啟動(dòng)定時(shí)器T0、T1,T1作為發(fā)射時(shí)間控制器,T0作為紅外線發(fā)射頻率控制器,T0定時(shí)溢出時(shí)中斷程序使紅外管接口電平反轉(zhuǎn)一次,寫入定時(shí)器的初值不同,在輸出端口就得到不同的發(fā)射頻率。T1定時(shí)溢出時(shí)中斷程序關(guān)閉關(guān)閉T0定時(shí)器,停止紅外線發(fā)射[10]。其設(shè)計(jì)原理框圖如下。
22、 AT89C2051 單片機(jī) +5V電源 行列式鍵盤 低功耗空閑方式 控制電路 紅外管發(fā)射電路 圖2.1 單片機(jī)遙控發(fā)射器設(shè)計(jì)原理圖 2.3 單片機(jī)紅外遙控接收器設(shè)計(jì)原理 單片機(jī)紅外遙控接收器主要有單片機(jī)、紅外遙控接收電路、狀態(tài)指示電路、控制電路以及單片機(jī)的一些外圍電路組成。 AT89C2051 單片機(jī) 紅外接收電路 狀態(tài)指示電路 控制電路 +5V電源 利用單片機(jī)中的T0作為紅外脈沖計(jì)數(shù)器,T1作為計(jì)數(shù)時(shí)間控制器。
23、當(dāng)電路中紅外接收管接收到第一個(gè)紅外脈沖時(shí),外部中斷1被觸發(fā),啟動(dòng)計(jì)數(shù)器T0和定時(shí)器T1。定時(shí)溢出,中斷程序關(guān)閉計(jì)數(shù)器T0,讀入計(jì)數(shù)值并進(jìn)行判斷,確定操作對(duì)象(遙控按鍵)對(duì)其進(jìn)行反轉(zhuǎn)操作,控制電路對(duì)所控制的負(fù)載進(jìn)行開或關(guān)[11]。還可對(duì)接收電路實(shí)行上鎖功能,對(duì)控制電路上鎖后,遙控器不能對(duì)控制電路實(shí)施遙控功能[8]。其設(shè)計(jì)原理方框圖如下: 圖2.2 紅外接收遙控電路原理框圖 3系統(tǒng)硬件電路設(shè)計(jì) 3.1有關(guān)AT89C2051單片機(jī)的介紹 3.1.1簡介 AT89C2051是一個(gè)低電壓,高性能CMOS 8位單片機(jī)。片內(nèi)含有2KB可反復(fù)擦寫的只讀存儲(chǔ)
24、器(EPROM)和128B的隨機(jī)存取存儲(chǔ)器(RAM),器件采用ATMEL的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)器,功能強(qiáng)大。 AT89C2051只有20個(gè)雙向輸入/輸出(I/O)端口,其中P1是完整的8位雙向I/O口,兩個(gè)外中斷,2個(gè)16位可編程定時(shí)/計(jì)數(shù)器,兩個(gè)全雙向串行通信口,一個(gè)模擬比較放大器 此外,AT89C2051的時(shí)鐘頻率可為零,即具備可用軟件設(shè)置的睡眠省電功能,系統(tǒng)的喚醒方式有RAM、定時(shí)/計(jì)數(shù)器、串行口和外中斷口,系統(tǒng)喚醒后即進(jìn)入工作狀態(tài),省電模式中,片內(nèi)RAM將被凍結(jié),時(shí)鐘停止震蕩,所有功能停止工作,直至系統(tǒng)
25、被硬件系統(tǒng)復(fù)位方可繼續(xù)工作 [12] 。 3.1.2引腳介紹 Vcc:接+5V電源正端 GND:接+5V電源地端 P1.0—P1.7:完整的雙向串行通信接口,P1.0與P1.1還有第二種功能 P3.0—P3.7:除P3.6外,雙向I/O口,除P3.7外,均有第二功能,第二功能與MCS-51系列單片機(jī)基本相同 XTAL1:震蕩器反向放大器內(nèi)部工作時(shí)鐘輸入端 XTAL2:震蕩器反向放大器的輸出端 RST:復(fù)位引腳,震蕩器工作時(shí),該引腳上兩個(gè)機(jī)器周期的高電平復(fù)位[10] 圖3.1 AT89C
26、2051引腳圖 主要功能特性 ●兼容MCS51指令系統(tǒng) ●15個(gè)雙向I/O口 ●兩個(gè)16位可編成定時(shí)/計(jì)數(shù)器 ●時(shí)鐘頻率0—24MHz ●兩個(gè)外部中斷源 ●可直接驅(qū)動(dòng)LED ●低功耗睡眠功能 ●可編程URRL通道 ●2KB可反復(fù)擦寫Flash ROM ●6個(gè)中斷源 ●2.7—6.0V寬工作電壓范圍 ●128*8位內(nèi)部RAM ●兩個(gè)串行中斷 ●兩級(jí)加密位 ●內(nèi)置一個(gè)模擬比較放大器 ●軟件設(shè)置睡眠和喚醒功能 3.1.3 AT89C2051單片機(jī)的主要組成部分 1.CPU CPU是單片機(jī)的核心部分,他的作用是讀入和分析每條指令,根據(jù)每條指令
27、的功能要求,控制各個(gè)部件執(zhí)行相應(yīng)的操作。AT89C2051單片機(jī)內(nèi)部有一個(gè)8位的CPU,它是由運(yùn)算器和控制器組成[13]。 A.運(yùn)算器 運(yùn)算器主要包括算術(shù)、邏輯運(yùn)算部件ALU、累加器ACC、寄存器B、暫存器YMP1、YMP2、程序狀態(tài)寄存器PSW、布爾處理器及十進(jìn)制調(diào)整電路等。 運(yùn)算器主要用來實(shí)現(xiàn)數(shù)據(jù)的傳送、數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算和位變量處理等。 B.控制器 控制器包括時(shí)鐘發(fā)生器、定時(shí)控制邏輯、指令寄存器指令譯碼器、程序計(jì)數(shù)器PC、程序地址寄存器、數(shù)據(jù)指針寄存器DPTR和堆棧指針SP等。 控制器是用來統(tǒng)一指揮和控制計(jì)算機(jī)進(jìn)行工作的部件。它的功能是從程序存儲(chǔ)器中提取指令,送到指令寄
28、存器,再進(jìn)入指令譯碼器進(jìn)行譯碼,并通過定時(shí)和控制電路,在規(guī)定的時(shí)刻發(fā)出各種操作所需要的全部內(nèi)部控制信息及CPU外部所需要的控制信號(hào),如ALE、PSEN、RD、WR等,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的各種操作。 2.存儲(chǔ)器 A.程序存儲(chǔ)器 程序存儲(chǔ)器用于存放編好的程序、表格和常數(shù)。CPU的控制器專門提供一個(gè)控制信號(hào)EA來區(qū)分內(nèi)部ROM和外部ROM的公用地址區(qū):當(dāng)EA為無效電平時(shí),單片機(jī)從片內(nèi)ROM的2KB存儲(chǔ)器取指令,而當(dāng)指令超過07FFH后,就自動(dòng)轉(zhuǎn)向片外ROM取指令;當(dāng)EA為有效電平時(shí),CPU只從片外ROM取指令。 在程序存儲(chǔ)器中,有6個(gè)單元具有特殊存儲(chǔ)功能。 0000H—000
29、2H:是所有執(zhí)行程序的入口地址,2051單片機(jī)復(fù)位后,CPU總是從0000H單元開始執(zhí)行程序。 0003H:外部中斷0入口。 000BH:定時(shí)/計(jì)數(shù)器0溢出中斷入口。 0013H:外部中斷1入口。 001BH:定時(shí)/計(jì)數(shù)器1溢出中斷入口。 0023H:串行口中斷入口。 使用時(shí),通常在這些入口地址處存放一條絕對(duì)跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷程序起始地址,或者從0000H起始地址跳轉(zhuǎn)到用戶設(shè)計(jì)的初始程序上。 B.?dāng)?shù)據(jù)存儲(chǔ)器 片內(nèi)數(shù)據(jù)存儲(chǔ)器的8位地址共可尋址256B單元,2051單片機(jī)將其分為兩個(gè)區(qū):00H—FFH的128B單元為片內(nèi)RAM區(qū),可以讀、寫任何數(shù)據(jù);80H—FFH
30、的高128B單元為專用寄存器區(qū)。在低128B的內(nèi)部RAM中,前32個(gè)單元(地址為00H—1FH)為通用工作寄存器區(qū),共分為四組(寄存器0組、1組、2組、3組),每組8個(gè)工作寄存器由R0—R7組成,共占32個(gè) 單元。選用哪一組由程序狀態(tài)字PSW中的RS1、RS0 這兩位的設(shè)置決定,若程序并不需要四個(gè)4組工作寄存器,那么剩下的工作寄存器可作一般的存儲(chǔ)器來使用。CPU在復(fù)位時(shí)自動(dòng)選中0組20H—2FH的16個(gè)單元為位尋址區(qū),每個(gè)單元8位,共128位。其位尋址范圍為00H—7FH。位尋址區(qū)的每一位都可當(dāng)作軟件觸發(fā)器,由程序直接進(jìn)行處理。程序中通常把各種程序狀態(tài)標(biāo)志、位控變量設(shè)在位尋址區(qū)。同樣,位尋址區(qū)
31、的RAM單元也可作為一般的數(shù)據(jù)存儲(chǔ)器按字節(jié)單元使用。 3.特殊功能寄存器 A.累加器A 累加器A是一個(gè)最常用的8位特殊功能寄存器,它既可用于存放操作數(shù), 也可用于存放運(yùn)算的中間結(jié)果。大部分單操作數(shù)指令的操作數(shù)就取自累加器。用ACC表示A的符號(hào)地址。 B.寄存器B 寄存器B是一個(gè)8位寄存器,主要用于乘法和除法的運(yùn)算。乘法運(yùn)算時(shí),B 中存放乘法,乘法操作后,乘積的高8位又存于B中;除法運(yùn)算時(shí),B中存放除數(shù),出發(fā)操作后,B中又存放余數(shù)。在其他指令中,寄存器B可作為一般的寄存器使用,用于暫存數(shù)據(jù)[14]。 3.2定時(shí)器/計(jì)數(shù)器 3.2.1主要特性 (1) AT89C2051單片機(jī)有
32、兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器——定時(shí)器/計(jì)數(shù)器0與定時(shí)器/計(jì)數(shù)器1,可有程序選擇作為定時(shí)器用或作為計(jì)數(shù)器用,定時(shí)時(shí)間或記數(shù)值也可由程序設(shè)定。 (2) 每一個(gè)定時(shí)器/計(jì)數(shù)器具有4種工作方式,可用程序選擇。 (3) 任一定時(shí)器/計(jì)數(shù)器在定時(shí)時(shí)間到或記數(shù)值到時(shí),可有程序安排產(chǎn)生中斷請(qǐng)求信號(hào)或不產(chǎn)生中斷請(qǐng)求信號(hào)[15]。 3.2.2定時(shí)/計(jì)數(shù)器0和1的控制和狀態(tài)寄存器 特殊功能寄存器TMOD和TCON分別是定時(shí)/計(jì)數(shù)器0和1的控制和狀態(tài)寄存器,用于控制和確定各定時(shí)/計(jì)數(shù)器的功能和工作模式。 1.模式控制寄存器TMOD TMOD用于控制T0和T1的工作方式和4種工作模式。其中低4位用于控制T0
33、,高4位用于控制T1。其格式如下: GATE C/T非 M1 M0 GATE C/T非 M1 M0 GATE位:門控位。 當(dāng)GATE=1時(shí),只有INTO非或INT1非引腳為高電平且TR0或TR1置1時(shí),相應(yīng)的定時(shí)/計(jì)數(shù)器才被選通工作;當(dāng)GATE=0,則只要TR0和TR1置1,定時(shí)/計(jì)數(shù)器就被選通,而不管INT0非或INT1非的電平是高還是低 C/T非位:計(jì)數(shù)/定時(shí)功能選擇位。 C/T非=0,設(shè)置為定時(shí)器方式,計(jì)數(shù)器的輸入是內(nèi)部時(shí)鐘脈沖,其周期等于機(jī)器周期。 C/T非=1,設(shè)置為計(jì)數(shù)器方式,計(jì)數(shù)器的輸入來自T0(P3.4)或T1(P3.5)端的
34、外部脈沖。 M1、M0位:工作模式選擇位。2位可形成4中編碼,對(duì)應(yīng)4種工作模式,見下表: M1 M0 功 能 描 述 00 方式0:13位定時(shí)器/計(jì)數(shù)器 01 方式1:16位定時(shí)器/計(jì)數(shù)器 10 方式2:具有自動(dòng)重裝初值的8位定時(shí)器/計(jì)數(shù)器 11 方式3:定時(shí)/計(jì)數(shù)器0分為兩個(gè)8位定時(shí)/計(jì)數(shù)器,定時(shí)/計(jì)數(shù)器1在此方式無實(shí)用意義 2. 控制寄存器TCON TCON用來控制T0和T1的啟、停,并給出相應(yīng)的控制狀態(tài),高4位用于控制定時(shí)器0、1的運(yùn)行;低4位用于控制外部中斷。格式如下: TF1 TR1 TF0 TR0 I
35、E1 IT1 IE0 IT0 TF1:定時(shí)器1溢出標(biāo)志。 當(dāng)定時(shí)器1溢出時(shí),由硬件置1。使用查詢方式時(shí),此位做狀態(tài)位供查詢,查詢有效后需由軟件清零;使用中斷方式時(shí),此位做中斷申請(qǐng)標(biāo)志,進(jìn)入中斷服務(wù)后被硬件自動(dòng)清零。 TR1位:定時(shí)器1運(yùn)行控制位。 該位靠軟件置位或清零,置位時(shí),定時(shí)/計(jì)數(shù)器接通工作,清零時(shí),停止工作。 TF0位:定時(shí)器溢出標(biāo)志位,其功能和操作情況類同于TF1。 TR0位:定時(shí)器0運(yùn)行控制位,其功能和操作類同于TR1。 IE位:外部中斷請(qǐng)求標(biāo)志位。 當(dāng)CPU采樣到INT0非(或INT1非)端出現(xiàn)有效中斷請(qǐng)求時(shí),IE0(或IE1)由硬件置1,中斷響應(yīng)完
36、成后轉(zhuǎn)向中斷服務(wù)時(shí),再由硬件自動(dòng)清零。 IT位:外部中斷請(qǐng)求出發(fā)方式位。 IT0(IT1)=1為脈沖觸發(fā)方式,后負(fù)跳有效。 IT0(IT1)=0為電平觸發(fā)方式,低電平有效。 3.定時(shí)/計(jì)數(shù)器的初始化 AT89C2051單片機(jī)的定時(shí)/計(jì)數(shù)器是可編程的,因此,在進(jìn)行定時(shí)或計(jì)數(shù)之前也要用程序進(jìn)行初始化。初始化一般應(yīng)包括以下幾個(gè)步驟: (1) 對(duì)TMOD寄存器賦值,以確定定時(shí)器的工作模式; (2) 置定時(shí)/計(jì)數(shù)器初值,直接將初值寫入寄存器的TH0,TL0或TH1,TL1; (3) 根據(jù)需要,對(duì)寄存器IE置初值,開放定時(shí)器中斷; (4) 對(duì)TCON寄存器中的TR0或TR1置位,啟動(dòng)定時(shí)
37、/計(jì)數(shù)器,置位以后,計(jì)數(shù)器即按規(guī)定的工作模式和初值進(jìn)行計(jì)數(shù)或開始定時(shí)。 在初始化過程中,要置入定時(shí)/計(jì)數(shù)器的初值,這時(shí)要做一些計(jì)算。由于計(jì)數(shù)器是加法計(jì)數(shù),并在溢出時(shí)申請(qǐng)中斷,因此不能直接輸入所需的計(jì)數(shù)值,而是要從計(jì)數(shù)最大值倒退回去一個(gè)計(jì)數(shù)值才是應(yīng)置入的初值。設(shè)計(jì)數(shù)器的最大值為M(在不同的工作模式中,M可以為8192,65536,256),則置入的初值可以這樣來計(jì)算。 計(jì)數(shù)方式時(shí) X=M—記數(shù)值 定時(shí)方式時(shí) (M—X)T=定時(shí)值 所以 X=M—定時(shí)值/T 式中,T為計(jì)數(shù)周期,是單片機(jī)的機(jī)器
38、周期[13]。 3.2.3 T0和T1的4種工作方式 方式0:13位定時(shí)/計(jì)數(shù)器,TL1(或TL0)的低5位和TH1(或TH0)的8位構(gòu)成,TL中的高3位棄之未用。當(dāng)TL的低5位記數(shù)溢出時(shí),向TH進(jìn)位,而全部13位計(jì)數(shù)器溢出時(shí)使計(jì)數(shù)器回零,并使溢出標(biāo)志TF置1,向CPU發(fā)出中斷請(qǐng)求。 方式1:16位定時(shí)/計(jì)數(shù)器,其邏輯電路和工作情況與方式0幾乎完全相同,唯一的差別就是方式1中TL的高3位也參與了計(jì)數(shù)。 方式2:把TL配置成一個(gè)可以自動(dòng)重裝載的8位定時(shí)/計(jì)數(shù)器 方式3:僅對(duì)T0有意義,將16位定時(shí)/計(jì)數(shù)器分成兩個(gè)互相獨(dú)立的8位定時(shí)/計(jì)數(shù)器TL和TH, 3.3獨(dú)立式按鍵結(jié)構(gòu) 獨(dú)立
39、式按鍵是指直接用I/O線構(gòu)成的單個(gè)按鍵電路,每個(gè)獨(dú)立式按鍵占有一根I/O口線,每根I/O口線上的按鍵的工作狀態(tài)不會(huì)影響其他I/O口線的工作狀態(tài),其結(jié)構(gòu)簡單,但I(xiàn)/O口線浪費(fèi)較大[16]。 獨(dú)立式按鍵配置靈活,軟件結(jié)構(gòu)簡單,上拉電阻保證了按鍵斷開時(shí),I/O口線有確定的高電平,其電路原理圖如下 圖3.2 獨(dú)立式按鍵電路 3.4低功耗控制電路 3.4.1低功耗的實(shí)現(xiàn)方法 AT89C2051單片機(jī)的CPU有兩種節(jié)電工作方式即空閑方式和掉電方式,遙控器采用了空閑節(jié)電方式。當(dāng)CPU執(zhí)行完IDL=1(PCON.0=1)指令后,系統(tǒng)進(jìn)入空閑
40、工作方式 ,這時(shí)內(nèi)部時(shí)鐘不向CPU提供,而只供給中斷、串行口、定時(shí)器部分。遙控器退出低功耗空閑方式電路由與門來實(shí)現(xiàn)。當(dāng)有鍵按下時(shí),由與門觸發(fā)外部中斷1發(fā)生中斷,單片機(jī)退出空閑工作方式,進(jìn)入鍵盤和紅外發(fā)射程序,結(jié)束后又進(jìn)入低功耗空閑方式待機(jī)。使用過程中單片機(jī)基本上都處于空閑工作方式,功耗相當(dāng)?shù)停瑥亩鵀槭褂秒姵仉娫刺峁┍U稀? 3.4.2 掉電保護(hù)和低功耗的設(shè)計(jì) 1.掉電保護(hù) 在單片機(jī)工作時(shí),供電電源如果發(fā)生停電或瞬間停電,將會(huì)使單片機(jī)停止工作。待電源恢復(fù)時(shí),單片機(jī)重新進(jìn)入復(fù)位狀態(tài),停電前RAM中的數(shù)據(jù)全部丟失,這種現(xiàn)象對(duì)于一些重要的單片機(jī)應(yīng)用系統(tǒng)是不允許的。在這種情況下,需要進(jìn)行掉電保護(hù)
41、處理。掉電保護(hù)具體操作過程如下。 單片機(jī)應(yīng)用系統(tǒng)的電壓檢測(cè)電路檢測(cè)到電源電壓下降時(shí),觸發(fā)外部中斷(INT0或INT1),在中斷服務(wù)子程序中將外部RAM中的有用數(shù)據(jù)送入內(nèi)部RAM保存。因單片機(jī)電源入口的濾波電容的儲(chǔ)能作用,可以有足夠的時(shí)間來完成中斷操作。備用電源自切換電路屬于單片機(jī)內(nèi)部電路。它由兩個(gè)二極管組成,當(dāng)電源電壓高于VPD引腳的備用電源電壓時(shí),VD1導(dǎo)通,VD2截止,單片機(jī)由電源供電;當(dāng)電源電壓降到比備用電源電壓低時(shí),二極管VD1截止,VD2導(dǎo)通,單片機(jī)由備用電源供電[15]。 備用電源只為單片機(jī)內(nèi)部RAM和專用寄存器提供維持電流,這時(shí)單片機(jī)外部的全部電路因停電而停止工作,時(shí)鐘電路也
42、停止工作,CPU因無時(shí)鐘也不工作。 當(dāng)電源恢復(fù)時(shí),備用電源還會(huì)繼續(xù)供電一段時(shí)間,大約10ms,以確保外部電路達(dá)到穩(wěn)定狀態(tài)。在結(jié)束掉電保護(hù)狀態(tài)時(shí),首要的工作是將被保護(hù)的數(shù)據(jù)從內(nèi)部RAM中恢復(fù)過來。 當(dāng)用戶檢測(cè)到一個(gè)掉電保護(hù)電路時(shí),立即通過外部中斷輸入線INT0來中斷單片機(jī)現(xiàn)行操作。外部中斷0服務(wù)程序?qū)⒂嘘P(guān)數(shù)據(jù)信息送入片內(nèi)RAM保存,然后向P1.0寫入0,P1.0輸出的這個(gè)低電平觸發(fā)單穩(wěn)態(tài)電路MC755。它輸出的脈寬取決于R、C的數(shù)值及VCC是否以掉電。如果當(dāng)單穩(wěn)態(tài)定時(shí)輸出后,若VCC仍然存在,這是一個(gè)假掉電報(bào)警,并從復(fù)位開始重新操作;若VCC已掉電,則斷電期間由單穩(wěn)態(tài)電路給RESET/VPD
43、供電,維持片內(nèi)RAM處于“餓電流”供電狀態(tài)保存信息,一直維持到VCC恢復(fù)為止。 80C51的掉電保護(hù)過程則不同。當(dāng)電壓檢測(cè)電路檢測(cè)到電源電壓降低時(shí),也觸發(fā)外部中斷,在中斷服務(wù)子程序中,除了要將外部RAM中的有用數(shù)據(jù)保存以外,還要將特殊功能寄存器的有用內(nèi)容保護(hù)起來,然后對(duì)電源控制寄存器PCON進(jìn)行設(shè)置。PCON寄存器的各位定義如下。 D7 D6 D5 D4 D3 D2 D1 D0 SMOD — — — GF1 GF0 PD IDL 其中,SMOD是波特率倍增位,在串行通信中使用。 GF1、
44、GF0:通用標(biāo)志,由軟件置位、復(fù)位。 PD:掉電方式控制位,PD=1,則進(jìn)入掉電方式。 IDL:待機(jī)方式控制位,IDL=1,則進(jìn)入待機(jī)方式。 由軟件將PD置1,就可以使單片機(jī)進(jìn)入掉電保護(hù)狀態(tài)。這時(shí),單片機(jī)的一切工作都停止,只有內(nèi)部RAM和專用寄存器的內(nèi)容被保存。掉電保護(hù)時(shí)的備用電源是通過VCC引腳接入的。當(dāng)電源恢復(fù)正常后,系統(tǒng)要維持10ms的恢復(fù)時(shí)間后才能退出掉電保護(hù)狀態(tài),復(fù)位操作將重新定義專用寄存器,但內(nèi)部RAM的內(nèi)容不變,可將被保護(hù)的內(nèi)容恢復(fù) 圖3.3 掉電保護(hù)電路 2. 低功耗設(shè)計(jì) 在很多情況下,單片機(jī)要工作在供電困難的場合,如野外、井下和空中,對(duì)于便攜式
45、儀器要求用電池供電,這時(shí)都希望單片機(jī)應(yīng)用系統(tǒng)能低供耗運(yùn)行。以CMOS工藝制造的80C31/80C51/87C51型單片機(jī)提供了空閑工作方式。 空閑工作方式(通常也指待機(jī)工作方式)是指CPU在不需要執(zhí)行程序時(shí)停止工作,以取代不停的執(zhí)行空操作或原地踏步等待操作,達(dá)到減小功耗的目的。 空閑工作方式是通過設(shè)置電源控制寄存器PCON中的IDL位來實(shí)現(xiàn)的。 用軟件將IDL位置1,系統(tǒng)進(jìn)入空閑工作方式。這時(shí),送往CPU的時(shí)鐘被封鎖,CPU停止工作,但中斷控制電路、定時(shí)/計(jì)數(shù)器和串行接口繼續(xù)工作,CPU內(nèi)部狀態(tài)如堆棧指針SP、程序計(jì)數(shù)器PC、程序狀態(tài)寄存器PSW、累加器ACC及其他寄存器的狀態(tài)被完全保留
46、下來。 在空閑工作方式下,80C51消耗的電流由正常的24mA將為3mA。 單片機(jī)退出空閑狀態(tài)有如下兩種方法。 第一種是中斷退出。由于空閑方式下,中斷系統(tǒng)還在工作,所以任何中斷的響應(yīng)都可以使IDL位由硬件清零,而退出空閑方式下,單片機(jī)就進(jìn)入中斷服務(wù)程序。 第二種是硬件復(fù)位退出。復(fù)位時(shí),各個(gè)專用寄存器都恢復(fù)默認(rèn)狀態(tài),電源控制寄存器PCON也不例外,復(fù)位使IDL清零,退出空閑工作方式。 MCS—51的掉電保護(hù)也是一種節(jié)電工作方式,它和空閑工作方式一起構(gòu)成了低功耗工作方式。一旦用戶檢測(cè)到掉電發(fā)生,在VCC下降之前寫一個(gè)字節(jié)到PCON,使 PD=1,單片機(jī)進(jìn)入掉電方式。在這種方式下,片內(nèi)震蕩
47、器被封鎖,一切功能都停止,只有片內(nèi)RAM00H—7FH單元的內(nèi)容被保留。 在掉電方式下,Vcc可降至2V,使片內(nèi)RAM處于50微安左右的“餓電流”供電狀態(tài),以最小的耗電保存信息,Vcc恢復(fù)正常之前,不可進(jìn)行復(fù)位;當(dāng)Vcc正常后,硬件復(fù)位10ms即能使單片機(jī)退出掉電方式[17]。 在該電路中,退出空閑工作方式采用中斷的方法。當(dāng)遙控鍵盤上的人任一個(gè)按鍵按下以后,與門輸出即為低電平,觸發(fā)INT1引腳,外部中斷1響應(yīng),使IDL位清零,退出空閑工作方式,恢復(fù)正常狀態(tài)。其硬件電路如下。 圖3.4 低功耗控制電路 3.5 CPU時(shí)鐘電
48、路 時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào)。時(shí)鐘信號(hào)可以有兩種方式產(chǎn)生:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。 1. 內(nèi)部時(shí)鐘方式 2051單片機(jī)有一個(gè)高增益反向放大器,用于構(gòu)成振蕩器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。在XTAL1和XTAL2兩端跨接晶體或陶瓷振蕩器,就構(gòu)成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部時(shí)鐘發(fā)生器,見下圖,外接晶振時(shí),C1、C2值通常選擇為30pF左右;外接陶瓷振蕩器時(shí),C1、C2約為47pF。C1、C2對(duì)頻率有微調(diào)作用,震蕩頻率范圍是1.2—12MHz。為了減少寄生電容,更好的保證振蕩器穩(wěn)定可靠的工作,諧振器和電容應(yīng)盡可能安裝的
49、與單片機(jī)芯片靠近。 內(nèi)部時(shí)鐘發(fā)生器實(shí)質(zhì)上是一個(gè)二分頻的觸發(fā)器,其輸出信號(hào)是單片機(jī)工作所需的時(shí)鐘信號(hào)。 2. 外部時(shí)鐘方式 外部時(shí)鐘方式是采用外部振蕩器,外部振蕩信號(hào)由XTAL2端接入后直接送至內(nèi)部時(shí)鐘發(fā)生器。輸入端XTAL1應(yīng)接地,由于XTAL2端的邏輯電平不是TTL的,故建議外接一個(gè)上拉電阻。 一般情況下,單片機(jī)時(shí)鐘輸入均采用內(nèi)部時(shí)鐘方式,外接一個(gè)震蕩電路,本系統(tǒng)采用內(nèi)部時(shí)鐘方式,晶振采用12MHz,其電路如下。 圖3.5 AT89C2051時(shí)鐘電路 3.6 復(fù)位電路 3.6.1復(fù)位狀態(tài)
50、 計(jì)算機(jī)在啟動(dòng)時(shí),系統(tǒng)進(jìn)入復(fù)位狀態(tài)。在復(fù)位狀態(tài),CPU和系統(tǒng)都處于一個(gè)確定的初始狀態(tài)或成為原始狀態(tài),在這種狀態(tài)下,所有的專用寄存器都賦予默認(rèn)值。其復(fù)位狀態(tài)見下表。 表3.1 復(fù)位狀態(tài)各寄存器初值 專用寄存器 復(fù)位狀態(tài) 專用寄存器 復(fù)位狀態(tài) PC ACC B PSW SP DPTR P0—P3 IP IE 0000H 00H 00H 00H 07H 0000H FFH XXX0 0000B 0XX0 0000B TMOD TCON TH0 TL0 TH1 TL1
51、 SCON SBUF PCON 00H 00H 00H 00H 00H 00H 00H XXXX XXXXB 0XXX 0000B 3.6.2 復(fù)位電路 單片機(jī)復(fù)位電路包括片內(nèi)、片外兩部分,片外復(fù)位電路通過引腳加到內(nèi)部復(fù)位電路上,內(nèi)部復(fù)位電路在每個(gè)機(jī)器周期S5P2對(duì)片外信號(hào)采樣一次,當(dāng)RST引腳上出現(xiàn)連續(xù)兩個(gè)機(jī)器周期的高電平時(shí),單片機(jī)就完成一次復(fù)位。外部復(fù)位電路就是為內(nèi)部復(fù)位電路提供兩個(gè)機(jī)器周期以上的高電平而設(shè)計(jì)的,AT89C2051通常采用上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種方式。 上電復(fù)位電路在通電瞬間,在RC電路充電過程中,RS
52、T端出現(xiàn)正脈沖,從而使單片機(jī)復(fù)位。 按鍵手動(dòng)復(fù)位又分為按鍵電平復(fù)位和按鍵脈沖復(fù)位,按鍵電平復(fù)位是將復(fù)位端通過電阻與Vcc相連,按鍵脈沖復(fù)位是利用RC微分電路產(chǎn)生正脈沖來達(dá)到復(fù)位的目的。 本系統(tǒng)設(shè)計(jì)時(shí)采用的是上電復(fù)位方式,其電路原理圖如下。 3 圖3.6 復(fù)位電路 3.7 紅外發(fā)射電路的設(shè)計(jì) 根據(jù)紅外發(fā)射管本身的物理特性,必須要有載波信號(hào)與即將發(fā)射的信號(hào)相“與”,然后將相“與”后的信號(hào)送發(fā)射管,才能進(jìn)行紅外信號(hào)的發(fā)射傳送,而在頻率為38KHz的載波信號(hào)下,發(fā)射管的性能最好,發(fā)射距離最遠(yuǎn)
53、,所以在硬件設(shè)計(jì)上,本設(shè)計(jì)采用38KHz的晶振產(chǎn)生載波信號(hào),與發(fā)射信號(hào)進(jìn)行邏輯“與”運(yùn)算后,通過三極管的功率驅(qū)動(dòng)到紅外發(fā)光二極管上[18]。 紅外發(fā)送電路由4001MOS或非門38KHz振蕩器,單片機(jī)發(fā)送控制電路和紅外發(fā)送管驅(qū)動(dòng)輸出電路組成,當(dāng)單片機(jī)P3.4口輸出為“0”時(shí),發(fā)射管不發(fā)光,當(dāng)單片機(jī)P3.4口輸出為“1”時(shí),紅外發(fā)送管發(fā)出38KHz調(diào)制紅外線[19]。 具體的發(fā)射波形與電路如下 圖3.7 調(diào)制過程中的波形 圖3.8 紅外發(fā)射電路 3.8 紅外接收電路
54、的設(shè)計(jì) 紅外接收電路專門采用集成電路RPM6938,RPM6938有三個(gè)引腳,一個(gè)接電源一個(gè)接地,另外一個(gè)接信號(hào)端,它集光電轉(zhuǎn)換,解調(diào)和放大于一體[20]。當(dāng)收到38KHz調(diào)制紅外線時(shí),RPM6938輸出為“0”,平時(shí)輸出為“1”。信號(hào)腳接到P3.3和P3.4腳上,當(dāng)RPM6938收到第一個(gè)紅外脈沖時(shí),觸發(fā)INT1產(chǎn)生中斷,使單片機(jī)退出低功耗狀態(tài),進(jìn)入工作狀態(tài),同時(shí)使記數(shù)器0和定時(shí)器1開始工作 [21] 圖3.9 紅外接收電路 3.9 完整的系統(tǒng)電路設(shè)計(jì)圖 完整的電路圖見附錄1
55、 4 系統(tǒng)軟件設(shè)計(jì) 4.1遙控發(fā)射器程序設(shè)計(jì) 4.1.1程序總體結(jié)構(gòu) 此系統(tǒng)是一個(gè)紅外遙控發(fā)射器,設(shè)計(jì)目的就是根據(jù)按鍵的不同,發(fā)射出不同的紅外信號(hào)。傳統(tǒng)的遙控器都是采用遙控發(fā)射專用集成芯片,例如飛利浦公司生產(chǎn)專用芯片SAA3010,三菱公司生產(chǎn)的M50462P專用發(fā)射芯片。由于這些芯片的功能鍵數(shù)及功能受到特定的限制,只適合于某一專用電器產(chǎn)品的應(yīng)用,應(yīng)用范圍受到限制。本系統(tǒng)采用單片機(jī)制作,采用編程的方法,由于編程具有靈活性,故應(yīng)用范圍較廣,操作碼可隨意設(shè)定[22]。 本系統(tǒng)采用的是按紅外發(fā)射頻率的不同,來識(shí)別不同的按鍵。操作鍵設(shè)定為8個(gè),K0至K7,
56、分別接至單片機(jī)的P1.0至P1.7口。對(duì)應(yīng)的紅外發(fā)射頻率分別為300Hz、600 Hz、900 Hz、1200 Hz、1500 Hz、1800 Hz、2100 Hz、2400 Hz。發(fā)射時(shí)間確定為一個(gè)定值,由定時(shí)器1來定時(shí),時(shí)間為100ms,當(dāng)100ms時(shí)間到定時(shí)器1發(fā)生中斷,停止計(jì)時(shí),紅外光也停止發(fā)射。由定時(shí)/計(jì)數(shù)器0來控制發(fā)射頻率,T0作為定時(shí)器,當(dāng)T0定時(shí)時(shí)間到,中斷程序使P3.4斷口的電平反轉(zhuǎn)一次,然后T0重新工作定時(shí)值與前相同,時(shí)間到中斷程序使P3.4端口翻轉(zhuǎn)一次,如此往復(fù),紅外信號(hào)就按一定的時(shí)間間隔發(fā)射出去。通過設(shè)定T0的定時(shí)時(shí)間來控制紅外信號(hào)的發(fā)射頻率[23]。平時(shí)遙控器工作在空
57、閑方式下,當(dāng)有鍵按下時(shí),由外部中斷1產(chǎn)生中斷,使CPU回到工作狀態(tài),待執(zhí)行完操作后又回到低功耗才狀態(tài)。主程序主要由初始化程序、鍵盤掃描程序,定時(shí)器0中斷服務(wù)程序、定時(shí)器1中斷服務(wù)程序,外部中斷1中斷服務(wù)程序組成。主程序流程圖如下: START 調(diào)初始化程序 進(jìn)入低功耗節(jié)電方式 外部中斷1中斷 CPU退出低功耗方式 T0時(shí)間到 P3.4翻轉(zhuǎn)一次 T1時(shí)間到 關(guān)T0、T1 P3.4置1 調(diào)延時(shí)程序 K1鍵是否按下 K2鍵是否按下 K1鍵是
58、否松開 啟動(dòng)定時(shí)器T1定時(shí)50ms 啟動(dòng)定時(shí)器T0定時(shí)3.33ms K3鍵是否按下 調(diào)延時(shí)程序 N N N … Y Y Y .… … … N Y
59、 N Y N Y 圖4.1 遙控發(fā)射主程序流程圖 當(dāng)K2至K7鍵按下時(shí),執(zhí)行的程序類似于按下K1鍵所執(zhí)行的程序。 4.1.2 偽指令和初始化程序 在初始化程序前,需要定義一些相關(guān)的偽指令,偽指令不能命令CPU執(zhí)行某中操作,也沒有對(duì)應(yīng)的機(jī)器代碼,它的作用僅用來給匯編程序提供某中信息。偽指令是匯編程序能夠識(shí)別的匯編命令??刂菩盘?hào)的輸入口P1.0—P1.7分別用按鍵
60、開關(guān)鍵號(hào)K0—K7來定義;各頻率紅外信號(hào)對(duì)應(yīng)的定時(shí)器T0的初值分別用K0H、K0L——K7H、K7L來定義,這樣做不影響整個(gè)程序的執(zhí)行,但便于閱讀和理解程序。定義格式如下: K0 BIT P1.0 … K7 BIT P1.7 由于P1.0至P1.7對(duì)應(yīng)的紅外發(fā)射頻率分別為300Hz、600 Hz、900 Hz、1200 Hz、1500 Hz、1800 Hz、2100 Hz、2400 Hz,而T1的定時(shí)時(shí)間是50ms故在這七種狀態(tài)下面,P3.4端口狀態(tài)分別反轉(zhuǎn)15次、30次、45次、60次、75次、90次、105次、120次。故定時(shí)器T0對(duì)應(yīng)的定時(shí)時(shí)間分別為50ms/15
61、、50ms/30、50ms/45、50ms/60、50ms/75、50ms/90、50ms/105、50ms/120,即分別為:3.33ms、1.67ms、1.11ms、0.833ms、0.667ms、0.556ms、0.476ms、0.417ms。由前述定時(shí)器初值計(jì)算方法可算出各狀態(tài)定時(shí)器的初值。 定時(shí)器T1的定時(shí)初值計(jì)算如下: 由于工作在方式一,時(shí)鐘頻率為12MHz,故定時(shí)最大值M為65536 初值 X=M—定時(shí)值/T X=65536—50000/1=15536 即T1的初值為15536,轉(zhuǎn)化為十六進(jìn)制為3CB0H 各情況下,定時(shí)T0的定時(shí)初值計(jì)算如下:
62、 當(dāng)按下K0鍵時(shí),定時(shí)時(shí)間為3.33ms,此時(shí)定時(shí)器初值為 X0= 65536—3330/1=62206 轉(zhuǎn)化為十六進(jìn)制為0F2FEH 當(dāng)按下K1鍵時(shí),定時(shí)時(shí)間為1.67ms,此時(shí)定時(shí)器初值為 X1=65536—1670/1=63866 轉(zhuǎn)化為十六進(jìn)制為0F97AH 當(dāng)按下K2鍵時(shí),定時(shí)時(shí)間為1.11ms,此時(shí)定時(shí)器初值為 X2=65536-1110/1=64426 轉(zhuǎn)化為十六進(jìn)制為0FBAAH 當(dāng)按下鍵K3時(shí),定時(shí)時(shí)間為0.833ms,此時(shí)定時(shí)器初值為 X3=65536-833/1=64703 轉(zhuǎn)化為十六進(jìn)
63、制為0FCBFH 當(dāng)按下鍵K4時(shí),定時(shí)時(shí)間為0.667ms,此時(shí)定時(shí)器初值為 X4=65536-667/1=64869 轉(zhuǎn)化為十六進(jìn)制為0FD65H 當(dāng)按下鍵K5時(shí),定時(shí)時(shí)間為0.556ms,此時(shí)定時(shí)器初值為 X5=65536-556/1=64980 轉(zhuǎn)化為十六進(jìn)制為0FDD4H 當(dāng)按下鍵K6時(shí),定時(shí)時(shí)間為0.476ms,此時(shí)定時(shí)器初值為 X6=65536-476/1=65060 轉(zhuǎn)化為十六進(jìn)制數(shù)為0FE24H 當(dāng)按下鍵K7時(shí),定時(shí)時(shí)間為0.417ms,此時(shí)定時(shí)器初值為 X7=65536
64、-417/1=65119 轉(zhuǎn)化為十六進(jìn)制數(shù)為0FE5FH 為了便于理解源程序,各種情況下定時(shí)器的初值采用K0H—K7H和K0L—K7L來表示,分別存入定時(shí)器的高8位和低8位。采用賦值偽指令EQU,格式如下: K0H EQU #0F2H K0L EQU #0FEH 通常,在一個(gè)匯編語言源程序的開始,響應(yīng)中斷前,都要設(shè)置一條ORG偽指令來指定該程序在存儲(chǔ)器中存放的起始位置。若省略O(shè)RG指令,則該程序從0000H單元開始存放。在一個(gè)源程序中,可以多次使用ORG偽指令,以規(guī)定不同程序段或數(shù)據(jù)段存放的起始地址,但要求16位地址由小到大順序排列,不允許
65、空間重疊。匯編語言結(jié)束應(yīng)加一個(gè)END指令,表示匯編程序已經(jīng)結(jié)束,處于END之后的程序,匯編程序不予處理。 對(duì)于初始化程序,就是對(duì)P1口、P3口賦初值,此時(shí)遙控器沒有工作,兩個(gè)8位端口均賦以0FFH;設(shè)置定時(shí)器0和定時(shí)器1方式控制寄存器TMOD,由于T0和T1均工作在方式1,功能選擇為定時(shí)器,故TMOD的值為11H,然后開放所有中斷,將單片機(jī)設(shè)置為空閑工作方式,即將電源控制寄存器的值設(shè)為01H,初始化完畢,程序即進(jìn)入鍵盤掃描程序。 4.1.3鍵盤掃描程序 鍵盤掃描程序就是掃描鍵盤看是否有鍵按下,如有鍵按下,判斷出是哪一個(gè)鍵,當(dāng)確定按下某一個(gè)鍵后,即執(zhí)行紅外發(fā)射程序。掃描的方法是
66、判斷P1口各位的電平,無按鍵按下時(shí),各位均為高電平,當(dāng)某一個(gè)按鍵按下以后,該位即為低電平。 通常,按鍵所用開關(guān)為機(jī)械彈性開關(guān),均利用了機(jī)械觸點(diǎn)的合、斷。一個(gè)電壓通過機(jī)械觸點(diǎn)的斷開、閉合過程,由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉和時(shí)不會(huì)馬上穩(wěn)定接通,在斷開時(shí)也不會(huì)一下斷開。因而,在閉合和斷開的瞬間均伴隨著一連串的抖動(dòng),抖動(dòng)時(shí)間的長短由按鍵的機(jī)械特性決定,一般為5—10ms。按鍵電路的消抖措施通常有硬件和軟件兩種方法[24]。硬件消除鍵盤抖動(dòng)措施主要就是外加雙穩(wěn)態(tài)電路或者濾波電路的方法。本電路采用的是軟件消抖的方法,就是調(diào)用一個(gè)延時(shí)子程序,延時(shí)時(shí)間設(shè)定為6ms,延時(shí)子程序如下: DL1: MOV R4,#0CH DL2: MOV R5,#0FFH DL3: DJNZ R5,DL3 DJNZ R4,DL2 RET 延時(shí)時(shí)間的計(jì)算就是根據(jù)執(zhí)行指令所需時(shí)間的總和,0CH、0FFH分別為十進(jìn)制數(shù)的12和255,因此這個(gè)程序所耗用的時(shí)間為
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版中考復(fù)習(xí):統(tǒng)計(jì)和概率課件
- 提高安全防范意識(shí)警惕AI換臉新騙局PPT課件(帶內(nèi)容)
- 為了母親的微笑主題班會(huì)課件
- 52用字母表示數(shù)
- 512軸對(duì)稱變換
- 高考小說閱讀答題技巧ppt課件
- 銀團(tuán)貸款市場運(yùn)作及實(shí)務(wù)完美版資料
- 某地產(chǎn)第五園項(xiàng)目介紹課件
- 非可再生資源的利用和保護(hù)(共25張PPT)
- 第七節(jié)---哺乳動(dòng)物課件優(yōu)選ppt資料
- 多發(fā)性創(chuàng)傷急救
- 23、《假如》課件
- 智慧社區(qū)產(chǎn)品介紹
- 新版脛骨平臺(tái)骨折經(jīng)典
- unit1(4)(教育精品)