紅外遙控器的制作_第1頁
紅外遙控器的制作_第2頁
紅外遙控器的制作_第3頁
紅外遙控器的制作_第4頁
紅外遙控器的制作_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計報告設計題目:題2-遙控器的制作學 院: 理學院 專 業(yè): 電子信息科學與技術 班 級:學 號:姓 名:電子郵件:時 間:成 績:指導教師:華 南 農 業(yè) 大 學理 學 院 應 用 物 理 系課程設計(報告)任務書學生姓名指導教師職稱學生學號專業(yè)題目 遙控器的制作任務與要求1 學習、了解遙控器的信息編碼方式。2 制作紅外發(fā)射器;制作一塊電路板,安裝紅外接收器。3 接收到紅外信號后經(jīng)過單片機的處理,控制LED的亮暗。制作包含至少5個控制按鈕的遙控器4 掌握單片機的中斷系統(tǒng)及延時程序的編寫方法及程序調試的方法。5 掌握硬件設計及焊接工藝。6 掌握仿真機的使用及在線調試方法。開始日期xxxx

2、年xx月xx日完成日期xxxx年xx 月xx日遙控器的制作的設計設計方案0 概述與應用背景遙控器是一種用來遠程控機械的無線發(fā)射裝置,通過現(xiàn)代的數(shù)字編碼技術,將按鍵信息進行編碼,并通過紅外線二極管發(fā)射光波,光波經(jīng)接收機的紅外線接收器將收到的紅外信號轉變成電信號,進處理器進行解碼,解調出相應的指令來達到控制機頂盒等設備完成所需的操作要求。上世紀八十年代初,日本率先在電視產品中使用了紅外遙控技術,使用集成發(fā)射芯片來實現(xiàn)遙控碼的發(fā)射,如東芝TC9012、飛利浦SAA3010 等,它的主要特點是遙控器內預置固定編碼,一只遙控器只能控制單一型號的電器。隨著電子技術的發(fā)展,家用電器越來越普遍,人們希望以一只

3、遙控器遙控所有家用電器,多用遙控器產生了。它的主要特點是遙控器內預置多套編碼,可供用戶選擇。如今,隨著嵌入式的廣泛應用,部分廠商推出了具備紅外學習的遙控器,它的主要特點是遙控器內置一個動態(tài)編碼庫,具備紅外學習功能,可由用戶自主錄入編碼。通過對具備紅外學習功能的遙控器進行市場調查發(fā)現(xiàn)國內紅外遙控編碼學習技術雖比較成熟,但產品化程度較低,市場推廣不夠,主要原因在于設計者對用戶需求的調查不夠全面,以致產品不夠實用,性價比較低。從用戶操作方便實用的角度出發(fā),本文自主設計具備紅外學習、彩屏虛擬遙控界面的萬能學習型紅外遙控器,借此促進紅外遙控學習技術在國內市場的產品化推廣。 1 工作進度、組內分工與合作情

4、況1.1 工作進度:10.01-10.10 時間段,完成對整體方案的設計,具體確定方案設計的硬件 電路與所需要的電子元器件;10.11-10.13 時間段,購買元器件并完成接收電路模塊的焊接;10.14-10.20 時間段,進行接收部分的電路功能調試,設計接收部分要實現(xiàn)的功能,完成遙控發(fā)射電路模塊的焊接,學習紅外遙控的編碼與解碼的原理(NEC協(xié)議);10.21-10.25 時間段,進行發(fā)射端的調試,并設計編碼與解碼的程序,實現(xiàn)整體功能的實現(xiàn);10.26-10.30 時間段,撰寫課程設計報告,拍使用解說視頻,做PPT。1.2 組內分工與合作:1)合作部分A:整體方案的設計B:撰寫課程設計報告,拍

5、使用解說視頻,做PPT2)分工部分表2.1 組內分工2 元件清單與主要元件介紹2.1 元件清單1)發(fā)射電路模塊STC89C52單片機1片、紅外發(fā)光二極管1個、12M晶振1個、30pF無極性電容2個、22pF有極性電容1個、200電阻1個、1k電阻2個、藍光LED 1個、按鍵17個。2)接收電路模塊STC89C52單片機1片、紅外接收一體管HS0038一個、88紅色LED點陣1個、12M晶振1個、30pF無極性電容2個、22pF有極性電容1個、200電阻1個、1k電阻1個、8乘10K排阻1個、復位按鍵1個。2.2 主要元件介紹2.2.1 STC89C52單片機STC89C52單片機芯片集成了以下

