畢業設計(論文)-基于單片機的智能化紅外遙控器_第1頁
畢業設計(論文)-基于單片機的智能化紅外遙控器_第2頁
畢業設計(論文)-基于單片機的智能化紅外遙控器_第3頁
畢業設計(論文)-基于單片機的智能化紅外遙控器_第4頁
畢業設計(論文)-基于單片機的智能化紅外遙控器_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、摘 要在電子化的世界中,紅外遙控技術廣泛的應用于我們的生活。市場上的各種家電的紅外遙控系統技術成熟、本錢低廉,但是,為了防止不同品牌、不同型號的設備之間產生誤操作,人們在不同的設備中使用不同的傳輸規那么或者識別碼,這就使得各個型號的遙控器都只適用于各自的遙控對象,容易造成實際使用中遙控器多而雜,經常搞混的結果。本設計要求實現一種智能學習型紅外遙控器的實現方案。本文通過研究紅外編解碼、紅外發射接收、MCU 控制、液晶顯示等技術,利用單片機對遙控器的發射信號的波形進行測量,然后將測量的數據回放,由于只關心發射信號波形中的上下電平的寬度,不管其如何編碼,因此做到了真正的“萬能。本設計以單片機為主要控

2、制中心,外圍電路主要包括接收電路、發射電路、鍵盤電路、顯示電路以及存儲電路。設計中重點及核心局部是通過軟件解碼來實現對紅外信號的自學習,并由單片機控制將學習的信號存儲及轉發。關鍵詞:紅外遙控;38KHZ載波;自學習;紅外接收;紅外發送AbstractIn the electronic world, the infrared remote control technology is widely used in our lives. Various appliances on the market have the technology of infrared remote control sy

3、stem with maturity and low cost. However, to avoid different brands and between different types of equipment malfunction, people use different devices in different transport rules or identification number, which makes various types of remote control apply only to their remote objects and easy causes

4、 confusing results that the actual use of the remote control are many and complex. The design requirements is to achieve an intelligent learning IR remote control implementations.By studying infrared codec, infrared transmitting and receiving, MCU control, LCD display technology, remote control of o

5、ther learning and learning sent successfully restored infrared remote control system.Key and core part of the design is that through software decoding it can achieve the self-study function of the infrared signal and be controlled by MCU to make the learned signal in store and forward.Keywords: Infr

6、ared remote controller;The 38KHZ carrier;Self-study;Infrared remote receiver;Infrared remote transmitter目 錄 TOC o 1-3 h z t 引言,1,謝辭,1,參考文獻,1,附錄,1 HYPERLINK l _Toc19681 引言 PAGEREF _Toc19681 4 HYPERLINK l _Toc4737 1 系統設計 PAGEREF _Toc4737 2 HYPERLINK l _Toc7029 1.1 任務要求 PAGEREF _Toc7029 2 HYPERLINK l _

7、Toc24526 1.2 總體方案介紹 PAGEREF _Toc24526 2 HYPERLINK l _Toc28436 2 方案論證 PAGEREF _Toc28436 3 HYPERLINK l _Toc32390 2.1 學習方式 PAGEREF _Toc32390 3 HYPERLINK l _Toc25045 2.2 按鍵模塊 PAGEREF _Toc25045 4 HYPERLINK l _Toc26279 2.3 顯示模塊 PAGEREF _Toc26279 5 HYPERLINK l _Toc24799 2.4 紅外接收模塊 PAGEREF _Toc24799 5 HYPER

8、LINK l _Toc22877 2.5 微控制器選擇 PAGEREF _Toc22877 6 HYPERLINK l _Toc30437 3 硬件電路設計 PAGEREF _Toc30437 6 HYPERLINK l _Toc5107 3.1 系統硬件根本組成 PAGEREF _Toc5107 6 HYPERLINK l _Toc31684 3.2 主要模塊電路設計 PAGEREF _Toc31684 6 HYPERLINK l _Toc26516 PAGEREF _Toc26516 6 HYPERLINK l _Toc22992 3.2.2 紅外發射電路及其編碼 PAGEREF _Toc

9、22992 8 HYPERLINK l _Toc17350 PAGEREF _Toc17350 11 HYPERLINK l _Toc24276 3.2.4 存儲電路 PAGEREF _Toc24276 12 HYPERLINK l _Toc29188 3.2.5 單片機控制電路 PAGEREF _Toc29188 13 HYPERLINK l _Toc32216 4 系統軟件設計 PAGEREF _Toc32216 16 HYPERLINK l _Toc29411 4.1 系統編程語言和編程工具 PAGEREF _Toc29411 16 HYPERLINK l _Toc20505 Keil

10、uVision2簡介 PAGEREF _Toc20505 17 HYPERLINK l _Toc12710 PAGEREF _Toc12710 18 HYPERLINK l _Toc22243 PAGEREF _Toc22243 19 HYPERLINK l _Toc10543 PAGEREF _Toc10543 25 HYPERLINK l _Toc19762 5 系統調試 PAGEREF _Toc19762 31 HYPERLINK l _Toc11688 5.1 系統硬件調試 PAGEREF _Toc11688 32 HYPERLINK l _Toc3895 5.1.1 元件的使用 PA

