版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)論文</b></p><p> 基于AT89S52單片機(jī)的遙控器設(shè)計(jì)</p><p><b> 目錄</b></p><p><b> 摘要2</b></p><p><b> 1 引言3</b><
2、/p><p><b> 1.1紅外遙控3</b></p><p><b> 1.2單片機(jī)4</b></p><p> 2 總體設(shè)計(jì)方案5</p><p> 方案一:簡易紅外遙控電路5</p><p> 方案二:利用紅外遙控開關(guān)電路5</p>&l
3、t;p> 3 AT89S52單片機(jī)7</p><p> 3.1 AT89S52單片機(jī)7</p><p><b> 3.2系統(tǒng)復(fù)位9</b></p><p> 3.3時(shí)鐘電路10</p><p> 3.4中斷系統(tǒng)11</p><p> 4 電路框圖設(shè)計(jì)14</p
4、><p> 4.1遙控發(fā)射單元的電路圖設(shè)計(jì)14</p><p> 4.2遙控接收單元的電路圖設(shè)計(jì)16</p><p> 5紅外遙控程序流程圖18</p><p><b> 6 軟件設(shè)計(jì)20</b></p><p> 6.1:紅外遙控發(fā)射端軟件設(shè)計(jì)20</p><
5、p> 6.2:紅外遙控接收端軟件設(shè)計(jì)23</p><p><b> 結(jié)束語26</b></p><p><b> 參考文獻(xiàn)27</b></p><p><b> 摘要</b></p><p> 通過對設(shè)計(jì)要求的認(rèn)真分析和研究,拿出了幾種可行方案,最終選定一
6、個最佳方案。該方案是采用先進(jìn)的單片機(jī)技術(shù)實(shí)現(xiàn)遙控,采用模塊話設(shè)計(jì),主要分為兩個模塊:紅外發(fā)射模塊和紅外接收模塊。紅外發(fā)射模塊中的單片機(jī)受開關(guān)控制,通過紅外發(fā)射管對另一個單片機(jī)發(fā)射信號,紅外接收模塊中的單片機(jī)受紅外接收管接收的信號控制。文章詳細(xì)的討論了實(shí)現(xiàn)上述紅外遙控過程的硬件組成及其工作原理和軟件設(shè)計(jì)。</p><p> 關(guān)鍵詞:遙控器;紅外發(fā)射;紅外接收;單片機(jī)</p><p><
7、;b> 1 引言</b></p><p><b> 1.1紅外遙控</b></p><p> 紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來越多的應(yīng)用到計(jì)算機(jī)系統(tǒng)中。</p><p> 60年代初,一些發(fā)達(dá)國家開始研究
8、民用產(chǎn)品的遙控技術(shù),單由于受當(dāng)時(shí)技術(shù)條件限制,遙控技術(shù)發(fā)展很緩慢,70年代末,隨著大規(guī)模集成電路和計(jì)算機(jī)技術(shù)的發(fā)展,遙控技術(shù)得到快速發(fā)展。在遙控方式上大體經(jīng)理了從有線到無限的超聲波,從振動子到紅外線,再到使用總線的微機(jī)紅外遙控這樣幾個階段。無論采用何種方式,準(zhǔn)確無誤傳輸新信號,最終達(dá)到滿意的控制效果是非常重要的。最初的無線遙控裝置采用的是電磁波傳輸信號,由于電磁波容易產(chǎn)生干擾,也易受干擾,因此逐漸采用超聲波和紅外線媒介來傳輸信號。與紅外
9、線相比,超聲傳感器頻帶窄,所能攜帶的信息量少,易受干擾而引起誤動作。較為理想的是光控方式,逐漸采用紅外線的遙控方式取代了超聲波遙控方式,出現(xiàn)了紅外線多功能遙控器,成為當(dāng)今時(shí)代的主流。</p><p> 由于紅外線在頻譜上居于可見光之外,所以抗干擾性強(qiáng),具有光波的直線傳播特性,不易產(chǎn)生相互間的干擾,是很好的信息傳輸媒體。信息可以直接對紅外光進(jìn)行調(diào)制傳輸,例如,信息直接調(diào)制紅外光的強(qiáng)弱進(jìn)行傳輸,也可以用紅外線產(chǎn)生一
10、定頻率的載波,再用信息對載波進(jìn)調(diào)制,接收端再去掉載波,取到信息。從信息的可靠傳輸說,后一種方法更好,這就是我們今天看到的大多數(shù)紅外遙控所采用的方法。由于紅外線的波長遠(yuǎn)小于無線電波的波長,因此在采用紅外遙控方式時(shí),不會干擾其他電器的正常工作,也不會影響臨近的無線電設(shè)備。</p><p> 紅外遙控的發(fā)射電路是采用紅外發(fā)光二極管來發(fā)出經(jīng)過調(diào)制的紅外光波;紅外接收電路由紅外接收二極管、三極管或硅光電池組成,它們將紅外
11、發(fā)射器發(fā)射的紅外光轉(zhuǎn)換為相應(yīng)的電信號,再送后置放大器。</p><p><b> 發(fā)射器</b></p><p> 發(fā)射器一般由指令鍵(或操作桿)、指令編碼系統(tǒng)、調(diào)制電路、驅(qū)動電路、發(fā)射電路等幾部分組成。當(dāng)按下指令鍵或推動操作桿時(shí),指令編碼電路產(chǎn)生所需的指令編碼信號,指令編碼信號對載波進(jìn)行調(diào)制,再由驅(qū)動電路進(jìn)行功率放大后由發(fā)射電路向外發(fā)射經(jīng)調(diào)制定的指令編碼信號。&
12、lt;/p><p><b> 接收器</b></p><p> 接收器一般由接收電路、放大電路、調(diào)制電路、指令譯碼電路、驅(qū)動電路、執(zhí)行電路(機(jī)構(gòu))等幾部分組成。接收電路將發(fā)射器發(fā)出的已調(diào)制的編碼指令信號接收下來,并進(jìn)行放大后送解調(diào)電路,解調(diào)電路將已調(diào)制的指令編碼信號解調(diào)出來,即還原為編碼信號。指令譯碼器將編碼指令信號進(jìn)行譯碼,最后由驅(qū)動電路來驅(qū)動執(zhí)行電路實(shí)現(xiàn)各種指令的
13、操作控制(機(jī)構(gòu))。</p><p><b> 1.2單片機(jī)</b></p><p> 單片微型計(jì)算機(jī)簡稱單片機(jī),是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來。最早的設(shè)計(jì)理念是通過將大量外圍設(shè)備和CPU集成在一個芯片中,使計(jì)算機(jī)系統(tǒng)更小
14、,更容易集成進(jìn)復(fù)雜的而對體積要求嚴(yán)格的控制設(shè)備當(dāng)中。</p><p> 以單片機(jī)為核心的控制系統(tǒng),因?yàn)槠鋵?shí)時(shí)控制功能強(qiáng),可靠性高,實(shí)用性強(qiáng),應(yīng)用范圍廣等優(yōu)點(diǎn),得到了極為廣泛的應(yīng)用。隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中紅外遙控就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從單片機(jī)技術(shù)入手,一切
15、向著數(shù)字化控制,智能化控制方向發(fā)展。因此了解單片機(jī)知識,掌握單片機(jī)的應(yīng)用技術(shù)具有重大的意義。它的理論性和實(shí)踐性都很強(qiáng),我們在理論課學(xué)習(xí)中主要學(xué)習(xí)單片機(jī)的基本構(gòu)造,各部分的工作原理以及指令系統(tǒng),然而,光是理論的學(xué)習(xí)是遠(yuǎn)遠(yuǎn)不夠的,最重要的是把理論和實(shí)踐相結(jié)合。</p><p> 所以此次實(shí)習(xí),通過設(shè)計(jì)一個基于AT89S52單片機(jī)的遙控器設(shè)計(jì),以增進(jìn)對單片機(jī)電路的感性認(rèn)識,加深對理論方面的理解和鞏固,了解和掌握軟硬件
16、設(shè)計(jì)過程、方法及實(shí)現(xiàn),增強(qiáng)自己的動手和實(shí)踐能力,為以后在工作和學(xué)習(xí)中,設(shè)計(jì)和實(shí)現(xiàn)應(yīng)用系統(tǒng)打下良好基礎(chǔ)。</p><p><b> 2 總體設(shè)計(jì)方案</b></p><p> 根據(jù)任務(wù)書的要求,利用單片機(jī)設(shè)計(jì)一個遙控開關(guān),可以擬定以下二種方案。</p><p> 方案一:簡易紅外遙控電路</p><p> 在不需要
17、多電路的應(yīng)用場合,可以使用由常規(guī)集成電路組成的單通道紅外遙控電路。這種遙控電路不需要使用昂貴的專用編譯碼器,因此成本低。</p><p><b> 方案結(jié)構(gòu)圖:</b></p><p><b> 紅外發(fā)射部分</b></p><p> 考慮到本方案電路時(shí)簡單的單通道遙控器,可以直接產(chǎn)生一個控制功能的震蕩電路頻率,再通
18、過紅外發(fā)光二極管發(fā)射出去。</p><p><b> 紅外接收部分</b></p><p> 方案二:利用紅外遙控開關(guān)電路</p><p> 紅外發(fā)射/接收控制電路均采用單片機(jī)來實(shí)現(xiàn),輸出控制方式可選擇,實(shí)用性更強(qiáng)。</p><p><b> 方案結(jié)構(gòu)圖:</b></p>&l
19、t;p><b> 紅外發(fā)射部分</b></p><p> 當(dāng)按下遙控按鈕時(shí),單片機(jī)產(chǎn)生相應(yīng)的控制脈沖,由紅外發(fā)光二極管發(fā)射出去。</p><p><b> 紅外接收部分:</b></p><p> 當(dāng)紅外接收器收到控制脈沖后,由控制方式選擇開關(guān)選擇是“互鎖”還是但電路控制,再由單片機(jī)處理,對相應(yīng)的受控電器產(chǎn)生
20、控制。</p><p> 3 AT89S52單片機(jī)</p><p> 3.1 AT89S52單片機(jī)</p><p> 本次設(shè)計(jì)所使用的單片機(jī)是Atmel公司的AT89S52芯片,AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完
21、全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2 個數(shù)據(jù)指針,三個16 位定時(shí)器/計(jì)數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0
22、Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。</p><p> AT89S52的引腳圖如3-1所示:</p><p> 圖3-1 AT89S52引腳圖</p><p> AT89S52
23、單片機(jī)引腳注釋:</p><p><b> VCC : 電源</b></p><p><b> GND: 地</b></p><p> P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時(shí),P0口也被作為低8
24、位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在 flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。</p><p> P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,
25、將輸出電流(IIL)。</p><p> P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)時(shí),P2 口送出高八位地址。在這
26、種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號。</p><p> P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí)
27、,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號。</p><p> RST: 復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2 個機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計(jì)時(shí)完成后,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO
28、默認(rèn)狀態(tài)下,復(fù)位高電平有效。</p><p> ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時(shí),鎖存低8 位地址的輸出脈沖。在flash編程時(shí),此引腳(PROG)也用作編程輸入脈沖。</p><p> 在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時(shí),ALE脈沖將會跳過。如果需要,通過
29、將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時(shí)有效。否則,ALE 將被微弱拉高。這個ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。</p><p> PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當(dāng) AT89S52從外部程序存儲器執(zhí)行外部代碼時(shí),PSEN在每個機(jī)器周期被激活兩
30、次,而在訪問外部數(shù)據(jù)存儲器時(shí),PSEN將不被激活。EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在flash編程期間,EA也接收12伏VPP電壓。</p><p> XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出
31、端。</p><p><b> 3.2系統(tǒng)復(fù)位</b></p><p> 通過某種方式,使單片機(jī)內(nèi)各寄存器的值變?yōu)槌跏紶顟B(tài)的操作稱為復(fù)位。51單片機(jī)在時(shí)鐘電路工作以后,在RST/VPD端持續(xù)給出2個機(jī)器周期的高電平就可以完成復(fù)位操作(一般復(fù)位正脈沖寬度大于10 ms)。 復(fù)位分為上電復(fù)位和外部按鍵復(fù)位兩種方式。</p><p> 51單片
32、機(jī)復(fù)位后,程序計(jì)數(shù)器PC和特殊功能寄存器復(fù)位的狀態(tài)如表2-1所示。復(fù)位不影響片內(nèi)RAM存放的內(nèi)容,而ALE在復(fù)位期間將輸出高電平。</p><p> 由表3-2可以看出:</p><p> (1)(PC)=0000H 表示復(fù)位后程序的入口地址為0000H; </p><p> (2)(PSW)=00H,其中RS1(PSW.4)=0, RS0(PSW.3)=0,
33、 表示復(fù)位后單片機(jī)選擇工作寄存器0組;</p><p> (3)(SP)=07H 表示復(fù)位后堆棧在片內(nèi)RAM的08H單元處建立; </p><p> (4)P0口~P3口鎖存器為全1狀態(tài),,說明復(fù)位后這些并行接口可以直接作輸入口, 無須向端口寫1。</p><p><b> 表 3-2</b></p><p>&l
34、t;b> 3.3時(shí)鐘電路</b></p><p> 單片機(jī)的時(shí)鐘電路由振蕩電路和分頻電路組成,其振蕩電路由反相器以及并聯(lián)外接的石英晶體和電容組成,用于產(chǎn)生振蕩脈沖。分頻電路用于把振蕩脈沖分頻,以的到所需要的時(shí)鐘信號。</p><p> 振蕩電路如圖3-3所示:</p><p> 圖 3-3 振蕩電路</p><p>
35、 其輸入端為引腳XTAL1,輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容,石英晶體為一感性原件,與電容構(gòu)成振蕩回路,為片內(nèi)放大器提供正反饋和振蕩的相移條件,從而構(gòu)成一個穩(wěn)定的自激振蕩器。振蕩器的頻率主要取決于晶體的振蕩頻率, 一般晶體可在1.2~12 MHz之間任選, 電容C1、 C2可在5~30 pF之間選擇, 電容的大小對振蕩頻率有微小的影響, 可起頻率微調(diào)作用。 </p><p&
36、gt; 振蕩脈沖經(jīng)二分頻后作為系統(tǒng)的時(shí)鐘信號,時(shí)鐘信號經(jīng)過三分頻產(chǎn)生ALE信號,</p><p> ALE信號用于控制把P0口的低8位地址送入鎖存器鎖起來,以實(shí)現(xiàn)低地址和數(shù)據(jù)的分時(shí)傳送,ALE還可作為外部時(shí)鐘或外部脈沖使用。時(shí)鐘信號經(jīng)六分頻得到機(jī)器周期信號。</p><p><b> 3.4中斷系統(tǒng)</b></p><p><b&g
37、t; A 中斷的概念</b></p><p> 當(dāng)CPU與外設(shè)交換信息時(shí),由于外設(shè)的速度比較慢,若用查詢的方式,則CPU就要浪費(fèi)很多時(shí)間去等待外設(shè)。這樣就存在一個快速的CPU與慢速的外設(shè)之間的矛盾。為了解決這個問題,就發(fā)展了中斷的概念。</p><p> CPU正在處理某一程序時(shí),發(fā)生了另一突發(fā)事件請求CPU迅速去處理(中斷發(fā)生);CPU暫時(shí)停止當(dāng)前的工作,轉(zhuǎn)到需要處理的
38、中斷源的服務(wù)程序的入口(中斷響應(yīng)),一般在入口處執(zhí)行一跳轉(zhuǎn)指令轉(zhuǎn)去處理中斷事件(中斷服務(wù));待CPU將中斷事件處理完畢后,再回到原來程序被中斷的地方繼續(xù)處理執(zhí)行程序(中斷返回),這一處理過程稱為中斷。</p><p> 51單片機(jī)的中斷系統(tǒng)提供5個中斷源:外部中斷0和外部中斷1,定時(shí)/計(jì)數(shù)器(T0)和(T1)的溢出中斷,串行接口的接收和發(fā)送中斷。本程序中只用到了外部中斷1。</p><p&g
39、t;<b> B 中斷控制</b></p><p> 1 中斷允許寄存器IE(A8H)</p><p> CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器(IE)控制的。IE各位的定義如表3-4所示:</p><p><b> 表 3-4</b></p><p> E
40、A——中斷允許總控制位</p><p> EA=0 中斷總禁止,禁止所有中斷</p><p> EA=1 中斷總允許,總允許后中斷的禁止或允許由各中斷源的中斷允許控制位設(shè)置。</p><p> EX0和EX1——外部中斷允許控制位</p><p> EX0(EX1)=0 禁止外部
41、中斷</p><p> EX0(EX1)=1 允許外部中斷</p><p> ET0和ET1——定時(shí)器/計(jì)數(shù)器中斷允許控制位</p><p> ET0(ET1)=0 禁止定時(shí)器/計(jì)數(shù)器中斷</p><p> ET0(ET1)=1 允許定時(shí)器/計(jì)數(shù)器中斷</p><p> ES——串行中
42、斷允許控制位</p><p> ES=0 禁止串行中斷</p><p> ES=1 允許串行中斷</p><p> 2中斷優(yōu)先級控制寄存器(IP)</p><p> 各中斷的優(yōu)先級通過中斷優(yōu)先級控制寄存器IP來設(shè)定,其未定義及位地址如表3-5所示: &l
43、t;/p><p><b> 表3-5</b></p><p> PX0——外部中斷0優(yōu)先級設(shè)定位;</p><p> PT0——定時(shí)中斷0優(yōu)先級設(shè)定位;</p><p> PX1——外部中斷1優(yōu)先級設(shè)定位;</p><p> PT1——定時(shí)中斷1優(yōu)先級設(shè)定位; </p><
44、;p> PS——串行中斷優(yōu)先級設(shè)定位。</p><p> 3定時(shí)器控制寄存器(TCON)</p><p> 該寄存器用于保存外部中斷請求以及定時(shí)器的計(jì)數(shù)溢出。進(jìn)行字節(jié)操作時(shí),寄存器地址為88H。按位操作時(shí),各位的地址為88H~8FH。寄存器的內(nèi)容及位地址表示如表3-6所示:</p><p><b> 表3-6</b></p&
45、gt;<p> IE0和IE1——外中斷請求標(biāo)志位。當(dāng)CPU采樣到 INT0(或INT1)端出現(xiàn)有效中斷請求時(shí),IE0(IE1)位由硬件置“1”。 當(dāng)中斷響應(yīng)完成轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件把IE0(或IE1)清零。</p><p> TR0 和TR1——定時(shí)器運(yùn)行控制位:</p><p> TR0 (TR1 )=0 定時(shí)器/計(jì)數(shù)器不工作</p>&l
46、t;p> TR0 (TR1 )=1 定時(shí)器/計(jì)數(shù)器開始工作</p><p> TF0和TF1——計(jì)數(shù)溢出標(biāo)志位。當(dāng)計(jì)數(shù)器產(chǎn)生計(jì)數(shù)溢出時(shí),相應(yīng)的溢出標(biāo)位</p><p> 硬件置“1”。 并自動產(chǎn)生定時(shí)中斷請求。</p><p><b> 4 電路框圖設(shè)計(jì)</b></p><p> 4.1遙控發(fā)射單元
47、的電路圖設(shè)計(jì)</p><p> 遙控發(fā)射單元由單片機(jī)最小系統(tǒng)和按鍵電路、紅外發(fā)射器電路等組成,遙控發(fā)射單元框圖如圖3-1所示。</p><p> 圖4-1 紅外遙控單元發(fā)射框圖 </p><p> 發(fā)射端采用具有在線下載功能的AT89S52芯片作為控制中心,與鍵盤掃描電路和發(fā)射電路共同構(gòu)成。考慮到按鍵較多,可采用矩陣式,這里采用4 ×4的發(fā)射端利用單
48、片機(jī)將待發(fā)送的二進(jìn)制信號編碼調(diào)制為一系列的脈沖串信號,通過P1. 0口發(fā)出,經(jīng)三極管9013功率放大驅(qū)動紅外發(fā)射管LED1 。</p><p> 圖4-2為該遙控系統(tǒng)的發(fā)射原理圖,其中P1口作為鍵盤掃描口,具有16個功能操作鍵,第9腳為單片機(jī)復(fù)位腳,采用復(fù)位電路如圖所示,15腳作為紅外遙控碼的輸出口,用于38MHZ載波編碼,18 19腳12MHZ晶振。</p><p> 圖4-2遙控發(fā)
49、射單元原理圖</p><p> 圖4-3 遙控發(fā)射單元PCB圖</p><p> 4.2遙控接收單元的電路圖設(shè)計(jì)</p><p> 遙控接收單元由單片機(jī)最小系統(tǒng)和紅外接收器、控制對象電路等組成,遙控接收單元框圖如圖4-4所示。</p><p> 圖4-4紅外遙控接收單元框圖</p><p> 接收控制器由一個
50、AT89S52芯片作為控制中心,與接收電路和各自的控制電路共同構(gòu)成。其中接收電路使用一體化紅外接收頭HS0038, HS0038工作頻率為38 kHz,能對收到遙控信號進(jìn)行放大、檢波、整形、解調(diào),得到TTL 電平的編碼信號,再送給單片機(jī),經(jīng)單片機(jī)解碼并執(zhí)行相關(guān)控制程序,對外只有3 個引腳:VS、GND和1個脈沖信號輸出引腳,使用方便,性能可靠。</p><p> 圖4-5為該遙控器的接收器原理圖,其中P0口作為
51、數(shù)碼管的二進(jìn)制數(shù)據(jù)輸出,顯示按鍵號,第9腳為單片機(jī)復(fù)位腳,采用復(fù)位電路如圖所示,18 19腳為12MHZ晶振。</p><p> 圖4-5遙控接收單元原理圖</p><p> 圖4-6遙控接收單元PCB圖</p><p> 5紅外遙控程序流程圖</p><p> 程序開始是對單片機(jī)進(jìn)行初始化設(shè)置,循環(huán)掃描判斷是否有鍵按下,如果有鍵按下
52、就發(fā)射相應(yīng)的紅外信號,遙控發(fā)射程序流程圖如圖4-5所示。</p><p> 圖5-1 遙控發(fā)射程序流程圖</p><p> 程序開始是對單片機(jī)進(jìn)行初始化設(shè)置,使用顯示程序,循環(huán)掃描判斷信號是否有效,如果有效就接收,接收后調(diào)用相應(yīng)功能程序,遙控接收程序流程圖如圖4-6所示。</p><p> 圖5-2遙控發(fā)射程序流程圖</p><p>&
53、lt;b> 6 軟件設(shè)計(jì)</b></p><p> 6.1:紅外遙控發(fā)射端軟件設(shè)計(jì)</p><p> /****************************************************************</p><p> * 文件名 : 紅外遙控發(fā)射端2 </p><p> **
54、**************************************************************/</p><p> #include<reg51.h></p><p> #include<intrins.h></p><p> #define uint unsigned int</p><
55、;p> #define uchar unsigned char</p><p> uchar count = 0;</p><p> /****************************************************************</p><p> * 名稱 : delay_1ms()</p><p
56、> * 功能 : 延時(shí)子程序,延時(shí)時(shí)間為 1ms * x</p><p> * 輸入 : x (延時(shí)一毫秒的個數(shù))</p><p> ****************************************************************/</p><p> void delay_1ms(uint i)</p>&
57、lt;p><b> {</b></p><p> uchar x,j;</p><p> for(j=0;j<i;j++)</p><p> for(x=0;x<=148;x++);</p><p><b> }</b></p><p> /*
58、**************************************************************</p><p> * 名稱 : time0_init()</p><p> * 功能 : 定時(shí)器的初始化,定時(shí)10ms</p><p> *************************************************
59、***************/</p><p> void time0_init()</p><p><b> {</b></p><p> TMOD = 0x01;</p><p> IE = 0x82;</p><p> TH0 = 0x15;</p><
60、p> TL0 = 0xA0;</p><p><b> }</b></p><p> /****************************************************************</p><p> * 名稱 : time0_int()</p><p> * 功能
61、 : 定時(shí)器中斷</p><p> ****************************************************************/</p><p> void time0_int() interrupt 1</p><p><b> {</b></p><p><b>
62、 count++;</b></p><p> TH0 = 0x15;</p><p> TL0 = 0xA0;</p><p><b> }</b></p><p> /****************************************************************&
63、lt;/p><p> * 名稱 : keyscan()</p><p> * 功能 : 實(shí)現(xiàn)按鍵的讀取</p><p> ****************************************************************/</p><p> uchar keyscan(void)</p><
64、;p><b> {</b></p><p> uchar i,j, temp, buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};</p><p> for(j=0; j<4; j++)</p><p><b> {</b></p><p> P1 =
65、buffer[j];</p><p> /*以下三個_nop_();作用為讓 P1 口的狀態(tài)穩(wěn)定*/</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p&
66、gt;<p> temp = 0x01; </p><p> for(i
67、=0; i<4; i++)</p><p><b> {</b></p><p> if(!(P1 & temp)) </p><p><b> {</b></p><p> return (i+j*4); //返回取得的按鍵值</p><p>&
68、lt;b> }</b></p><p> temp <<= 1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*****
69、***********************************************************</p><p> * 名稱 : main()</p><p> * 功能 : 主函數(shù)</p><p> ****************************************************************/<
70、/p><p> void main(void)</p><p><b> {</b></p><p> uchar key_value; //讀出的鍵值</p><p><b> while(1)</b></p><p><b> {</b>
71、</p><p> P1 = 0xf0;</p><p> if(P1 != 0xf0)</p><p><b> {</b></p><p> delay_1ms(15);//按鍵消抖</p><p> if(P1 != 0xf0)</p><p><
72、;b> {</b></p><p> key_value = keyscan() + 1;//key_value是鍵碼加 1</p><p><b> }</b></p><p> time0_init();</p><p><b> TR0 = 1;</b><
73、/p><p><b> while(1)</b></p><p><b> {</b></p><p><b> uchar i;</b></p><p> for(;count < 10;) //發(fā)射首部</p><p> P2 =
74、0x00;</p><p> count = 0;</p><p> for(;count < 10;)</p><p> P2 = 0xff;</p><p> count = 0;</p><p> for(i = 0; i < key_value; i++) //發(fā)射數(shù)據(jù)</p
75、><p><b> {</b></p><p> for(;count < 5;)</p><p> P2 = 0x00;</p><p> count = 0;</p><p> for(;count < 5;)</p><p> P2 =
76、 0xff;</p><p> count = 0;</p><p><b> }</b></p><p><b> TR0 = 0;</b></p><p><b> break;</b></p><p><b> }</b&
77、gt;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 6.2:紅外遙控接收端軟件設(shè)計(jì)</p><p> /**************************
78、**************************************</p><p> * 文件名 : 紅外遙控接收端2</p><p> ****************************************************************/</p><p> #include<reg52.h></p&g
79、t;<p> #include<intrins.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar count = 0;//定時(shí)器計(jì)時(shí)</p><p> uchar time
80、 = 0;//脈沖計(jì)時(shí)</p><p> uchar num = 0; //鍵碼值</p><p> uchar receiv = 0; //為0時(shí)不是接收狀態(tài),為1時(shí)為正在接收數(shù)據(jù)狀態(tài)</p><p> void receive();</p><p> /*********************
81、*******************************************</p><p> * 名稱 : delay()</p><p> * 功能 : 延時(shí),延時(shí)時(shí)間為</p><p> ****************************************************************/</p>&l
82、t;p> void delay(uint k)</p><p><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=0; i<k; i++)</p><p> for(j=0; j<1800; j++) </
83、p><p><b> ;</b></p><p><b> }</b></p><p> /****************************************************************</p><p> * 外部中斷0初始化 inter0_init()<
84、/p><p> ****************************************************************/</p><p> void inter0_init()</p><p><b> {</b></p><p><b> EA = 1;</b><
85、;/p><p><b> PX0 = 0;</b></p><p> IT0 = 1; //下降沿觸發(fā)</p><p><b> }</b></p><p> /***********************************************************
86、*****</p><p> * 外部中斷0 inter0_int()</p><p> ****************************************************************/</p><p> void inter0_int() interrupt 0</p><p><b>
87、 {</b></p><p><b> TR0 = 1;</b></p><p> while(P3^1 == 0);</p><p><b> TR0 = 0;</b></p><p> time = 5 * count;</p><p> if(ti
88、me > 450 && time < 750)</p><p><b> {</b></p><p> receiv = 1; //等于1開始接收數(shù)據(jù)</p><p><b> EX0 = 0;</b></p><p>
89、<b> num = 0;</b></p><p><b> }</b></p><p> count = 0;</p><p><b> }</b></p><p> /***********************************************
90、*****************</p><p><b> * 定時(shí)器0初始化</b></p><p> ****************************************************************/</p><p> void time0_init()</p><p><
91、;b> {</b></p><p><b> EA = 1;</b></p><p><b> ET0 = 1;</b></p><p><b> PT0 = 1;</b></p><p> TH0 = 0xEC;</p><p&
92、gt; TL0 = 0x78;</p><p><b> }</b></p><p> void time0_int() interrupt 1</p><p><b> {</b></p><p> TH0 = 0xEC;</p><p> TL0 = 0x78
93、; </p><p><b> count++;</b></p><p><b> }</b></p><p> /****************************************************************</p><p><b> * 鍵碼
94、接收</b></p><p> ****************************************************************/</p><p> void receive()</p><p><b> { </b></p><p><b> TR0 =
95、1;</b></p><p> while(P3^1 == 0); //計(jì)時(shí)高電平的時(shí)</p><p><b> TR0 = 0;</b></p><p> time = 5 * count;</p><p> if(time > 180 && time < 4
96、20)</p><p><b> {</b></p><p><b> num++;</b></p><p> count = 0;</p><p><b> }</b></p><p><b> else</b><
97、;/p><p><b> {</b></p><p> receiv = 0;</p><p><b> EX0 = 1;</b></p><p><b> }</b></p><p> time = 0; </
98、p><p><b> }</b></p><p> /****************************************************************</p><p> * 名稱 : main()</p><p> ***********************************
99、*****************************/</p><p> void main()</p><p><b> {</b></p><p><b> EX0 = 1;</b></p><p><b> while(1)</b></p>&
100、lt;p><b> {</b></p><p> time0_init();</p><p> inter0_init();</p><p> while(receiv)</p><p><b> {</b></p><p> receive();</
101、p><p><b> }</b></p><p><b> P0 = num;</b></p><p><b> delay(5);</b></p><p><b> }</b></p><p><b> }<
102、;/b></p><p><b> 結(jié)束語</b></p><p> 這是一個磨練意志的過程。從課題的選擇開始,到硬件和軟件系統(tǒng)的設(shè)計(jì),這其中經(jīng)歷了很多困難,但是更重要的是在這個過程中我得到了很大的鍛煉。一方面通過S52單片機(jī)等一些器件的設(shè)計(jì)讓我學(xué)習(xí)和掌握了單片機(jī)技術(shù)的基礎(chǔ)知識和技術(shù)要點(diǎn),也使以前學(xué)的很多知識都得到了運(yùn)用;另一方面在用Protel 99 SE
103、軟件畫電路圖,這個過程中讓我掌握了計(jì)算機(jī)輔助的設(shè)計(jì)技術(shù)。當(dāng)然,這是一個需要不斷的嘗試,不斷的校核,不斷的修改,最后完成一個合理的設(shè)計(jì)的過程。需要的是細(xì)心和耐心。在很大程度上培養(yǎng)了我拼搏的工作精神。使我受益匪淺,更加明確了自己專業(yè)的方向。這次時(shí)間是短暫的,但這我想我們學(xué)到的應(yīng)該不僅僅是專業(yè)技術(shù)等表面上的東西,更深一層的是對人生的感悟,對未來的想法,年輕人的桀驁不馴在此時(shí)已經(jīng)不在有意義,取而代之的是理性的思維。我們應(yīng)該具備什么樣的能力,我們
104、適合什么樣的人生,我們應(yīng)該在怎樣的崗位上實(shí)現(xiàn)自己的人生價(jià)值。</p><p> 實(shí)習(xí)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識、發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程,通過課程設(shè)計(jì)我們能夠比較系統(tǒng)的了解理論知識,把理論和實(shí)踐相結(jié)合,并且用到生活當(dāng)中。在做設(shè)計(jì)的過程中總會出現(xiàn)各種問題,在這種情況下我們都會努力尋求最佳路徑解決問題,無形間提高了我們的動手,動腦能力,并且同學(xué)
105、之間還能相互探討問題,研究解決方案,增進(jìn)大家的團(tuán)隊(duì)意識。</p><p> 實(shí)習(xí)是短暫的,影響卻是長遠(yuǎn)的。通過實(shí)習(xí)讓我體會了團(tuán)隊(duì)合作的益處,在團(tuán)隊(duì)中一起發(fā)現(xiàn)問題、討論問題,共同進(jìn)步、共同提高。硬件實(shí)習(xí)主要是我們理論知識的延伸,它的目的主要是要在設(shè)計(jì)中發(fā)現(xiàn)問題,并且自己要能找到解決問題的方案,形成一種獨(dú)立的意識。我們還能從設(shè)計(jì)中檢驗(yàn)我們所學(xué)的理論知識到底有多少,鞏固我們已經(jīng)學(xué)會的,不斷學(xué)習(xí)我們所遺漏的新知識,把所
106、學(xué)的知識學(xué)的更加扎實(shí)。</p><p> 在本文的撰寫過程中,導(dǎo)師XX給予了悉心的指導(dǎo)和關(guān)心,使我克服了眾多困難終于完成了畢業(yè)設(shè)計(jì)的撰寫工作。導(dǎo)師淵博的知識、嚴(yán)謹(jǐn)求實(shí)的治學(xué)態(tài)度及敬業(yè)精神,給我留下了深刻的印象,并將在我今后的人生道路上產(chǎn)生深遠(yuǎn)的影響,在此論文完成之際,謹(jǐn)向?qū)熤乱猿绺叩木匆夂椭孕牡母兄x!</p><p> 再一次感謝所有關(guān)心我、幫助我的人!</p><
107、;p><b> 參考文獻(xiàn)</b></p><p> 【1】 李廣弟,朱月秀,冷祖祁編著。單片機(jī)基礎(chǔ)(第3版)。北京航空航天大學(xué)出版社。2007年1月。</p><p> 【2】 杜剛主編,王啟寧、戎華洪、張東霞等編著。電路設(shè)計(jì)與制板——Protel應(yīng)用教程,清華大學(xué)出版社,2009年6月。</p><p> 【3】 于京,張景
108、璐編著。51系列單片機(jī)C程序設(shè)計(jì)及應(yīng)用案。中國電力出版社,2006年3月。</p><p> 【4】 何立民。MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)。北京行天航空工業(yè)大學(xué)出版社,1990:143-160。</p><p> 【5】 李華。MCS-51系列單片機(jī)實(shí)用接口計(jì)數(shù)。北京行天航空工業(yè)大學(xué)出版社,1993:148-158。</p><p> 【6】 張毅剛、彭
109、喜源、曲春波編著。MCS-51單片機(jī)應(yīng)用設(shè)計(jì)。哈爾濱工業(yè)大學(xué)出版社,1994:88-122。</p><p> 【7】 李廣弟等編著。 單片機(jī)基礎(chǔ){修訂本} 。 北京航空航天大學(xué)出版社, 2001:55-82。</p><p> 【8】 張凱,馬忠梅編著。MCS-51單片機(jī)綜合系統(tǒng)及設(shè)計(jì)開發(fā)??茖W(xué)出版社,1999。</p><p> 【9】 ATMEL公司AT
110、89S52的技術(shù)手冊。</p><p><b> 答辯稿</b></p><p> 我的畢業(yè)設(shè)計(jì)是基于AT89S52單片機(jī)的遙控器設(shè)計(jì),通過對設(shè)計(jì)要求的認(rèn)真分析和研究,我決定采用先進(jìn)的單片機(jī)技術(shù)實(shí)現(xiàn)遙控,采用模塊話設(shè)計(jì),主要分為兩個模塊:紅外發(fā)射模塊和紅外接收模塊。</p><p> 本次設(shè)計(jì)所使用的單片機(jī)是Atmel公司的AT89S52
111、芯片,AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。</p><p> 紅外發(fā)射模塊中的單片機(jī)受開關(guān)控制,通過紅外發(fā)射管對另一個單片機(jī)發(fā)射信號,發(fā)射端采用具有在線下載功能的AT89S52芯片作為控制中心,與鍵盤
112、掃描電路和發(fā)射電路共同構(gòu)成。考慮到按鍵較多,可采用矩陣式,這里采用4 ×4的發(fā)射端利用單片機(jī)將待發(fā)送的二進(jìn)制信號編碼調(diào)制為一系列的脈沖串信號,通過P1. 0口發(fā)出,經(jīng)三極管9013功率放大驅(qū)動紅外發(fā)射管LED1 。</p><p> 紅外接收模塊中的單片機(jī)受紅外接收管接收的信號控制。接收控制器由一個AT89S52芯片作為控制中心,與接收電路和各自的控制電路共同構(gòu)成。其中接收電路使用一體化紅外接收頭HS
113、0038, HS0038工作頻率為38 kHz,能對收到遙控信號進(jìn)行放大、檢波、整形、解調(diào),得到TTL 電平的編碼信號,再送給單片機(jī),經(jīng)單片機(jī)解碼并執(zhí)行相關(guān)控制程序,對外只有3 個引腳:VS、GND和1個脈沖信號輸出引腳,使用方便,性能可靠。</p><p> 程序設(shè)計(jì)的設(shè)計(jì)構(gòu)想分為2個部分 1.紅外發(fā)射端程序設(shè)計(jì):程序開始是對單片機(jī)進(jìn)行初始化設(shè)置,循環(huán)掃描判斷是否有鍵按下,如果有鍵按下就發(fā)射相應(yīng)的紅外信號。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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)----基于at89s52單片機(jī)的遙控器設(shè)計(jì)
- 單片機(jī)基于at89s52單片機(jī)的遙控器設(shè)計(jì)畢業(yè)論文
- 單片機(jī)基于at89s52單片機(jī)的遙控器設(shè)計(jì)畢業(yè)論文
- 基于at89s52單片機(jī)的遙控器設(shè)計(jì)畢業(yè)論文
- 單片機(jī)畢業(yè)設(shè)計(jì)外文翻譯--at89s52
- 畢業(yè)設(shè)計(jì)--基于at89s52單片機(jī)信號發(fā)生器的設(shè)計(jì)
- 基于at89s52單片機(jī)的光電計(jì)數(shù)器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于at89s52的學(xué)習(xí)型紅外遙控器的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)定時(shí)鬧鐘的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于at89s52單片機(jī)的直流數(shù)控恒流源設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89s52單片機(jī)溫度控制器的設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89s52單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì) --基于單片機(jī)的遙控器設(shè)計(jì)
- c語言基于at89s52的紅外遙控器設(shè)計(jì)畢業(yè)論文
- 基于at89s52單片機(jī)的紅外遙控小車制作畢業(yè)論文
- c語言基于at89s52的紅外遙控器的設(shè)計(jì)論文
- 基于at89s52單片機(jī)溫度采集設(shè)計(jì)畢業(yè)論文
評論
0/150
提交評論