6、幾個基本組成部分:1)一個8位的CPU;2)128B或256B單元內數(shù)據(jù)存儲器(RAM);3)4KB或8KB片內程序存儲器(ROM或EPROM);4)4個8位并行I/O接口P0P3;5)兩個定時/計數(shù)器;6)5個中斷源的中斷管理控制系統(tǒng);7)一個全雙工串行I/O口UART(通用異步接收、發(fā)送器) ;8)一個片內振蕩器和時鐘產生電路。如圖2.1是STC89C52的引腳排列:圖2.1 單片機STC89C52管腳圖其中,CPU 是單片機的核心部件,它由運算器和控制器等部件組成。存儲器(Memory)是計算機系統(tǒng)中的記憶設備,用來存放程序和數(shù)據(jù)。它根據(jù)控制器指定的位置存入和取出信息。P0P3口是與外部

7、交換信息的8位并行接口,均是準雙向口。復位操作則使單片機的片內電路初始化,使單片機從一種確定的狀態(tài)開始運行。此次設計單片機外接12M晶振作為時鐘頻率,并采用按鍵復位設計。2.2.2 紅外發(fā)光二極管發(fā)射部分的主要元件為紅外發(fā)光二極管。紅外線發(fā)光二極管由紅外輻射效率高的材料(常用砷化鎵GaAs)制成PN結,外加正向偏壓向PN結注入電流激發(fā)紅外光。光譜功率分布為中心波長830950nm,半峰帶寬約40nm左右。大量使用的紅外發(fā)光二極管發(fā)出的紅外線波長為940nm左右,外形與普通發(fā)光二極管相同,只是顏色不同。紅外發(fā)光二極管一般有黑色、深藍、透明三種顏色。本次方案設計使用透明色,如圖2.2所示。圖2.2

8、 透明色的紅外發(fā)射二極管一些彩電紅外遙控器,其紅外發(fā)光管的工作脈沖占空比約為1/3-1/4;一些電器產品紅外遙控器,其占空比是1/10。減小脈沖占空比還可使小功率紅外發(fā)光二極管的發(fā)射距離大大增加。常見的紅外發(fā)光二極管,其功率分為小功率(1mW-10mW)、中功率(20mW-50mW)和大功率(50mW-100mW以上)三大類。要使紅外發(fā)光二極管產生調制光,只需在驅動管上加上一定頻率的脈沖電壓。本次方案設計使用NEC協(xié)議中占空比為 1/3的38KHz的脈沖電壓直接驅動紅外發(fā)射二極管。2.2.3 紅外接收一體管HS0038如圖2.3為紅外接收一體管HS0038的實物圖,HS0038能接收紅外信號,

9、同時對信號進行放大、檢波、整形得到TTL電平的編碼信號,其接收紅外信號頻率為38kHz,周期約26s。紅外接收一體管HS0038有三個引腳,其管腳圖如圖2.4所示。其中管腳1為TTL信號輸出端,管腳2接地,管腳3接VCC。如圖2.5所示為紅外接收一體管HS0038將38KHz紅外信號解調、轉換為TTL電平的波形。圖2.3 HS0038的實物圖圖2.4 HS0038管腳圖圖2.5 紅外接收一體管HS0038輸出波形圖NEC 協(xié)議說明:NEC 協(xié)議特點:8位地址和8位命令為提高可靠性,地址和命令都傳輸2次,脈沖間隔調制38kHz 載波頻率。下圖2.6為某一NEC 協(xié)議的脈沖編碼。圖2.6 某一NE