11、GEREF _Toc3895 32 HYPERLINK l _Toc26725 5.1.2 整板測試 PAGEREF _Toc26725 32 HYPERLINK l _Toc3901 5.1.3 上電測試 PAGEREF _Toc3901 32 HYPERLINK l _Toc16320 PAGEREF _Toc16320 32 HYPERLINK l _Toc19074 PAGEREF _Toc19074 32 HYPERLINK l _Toc29450 PAGEREF _Toc29450 32 HYPERLINK l _Toc1530 PAGEREF _Toc1530 33 HYPERL

12、INK l _Toc12993 PAGEREF _Toc12993 33 HYPERLINK l _Toc6685 6 性能測試 PAGEREF _Toc6685 33 HYPERLINK l _Toc32676 6.1 測試所使用儀器 PAGEREF _Toc32676 33 HYPERLINK l _Toc3628 6.2 測試結果 PAGEREF _Toc3628 33 HYPERLINK l _Toc12140 6.3 結果分析 PAGEREF _Toc12140 34 HYPERLINK l _Toc1681 7 結論 PAGEREF _Toc1681 34 HYPERLINK l

13、_Toc11303 謝 辭 PAGEREF _Toc11303 36 HYPERLINK l _Toc26435 參考文獻 PAGEREF _Toc26435 37 HYPERLINK l _Toc27528 附 錄 PAGEREF _Toc27528 37引言 紅外遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗微、功能強、本錢低等特點,繼彩電、空調等電器設備上采用了紅外遙控技術之后,在汽車、保險柜的門鎖上以及一些常用工具的操作上都采用了紅外遙控技術。一些自動控制裝置采用紅外線遙控不僅具有可靠、便利的優點,而且還能有效地隔離電氣干擾。隨著科技的開展,越來越多的現代

14、電器比方: 音響、 電視機、 空調、 熱水器、 電腦、 微波爐成為人們生活的必需品。這些電器通常都依賴于遙控器進行操作。但由于各種紅外遙控編碼格式的不同, 使得各種產品的遙控器不能相互兼容 , 這給人們的日常生活帶來了諸多不便。最近市場上出現了能夠遙控不同家用電器的萬能紅外遙控器, 但這些萬能紅外遙控器多存在可遙控的家用電器種類不多、 操作復雜等缺點。本課題目的是實現一種智能學習型紅外遙控器的實現方案,從而完成對各種遙控器的學習的功能,這將給人們的生活帶來極大的便捷。學習型遙控器更是實現對各被控設備的統一控制和管理的重要條件,是實現智能家居系統的根底。1 系統設計 任務要求本設計要求實現一種智

15、能學習型紅外遙控器的實現方案,主要內容包括:(1)研究紅外遙控器的遙控方法與原理。(2)設計智能化紅外遙控器的實現方案。(3)選擇器件實現系統的硬件電路。(4)編寫和調試軟件系統。 總體方案介紹紅外遙控器的核心元器件是編碼芯片,將需要實現的操作指令事先編碼,設備接收后解碼再控制有關部件執行相應的動作。編碼是通過載波輸出的,即所有的脈沖信號均調制在載波上,載波頻率通常為38kHz。在發送端,載波利用電信號驅動紅外發光二極管,將電信號變成光信號發射出去,發射的是紅外光,波長范圍在 840nm 到 960nm 之間。在接收端,通過光電二極管將紅外光信號轉換成電信號,經放大、整形、解調等步驟,最后復原

16、成原來的脈沖編碼信號,并根據遙控指令完成相應的動作。學習型紅外遙控器通過記錄各種不同類型的遙控器的編碼波形,將其存儲下來并與某個按鍵關聯,從而實現“學習功能這樣作不必關心編碼的細節,通用性大大提高。根據課題要求初步制定了實現上述功能的根本思路。此系統主要分為6大模塊:單片機控制模塊、鍵盤模塊、紅外接收模塊、紅外發送模塊、存儲模塊、顯示模塊。其中的主要模塊是單片機控制系統模塊,主要的功能實現都是由單片機程序控制,鍵盤的掃描,液晶的顯示,紅外遙控信號的接收、學習以及發射都是由單片機的程序來控制。系統原理框圖如1.1所示: 自學習型遙控器的功能主要分為學習和發送兩個局部。在學習的過程中,收電路接收到

17、紅外遙控信號以后, 經過放大并解調出TTL電平信號送至微處理器進行處理。經過微處理器處理以后存儲到外存儲器里 。當要發射紅外信號時,根據掃描鍵盤電路獲取的鍵盤值,從與鍵值相對應的外存儲器存儲區中復原出相應的紅外遙控編碼 ,并調制到38KHz的載波信號上。最后通過放大電路驅動紅外發光二極管發射紅外信號。到達學習和發射的目的,從而實現一個遙控器控制多種紅外遙控設備的功能。2 方案論證2.1 學習方式從目前市場上主要出現的萬能學習型遙控器看,主要分為兩大陣營:(1)固定碼式學習型遙控器。這類學習型遙控器采用了“不完全歸納法,也就是說對市場上所使用的遙控器信號大量的收集總結,對收集的信號分類,然后“分

