畢業(yè)設計----單片機紅外遙控電路設計_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  紅外遙控電路設計</b></p><p><b>  摘 要</b></p><p>  通過對設計要求地認真分析和研究,拿出了幾種可行方案,最終選定了一個最佳方案。該方案是采用先進的單片機技術實現(xiàn)遙控的主要手段。我們所設計的遙控器能控制電器的3個電源開關。</p><p>  關鍵字:遙控

2、電路 紅外發(fā)射 紅外接收 單片機</p><p>  INFRARED REMOTE CONTROL CIRCUIT DESIGN</p><p><b>  ABSTRACT</b></p><p>  After analyzing and researching on the request of the design, we t

3、ake several blue print and we selected the best one in the end. The project make use of advanced SCM to realize the remote control. Remote controller we designed can dominate 3 electrical source switches .</p><

4、;p>  【KEY WORDS】Remote controlling circuit Infrared emission Infrared receiving SCM</p><p><b>  目 錄</b></p><p><b>  前言1</b></p><p>  第一章 課題概況2</

5、p><p>  1.1 紅外遙控電路設計的目的2</p><p>  1.2紅外遙控電路設計功能介紹2</p><p>  1.3課題方案設計2</p><p>  第二章 系統(tǒng)硬件部分方案設計4</p><p>  2.1紅外遙控接發(fā)電路的主控芯片4</p><p>  2.2紅外發(fā)送電

6、路5</p><p>  2.3紅外接收電路5</p><p>  第三章 系統(tǒng)軟件部分方案設計7</p><p>  3.1紅外編碼原理7</p><p>  3.2紅外遙控初始化程序和主程序7</p><p>  3.3紅外遙控鍵盤掃描、紅外發(fā)射程序11</p><p>  3.

7、4紅外遙控接收部分外部中斷程序12</p><p>  第四章 系統(tǒng)調(diào)試13</p><p><b>  課題設計總結(jié)15</b></p><p><b>  參考文獻16</b></p><p><b>  附 錄17</b></p><p>

8、;<b>  致 謝33</b></p><p><b>  引 言</b></p><p>  當今社會科學技術的發(fā)展與日俱增,人們生活水平也是日益提高,為了減少人們的工作量,所以對各種家用電器、電子器件的非人工控制的要求也是越來越高,針對這種情況,設計出一種集成度比較高的控制體系是必然的。 </p><p>  單

9、片機的集成度很高,它具有體積小、功耗低、控制功能強、擴展靈活、微型化、使用方便等突出特點,尤其耗電少,又可使供電電源體積小、質(zhì)量輕。所以特別適用與“電腦型產(chǎn)品”,它的應用已深入到工業(yè)、農(nóng)業(yè)、國防、科研、教育以及日常生活用品(家電、玩具)等各種領域,幾乎很難找到哪個領域沒有單片機的蹤跡。單片機特別適合于把它做到產(chǎn)品的內(nèi)部,取代部分老式機械、電子零件或元器件??墒巩a(chǎn)品縮小體積,增強功能,實現(xiàn)不同程度的智能化。 </p><

10、;p>  紅外線是一種光線,具有普通光的性質(zhì),可以以光速直線傳播,強度可調(diào),可以通過光學透鏡聚焦,可以被不透明物體遮擋等等。特別制造的半導體發(fā)光二極管,可以發(fā)出特定波長(通常是近紅外)的紅外線,通過控制二極管的電流可以很方便地改變紅外線的強度,達到調(diào)制的目的,因此,在現(xiàn)代電子工程應用中,紅外線常常被用做近距離視線范圍內(nèi)的通訊載波,最典型的應用就是家電遙控器。使用紅外線做信號載波的優(yōu)點很多:成本低、傳播范圍和方向可以控制、不產(chǎn)生電磁

11、輻射干擾,也不受干擾等等。因此被廣泛地應用在各種技術領域中。</p><p><b>  第一章 課題概況</b></p><p>  1.1 紅外遙控電路設計的目的</p><p>  本次設計的主要任務是利用單片機技術,并將數(shù)字電子技術、模擬電子技術和紅外學相關知識相結(jié)合,設計一款可以實現(xiàn)燈泡的開關和調(diào)光(或者電機啟動和調(diào)速)控制的紅外遙控

12、電路。通過設計紅外遙控電路來鞏固和加強對三年來所學的理論知識和鍛煉自己的動手能力,熟悉和掌握以單片機為核心的電路設計的基本方法和技術,熟悉傳感器的使用,提高電子電路的設計和動手能力,加深對單片機軟硬件知識的理解,獲得初步的應用經(jīng)驗,為以后從事生產(chǎn)和科研工作打下一定的基礎。</p><p>  1.2紅外遙控電路設計功能介紹</p><p>  本設計要求紅外遙控電路實現(xiàn)以下功能:</