10、C 協(xié)議的脈沖編碼上圖是NEC 協(xié)議的一個典型脈沖發(fā)送圖。此協(xié)議LSB 最低位先傳送,所以接收的時候最先接收的是低位。此圖傳送的地址是$59、命令是$16。1)一個信息發(fā)送是由9mS 的AGC 自動增益控制脈沖開頭,在早期的IR 紅外接收器中用來設置增益。接著是4.5mS 空閑,然后是地址、命令。2)地址和命令都傳送2次,第二次的地址和命令是反碼,可以用來校驗接收到的信息??偟膫鬏敃r間是固定的,因為每一位都有反碼傳送。3)一個命令只發(fā)送一次。如果遙控器上的按鍵一直按著。則會每110mS 發(fā)送一次代碼,此代碼是重復碼(在下面解釋),直到遙控器按鍵釋放。4)重復碼比較簡單:一個9mS 的AGC 脈

11、沖、2.25mS 間隔、560uS脈沖。 由以上可知:在接收端高電平持續(xù)最長的時間為4.5ms,表示為引導碼。高電平時間持續(xù)為2.25ms 為重復碼。由此我們在一個5ms 的時間內的脈沖的高電平持續(xù)時間,從而判斷是引導碼、重復碼、還是“1”和“0”。表2為各種碼類型。表2 各種碼類型在5ms 只要是上面的任意碼,都會出現(xiàn)高低電平的變化的,如果超過5ms 都沒有出現(xiàn)變化,則這個碼就是無效碼。四個方框就構成了編程的基礎。在看上面的電平,在接收端都是先接收到低電平,再接收到高電平,所以一旦接收到低電平,就要進入中斷,等待高電平的到來。圖2.7為引導碼、地址碼、和用戶碼的發(fā)送順序。圖2.7 引導碼、地

12、址碼、和用戶碼的發(fā)送順序引導碼及數(shù)據(jù)的定義如下圖2.8所示,當一直按住一個按鈕的時候,會隔110ms 左右發(fā)一次引導碼(重復),并不帶任何數(shù)據(jù)。圖2.8 引導碼、數(shù)據(jù)碼的定義充分理解了NEC協(xié)議的規(guī)律了后,為簡單起見本次設計采用與此協(xié)議相同的引導碼,但省略了地址部分,并且數(shù)據(jù)碼只用原碼的部分(即也省略了數(shù)據(jù)的反碼),這樣簡略后的NEC協(xié)議便只剩下9ms的引導碼和一個字節(jié)的數(shù)據(jù)碼。其中數(shù)據(jù)碼的編碼規(guī)則較為簡單,采用矩陣鍵盤中按鍵的鍵值所對應的二進制碼,這樣編碼后的二進制碼有利于程序的調試。在后面的電路仿真中便會看到,紅外管發(fā)射的編碼波形與鍵值的二進制碼一致。2.2.4 88紅色LED點陣如圖2.

13、9為88紅色LED點陣的外形圖(左)與對應的正面管腳圖(右)。其中,黑色點為LED的正極。圖2.9 88紅色LED點陣點陣LED的等效電路如圖2.10,只要其對應的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點亮,則Y0=1,X0=1即可。應用時限流電阻可以放在X軸或Y軸。圖2.10 點陣LED的等效電路LED點陣一般采用掃描方式顯示,實際分為三種方式:1)點掃描2)行列掃描3)列行掃描1664=1024Hz,周期小于1ms即可。若使用第二種和第三種方式,則頻率必須大于168=128Hz,周期小雨7.8ms即可符合視覺停留要求。此外一次驅動一列或一行(8顆LED)時需外加驅動電

14、路提高電流,否則LED亮度會不足。這樣,只需控制使對應字符對應的LED點點亮,就可以實現(xiàn)字符的顯示了。 3 電路圖以及仿真結果3.1 紅外發(fā)射部分使用Proteus設計紅外發(fā)射端(遙控器)的硬件電路圖如圖3.1所示,并通過該軟件對發(fā)射電路進行仿真。軟件中沒有紅外發(fā)射管的元件,圖中以特性較接近的紅色LED(D3)來代替。仿真時通過按下某一個按鈕,觀察LED的電壓波形是否為單片機發(fā)射的編碼信號。圖3.1 紅外發(fā)射端(遙控器)的硬件電路圖抽取第三列的按鍵進行仿真,第四列的按鍵對應的鍵值從上往下為3、7、11、15。發(fā)射出來的波形應分別為四個鍵值的二進制波形表示,下面是仿真結果。第3個按鍵的發(fā)射波形如