18、而治之對每種類別都預制一種解碼程序和發射程序。這種方式的學習過程是:學習信號的采集 ;判別信號的類別屬于那一種解碼方案,編碼,存儲到。 優點:這種學習型遙控器對硬件的要求相對簡單,對主控制器主控IC的工作頻率要求不太高,因為信號的發送頻率,編碼方式等等都是的,只要對采集的信號進行判別即可;另外對存儲器的容量也比擬低,因為它不存在壓縮的問題,按照最原始的最簡編碼進行存儲。 缺點:只能對的遙器或者說已經收集到的信號有效,對于新開發,新型的編碼格式就無能為力了。 (2)波形拷貝式學習型遙控器。這類遙控器的設計思想是:把原遙控器所發出的信號進行完全拷貝,而不管遙控器是什么格式,進行適當的壓縮后,存儲在

19、存儲器內,當需要發射時,再由儲存器內讀出解壓后復原原始信號。 此方式的工作過程分以下幾步完成:對原始發射信號波形采集到主控MCU的中、分析信號,壓縮信號,存儲信號。 發射信號波形的測量,這一步主要是將原始信號緩存儲到中。 分析信號,對采集到的信號進行分析,比方對信號發送的的上下電平的時間,等參數進行細致分析,便于下一步的壓縮。壓縮編碼,根據常用上下電平的時間,特殊上下電平的時間,發送周期,對原始信號進行壓縮編碼。 存儲信號,把壓縮編號后的數據存儲到EEPROM中優點:可以使用任何遙控器的學習,無須更新代碼程序即可使用目前所有乃至未來的所有紅外線遙控的學 缺點:對主控制芯片和存儲器的選擇都比固定

20、式要高。整體本錢上較貴于固定碼式學習型遙控器由于遙控器發出的編碼信號變化多樣,市場上成百上千的編碼方式并存,并沒有一個統一的國際標準,只有各芯片廠商事實上的標準,使得模擬并替換各種原廠遙控器成為難點。而且客戶碼、命令碼也是由不同廠商自行規定的。導致采用第一種方案來設計有很大的局限性,因此第二種是較為可行的方案。即通過記錄各種不同類型的遙控器的編碼波形,將其存儲下來并與某個按鍵關聯,從而實現“學習功能這樣作不必關心編碼的細節,通用性大大提高。因此2.2 按鍵模塊方案1:采用獨立式按鍵。獨立式按鍵電路配置靈活,。軟件結構簡單,每個獨立式按鍵單獨占有一根I/O口線,每根I/口線上的按鍵工作狀態不會影

21、響其他I/O口線的工作狀態。但是每個按鍵必須占用一個I/O口線,在按鍵較多時,I/O口線浪費較大。故在按鍵數量不多時,采用這種按鍵電路。獨立式按鍵與單片機接口圖如2.1所示:圖2.1 獨立式鍵盤方案2:使用矩陣鍵盤管理專用芯片,比方HD7279。占用比擬少的資源就能管理一個按鍵數比擬多的鍵盤,集成了硬件消抖功能,提高了程序的執行效率。但是增加硬件本錢和儀器的功耗。方案3:行列式鍵盤,用I/O口線組成行、列結構,按鍵設置在行、列線交點行,行、列線分別連接到按鍵開關的兩端。在按鍵較多時,可以節省I/O口線。66鍵盤與單片機接口圖如2.2所示。圖2.2 6*6鍵盤設計中使用的單片機I/O口豐富,不用

22、考慮I/O口緊張,而且通常家用電器有32個鍵盤,選擇方案3。2.3 顯示模塊方案1:采用數碼管LED顯示。數碼管價錢較廉價,對環境因素要求較低,顯示明亮,采用 BCD 編碼顯示數字,程序編譯相對容易,資源占用少。但同時它的顯示內容有限,只能顯示簡單的數字和字母。這種常用的液晶,耗能也高。方案2:采用液晶LCD顯示。液晶顯示屏(LCD)具有輕薄短小,耗電量低,無輻射危險,平面直角顯示以及影像穩定不閃爍等優勢,可視面積大,畫面效果好,分辨率高,抗干擾能力強和顯示形式靈活等優點。只是編程工作量較大,控制其占用資源較多,但在本系統中對控制器的資源使用中完全可以使用。 綜上所述,選擇方案2。2.4 紅外

23、接收模塊方案一:采用紅外接收二極管加專用的紅外處理電路。接收電路的紅外接收管是一種光敏二極管,使用時要給紅外接收二極管加反向偏壓,它才能正常工作而獲得高的靈敏度。紅外接收二極管一般有圓形和方形兩種。由于紅外發光二極管的發射功率較小,紅外接收二極管收到的信號較弱,所以接收端就要增加高增益放大電路。此種電路結構較復雜,現在一般不采用。方案二:采用一體化紅外接收頭。紅外線一體化接收頭是集紅外接收、放大、濾波和比擬器輸出等的模塊,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數據傳輸。所以,有了一體化接收頭