13、p><p> ?。?)利用紅外接收和發(fā)射探頭發(fā)送和接收紅外線;</p><p> ?。?)該遙控系統(tǒng)可以實現(xiàn)燈泡的開關(或者電機啟動)控制;</p><p> ?。?)能夠按鍵啟動/停止,使用單片機進行設計或者純數(shù)字模擬電路設計;</p><p><b>  1.3課題方案設計</b></p><p>

14、;  目前紅外遙控器已經(jīng)在各類電器上得到了廣泛應用。市場上一般設備系統(tǒng)均采用專用的遙控編碼及解碼集成電路,具有制作簡單等特點,但由于這些芯片價格較貴,功能鍵數(shù)及功能受到特定的限制,且相互之間采用的遙控編碼格式互不兼容.所以各機型的遙控器通常只能針對各自的遙控對象而無法通用,只適用于某一專用電器產(chǎn)品的應用,應用范圍受到限制。采用單片機進行遙控系統(tǒng)的應用設計,具有硬件接口簡單方便。編程靈活多樣,操作碼個數(shù)可隨意設定等優(yōu)點。此方案可用控制鍵實

15、現(xiàn)對電器的控制,方便實用。且本設計用到的元器件較少,電路相對簡單實用。</p><p>  紅外遙控電發(fā)射器主要由單片機、操作鍵盤和紅外發(fā)射電路三部分組成。紅外發(fā)射部分結(jié)構圖如圖1.1所示:</p><p>  圖1.1紅外遙控電路發(fā)射設計原理框圖</p><p>  當按下遙控按鈕時,單片機產(chǎn)生相應的控制脈沖,由紅外發(fā)光二極管發(fā)射出去。控制系統(tǒng)采用3V電源電壓,并

16、具有低功耗空閑和掉電方式控制。</p><p>  紅外遙控電發(fā)射器主要由單片機、指示電路和紅外接收電路三部分組成。紅外接收部分結(jié)構如圖1.2所示:</p><p>  圖1.2紅外遙控電路接收設計原理框圖</p><p>  當紅外接收器接收到控制脈沖后,經(jīng)單片機處理由顯示設備顯示出當前受控電器的序號,并判斷是否對電燈進行調(diào)光,如需調(diào)光則經(jīng)調(diào)光電路處理后實現(xiàn)調(diào)光功

17、能。系統(tǒng)采用5V單電源電壓供電,能滿足低功耗空閑狀態(tài),并具有掉電記憶控制功能。</p><p>  第二章 系統(tǒng)硬件部分方案設計</p><p>  2.1紅外遙控接發(fā)電路的主控芯片</p><p>  AT89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM

18、),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,AT89C52單片機在電子行業(yè)中有著廣泛的應用。</p><p>  編輯本段主要功能特性  </p><p>  兼容MCS51指令系統(tǒng)   </p><p>  2、8k可反復擦寫(大于1000次)Flash ROM;   &l

19、t;/p><p>  3、2個雙向I/O口;   </p><p>  4、256x8bit內(nèi)部RAM;   </p><p>  5、3個16位可編程定時/計數(shù)器中斷;   </p><p>  時鐘頻率0-24MHz;   </p><p>  7、2個串行中斷,可編程UART串行通道;   </p>&

20、lt;p>  8、2個外部中斷源,共8個中斷源;   </p><p>  9、2個讀寫中斷口線,3級加密位;   </p><p>  低功耗空閑和掉電模式,軟件設置睡眠和喚醒功能;   </p><p>  有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應不同產(chǎn)品的需求。</p><p>  AT89C52為8 位通

21、用微處理器,采用工業(yè)標 PDIP封裝的AT89C52引腳圖準的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚調(diào)整時的功能控制。功能包括對會聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會聚調(diào)整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復

22、位輸入端口,外接電阻電容組成的復位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負端。P0~P3 為可編程通用I/O 腳,其功能用途由軟件定義,在本設計中,P0 端口(32~39 腳)被定義為N1 功能控制端口,分別與N1的相應功能管腳相連接,13 腳定義為IR輸入端,10 腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12 腳、27 腳及28 腳定義為握手信