15、圖3.2所示,從左邊看起,首先發(fā)射的是4.5ms的高電平和4.5ms的低電平,然后接著從鍵值對應的8位二進制碼的的低位開始發(fā)射。圖3.2 第3個按鍵的發(fā)射波形,對應的編碼為0000 0011第7個按鍵的發(fā)射波形如圖3.3所示。圖3.3 第7個按鍵的發(fā)射波形,對應的編碼為0000 0111第11個按鍵的發(fā)射波形如圖3.4所示。圖3.4 第11個按鍵的發(fā)射波形,對應的編碼為0000 1011第15個按鍵的發(fā)射波形如圖3.5所示。圖3.5 第15個按鍵的發(fā)射波形,對應的編碼為0000 1111從波形對應的編碼觀察,發(fā)射電路發(fā)射的編碼波形完全與按鍵的鍵值一一對應,編碼仿真的結果正確。把波形放大后的波形

16、如圖3.6所示,此波形應為承載編碼的38KHz載波。圖3.6 波形放大的載波波形,每格對應5us圖中載波每周期大概為26us,t1對應為低電平,約為17us;t2對應為高電平,約為9us。此脈沖電壓與紅外一體化接收頭所需要的占空比為 1/3的38KHz紅外信號幾一致。3.2 紅外接收部分紅外接收部分的電路如圖3.7所示。圖3.7 紅外接收部分的電路圖發(fā)射的紅外信號被紅外一體化接收頭接收、轉化為起始碼和用戶碼(鍵值二進制碼)所對應的包絡波形,然后傳遞到單片機的外部中斷0引腳,觸發(fā)單片機外部中斷。通過使用外部中斷0的下降沿觸發(fā)的時間間隔對包含用戶碼的包絡波形進行解碼,然后通過解碼得到的編碼判斷鍵值

17、并控制相應的功能。同樣抽取第三列的按鍵進行仿真,第三列的按鍵對應的鍵值從上往下為3、7、11、15,下面是仿真結果。第3個按鍵的仿真結果如圖3.8,點陣顯示的是顯示效果數(shù)字“2”,下面黑色區(qū)域顯示分別為紅外二極管的發(fā)送波形(上)和接收管的解調波形(下)。圖3.8 第3個按鍵的仿真結果需要注意的是,方案中設計接收端的按鍵功能為第一個按鍵顯示“0”,第二個按鍵顯示“1”,一次類推第七個按鍵顯示“6”,而后面第11個按鍵實現(xiàn)加1功能,第15個按鍵實現(xiàn)顯示所有圖案的功能。第7個按鍵的仿真結果如圖3.9所示,點陣顯示數(shù)字“6”,下面分別為對應的發(fā)送、解調波形。圖3.9 第7個按鍵的仿真結果第11個按鍵為

18、“+”鍵,可以實現(xiàn)數(shù)字加減的功能,按下該鍵之前(左)和之后(右)的仿真結果如圖3.10所示。圖3.10 第11個按鍵的仿真結果第15個按鍵為圖案顯示鍵,會逐個顯示圖案,其仿真結果如圖3.11所示,其中,點陣顯示的是某一時刻顯示的圖案。圖3.11 第15個按鍵的仿真結果從前面的仿真結果可以看出,發(fā)射的波形與接收到的波形一致,并能實現(xiàn)方案預設的功能。4 程序流程圖4.1 紅外發(fā)射部分的流程圖如圖4.1所示為發(fā)射部分的程序流程圖。圖4.1 發(fā)射部分的程序流程圖4.2 紅外接收部分的流程圖如圖4.2所示為接收部分的程序流程圖。圖4.2 接收部分的程序流程圖 5 作品演示方案設計的電路有兩部分,一為反射

19、部分(每張圖中的下部分電路),二為接收部分(每張圖中的上部分電路),電路板的正面、反面如圖5.1所示。圖5.1 電路板的正面、反面下面是工作時候的照片。圖5.2為開機畫面,圖5.3為第1個按鍵(從左上到右下的順序)顯示數(shù)字“0”,圖5.4為第6個按鍵顯示數(shù)字“5”,圖5.5為第13個按鍵數(shù)字與漢字裝換功能,顯示漢字“五”,圖5.6為第14個按鍵顯示流水燈動畫的某一瞬間,圖5.7為第15個按鍵全部圖案顯示的動畫的某一個。圖5.2為開機畫面 圖5.3 第1個按鍵顯示數(shù)字“0”圖5.4 第6個按鍵顯示數(shù)字“5” 圖5.5 第13個按鍵數(shù)字與漢字裝換功能圖5.6 第14個按鍵顯示流水燈動畫 圖 5.7