24、,人們不再制作接收放大電路,這樣紅外接收電路不僅簡單而且可靠性大大提高。綜上所述,選擇方案2。本系統所使用的紅外接收頭的型號是常用的HS0038,即其載波的頻率是用38KHZ(37.9KHZ)。2.5 微控制器選擇方案1:用常用的單片機。AT89C51等類似的單片機我們之前用過,很熟悉,用它作為主控單元,但此類單片機往往由于工作頻率較低,它的內部存儲器容量過小,難以滿足本系統的設計需要。方案2:使用基于STC單片機,比方選擇STC89C52RC型單片機是一種低功耗、高性能、采用CMOS工藝的8位微處理器,與工業標準型80C51單片機的指令系統和引腳完全兼容。片內8K Flash存儲器可在線重新

25、編程,或使用通用的非易失性存儲器編程器。由于一般的距離測量中,距離的變化速度并不太快,而且單片機的機器周期可達s級,那么其計時精度為s級,完全可以滿足系統測量的要求,并且本錢較低。STC89C52RC單片機,基于STC89C51內核,是新一代增強型單片機,指令代碼完全兼容傳統STC89C51,速度快812倍,帶ADC,4路PWM,雙串口,有全球唯一ID號,加密性好,抗干擾強。綜上所述,選擇方案2。3 硬件電路設計 3.1 系統硬件根本組成基于單片機的智能化遙控器的系統硬件結構主要有以下六局部組成: 單片機系統電路、紅外接收電路、紅外發送電路、存儲電路、鍵盤電路、顯示電路。3.2 主要模塊電路設

26、計(1)鍵盤電路設計6*6鍵盤電路模塊見圖3.1所示。鍵盤的實現方法是給所有的列線I/O口線均置成低電平,然后將行線電平狀態讀入到單片機中,如果有鍵按下,就會有一根行線電平被拉至低電平,根據次原理就可以檢測到是哪個鍵按下。鍵盤的接口與單片機的P1、P3口相接。圖3.1 鍵盤電路2顯示模塊電路顯示局部采用了1602型LCD顯示模塊。1602型LCD顯示模塊具有體積小,功耗低,顯示內容豐富等特點。1602型LCD可以顯示2行16個字符,有8位數據總線D0D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符比照度調節和背光功能。1602型LCD的接口信號說明和主要技術參數分別如表所示.

27、表3.1 1602型LCD的接口管腳信號編號符號引腳說明編號符號引腳說明1VSS電源地9D2Data I/O2VDD電源正極10D3Data I/O3VL液晶顯示偏壓信號11D4Data I/O4RS數據/命令選擇端H/L12D5Data I/O5R/W讀寫選擇端H/L13D6Data I/O6E使能信號14D7Data I/O7D0Data I/O15BLA背光源正極8D1Data I/O16BLK背光源負極表3.2 1602型LCD的主要技術參數顯示容量16X2個字符芯片工作電壓工作電流2.0mA5.0V模塊最正確工作電壓字符尺寸2.95X4.35(WXH)mm圖3.2中的顯示電路中的10

28、針接口與單片機的P1口相連,6針的接口與單片機的P2口的高位相連。圖3.2 顯示電路3.2.2 紅外發射電路及其編碼1紅外發射電路1000mm20m、和遠紅外201000mm的近紅外區。紅外線的波長較短,更適合用于短距離控制系統中。近紅外光可以通過紅外發光二極管 (LED)獲得紅外發光二極管是一種由PN結構成的注入電流型發光器件,在加上適宜的正向偏置電壓后,就可以發出一定波長的近紅外光。發射電路如圖3.3所示。圖 紅外發射電路目前大量使用的紅外發光二極管發出的紅外線波長為940nm左右,外形與普通5發光二極管相同,只是顏色不同。紅外發光二極管一般有黑色、深藍、透明三種顏色。發光二極管有交流電流

29、、直流電流和脈沖電流等驅動方式。交流電流驅動方式主要用于紅外測量、檢測以及較簡單的紅外光通信中。直流電流驅動方式,如圖3.4發射方式示意圖左圖所示,也被稱為平均發射方式,是指通過啟動直流電源驅動發光二極管發出恒定的紅外光。一般用這種驅動方式的紅外光電二極管功率較小大都小于100mV、功耗較大、抗干擾能力也很差。圖3.4 發射方式示意圖為了提高紅外遙控系統的工作距離,而又不使紅外發光管過載,一般不采用這種方式,而是采用如圖3.4右圖所示的脈沖式發射方式或調制載波脈沖發射方式,紅外遙控系統的工作有效作用距離取決于發光二極管輻射的峰值功率,而峰值功率是由驅動發光二極管的電路峰值所決定的。在相同的平均

30、電流下,脈沖寬度越窄,峰值功率越大,傳輸的速度就越快,發光的效率也就越高,遙控的有效距離也就越遠。這種發射方式也大大提高了系統的抗干擾能力。對于紅外光通信,除了紅外遙控距離外,調制頻率、調制帶寬也是發光二極管的兩個重要參數。調制頻率關系到紅外發光二極管在光通信中的傳輸速度的上下,紅外發光二極管因受到注入PN結有源區內少數載流子壽命的限制一般只有幾十兆赫茲,從而限制了紅外發光二極管在高比特速率系統種的應用。通過合理的脈沖編碼和優化驅動電路,可使發光二極管有可能用于高速光通信系統。調制帶寬定義為:在保證一定的調制頻率下,當發光二極管輸出的交流光功率比參考頻率下降3db時,所對應的頻率值。它是衡量發