23、號功能端口,連接主板CPU 的相應功能端,用于當前制式的檢測及會聚調(diào)整狀態(tài)進入的控制功能。</p><p><b>  2.2紅外發(fā)送電路</b></p><p>  單片機遙控發(fā)射器原理圖如圖2.1所示,單片機遙控發(fā)射器主要由AT89C52單片機、操作鍵盤和紅外發(fā)射電路等組成。單片機部分主要完成遙控發(fā)射器發(fā)射過程的控制、鍵盤掃描的管理和顯示。其中P1.3用于輸出控制

24、紅外發(fā)射電路的工作的信號,P2..1到P2.5連接鍵盤,用于接受鍵盤的信號。電路采用5V電池供電,當有按鍵被按下,遙控器信息碼由AT89C52單片機的定時器1中斷產(chǎn)生38KHZ的紅外線信號,由P1.3口輸出—,經(jīng)過三極管9013放大,由紅外發(fā)射管發(fā)送。待發(fā)送完畢。電路采用LED發(fā)光二極管來實現(xiàn)按鍵的操作指示。</p><p>  圖2.1 紅外發(fā)射原理圖</p><p>  遙控器采用按鍵

25、中斷掃描方式。當按下按鍵K1時,所有燈滅;當按下按鍵K2時,紅燈亮,其他燈滅;當按下按鍵K3時,黃燈亮,其他等滅;當按下按鍵K4時,綠燈亮,其他燈滅;按鍵K5是備用按鍵。</p><p><b>  2.3紅外接收電路</b></p><p>  單片機遙控接受器原理圖如圖2.2所示,單片機遙控發(fā)射器主要由AT89C52單片機、紅外線接收電路、和電燈亮滅電路等組成。當

26、紅外接受接收到遙控器發(fā)射的信號后,將信號傳給AT89C52單片機,AT89C52單片機根據(jù)收到的信息碼的不同,進行相應的狀態(tài)指示。</p><p>  圖2.2 紅外接收原理圖</p><p>  第三章 系統(tǒng)軟件部分方案設計</p><p><b>  3.1紅外編碼原理</b></p><p>  遙控發(fā)射器專用芯片

27、很多,根據(jù)編碼格式可以分成兩大類,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以日本NEC的uPD6121G組成發(fā)射電路為例說明編碼原理。當發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其

28、波形如下圖所示。</p><p>  上述“0”和“1”組成的32位二進制碼經(jīng)38kHz的載頻進行二次調(diào)制以提高發(fā)射效率,達到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。編碼數(shù)據(jù),載波,發(fā)射,接收解碼如下圖所示:</p><p>  UPD6121G產(chǎn)生的遙控編碼是連續(xù)的32位二進制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電器設備,防止不同機種遙控碼互相干擾。該

29、芯片的用戶識別碼固定為十六進制01H;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多額128種不同組合的編碼。遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進制“0”和“1”的個數(shù)不同而不同,大約在45~63ms之間,發(fā)射波形圖如下圖所示。</p><p>  當一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖

30、,這108ms發(fā)射代碼由一個起始碼(9ms),一個結(jié)果碼(4.5ms),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms),8位數(shù)據(jù)碼(9ms~18ms)和這8位數(shù)據(jù)的反碼(9ms~18ms)組成。如果鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼(2.5ms)組成。</p><p>  3.2紅外遙控初始化程序和主程序</p><p&

31、gt;  紅外遙控接收部分與發(fā)射部分初始化程序如圖2.8、圖2.10所示,紅外遙控接收部分與發(fā)射部分主程序如圖2.9、圖2.11所示。</p><p><b>  N</b></p><p><b>  Y</b></p><p>  圖2.8 發(fā)射初始化程序流程圖 圖2.9發(fā)射主程序流程

32、圖 </p><p>  紅外遙控發(fā)射部分初始化程序,初始化程序主要是使單片機復位,即為將IO口置于高電平狀態(tài),關閉遙控輸出口P1.3口,選擇定時器/計數(shù)器0方式二,自動重裝初值。</p><p>  紅外遙控發(fā)射部分主程序,先調(diào)用初始化程序,再完成調(diào)用鍵盤程序。系統(tǒng)完成鍵盤查詢程序后,解碼,執(zhí)行相應的狀態(tài)指示即顯示LED燈的亮滅。</p><p>  圖2.10

33、接收初始化流程圖 圖2.11 接收主程序流程圖</p><p>  紅外遙控接收部分初始化程序,初始化程序主要使單片機復位,即為將IOP2口為高電平狀態(tài),開外部中斷0,設置默認彩燈亮滅標志位。</p><p>  紅外遙控接收部分主程序,先調(diào)用初始化程序,初始化程序完畢,進入主程序循環(huán)狀態(tài)。程序在循環(huán)中主要任務是接收紅外數(shù)據(jù),處理后解碼送去顯示。<