20、第14個按鍵顯示流水燈動畫的某一瞬間 由圖 5.7所示,矩陣中的按鍵的功能如方便貼中所示。首先從第一行左邊開始第1個鍵顯示數(shù)字“0”,依次為“1”、“2”“9”,接著的為第11個按鍵實現(xiàn)加1的功能,與電視遙控器的節(jié)目加按鍵類似;第12個按鍵為減1的功能;第13個為數(shù)字漢字轉換;第14個為顯示流水燈動畫;第15個為顯示所有圖案的動畫;最后一個為開關鍵,按下后LED點陣熄滅,再次按下后點亮開關畫面。6 設計方案中的不足及改進1)編碼方式簡單,容易出現(xiàn)差錯如前所示,為編程和程序的調試方便,本次方案中采用自定義的紅外發(fā)射編碼格式,即是9ms的引導碼加上按鍵鍵值的二進制碼一個字節(jié),調試時可以直接從二進制

21、碼中查看鍵值是否正確。但是,只發(fā)送一個字節(jié)的鍵值二進制碼在實際的操作中可能會有出現(xiàn)發(fā)送或解碼錯誤而卻無法判斷,到此接收端會顯示錯誤的圖案,這也是NEC協(xié)議中使用兩位地址碼和兩位數(shù)據(jù)碼的原因。再者,NEC協(xié)議使用地址反碼和數(shù)據(jù)反碼可以用來檢測接收是否正確,如有差錯需另行處理。改進方法:因遙控發(fā)射端只有16個按鍵,則使用4位二進制碼剛好能夠完全表示。假設使用低4位碼來表示不同的按鍵,則可以用高4位碼表示成低4位碼的反碼,這樣便可避免高4位碼都為”0”而沒有得到充分利用的情況。同時接收端也可以用此來判斷接收到的8位碼是否正確,以提高遙控的安全性。當然,也可直接采用NEC協(xié)議的編碼方式。2)紅外發(fā)射二

22、極管的驅動電路較為簡單一個遙控器的性能的好壞,除了前述的編碼的安全性外,還會有對遙控的距離的要求。紅外線不能穿透墻壁,因此遙控器不能從一房間控制另一個房間的的電器,但在一個房間內,遙控器的遙控距離也需達到一定的要求。本次方案中使用單片機直接驅動紅外發(fā)射二極管,可能會導致遙控距離較短。改進方法:使用晶體管放大電路驅動紅外管可產生較大的電流并且工作穩(wěn)定性很高,如圖6.1所示。圖6.1 晶體管放大電路驅動紅外管3)接收端功能較為簡單如作品演示部分所示,接收端采用單純的LED點陣顯示數(shù)字與圖案,控制功能較為簡單,但這不是課題方案的關鍵所在。如有需要且知道電視、空調等的編碼方式,程序改為其編碼格式后便可

23、直接控制電視或空調。作品演示中接收端的LED點陣的亮度較低,其原因可能是驅動電壓較低??刹捎锰岣吖╇婋妷夯驕p小限流電阻使其亮度增加。與演示時采用的單片機開發(fā)板上的LED點陣相比接收端的LED點陣亮度很低,因此還可以更換亮度較高的LED點陣。7 實驗總結通常紅外遙控使用專用配對編碼、解碼芯片,即某種解碼芯片只能識別某種編碼芯片的編碼,對其他型號的編碼芯片的編碼則不能識別,因此不同的遙控器沒有互換性,造成使用場合有多個遙控器,用戶深感不便。本實驗提出了利用單片機作為主控芯片,結合紅外遙控用戶碼的設置,自行設計編碼和解碼程序,實現(xiàn)一個遙控器控制多臺設備的方法。本實驗以單片機為控制核心,采用軟件編程對