31、光二極管調制能力的重要參數。2紅外遙控編碼紅外遙控器碼將需要實現的操作指令事先編碼,然后將所有編碼的脈沖信號調制在38 kHz方波的載波上,經過三極管放大后,驅動紅外發光二極管向外發送。其中38 kHz載波直接由單片機用軟件模擬,由定時器TO產生。為保證38kHz方波的頻率穩定性,在硬件設計時盡可能使用頻率高的晶振,提高CPU運行速度。在應用系統中,要完成對遙控器信號的解碼并實現對系統功能的控制,必須了解遙控器信號碼(即遙控器所發射脈沖流)的格式,即信號的引導脈沖上下脈沖的寬度、“0,“1的表示法,以及遙控器識別碼、各個功能鍵的鍵碼。對信號碼的識別應該從分析脈沖流的各個高、低脈沖的時間入手,通

32、過分析各個高、低脈沖的時間,分析得出信號碼的格式。常見的“0,“1“0“1。圖3.5 遙控碼的“0和“1控器所產生的脈沖編碼的格式一般為: 引導脈沖(頭)識別碼(用戶碼)鍵碼鍵碼的反碼其引導脈沖為寬度是10 ms左右的一個高脈沖和一個低脈沖的組合,用來標識指令碼的開始。識別碼、鍵碼、鍵碼的反碼均為數據編碼脈沖,用二進制數表 示。“0和“1均由ms量級的上下脈沖的組合代表。識別碼(即用戶碼)是對每個遙控系統的標識。通過對識別碼的檢驗,每個遙控器只能控制一個設備動作,有效的防止了多個設備之間的串擾。當指令鍵按下時,指令信號產生電路便產生脈沖編碼。鍵碼后面一般還要有鍵碼的反碼,用來檢驗鍵碼接收的正確

33、性,防止誤動作,增強系統的可靠性。這些指令信號由調制電路調制成3240 kHz的信號,經調制后輸出,最后由驅動電路驅動紅外發射器件(LED)發出紅外遙控信號。圖3.6為一類遙控連發信號波形圖。圖3.6 一類遙控連發信號波形當一個鍵按下超過36ms,振蕩器使芯片激活,將發射一組108ms的編碼脈沖,這108ms發射代碼由一個引導碼9ms,一個結果碼4.5ms,低8位地址碼9ms18ms,高8位地址碼9ms18ms,8位數據碼9ms18ms和這8位數據的反碼9ms18ms組成。如果鍵按下超過108ms仍未松開,接下來發射的代碼連發碼將僅由起始碼9ms和結束碼2.25ms組成。一體化的紅外接收裝置將

34、遙控信號的接收、放大、檢波、整形集于一身,并且輸出可以讓單片機識別的TTL 信號,這樣大大簡化了接收電路的復雜程度和電路的設計工作,方便使用。在本系統中我們采用紅外一體化接收頭HS0038,外觀圖如圖3.7 所示。HS0038 黑色環氧樹脂封裝,不受日光、熒光燈等光源干擾,內附磁屏蔽,功耗低,靈敏度高。在用小功率發射管發射信號情況下,其接收距離可達35m。它能與TTL、COMS 電路兼容。HS0038 為直立側面收光型。它接收紅外信號頻率為38 kHz,周期約26 s,同時能對信號進行放大、檢波、整形,得到TTL 電平的編碼信號。三個管腳分別是地、5 V 電源、解調信號輸出端。圖3.7 紅外一

35、體化接收頭hs0038外觀圖當無遙控信號輸入時,HS0038輸出端保持高電平,有信號時輸出為上下電平脈沖,故接收時一個碼由一個低電平后跟一個高電平構成。本紅外遙控接收電路如下圖。將其輸出端接入單片機外部中斷0的INT0腳。圖 紅外接收電路3.2.4 存儲電路遙控器所能存儲代碼的數量也是衡量一個智能學習型遙控器性能好壞的重要指標。遙控器在學習完某個遙控器的代碼后得把該代碼存儲起來,由于單片機內部的數據存儲器RAM所能存儲的數據有限而且不能掉電保護。所以就需要適宜大小的外存儲器來存儲所學習到的代碼。這里采用常用的存儲芯片AT24C02。AT24C02是由ATMEL公司提供的,I2C總線串行EEPR

36、OM,其容量為1KB,工作電壓在1.8V5.5V之間,生產工藝是CMOS工藝,具有工作電壓寬(2.55.5V)、擦寫次數多(大于10000次)、寫入速度快(小于10ms)、抗干擾能力強、數據不易喪失、體積小等特點。其引腳圖和時序圖分別如圖3所示。 圖3.9 AT24C02引腳圖 AT24C02時序圖引腳功能介紹如下:A0引腳1:器件地址的A0位。A1引腳2:器件地址的A1位。A2引腳3:器件地址的A2位。GND引腳4:地線。SDA引腳5:數據總線引腳。SCL引腳6:時鐘總線引腳。TEST引腳7:測試引腳,Vcc引腳8:電源線引腳。 AT24CXX系列的器件地址是A6 A5 A4 A3 A2 A