34、;/p><p>  3.3紅外遙控鍵盤掃描、紅外發(fā)射程序</p><p>  紅外遙控鍵盤掃描程序流程圖如圖2.12所示,紅外發(fā)射程序如圖2.13所示。</p><p>  鍵盤掃鍵過程:首先判斷控制鍵是否按下,若有控制鍵按下則進行逐行掃描,按照P口值查找鍵號。最后按照鍵號轉(zhuǎn)至相應的發(fā)射程序。</p><p>  紅外信號發(fā)射過程:首先是發(fā)射9M

35、S的引導碼(4.5ms高電平和4.5ms低電平),接著發(fā)送8位用戶碼和八位用戶反碼,發(fā)完后發(fā)送8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼。</p><p>  在實踐中,采用紅外線遙控方式時,由于受遙控距離,角度等影響,使用效果不是很好,如采用調(diào)頻或調(diào)幅發(fā)射接收碼,可提高遙控距離,并且沒有角度影響。</p><p>  圖2.12 鍵盤掃描程序流程圖 圖2.13發(fā)射程序流程圖</

36、p><p>  3.4紅外遙控接收部分外部中斷程序</p><p>  中斷過程:首先判斷兩個下降沿之間的時間是否大于9ms,若不到9ms,則中斷返回;若低電平大于9ms,則接收并對下降沿計數(shù),如果接收到了33個下降沿,說明一幀數(shù)據(jù)接收完了。計數(shù)清零,并送去才處理。</p><p><b>  N</b></p><p>&

37、lt;b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p>  圖2.14 外部中斷0中斷服務程序流程圖</p><p><b>  第四章 系統(tǒng)調(diào)試</b></p><p>

38、;  控制電路板的安裝與調(diào)試在整個系統(tǒng)研制中占有重要位置,它是把理論付諸實踐的過程,也是把紙面設計轉(zhuǎn)變位實際產(chǎn)品的必經(jīng)階段。對試驗階段的電路板的安裝一般有兩種方式即焊接方式和面包板插接方式。使用面包板焊接更加方便,容易更換線路和器件,而且可以多次使用。但在多次使用的面包板中彈簧片會變松,彈性變差,容易造成接觸不良,這是需要注意的。</p><p>  實驗和調(diào)試常用的儀器有:萬用表、穩(wěn)壓電源、示波器、信號發(fā)生器等

39、。</p><p>  調(diào)試的主要步驟。1.調(diào)試前不加電源的檢查對照電路圖和實際線路檢查連線是否正確,包括錯接、少接、多接等;用萬用表電阻檔檢查焊接和接插是否良好;元器件引腳之間有無短路,連接處有無接觸不良,二極管、三極管、集成電路和電解電容的極性是否正確;電源供電包括極性、信號源連線是否正確;電源端對地是否存在短路(用萬用表測量電阻)。若電路經(jīng)過上述檢查,確認無誤后,可轉(zhuǎn)入靜態(tài)檢測與調(diào)試。2.靜態(tài)檢測與

40、調(diào)試斷開信號源,把經(jīng)過準確測量的電源接入電路,用萬用表電壓檔監(jiān)測電源電壓,觀察有無異?,F(xiàn)象:如冒煙、異常氣味、手摸元器件發(fā)燙,電源短路等,如發(fā)現(xiàn)異常情況,立即切斷電源,排除故障;如無異常情況,分別測量各關鍵點直流電壓,如靜態(tài)工作點、數(shù)字電路各輸入端和輸出端的高、低電平值及邏輯關系、放大電路輸入、輸出端直流電壓等是否在正常工作狀態(tài)下,如不符,則調(diào)整電路元器件參數(shù)、更換元器件等,使電路最終工作在合適的工作狀態(tài);對于放大電路還要用示波器

41、觀察是否有自激發(fā)生。3.動態(tài)檢測與調(diào)試動態(tài)調(diào)試是在靜態(tài)調(diào)試的基礎上進行的,調(diào)試的方法地在電路的輸入端加上所需的信號源,并循著信號的注射逐級檢測各有關點的波形、參數(shù)和</p><p>  我們所設計的遙控器電路是采用碼分制遙控方式,我們用示波器對發(fā)射電路輸出端及接收電路輸入端的信號波型的進行了檢查,發(fā)現(xiàn)當按下不同的開關按鈕時所顯示的波型是不同的。這說明了此電路是工作在正常狀態(tài)的。4.調(diào)試注意事項(1)正確使