24、紅外遙控信號進行編碼、解碼設計從而實現(xiàn)了遙控功能。系統(tǒng)硬件電路簡單,工作穩(wěn)定可靠,易于擴展受控設備,節(jié)約了硬件資源。系統(tǒng)具有較強的靈活性和實用性,為新型遙控器材的研制做了有益的探索。同時,本實驗也有許多不足之處。因為系統(tǒng)采用的編碼方式過于簡單,所以接收端解碼可能會出現(xiàn)差錯。另外,還存在著88點陣亮度不夠,信號有效距離較短等問題。總的來說,本實驗基本實現(xiàn)了紅外遙控器的功能。參考文獻1李朝青編著.單片機原理及接口技術(第三版).北京:北京航空航天大學出版社,2006.122李光飛等編著.單片機課程設計實例指導.北京:北京航空航天大學出版社,20043楊圣、江兵編著.電子技術實踐基礎教程. 北京:清

25、華大學出版社,2006.74童詩白主編.模擬電子技術基礎(第2版).北京:高等教育出版社,附錄:程序清單1) 發(fā)射部分:#include #include #define uint unsigned int#define uchar unsigned charsbit OP=P10; /紅外發(fā)射標志sbit led =P11 ; /LEDuchar endcount08;uchar flagkey;uchar temp;uchar key,keytemp; /鍵順序碼void delay(uchar x) /延遲函數(shù) uchar j;while(x-)!=0) /CPU執(zhí)行x*125次 for

26、(j=0;j0;b-)for(a=1;a0;a-);void delay4ms500us(void) /誤差 0usunsigned char a,b; 1998for(b=155;b0;b-)for(a=13;a0;a-);/*載波延遲*void delay6us(void)_nop_(); /if Keil,require use intrins.h_nop_(); /if Keil,require use intrins.hvoid delay14us(void)unsigned char a,b;for(b=1;b0;b-)for(a=3;a0;a-);/*鍵盤部分*void keys

27、can(void)temp = 0;/延時/屏蔽低四位 P2=0xF0; /高四位輸入 列為高電平 行為低電平 delay(1); temp=P2; /讀P1口 /求鍵值 /誤差 0us /誤差 0us temp=temp&0xF0;if(temp=1)key=1;key=2;key=3;key=4;temp=(temp4)|0xF0); / p1.4 被拉低 /第1個按鍵鍵值 / p1.5 被拉低 /第2個按鍵鍵值 / p1.6 被拉低 /第3個按鍵鍵值 / p1.7 被拉低 /第4個按鍵鍵值 else if(temp=2) else if(temp=4) else if(temp=8) P

28、2=0x0F; /低四位輸入 行為高電平 列為低電平 delay(1);/延時 temp=P2; /讀P1口temp=temp&0x0F;temp=(temp|0xF0);if(temp=1) /第一行 p1.1 被拉低(直接temp=2 是因為我們P1.0空的,是3*4的矩陣鍵盤) key=key+0;else if(temp=2) /第一行 p1.1 被拉低(直接temp=2 是因為我們P1.0空的,是3*4的矩陣鍵盤) key=key+4;else if(temp=4) /第二行 p1.2 被拉低key=key+8;else if(temp=8)key=key+12;/判斷是否有鍵按下v

29、oid keydown(void)/*/ /初始化void init()OP = 1;void initimer0()TMOD = 0x11;TH0 = 0x0FD;TL0 = 0x0D0;TH1 = 0x0EE;TL1 = 0x6C;/*發(fā)送數(shù)據(jù)*/ void emit4500ush()TR1=1; while(TF1!=1) OP=0; delay6us(); OP=1; delay14us(); EA = 1; ET1=1; ET0 = 1; /定時器1定時4.5ms /定時器0定時0.56ms /定時器初始化 P2=0xFF; /置P1口 led=0; P2=0xF0; /將高4位全部

30、置1 低四位全部置0 if(P2!=0xF0) /判斷按鍵是否按下 如果按鈕按下 會拉低P1其中的一個端口 keyscan(); flagkey=1; /調用按鍵掃描程序 /第三行 p1.3 被拉低 TF1=0; TR1=0; TH1 = 0x0EE; TL1 = 0x6C;void emit560ush() TR0=1; while(TF0!=1) TF0=0; TR0=0; TH0 = 0x0FD; OP=0; delay6us(); OP=1; delay14us(); TL0 = 0x0D0;/*發(fā)射代碼函數(shù)*/ void SendIRdata(uchar keytemp) uint