37、1 A0 R/W,其中最低位R/W除外,其余都是地址位,共有7位,其中低3位A2 A1 A0由引腳連接決定,高4位A6 A5 A4 A3已經由廠家給出為1010。R/W決定數據傳輸的方向,當R/W1時,是從 存儲器讀出數據,當R/W0時,是向存儲器寫入數據。AT24C02內有256字節存儲單元,片內地址使用一字節8位地址尋址就可以滿足要求。地址范圍是00HFFH。 存儲電路原理圖如下:圖 存儲電路3.2.5 單片機控制電路1所選單片機簡介本設計中選用的宏晶科技的STC89C52RC型單片機是一種低功耗、高性能、采用CMOS工藝的8位微處理器,與工業標準型80C51單片機的指令系統和引腳完全兼容

38、。片內8K Flash存儲器可在線重新編程,或使用通用的非易失性存儲器編程器。由于一般的距離測量中,距離的變化速度并不太快,而且單片機的機器周期可達s級,那么其計時精度為s級,完全可以滿足系統測量的要求,并且本錢較低,所以本設計中選用STC89C52RC型號的單片機。STC89C52RC單片機,基于STC89C51內核,是新一代增強型單片機,指令代碼完全兼容傳統STC89C51,速度快812倍,帶ADC,4路PWM,雙串口,有全球唯一ID號,加密性好,抗干擾強。2單片機引腳功能STC89C52RC采用40Pin封裝的雙列直插DIP結構。40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根

39、,4組8位共32個I/O口,中斷口線與P3口線復用。STC89C52RC的引腳圖如圖3.12所示,其引腳功能如下:圖3.12 STC89C52RC引腳圖1. Pin20:接地腳。2. Pin40:正電源腳,工作時,接+5V電源。3. Pin19:時鐘XTAL1腳,片內振蕩電路的輸入端。4. Pin18:時鐘XTAL2腳,片內振蕩電路的輸出端。5. STC89C52RC的時鐘有兩種方式,一種是片內時鐘振蕩方式,但需在18和19腳外接石英晶體(2-12MHz)和振蕩電容,振蕩電容的值一般取10p-30p。另外一種是外部時鐘方式,即將XTAL1接地,外部時鐘信號從XTAL2腳輸入。6. 輸入輸出(I

40、/O)引腳:Pin39-Pin32為P0.0-P0.7輸入輸出腳。Pin1-Pin8為P1.0-P1.7輸入輸出腳。Pin21-Pin28為P2.0-P2.7輸入輸出腳。7. Pin9:RESET/Vpd復位信號復用腳,當STC89C52RC通電,時鐘電路開始工作,在RESET引腳上出現24個時鐘周期以上的高電平,系統即初始復位。STC89C52RC的復位方式可以是自動復位,也可以是手動復位。此外,RESET/Vpd還是一復用腳,Vcc掉電期間,此腳可接上備用電源,以保證單片機內部RAM的數據不喪失。8. Pin30:ALE當訪問外部程序存儲器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節

41、。而訪問內部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。如果單片機是EPROM,在編程其間,將用于輸入編程脈沖。9. Pin29:當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數據將出現在P0和P2口上,外部程序存儲器那么把指令數據放到P0口上,由CPU讀入并執行。10. Pin31:EA/Vpp程序存儲器的內外部選通線,STC89C52RC和8751單片機,內置有4kB的程序存儲器,當EA為高電平并且程序地址小于4kB時,讀取內部程序存儲器指令數據,而超過4kB地址那么讀取外部指令數據。如EA為低

42、電平,那么不管地址大小,一律讀取外部程序存儲器指令。3單片機控制電路圖3.13 單片機控制電路4 系統軟件設計4.1 系統編程語言和編程工具在單片機的開發應用系統中,匯編語言作為傳統的編程語言,己經不能滿足實際需要,高級語言被逐漸引入,C語言就是其中之一。C語言是一種通用的計算機程序設計語言,它既有高級語言的各種特征,又能直接操作系統硬件。對于大多數單片機,使用C語言與使用匯編語言相比具有如下優點:1不需要了解處理器的指令集,也不必了解存儲器結構。2存放器分配和尋址方式由編譯器進行管理。3指定操作的變量選擇組合提高了程序的可讀性。4可使用與人的思維更相近的關鍵字和操作函數。5程序的開發和調試時

43、間大大縮短。6 C語言中的庫文件提供了許多標準的例程。7可實現模塊化編程技術,從而可將己編制好的程序參加到新程序中。8 C語言可移植性好且非常普及。目前,8051上的C語言的代碼長度,已經做到了匯編水平的1.21.5倍。4K字節以上的程度,C語言的優勢更能得到發揮。至于運行速度的問題,只要有好的仿真器,找出關鍵的代碼,再進一步做一下人工優化,就可很容易到達美滿。故在本系統中,單片機程序采用C語言編寫,使用Keil C51編譯軟件來編程。Keil uVision2簡介Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統, Keil C51軟件提供豐富的庫