42、用測量儀器的接地端,儀器的接地端與電路的接地端要可靠連接;(2)在信號較弱的輸入端,盡可能使用屏蔽線連線,屏蔽線的外屏蔽層要接到公共地線上,在頻率較高時要設法隔離連接線分布電容的影響,例如用示波器測量時應該使用示波器探頭連接,以減少分布電容的影響。(3)測量電壓所用儀器的輸入阻抗必須遠大于被測處的等效阻抗。(4)測量儀器的帶寬必須大于被測量電路的帶寬。(5)正確選擇測量點和測量(6)認真觀察記錄實驗過程,包括條件、現(xiàn)象、數(shù)據(jù)、

43、波形、相位等。(7)出現(xiàn)故障時要認真查找原因</p><p><b>  課題設計總結(jié)</b></p><p>  畢業(yè)設計是學生即將完成學業(yè)的最后一個重要環(huán)節(jié),它既是對學校所學知識的全面總結(jié)和綜合應用,又為今后走向社會的實際操作應用鑄就了一個良好的開端。所以在此有必要對這次的畢業(yè)設計作一個系統(tǒng)的總結(jié)。</p><p>  這次畢業(yè)設計,我選

44、擇了實做的題目,這不僅是對我的一種鍛煉,也是對我大學三年所學知識的綜合檢查。從開始設計到設計的完成,我感覺收獲很多,不僅在理論上有了很大的升華,并且還在實踐中鍛煉了自己。使自己成長了許多。</p><p>  本文首先對整個系統(tǒng)的工作原理和實現(xiàn)方法進行了簡單的介紹,給出了系統(tǒng)工作的整體框圖。在此基礎上,介紹了系統(tǒng)設計用到的各個模塊的功能特性,并進性了方案比較,選擇出了最優(yōu)越的方案。在理論上對整個系統(tǒng)有一定了解的情

45、況下,進行了系統(tǒng)模塊的電路的設計,充分利用各方面的資料,發(fā)揮我所學的特長。</p><p>  整個系統(tǒng)的開發(fā)過程是曲折的,首先在硬件設計上,由于以前所學課程有一定的基礎,我多方查閱資料,不斷的向老師、同學學習請教,以確保設計的電路系統(tǒng)完整,并能實現(xiàn)最完美的系統(tǒng)功能。經(jīng)過幾個月學習,我設計出了各個部分的電路圖,并實現(xiàn)了電路圖的組合。經(jīng)過測試與修改,最終完善了硬件電路的設計,并能夠比較理想的完成本次畢業(yè)設計功能——

46、紅外遙控電路。</p><p>  對于軟件設計,因為以前的編程經(jīng)驗不夠,因此,在這方面花費了很多的精力和時間。盡管過程很艱難,但是在真正意義上學到了知識,為以后的工作和學習積累了寶貴的經(jīng)驗。</p><p>  在研制過程中注重先進、適用的原則,注重科技與應用結(jié)合,來用產(chǎn)、學、研結(jié)合,側(cè)重于科研技術轉(zhuǎn)化為生產(chǎn)力。本系統(tǒng)經(jīng)過了設計階段、開發(fā)實現(xiàn)階段以及最后的應用測試階段。經(jīng)過2個月的努力,

47、核心問題已經(jīng)全部解決,所有功能均已基本實現(xiàn),只是在通用性上還有待提高。這次畢業(yè)設計的經(jīng)歷使我對51單片機的一些特征、性能,以及應用及原理有了深刻的了解,真正做到了學有所得、學有所用,可以說獲益匪淺。</p><p>  但是,總的說來,由于我在理論和實踐方面存在一定的不足,所以在設計思路和實現(xiàn)功能上難免有不足之處,請各位老師多多批評指正。</p><p><b>  參考文獻&l

48、t;/b></p><p>  [1] 李軍. 檢測技術及其儀表. 中國輕工業(yè)出版社</p><p>  [2] 賀紅娟 等. 匯編語言程序設計教程. 清華大學出版社</p><p>  [3] 孫亮 楊鵬. 自動控制技術. 北京工業(yè)大學出版社</p><p>  [4] 劉守義 鐘蘇. 數(shù)字電子技術. 西安電子科技大學出版社<

49、;/p><p>  [5] 周雪. 模擬電子技術. 西安電子科技大學出版社</p><p>  [6] 楊宏麗 王靜霞. 單片機基礎教程. 人民郵電出版社</p><p>  [7] 林伸茂 8051單片機徹底研究經(jīng)驗篇.人民郵電出版社</p><p>  [8] 劉文濤 MCS-51單片機培訓教程.電子工業(yè)出版社</p>&