31、j; OP=1; /發(fā)送4.5ms的起始碼1 /發(fā)送4.5ms的起始碼0 emit4500ush(); delay4ms500us();/發(fā)送8位紅外編碼/先發(fā)送0.56ms載波即高電平/42-0.59ms /再發(fā)送低電平部分 for(j=0;j1; emit560ush();/*主函數(shù)*/ main()init(); initimer0(); P2=0xFF;delay(1); /延時 while(1)keydown(); /調用按鍵判斷檢測程序 led=1; flagkey=0; SendIRdata(key); delay(200); led=0; if(flagkey)2) 接收部分:

32、#include#include#define uchar unsigned char#define uint unsigned intuchar irtime;uchar startflag;uchar irdata9;uchar bitnum;uchar irreceok;uchar ircode;uchar ex_tabledata;uchar value;uchar tabledata;bit displayflag;bit redisplayflag;bit lsdflag;bit openflag,closeflag;bit turn;/*/延時函數(shù),在 12MHz 的晶振頻率下/

33、大約 50us 的延時/*void delay500us(void)unsigned char a,b;for(b=99;b0;b-)for(a=1;a0;a-);void delay500ms(void)unsigned char a,b,c;for(c=205;c0;c-)for(b=116;b0;b-)for(a=9;a0;a-);unsigned char code tablex=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,; /列選通控制 unsigned char code numdata278=0x00,0x00,0x3e,0x41,0x41,

34、0x41,0x3e,0x00, /00x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00, /10x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00, /20x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00, /30x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00, /4 /誤差 0us /誤差 0us0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00, /5 0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00, /6 0x00,0

35、x00,0x40,0x40,0x40,0x4f,0x70,0x00, /7 0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00, /8 0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00, /90xAF,0xEA,0xAD,0x00,0xE6,0xE9,0xA9,0x06, /零 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00, /一 0x00,0x08,0x28,0x28,0x28,0x28,0x08,0x00, /二 0x00,0x08,0x28,0x38,0x38,0x28,0x08,0x00, /三

36、 0x00,0x7C,0x54,0x64,0x64,0x54,0x7C,0x00, /四 0x02,0x42,0x52,0x7E,0x52,0x5E,0x42,0x02, /五 0x02,0x24,0x28,0xA0,0x60,0x28,0x24,0x02, /六 0x10,0x10,0x7C,0x12,0x12,0x12,0x16,0x00, /七 0x04,0x08,0x30,0x00,0x30,0x08,0x04,0x02, /八 0x00,0x22,0x24,0xF8,0x20,0x3E,0x02,0x06, /九 0x30,0x78,0x7C,0x3E,0x3E,0x7C,0x78,

37、0x30,/圖案1 0xE7,0xC3,0xA5,0x18,0x18,0xA5,0xC3,0xE7,/圖案2 0x18,0x3C,0x66,0xC3,0xC3,0x66,0x3C,0x18,/圖案3 0xFF,0x80,0xFF,0x01,0x01,0xFF,0x80,0xFF,/圖案4 0x01,0x02,0x04,0x08,0x90,0xA0,0xC0,0xF0,/圖案5 0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,/圖案60xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55/上電圖案 ;void timer0init(void

38、)void int0init(void)void display(uchar dat)uchar i; for(i=0;i8;i+) P0=tablexi; / 列線 IT0=1; EX0=1; EA=1; TMOD=0x02; TH0=0x00; TL0=0x00; ET0=1; EA=1; TR0=1; P2=numdatadat-1i; / 行線 delay500us();void redisplay() void liushuideng() uchar i; for(i=0;i8;i+) P0=0x00; / 列線 P2=0xff; / 行線 P0=tablexi-2; / 列線 P2=0xff; / 行線 delay500ms(); /誤差 0us /P1=0xFF; /列選通都關閉掉 P0=tablexi; / 列線 P2=0xff; / 行線 delay500ms(); /誤差 0us uchar i,j,t; for(j=0;j27;j+) redisplayflag=0; tabledata=27; for(t=0;t50;t+) i

溫馨提示

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

評論

0/150

提交評論