44、函數和功能強大的集成開發調試工具,全Windows界面。Keil uVision2版本功能齊全,集編輯、編譯、仿真于一體,支持匯編和C語言的程序設計,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用界面友好,易學易用。Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能表達高級語言的優勢。Keil uVision2的運行界面如下列圖4.1所示。圖4.1 Keil uV

45、ision2的運行環境界學習型遙控器的設計性能及實現與其軟件設計編寫有著密切的關系,在設計中采用內部定時器對信號上下電平計時的方法來采集數據并保存。由于受到存儲空間和代碼長度的限值,硬件中的按鍵并沒有完全充分使用。而是選擇了其中的6個按鍵進行學習。系統軟件首先對定時器設置和初始化液晶顯示。在主循環中檢測按鍵,假設有學習按鍵按下時,那么進入學習模式。此時要繼續按下編號為3-6的某個按鍵,然后可以用紅外遙控器對準接收頭按下遙控器上需要學習的鍵,將學到的紅外信號綁定到該編號鍵,并將學習到的紅外解碼數據存到EEPROM中。在主循環中檢測到編號3-6的按鍵,那么進入發送模式。根據按鍵的編號找到相應EEP

46、ROM中的地址,讀出紅外數據,并將此數據調制經紅外發射頭發射出去。 軟件流程圖:圖4.2 主程序流程圖要實現學習型遙控器的軟件設計,最關鍵的兩個局部是學習功能和數據壓縮。盡管通信協議中有不同的幀格式,如幀頭、系統碼、操作碼、同步碼、幀間隔碼、幀尾等,根據記錄下降沿間的間隔時間來測量紅外遙控信號的上下電平的脈寬值的原理,用戶甚至不需要了解通信協議的具體內容,只需知道低電平(有紅外發送載波)信號時長和高電平(無紅外發送載波)信號時長就可以實現遙控命令的學習和存儲。在設計中采用內部定時器對信號上下電平計時的方法來采集數據并保存。由于紅外接收信號直接接單片機的外部中斷0端口,當輸入信號產生低電平跳變時

47、,系統啟動內部定時器1,依次對輸入上下電平脈沖寬度值計時。如果采集到編碼信號位數大于設定值(程序中設定值)或者高電平信號時長大于一定值,即認為編碼采集已經結束,學習子程序結束。在設計中選擇24 MHzs,計數器采用16 ms;每次學習結束后,都將學習到的存儲在單片機內部存儲區的遙控命令數據壓縮,并根據按鍵和LCD顯示屏的顯示數據統一編碼再存入EEPROM。當在正常情況下時,那么根據按鍵需要的遙控命令,從EEPROM中尋找到相關的遙控命令,對此命令進行解壓后,再用軟件模仿38 kHz載波信號發送編碼信息。學習功能局部程序設計:/*外部中斷0*/void inter0 (void) interru

48、pt 0 using 1/下降沿一到,即進入中斷效勞程序 EX0=0;/外部中斷1關閉TH1 = 0;/清零 TL1 = 0;/步驟一:定時器1對起始幀的負脈寬測量。TR1=1; /定時器1開始計數PW_pt = 4;/數組指針timeout = 0;length=0;RX_flag = 1;Head_flag = 0;End_flag=0;while(ir_in = 0)/檢測是否還是低電平,高電平到來才退出循環。timeout+;if (timeout40000)/超過時間直接退出RX_flag = 0;break;TR1=0; /定時器1關閉計數PW_data0 = TH1;/定時器1計

49、數值,負脈寬計數值PW_data1 = TL1;TH1 = 0;/清零 TL1 = 0;/步驟二:定時器1對起始幀的正脈寬測量。TR1=1; /定時器1開始計數timeout = 0;if(PW_data055)Head_flag = 1;elseHead_flag = 0;while(ir_in)/檢測是否還是高電平,低電平到來才退出循環。timeout+;if (timeout20000)/超過時間直接退出RX_flag = 0;break;TR1=0; /定時器1關閉計數PW_data2 = TH1;/定時器1計數值,正脈寬計數值 PW_data3 = TL1;TH1 = 0;/清零 T

50、L1 = 0;for (u8_i=0; u8_i10000)/超過時間直接退出RX_flag = 0;break;TR1=0; /定時器1關閉計數PW_dataPW_pt+ = TH1;/定時器1計數值,負脈寬計數值PW_dataPW_pt+ = TL1;TH1 = 0;/清零 TL1 = 0;/步驟四:定時器1對數據幀的正脈寬測量。TR1=1; /定時器1開始計數timeout = 0;if(RX_flag)length+;RX_flag = 1;while(ir_in)/檢測是否還是高電平,低電平到來才退出循環。timeout+;if (timeout10000)/超過時間直接退出RX_f

51、lag = 0;break;TR1=0; /定時器1關閉計數PW_dataPW_pt+ = TH1;/定時器1計數值,負脈寬計數值PW_dataPW_pt+ = TL1;TH1 = 0;/清零 TL1 = 0;/步驟五:對功能碼的測量。PW_pt = 0;/調整指針值for (u8_i=0; u8_i10000)/超過時間直接退出RX_flag = 0;break;TR1=0; /定時器1關閉計數PW_data2PW_pt+ = TH1;/定時器1計數值,負脈寬計數值PW_data2PW_pt+ = TL1;TH1 = 0;/清零 TL1 = 0;/步驟四:定時器1對數據幀的正脈寬測量。TR1