50、lt;p><b>  附 錄</b></p><p><b>  發(fā)射模塊程序:</b></p><p>  //*************單片機紅外發(fā)射********</p><p>  #include<reg52.h></p><p>  sbit ir=P1^3;<

51、/p><p>  sbit k1=P2^5;</p><p>  sbit k2=P2^4;</p><p>  sbit k3=P2^3;</p><p>  sbit k4=P2^2;</p><p>  sbit k5=P2^1;</p><p>  unsigned int count, s

52、et_count; </p><p>  bit irflag,keyflag; </p><p>  unsigned char irsys[]={0x00,0xff};</p><p>  unsigned char irdata,ircode; </p><p>  void delay(unsigned int a)</

53、p><p><b>  { </b></p><p>  unsigned char i;</p><p>  while(--a!=0)</p><p>  for(i=300;i>0;i--);</p><p><b>  } </b></p><p

54、>  void keyscan()</p><p><b>  {</b></p><p>  /*if(k1==0)</p><p><b>  {</b></p><p>  delay(10);</p><p><b>  if(k1==0)</b

55、></p><p><b>  {</b></p><p>  keyflag=1;</p><p>  while(!k1);</p><p>  irdata=0x01;</p><p><b>  }</b></p><p><b&g

56、t;  }*/</b></p><p><b>  if(k2==0)</b></p><p><b>  {</b></p><p>  delay(10);</p><p><b>  if(k2==0)</b></p><p><

57、b>  {</b></p><p>  keyflag=1;</p><p>  while(!k2);</p><p>  irdata=0x02;</p><p><b>  }</b></p><p><b>  }</b></p>&l

58、t;p><b>  if(k3==0)</b></p><p><b>  {</b></p><p>  delay(10);</p><p><b>  if(k3==0)</b></p><p><b>  {</b></p>&

59、lt;p>  keyflag=1;</p><p>  while(!k3);</p><p>  irdata=0x03;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(k4==0)<

60、/b></p><p><b>  {</b></p><p>  delay(10);</p><p><b>  if(k4==0)</b></p><p><b>  {</b></p><p>  keyflag=1;</p>

61、<p>  while(!k4);</p><p>  irdata=0x04;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(k5==0)</b></p><p><

62、b>  {</b></p><p>  delay(10);</p><p><b>  if(k5==0)</b></p><p><b>  {</b></p><p>  keyflag=1;</p><p>  while(!k5);</p&g

63、t;<p>  irdata=0x05;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void ir_sendbyte() //紅外發(fā)送一個字節(jié)數(shù)據(jù)</p&

64、gt;<p><b>  { </b></p><p>  unsigned char i; </p><p>  for(i=0;i<8;i++) //發(fā)送8位數(shù)據(jù)</p><p><b>  { </b></p><p>  set_count=43; //發(fā)送編碼中的

65、0.56ms高電平 </p><p>  irflag=1; </p><p>  count=0; </p><p>  TR0=1; </p><p>  while(count<set_count); </p><p><b>  TR0=0; </b><

66、;/p><p>  if(ircode&0x01) set_count=130; //判斷紅外編碼最低位,若為1則1.69ms的低電平</p><p>  else set_count=43; //為0則0.565ms的低電平 </p><p>  irflag=0; </p><p><b>  count=0;<

67、/b></p><p><b>  TR0=1; </b></p><p>  while(count<set_count); </p><p><b>  TR0=0; </b></p><p>  ircode=ircode>>1; </p><p&

68、gt;<b>  } </b></p><p><b>  } </b></p><p>  void ir_send() </p><p><b>  { </b></p><p>  set_count=346; //發(fā)送編碼中的引導碼(4.5ms高電平+4.5ms低電平)

69、 </p><p>  irflag=1; </p><p>  count=0; </p><p><b>  TR0=1; </b></p><p>  while(count<set_count); </p><p><b>  TR0=0; </b>&

70、lt;/p><p>  set_count=346; //發(fā)送編碼中的4.5ms低電平</p><p>  irflag=0; </p><p><b>  count=0; </b></p><p><b>  TR0=1; </b></p><p>  while(count

71、<set_count); </p><p><b>  TR0=0; </b></p><p>  ircode=irsys[0]; </p><p>  ir_sendbyte(); </p><p>  ircode=irsys[1]; </p><p>  ir_sendbyte()

72、; </p><p>  ircode=irdata; //發(fā)送8位數(shù)據(jù)碼 </p><p>  ir_sendbyte(); </p><p>  ircode=~irdata; //發(fā)送8位數(shù)據(jù)反碼 </p><p>  ir_sendbyte();</p><p>  set_count=43; //發(fā)送編碼

73、中的0.56ms高電平 </p><p>  irflag=1; </p><p><b>  count=0; </b></p><p><b>  TR0=1; </b></p><p>  while(count<set_count); </p><p><

74、b>  TR0=0; </b></p><p>  irflag=0; </p><p>  /*delay(23); //延時23ms(編碼中的23ms低電平) </p><p>  set_count=346; //發(fā)送編碼中的引導碼(4.5ms高電平+4.5ms低電平) </p><p>  irflag=1;

75、</p><p><b>  count=0; </b></p><p><b>  TR0=1; </b></p><p>  while(count<set_count); </p><p><b>  TR0=0; </b></p><p>

76、  set_count=346; </p><p>  irflag=0; </p><p><b>  count=0; </b></p><p><b>  TR0=1; </b></p><p>  while(count<set_count); </p><p>

77、;<b>  TR0=0;*/</b></p><p>  set_count=43; </p><p>  irflag=1; </p><p><b>  count=0; </b></p><p><b>  TR0=1; </b></p><p&

78、gt;  while(count<set_count); </p><p><b>  TR0=0; </b></p><p><b>  irflag=0;</b></p><p>  delay(23); </p><p><b>  }</b></p>

79、<p>  void timer0_init() </p><p><b>  { </b></p><p><b>  EA=1; </b></p><p>  TMOD=0x02; //定時0 8位自動重裝模式 </p><p><b>  ET0=1; &l

80、t;/b></p><p>  TH0=0xe6; //定時13us,38K紅外矩形波,晶振24M </p><p>  TL0=0xe6; </p><p><b>  } </b></p><p>  void main() </p><p><b>  { <

81、/b></p><p>  timer0_init();</p><p>  count=0; </p><p><b>  ir=0;</b></p><p>  irflag=0; </p><p><b>  while(1) </b></p

82、><p><b>  { </b></p><p>  keyscan(); </p><p>  if(keyflag) </p><p><b>  { </b></p><p>  delay(10); </p><p>  ir_send(

83、); </p><p>  delay(500); </p><p>  keyflag=0; </p><p>  delay(100);</p><p><b>  } </b></p><p><b>  } </b></p><p>

84、;<b>  } </b></p><p>  void timer0() interrupt 1 </p><p><b>  { </b></p><p><b>  count++; </b></p><p>  if(irflag==1)</p><

85、;p>  ir=~ir; //有發(fā)射標志,則發(fā)射38khz的矩形波</p><p><b>  else</b></p><p>  ir=0; </p><p><b>  }</b></p><p><b>  接收模塊程序</b></p>&l

86、t;p>  //************紅外接收********************</p><p>  #include<reg52.h></p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int </p><p>  sbit

87、 led1=P2^1;</p><p>  sbit led2=P2^2;</p><p>  sbit led3=P2^3;</p><p>  uchar irtime;</p><p>  uchar startflag;</p><p>  uchar irdata[33];</p><p&

88、gt;  uchar bitnum;</p><p>  uchar irreceok;</p><p>  uchar ircode[4];</p><p>  uchar irprosok,flag;</p><p>  void delay(uint z)</p><p><b>  {</b&g

89、t;</p><p><b>  uint i,j;</b></p><p>  for(i=z;i>0;i--)</p><p>  for(j=120;j>0;j--);</p><p><b>  }</b></p><p>  void timer0ini

90、t()</p><p><b>  {</b></p><p>  TMOD=0x02;</p><p><b>  TH0=0x00;</b></p><p><b>  TL0=0x00;</b></p><p><b>  ET0=1;&

91、lt;/b></p><p><b>  EA=1;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void int0init()</p><p><b>  {&l

92、t;/b></p><p><b>  IT0=1;</b></p><p><b>  EX0=1;</b></p><p><b>  EA=1;</b></p><p><b>  } </b></p><p>  vo

93、id irpros() </p><p><b>  {</b></p><p>  uchar k,i,j;</p><p>  uchar value;</p><p><b>  k=1;</b></p><p>  for(j=0;j<4;j++)</

94、p><p><b>  {</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  value=value>>1; </p><p>  if(irdata[k]>6) </p&g

95、t;<p><b>  {</b></p><p>  value=value | 0x80; </p><p><b>  }</b></p><p><b>  k++;</b></p><p><b>  if(k==33)</b>&l

96、t;/p><p><b>  {</b></p><p><b>  k=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ircode[j]=value;</p&g

97、t;<p><b>  }</b></p><p>  irprosok=1;</p><p><b>  }</b></p><p>  void display()</p><p>  { </p><p>  switch(irco

98、de[2])</p><p><b>  {</b></p><p>  case 0x05:</p><p><b>  led1=1;</b></p><p><b>  led2=1;</b></p><p><b>  led3=1;&

99、lt;/b></p><p><b>  break;</b></p><p>  case 0x02:</p><p><b>  led1=0;</b></p><p><b>  led2=1;</b></p><p><b>  

100、led3=1;</b></p><p><b>  break;</b></p><p>  case 0x03:</p><p><b>  led2=0;</b></p><p><b>  led1=1;</b></p><p><

101、;b>  led3=1;</b></p><p><b>  break;</b></p><p>  case 0x04:</p><p><b>  led3=0;</b></p><p><b>  led1=1;</b></p><

102、p><b>  led2=1;</b></p><p><b>  break;</b></p><p>  //case 0x01: 備用</p><p><b>  }</b></p><p><b>  } </b></p>&

103、lt;p>  void main()</p><p><b>  {</b></p><p>  timer0init();</p><p>  int0init();</p><p><b>  while(1)</b></p><p><b>  {<

104、;/b></p><p>  if(irreceok)</p><p><b>  {</b></p><p><b>  irpros();</b></p><p>  irreceok=0; </p><p>  if(irprosok)</p>&l

105、t;p><b>  {</b></p><p>  if(ircode[2]=~ircode[3])</p><p><b>  {</b></p><p>  display();</p><p><b>  }</b></p><p><

106、b>  delay(5);</b></p><p>  irprosok=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(bitnum>33)</p><p><b>  {&l

107、t;/b></p><p><b>  bitnum=0;</b></p><p>  irreceok=1;</p><p>  startflag=0;</p><p><b>  flag=0;</b></p><p><b>  } </b&

108、gt;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void timer0 () interrupt 1</p><p><b>  {</b></p><p><b>  irtime+

109、+;</b></p><p><b>  }</b></p><p>  void int0 () interrupt 0</p><p><b>  {</b></p><p>  if(startflag)</p><p><b>  {</b

110、></p><p>  if(irtime>31) //檢測引導碼</p><p><b>  {</b></p><p><b>  bitnum=0;</b></p><p><b>  flag=1;</b></p><p><b

111、>  }</b></p><p><b>  if(flag)</b></p><p><b>  {</b></p><p>  irdata[bitnum]=irtime;</p><p><b>  irtime=0;</b></p>&l

112、t;p><b>  bitnum++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p&g

113、t;<p>  startflag=1;</p><p><b>  irtime=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  致 謝</b></p>

114、<p>  畢業(yè)設計是我大學學習生活的最后一項學習任務,是對我大學三年學習的綜合考核。而也為了使我的綜合素質(zhì)技能可以有一個很大的提高,這次畢業(yè)設計,我選擇了郭泉江老師所帶的這個比較具有實用性的有意思的課題——紅外遙控電路設計。在為期兩個多月的畢業(yè)設計過程中,我不僅較為系統(tǒng)的復習了以前學的知識,而且又學習了許多新知識,使我的知識結(jié)構更加系統(tǒng)化,也更加完善。同時,也提高了我獨立分析問題、解決問題的能力。</p>&

115、lt;p>  本次畢業(yè)設計能夠順利地完成,首先要感謝我的指導老師xx老師。xx老師嚴謹?shù)闹螌W態(tài)度,深厚的學術造詣以及忘我的工作精神給我留下了深刻的印象。xx老師的嚴格要求和孜孜不倦的教導是我完成這次畢業(yè)設計的重要保證,他給予了我很大的幫助和支持,在課題研究期間,xx老師提供了很多指導性的意見,對存在的問題給予細心的分析并提出許多寶貴的意見,使我受益匪淺。在此謹向?qū)煴硎局孕牡母兄x!同時我要感謝給予我?guī)椭椭С值耐M同學們,感謝信息

116、工程系的老師為我們做畢業(yè)設計提供的各方面的幫助!</p><p>  同時,我要感謝我的母校——xx大學,特別是在我即將踏上工作崗位時,給了我這樣一個鍛煉、學習的機會,使我加深了對以前知識的理解,拓寬了知識面,也提高了我對所學知識的綜合的應用能力。</p><p>  在整個設計制作過程當中,我感覺收獲非常大,我獲得的不僅是理論上的收獲,還有實踐中的豐收,同時還有的就是同學們之間的合作精神

溫馨提示

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

評論

0/150

提交評論