52、=1; /定時器1開始計數timeout = 0;if(RX_flag)&(End_flag=0)length+;if(PW_data2PW_pt-210000)/超過時間直接退出RX_flag = 0;break;TR1=0; /定時器1關閉計數PW_data2PW_pt+ = TH1;/定時器1計數值,負脈寬計數值PW_data2PW_pt+ = TL1;TH1 = 0;/清零 TL1 = 0;/步驟六:假設數據已經傳完,結束幀是怎么樣的。for (u8_i=0; u8_i60000)/超過時間直接退出RX_flag = 0;break;TR1=0; /定時器1關閉計數PW_data2PW

53、_pt+ = TH1;/定時器1計數值,負脈寬計數值PW_data2PW_pt+ = TL1;TH1 = 0;/清零 TL1 = 0;/步驟四:定時器1對數據幀的正脈寬測量。TR1=1; /定時器1開始計數timeout = 0;if(RX_flag)&(End_flag=0)length+;if(PW_data2PW_pt-260000)/超過時間直接退出RX_flag = 0;break;TR1=0; /定時器1關閉計數PW_data2PW_pt+ = TH1;/定時器1計數值,負脈寬計數值PW_data2PW_pt+ = TL1;TH1 = 0;/清零 TL1 = 0;/數據處理局部:對

54、數據幀的正脈寬判斷,是0還是1。同時把數據和脈寬值存下來。/if (Head_flag)Data_Process();EX0=1;在軟件設計時采用了脈寬測量技術,但在數據存儲時發現數據占用的內存容量太大,讀寫EEPROM時間很長,應尋求一種數據無損壓縮的方法,既可降低內存和E PROM占用容量,又能提高系統運行速度。經研究發現,盡管各種被控設備存在標準不一,幀格式、碼型、編碼長短、發送方式不同等問題,但對于某一個特定的被控設備還是有一定的規律,即表示“0和“1的方式在一個設備中是相同的。在系統設計時,只要選擇合理的設計方案,就能解決這個問題。通過對不同被控設備的紅外遙控命令進行分析,發現長的遙

55、控信號為150 ms,這樣最多的上下信號碼的數據可達數百個。數據壓縮編碼局部程序設計:/* 函數名稱:Data_Process* 入口參數: 緩沖區* 出口參數: 緩沖區* 功能描述:處理脈寬緩沖數據*/ void Data_Process(void)uchar i;uint L_time=0, H_time=0, temp;write_com(0 x80+0 x40+12);/地址/write_date(W);/write_date(I);EndBit=0;System_Code = 0;/系統碼Funtion_Code = 0;/功能碼Funtion_Anti_Code = 0;/功能反碼

56、length=4;/先存好數據低脈沖的脈寬。/L_time = PW_data4;/L_time = 8;/L_time |= PW_data5;/算好系統碼for(i=0; i26; i+)L_time = PW_datalength;L_time = 8;L_time |= PW_datalength+1;H_time = PW_datalength+2;H_time L_time)temp = H_time - L_time;if (tempCOMP_NUM)/1System_Code=(System_Code1)|0 x00000001;/ /length+;HO_time = PW_

57、datalength+2;LO_time = PW_datalength+3;elseSystem_Code=(System_Code1);/ /length+;HZ_time = PW_datalength+2;LZ_time = PW_datalength+3;elseSystem_Code=(System_Code1);/ /length+;HZ_time = PW_datalength+2;LZ_time = PW_datalength+3;length = length + 4;/算出功能碼length = 0;EndBit = 0;for(i=0; i8; i+)L_time =

58、PW_data2length+;L_time = 8;L_time |= PW_data2length+;H_time = PW_data2length+;H_time L_time)temp = H_time - L_time;if (H_time5000)EndBit = 1;/結束碼高電平PW_data16 = PW_data2length-2;/高位PW_data17 = PW_data2length-1;/低位if (tempCOMP_NUM)/1Funtion_Code=(Funtion_Code1)|0 x00000001;/ elseFuntion_Code=(Funtion_

59、Code1);/ elseFuntion_Code=(Funtion_Code1);/ /算出功能反碼for(i=0; i8; i+)L_time = PW_data2length+;L_time = 8;L_time |= PW_data2length+;H_time = PW_data2length+;H_time L_time)temp = H_time - L_time;if (tempCOMP_NUM)/1Funtion_Anti_Code=(Funtion_Anti_Code1)|0 x00000001;/ elseFuntion_Anti_Code=(Funtion_Anti_C

60、ode1);/ elseFuntion_Anti_Code=(Funtion_Anti_Code1);/ length = 0;/顯示功能碼if (EndBit)Funtion_Anti_Code = System_Code & 0 x00000003;Funtion_Anti_Code = 2;Funtion_Anti_Code = Funtion_Anti_Code | Funtion_Code;System_Code = 2;Funtion_Code = System_Code & 0 x000000ff;System_Code = 8;/起始幀,低電平高位/起始幀,低電平低位/起始幀,

溫馨提示

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

評論

0/150

提交評論