file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image002.gif 電子與信息工程學院 本 科 畢 業(yè) 論 文 論文題目 基于51單片機的紅外遙控的 開關(guān)的設(shè)計
摘 要 本設(shè)計是基于紅外遙控和AT89C51單片機控制的紅外遙控開關(guān),這種系統(tǒng)具有很強的適用性、靈活性、先進性,它的應用大大方便了人們的生活。本文給出了系統(tǒng)的硬件組成和硬軟件設(shè)計方法,介紹了解碼程序的基本結(jié)構(gòu)和程序框圖,為達到準確控制,將發(fā)射脈沖分為連接段、控制段和結(jié)束段等3部分,并再接收端進行校驗。整個系統(tǒng)由發(fā)射和接收兩個部分組成。發(fā)射部分包括鍵盤矩陣、編碼調(diào)制、LED紅外發(fā)送器;接收部分包括LED紅外光、解調(diào)、解碼電路。系統(tǒng)在實際實用后,證明其方便、可靠并具有實用價值。 關(guān)鍵詞:AT89C51芯片;紅外遙控開關(guān)
ABSTRACT The design of an infraredremote-control multi-line switch is introduced.This switch is based onprinciple of infrared remote-control and AT89C51 single chip microcomputer controlling .Thissystem has strong applicability,flexibilityand advancement.People's life is improved greatly by Its apply. Itssystem composition and design of hardware and software are presented. The basicstructure and chart of control decode program are also expounded. In order toachieve exact remote-control, the transmitted signal is divided into 3parts:the connecting section, the controlling section and the ending section,then the receiver will verify it.The whole system is composed by the launchespartially and the receives partially two parts.Launches partially including thekeyboard matrix,the coded modulation,the LED infrared transmitter;Receivespartially including the LED infrared light launch,the demodulation,decodes theelectric circuit. It was proved that this kind of remote-control is convenient,reliable and practical after using in remote-control system. Key words: the chip of AT89C51; infrared remote-control switch
目 錄
1 緒 論1.1 課題背景繼1971年微處理器的研制成功不久,就出現(xiàn)了單片機,但最早的單片機是一位的,單片機以其卓越的性能,得到了廣泛的應用,已經(jīng)深入到各個領(lǐng)域。單片機應用在檢測、控制領(lǐng)域中,具有以下特點:小巧靈活、成本低、易于產(chǎn)品化。它能方便的組裝成各種智能測控設(shè)備及各種智能儀表儀器?煽啃院茫m合溫度范圍寬。單片機芯片本身是按工業(yè)測控環(huán)境要求設(shè)計的,分為民用、工業(yè)品、軍品、其中工業(yè)品和軍品具有較強的適應惡劣環(huán)境的能力。由于單片機本身就是一個計算機系統(tǒng),因此,只要在單片機的外圍適當加一些必要的擴展電路及通道接口,就可以構(gòu)成各種應用系統(tǒng),如工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、自動測試系統(tǒng)、檢測監(jiān)視系統(tǒng)、智能儀表、功能模塊等。單片機的應用領(lǐng)域十分廣泛,自20世紀80年代以來,單片機的應用已經(jīng)深入到工業(yè)、農(nóng)業(yè)、國防、科研、機關(guān)、教育、商業(yè)以及家電、生活、娛樂、玩具等各個領(lǐng)域中。 1.2 應用前景本次設(shè)計是基于單片機的紅外遙控開關(guān)系統(tǒng),它在我們的生產(chǎn)和生活中有著很廣泛的應用前景。在我們所居住的場所,我們就可以通過紅外遙控技術(shù)來控制各種電器、儀表、機械等。這種系統(tǒng)具有很強的適用性、靈活性、先進性。它的應用將我們的生活變的更加輕松。大大方便了人們的生活隨著信息技術(shù)的不斷向前發(fā)展,一些功能更強的應用系統(tǒng)將出現(xiàn)在我們的各個方面,這將體現(xiàn)著高科技帶給人們的無窮魅力。
2 總體設(shè)計方案2.1 機型及元器件選擇 此次設(shè)計所采用的單片機的名稱是AT89C51,用其控制紅外信號。在發(fā)射部分的電路中我所采用的元器件有AT89C51芯片、發(fā)光二極管、三極管、警惕振蕩器等。在紅外接收部分采用的元器件有LED數(shù)碼管顯示器、紅外接收器ST188等。 2.1.1單片機的選擇單片機的主要性能指標有【1,2】:字長、主頻、指令執(zhí)行時間、電源功耗等。選擇單片機不僅要考慮其主要的性能指標,更要考慮單片機的中斷能力、接口、片內(nèi)存儲器大小、抗干擾能力等。本次設(shè)計所選的單片機為AT89C51,AT89C51單片機的引腳結(jié)構(gòu)圖如圖2-1所示。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image004.gif 圖2-1AT89C51引腳圖 40只引腳按功能來分,可以分為如下幾類: 1)電源及時鐘引腳:Vcc、Vss、XTAL1、XTAL2。 2)控制引腳:/PSEN、ALE、/EA、RESET(即RST)。 3)I/O口引腳:P0、P1、P2、P3,為4個8位I/O的外部引腳。 2.1.2 AT89C51單片及的硬件結(jié)構(gòu)1) 微處理器(CPU):一個8位的CPU,與通常的CPU基本相同,同樣還包括了運算器和控制器兩部分,只是增加了面向控制的出路功能,不僅可以處理字節(jié)數(shù)據(jù)還可以進行變量的處理。 2)數(shù)據(jù)存儲器(RAM):片內(nèi)為128B,片外最多可以外擴64KB。片內(nèi)的128B的RAM以告訴RAM形式集成在單片機內(nèi)。可以加快但單片機的運行速度,而且這種結(jié)果的RAM可以降低功耗。 3)程序存儲器(ROM/EPROM):用來存儲程序,8031沒有此部件,8051為4KB的ROM;8751為4KB的EPROM。片外最多可以擴至64KB。 4)4個8位并行I/O口(P0、P1、P2、P3) 5)1個串行口:1個全雙工的串行口,具有4種工作方式?梢杂脕磉M行串行通信,擴展并行I/O口,甚至與多個單片機相連接構(gòu)成多機系統(tǒng),從而使單片機的功能更加強且應用更廣。 6)2個16位定時器/計數(shù)器。 7) 中斷系統(tǒng):具有5個中斷源,2級中斷優(yōu)先權(quán)。 8) 特殊功能寄存器(SFR):共有21個、用于CPU對片內(nèi)各功能部件進行管理、控制、監(jiān)視。是一些控制器和狀態(tài)寄存器,具有特殊功能的RAM區(qū)。 AT89C51是一種低功耗、高性能、內(nèi)含4KB閃速存儲器(FlashMemory)的8位CMOS控制器。這種器件系以ATMEL高密度不揮發(fā)存儲技術(shù)制造,與工業(yè)標準MCS——51指令系統(tǒng)和引腳完全兼容。片內(nèi)閃速存儲器的程序代碼或數(shù)據(jù)可以在線寫入,亦可通過常規(guī)的編程器編程。例如MP——100這樣的經(jīng)濟型編程器,它支持痛喲個EPROM等各種存儲器、PAL(可編程陣列邏輯)、GAL(通用陣列邏輯)以及Intel,ATMEL和Philips等公司全系列51單片機的編程。ME5103和ME5105仿真器支持AT89系列所有器件的調(diào)試、仿真和編程。 AT89C51芯片內(nèi)部具有下列硬件資源:4KB閃速存儲器、128個字節(jié)RAM、32條I/O線,兩個16位定時/計數(shù)器、五源兩級終端結(jié)構(gòu)、全雙工串行口、片內(nèi)振蕩器及時鐘電路等。 正是由于AT89C51具有以上優(yōu)點,所以我選擇了它作為系統(tǒng)硬件所選單片機類型。 2.2 軟、硬件功能劃分本次設(shè)計的硬件部分包括紅外發(fā)射和紅外遙控接收兩個部分的電路【3,4】。關(guān)于電路的工作原理將在相應的章節(jié)介紹,在次就不做贅述。 系統(tǒng)的軟件部分的設(shè)計就要求在紅外遙控發(fā)射端對紅外信號進行編碼,在接收端對所讀取的編碼進行解碼,這就要求編譯顯影的功能程序執(zhí)行各自操作,最終實現(xiàn)對硬件電路的智能控制的目的。軟件部分的程序包括鍵盤掃描程序、剪號處理程序、38KHz載波及編碼脈沖發(fā)射程序、遙控接收及處理程序、延遲子程序。 2.3 總體方案設(shè)計系統(tǒng)組成如圖2-2所示【5】。系統(tǒng)由發(fā)射部分和接收部分組成。發(fā)射部分采用脈沖個數(shù)編碼,將待發(fā)射信號調(diào)制成38KHz的載波信號,由紅外發(fā)射管進行發(fā)射。接收部分由紅外接收管進行解碼接收,單片機通過對所接收信號的分析,輸出相應的控制信號,由發(fā)光二極管和數(shù)碼管指示出發(fā)射部分按下的按鍵號。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image006.jpg 圖2-2 紅外遙控開關(guān)系統(tǒng)組成
3 系統(tǒng)的設(shè)計3.1 系統(tǒng)硬件設(shè)計3.1.1 硬件要求一個單片機應用系統(tǒng)的硬件設(shè)計包括兩大部分內(nèi)容: 1.單片機系統(tǒng)的擴展部分設(shè)計。它包括存儲器擴展和I/O接口擴展。存儲器的擴展指RPROM、EEPROM和RAM的擴展。他們屬于單片機系統(tǒng)擴展的內(nèi)容。 2.各個功能模塊的設(shè)計。如信號測量功能模塊、信號控制功能模塊、人機對話功能模塊、通信功能模塊等,根據(jù)系統(tǒng)功能要求配置相應的A/D、D/A、鍵盤、顯示器、打印機等外圍設(shè)備。 由HRM5700B紅外先發(fā)射管及相關(guān)元件組成的紅外發(fā)射電路中的紅外信號經(jīng)過AT89C51單片機處理時對其定時器/計數(shù)器的工作方式的選擇有直接影響。首先了解AT89C51單片機的4種工作方式是硬件設(shè)計必不可少的步驟。 AT89C51單片機的定時器/計數(shù)器的結(jié)構(gòu)如下乳3-1所示【6】。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image008.jpg 圖3-189C51 定時器/計數(shù)器結(jié)構(gòu)圖 定時器/計數(shù)器 T0由特殊功能寄存器TH0、TL0構(gòu)成,定時器/計數(shù)器T1由特殊功能寄存器T1、TL1構(gòu)成。特設(shè)功能寄存器TMOD用于選擇定時器/計數(shù)器T0、T1得工作模式和工作方式。特殊功能寄存器TCON用于控制T0、T1得啟動和停止計數(shù),同時包含了T0、T1得狀態(tài)。TMOD、TCON這兩個寄存器得內(nèi)容由軟件設(shè)置。單片機復位時,兩個寄存器得所有位都被清0。 定時器/計數(shù)器得4種工作方式: 1.方式0:為13位計數(shù)器,由TLX(X=0,1)得低5位和THX得高8位所構(gòu)成。TLX低5位溢出則向THX進位,THX計數(shù)溢出則置位TCON中的溢出標志位TFX。 這時定時器/計數(shù)器的等效框圖如圖3-2所示。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image010.jpg 圖3-2 定時器/計數(shù)器方式0邏輯結(jié)構(gòu)圖 圖中C/T位控制的電子開關(guān)決定了定時器/計數(shù)器得工作模式: (1) C/T=0,電子開關(guān)打在上面位置,T1為定時器工作模式,以系統(tǒng)時鐘振蕩器12分頻后的信號作為計數(shù)信號。 (2) C/T=1,電子開關(guān)打在下面位置,T1位計數(shù)器工作模式,計數(shù)器脈沖為P3.5引角上的外部輸入脈沖,當引腳上發(fā)生負跳變時,計數(shù)器加1. GATE位的狀態(tài)決定定時器/計時器運行控制取決于TRX一個條件還是TRX和INTX引腳這兩件。 2. 方式1:當M1、M0為01是,定時器/計數(shù)器工作于方式1,這時定時器/計數(shù)器的等效電路如下圖3-3 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image011.jpg 圖3-3定時器/計數(shù)器方式1邏輯結(jié)構(gòu)圖 3 方式2: 方式0和方式1的最大特點是計數(shù)溢出后,計數(shù)器為全0.因此在循環(huán)定時或循環(huán)計數(shù)用時就存在反復裝入計數(shù)初值的問題。這不僅影響定時精數(shù),而且也給程序設(shè)計帶來麻煩。方式2就是針對此問題而設(shè)置的。當M1、M2為10時,定時器/計數(shù)器處于工作方式2,這時定時器/計數(shù)器得等效框圖如圖3-4所示。這種工作方式可以省去用戶軟件中得重裝初值的程序,簡化定時初值的計算方法,可以相當精確的確定定時時間。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image012.jpg 圖3-4定時器/計數(shù)器方式2邏輯結(jié)構(gòu)圖 紅外遙控開關(guān)系統(tǒng)的硬件電路包括紅外發(fā)射電路和接收電路兩部分。 3.1.2 鍵盤接口鍵盤在單片機應用系統(tǒng)中能實現(xiàn)向單片機輸入數(shù)據(jù)、傳送命令等功能,是人工干預單片機的主要手段。鍵盤實質(zhì)上是一組案件開關(guān)的集合。通常,鍵盤開關(guān)利用了機械觸點的斷開、閉合作用。鍵的閉合與否,反映在行線輸出電壓上就是呈現(xiàn)高電平或低電平,如果高電平表示鍵斷開,低電平表示鍵閉合,通過對行線電平高低狀態(tài)的檢測,便可以確認案件按下與否。為了確保CPU對一次按鍵動作只確認一次案件有效,必須消除抖動期的影響。 常用的鍵盤接口分為獨立式和行列式鍵盤接口【7】。獨立式鍵盤適用于按鍵較少或操作速度較高的場合。行列式(也稱矩陣式)鍵盤用于按鍵數(shù)目較多的場合,它由行線和列線組成,按鍵位于行、列的交叉點上。本次設(shè)計所采用的鍵盤接口就是這種。行列鍵盤的結(jié)構(gòu)如下圖3-5所示。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image013.jpgfile:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image014.jpg 圖3-5行列式鍵盤結(jié)構(gòu) 行列式鍵盤的工作原理:按鍵設(shè)置在行、列線分別連接到按鍵開關(guān)的兩端。行線通過上拉電阻接到+5V上。無按鍵按下時行線處于高電平狀態(tài),而當有按鍵按下時,行線電平狀態(tài)將由此行線相連的列線的電平?jīng)Q定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線亦為高。這一點是識別行列式鍵盤是否按鍵的關(guān)鍵所在。由于行列式鍵盤中行、列線為多鍵共用,各按鍵均影響該鍵所在行和列的電平。因此各按鍵彼此將互相發(fā)生影響,所以必須將行、列信號配合起來并做適當?shù)奶幚,才能確定閉合鍵的位置。 3.1.3 LED顯示器常用的LED顯示器為8段或7段(8段比7段多了以個小數(shù)點“dp”段)【8】。每一個段對應以個發(fā)光二極管。這種顯示器由共陽極和共陰極兩種。如圖3-6所示。共陰極LED顯示器的發(fā)光二極管的陰極連接在一起,通常次共陰極接地。當某個發(fā)光二極管的陽極為高電平時,發(fā)光二極管點亮,相應的段被現(xiàn)實。同樣,共陽極LED顯示器的發(fā)光二極管的陽極連接在一起,通常此公共陽極接正電壓,當某個發(fā)光二極管的陰極接低電平時,發(fā)光二極管被點亮,相應的段被顯示。為了使LED顯示器顯示不同的符號和數(shù)字,就要把不同段的發(fā)光二極管點亮,這樣就要為LED顯示器提供代碼,因為這些代碼可使LED相應的段發(fā)光,從而顯示不同字型,因此該代碼稱之為段碼(或稱為字型代碼)。7段發(fā)光二極管在加上一個小數(shù)點,共計8段。因此提供給LED顯示器的段碼正好是1B。各段于字節(jié)中各位對應關(guān)系如下圖3-6: file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image016.jpg file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image018.jpg 圖3-6 8段LED結(jié)構(gòu)及外形 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image020.jpg 圖3-7 發(fā)射部分電路圖 3.1.4 發(fā)射部分發(fā)射部分的電路原理圖如圖3-7所示【9】。圖中AT89C51單片機為控制核心,P0作為鍵掃描端口,具有16個操作鍵,可分別控制單片機發(fā)出16種不同脈沖,執(zhí)行16種操作。你9腳為單片機的復位腳,采用RC上電復位電路,第14腳作為紅外遙控發(fā)射編碼的輸出腳,用于輸出38KHz的載波編碼信號。脈沖經(jīng)T1放大然后由紅外發(fā)射管HRM5700B輸出。18、19腳接12M晶振。值得注意的是單片機的P0.0-P0.7口必須外接上拉電阻,否則發(fā)射部分將無法正常工作。 3.1.5 接收部分接受部分的電路原理圖如圖3-8所示【9】。其中AT89C51(2)單片機為控制核心:P1.0~P1.7口作為數(shù)碼管的二進制數(shù)據(jù)輸出,通過數(shù)碼管顯示發(fā)射終端的按鍵號,同時P0口和P2口相應的二極管會顯示亮燈;P3.0、P3.3口接收調(diào)解后的紅外遙控信號,需要說明的是: file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image022.jpg 圖3-8 接收部分電路原理圖 1) 處于在開關(guān)機時燈應全滅的考慮,P0和P2口在系統(tǒng)上電初始化后將一直保持為高電平,知道接收到發(fā)射部分的控制信號,其狀態(tài)才會發(fā)生改變; 2) 紅外接收頭采用一體化接收器HRM5700B,其解調(diào)頻率為38KHz,當HRM5700B接收到38KHz的紅外脈沖信號時輸出為低電平,反之輸出高電平。它是將光探測器與前置放大器封裝在一起,以實現(xiàn)對脈沖編碼信號調(diào)制的紅外光信號的接收。 在系統(tǒng)工作時,HRM5700B對接收到的脈沖編碼信號進行解調(diào),解調(diào)后的信號輸入至單片機的P3.0、P3.3口。 3.2 系統(tǒng)軟件設(shè)計本設(shè)計的軟件分為發(fā)射部分和接收部分。 3.2.1發(fā)射部分的工作原理系統(tǒng)上電初始化,然后調(diào)用鍵掃描處理子程序。當無按鍵按下時,系統(tǒng)處于等待狀態(tài);當有按鍵按下時,系統(tǒng)通過按鍵檢查子程序,,檢查按鍵號并轉(zhuǎn)入相應的發(fā)射子程序。在發(fā)射子程序中,將待發(fā)射信號調(diào)制成38KHz的載波信號,由單片機的14腳輸出,經(jīng)三極管9013放大后驅(qū)動紅外發(fā)射管ST188,發(fā)射調(diào)制脈沖信號。發(fā)射信號采用脈沖個數(shù)編碼,不同的脈沖個數(shù)代表不同的編碼,最小為6個脈沖,最大為21個脈沖,遙控碼數(shù)據(jù)幀間隔為8ms。為達到控制準確的目的,將發(fā)射脈沖分為連接段、控制段和結(jié)束段。連接段為發(fā)射信號的前3個脈沖,脈沖寬度分別為4ms、2ms、4ms,脈沖間隔為1ms。結(jié)束段為發(fā)射信號的最后2個脈沖,脈沖寬度分別為2ms、4ms,脈沖間隔為1ms。中間為控制段,脈沖寬度和賣出那個間隔均為1ms。發(fā)射8個編碼時的輸出信號波形如圖3-9所示。其中前3個脈沖為連接段。中間3個脈沖為控制段,最后2個脈沖為結(jié)束段。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image023.jpg 圖3-9 發(fā)射8個編碼時的輸出信號波形圖 3.2.2 接收部分工作原理系統(tǒng)上電初始化后,對單片機的P3.3口進行檢測,當其為高電平時,系統(tǒng)處于等待狀態(tài)。當其為低電平時,將啟動中斷服務程序,實現(xiàn)接收數(shù)據(jù)幀。需要說明的是:數(shù)據(jù)幀采用中斷方式進行接收,單片機在外中斷1方式下工作。在數(shù)據(jù)幀接收時,將對所接收數(shù)據(jù)的前3位碼的碼寬進行驗證。前3位碼的碼寬分別為4ms、2ms、4ms,若任意一位的碼寬不滿足要求,都將作為錯誤碼處理,當系統(tǒng)接收到的高電平脈寬大于5ms時,結(jié)束脈沖接收。然后系統(tǒng)會對所接收脈沖的最后兩位脈寬進行驗證,其值應分別是2ms和4ms,否則將會作為錯誤碼處理,最后系統(tǒng)根據(jù)累加器A中的脈沖個數(shù),在單片機P0或P2口的某一對應引腳輸出控制信號,同時在P1口輸出相應的二進制數(shù)據(jù)。此時即完成一次數(shù)據(jù)的接收處理。HRM5700B接收8個編碼時的輸出信號波形如圖3-10所示。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image024.jpg 圖3-10 ST188 接收8個編碼時的輸出信號波形圖 3.3 遙控系統(tǒng)的編碼及解碼3.3.1 遙控發(fā)射編碼格式采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0” ;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合二進制的“1” ,其波形如圖3-11所示。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image026.gif 圖3-11 遙控碼的“0”和“1”(注:所有波形為接收端的與發(fā)射相反) 上述“0”和“1”組成的32位二進制碼經(jīng)38khz的載頻進行二次調(diào)制以提高發(fā)射頻率,達到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,如圖3-12所示。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image028.gif 圖3-12 遙控信號編碼波形圖 遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進制“0”和“1”的個數(shù)不同而不同,大約在45ms~63ms之間,圖3-13為發(fā)射波形圖。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image030.gif 圖3-13 遙控連發(fā)信號波形 當一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這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.25ms)組成。 3.3.2 數(shù)據(jù)幀的接收處理當紅外線接收器輸出脈沖幀數(shù)據(jù)時,第一位碼的低電平將啟動中斷程序,實時接收數(shù)據(jù)幀。在數(shù)據(jù)接收時,先對第一位(起始位)碼的碼寬進行驗證。若第一位低電平碼的脈寬小于2ms,將作為錯誤碼處理;否則認為是起始碼,累加器A加1.當間隔位的高電平大于3ms時,結(jié)束接收,然后根據(jù)累加器A中的脈沖個數(shù),執(zhí)行相應的輸出操作。圖3-14為紅外線接收器輸出的一幀遙控碼波形圖。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image032.gif 圖3-14 一幀遙控碼波形圖 3.4 遙控發(fā)射及接收控制程序流程圖3.4.1 遙控發(fā)射控制流程圖file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image034.gif 圖3-15 遙控發(fā)射程序控制流程圖 上左圖是遙控發(fā)射的主程序,首先初始化程序,然后調(diào)用鍵掃描處理子程序。上右圖為掃鍵過程,首先判斷控制鍵是否按下,若有控制鍵按下則進行逐行掃描,按照P口值查找鍵號轉(zhuǎn)至相應的發(fā)射程序。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image036.gif 圖3-16遙控發(fā)射控制流程圖 紅外信號發(fā)射過程:首先裝入發(fā)射脈沖個數(shù)(發(fā)射時為3ms脈沖,停發(fā)時為1ms脈沖),此時若發(fā)射脈沖個數(shù)為1則返回主程序,若不為1則發(fā)1ms脈沖,然后停發(fā)1ms脈沖,這樣便結(jié)束整個發(fā)射過程。 在實踐中,采用紅外線遙控方式時,由于受遙控距離,角度等影響,實用效果不是很好,如采用調(diào)頻或調(diào)幅發(fā)射接收碼,可提高遙控距離,并且沒有角度影響。 3.4.2 遙控接收控制流程圖file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image038.gif 圖3-17 遙控接收控制主流程圖 遙控接收部分的主程序及初始化及延時過程如上:首先初始化,然后按照顯示亮度數(shù)據(jù)設(shè)定調(diào)光脈沖延時值,看P3.0口的脈沖是否為0,若不為0則調(diào)入延時程序,此時P2.7口輸出調(diào)光脈沖然后返回;若為0則直接返回。 file:///C:/Users/owner/AppData/Local/Temp/msohtml1/01/clip_image040.gif 圖3-18遙控接收中斷流程圖 中斷過程:首先判斷低電平脈寬度是否大于2ms,若脈寬不到2ms,中斷返回;若低電平大于2ms,則接收并地低電平脈沖計數(shù),接下來看判斷高電平脈沖寬度是否大于3ms,若脈寬不到3ms,則返回上一接收計數(shù)過程;若高電平脈寬大于3ms,則按照脈沖個數(shù)至對應功能程序。此時中斷返回。
4 系統(tǒng)調(diào)試一個單片機應用系統(tǒng)經(jīng)過總體設(shè)計、硬件設(shè)計、軟件設(shè)計、制板、元器件安裝后,在系統(tǒng)的程序存儲器中放入編制好的應用程序,系統(tǒng)即可運行。但一次性成功幾乎是不可能的,多少會出現(xiàn)一些硬、軟件上的錯誤,這就需要通過調(diào)試來發(fā)現(xiàn)錯誤并加以改正,本設(shè)計常用的調(diào)試儀器有:萬用表、穩(wěn)壓電源、示波器、信號發(fā)生器等。 調(diào)試步驟[17] 1. 調(diào)試前不加電源的檢查 對照電路圖和實際線路檢查連線是否正確,包括錯接、少接、多接等;用萬用表電阻檔檢查焊接和接插是否良好:元器件引腳之間有無短路,連接處有無接觸不良,二極管、三極管、集成電路和電解電容的極性是否正確;電源供電包括極性、信號源連線是否正確;電源對地是否存在短路(萬用表測量電阻)。 經(jīng)過上述檢查,我們發(fā)現(xiàn)我們所設(shè)計的電路存在錯接和連接處不良接觸的問題,經(jīng)過細心的檢查后,解決了上述的一些電路上的問題。 2.靜態(tài)檢測與調(diào)試 斷開信號源,把經(jīng)過準確測量的電源接入電路,用萬用表電壓檔檢測電源電壓,觀察有無異常現(xiàn)象:如冒煙、異常氣味、手摸元器件發(fā)燙,電源短路等,如果發(fā)現(xiàn)氣場情況,立即切斷電源,排除故障; 我們的電路在此項測試中如無異常情況,接著我們又分別測量各關(guān)鍵點直流電壓,如靜態(tài)工作點、放大電路輸入、輸出端直流電壓等是否在正常工作狀態(tài)下,結(jié)果又個別電路不符,經(jīng)過調(diào)整電路元器件參數(shù)、更換元器件,使電路最終工作在核實的工作狀態(tài); 對于放大電路我們還用示波器觀察是否有自激發(fā)生。結(jié)果一切正常。 3.動態(tài)監(jiān)測與調(diào)試 動態(tài)調(diào)試時在靜態(tài)調(diào)試的基礎(chǔ)上進行的,調(diào)試的方法在電路的輸入端加上所需的信號源,并循著信號的注射逐級監(jiān)測各有關(guān)點的波形、參數(shù)和性能指標是否滿足設(shè)計要求,如必要,要對電路參數(shù)做進一步調(diào)整。發(fā)現(xiàn)問題,要設(shè)法找出原因,排除故障,繼續(xù)進行。 我們所設(shè)計的遙控器電路時采用碼分制遙控方式,我們用示波器對發(fā)射電路輸出端及接收電路輸入端得信號波型進行了檢查,發(fā)現(xiàn)當按下不同的開關(guān)按鈕時所顯示的波型是不同的。這說明了此電路時工作在正常狀態(tài)的。 4.調(diào)試注意事項 經(jīng)過我們自己動手調(diào)試電路。我們從問題之中總結(jié)出來一些常用電路調(diào)試的注意事項。 (1) 正確使用測量儀器的接地端,儀器的接地端與電路的接地端要可靠連接; (2) 在信號較弱的輸入端,盡可能使用屏蔽線連線,屏蔽線的外屏蔽層要接到公共地線上,在頻率較高時要設(shè)法隔離連接線分布電容的影響,例如用示波器測量時應該使用示波器探頭連接,以減少分布電容的影響。 (3) 測量電壓所用儀器的輸入阻抗必須遠大于被測處的等效阻抗。 (4) 測量儀器的貸款必須大于被測電路的帶寬。 (5) 正確選擇測量點和測量檔 (6) 認真觀察記錄實驗過程,包括條件、現(xiàn)象、數(shù)據(jù)、波型、相位等。 (7) 出現(xiàn)故障時要認真查找原因。
5 畢業(yè)設(shè)計總結(jié)本設(shè)計采用紅外發(fā)射和接收的方式,保證了信號傳輸?shù)目煽啃,并且控制簡單、實施方便、成本低廉,通過接收發(fā)射端得控制信號,在接收部分實現(xiàn)了相應的控制,為達到控制準確的目的,將發(fā)射脈沖分為連接段、控制段和結(jié)束段,并在接收端進行校驗。通過開發(fā)實驗和現(xiàn)場應用證明,本次設(shè)計方案性能良好,工作可靠,完全可以用于各種家用電器的電源遙控控制。但是,由于受紅外線定向性和傳輸距離的限制,該系統(tǒng)只適用于短距離的遙控控制(10m以內(nèi)),而且操作時遙控要有一定的角度,如果中間有墻、門窗等障礙物時,紅外線將無法穿透。如果采用調(diào)頻或調(diào)幅等發(fā)射接收編碼,可提高遙控距離,并且不受角度的影響。
致 謝首先感謝吳四清老師在做論文期間對我的精心指導。在一學期的論文寫作中,從選題、出發(fā)點到初稿、定稿。在此想我的導師表示衷心的感謝并致以崇高的敬意。 畢業(yè)設(shè)計是本科最后的一堂課,通過畢業(yè)設(shè)計,我們應該更深一步的掌握所學的專業(yè)知識,同時培養(yǎng)一個良好的研究習慣,為以后的學習和工作打下基礎(chǔ)。所以做好畢業(yè)設(shè)計是我們每一個大學生的任務,也是我們所殷切希望的,借此來為自己思念的大學生涯交上一份滿意的答卷。 其次要感謝同班的同學給與我的幫助,在畢業(yè)設(shè)計過程中他們毫無保留的給我提供硬件方便的知識,協(xié)助我編寫本設(shè)計的程序,并且打架一起討論形成極大的學習氛圍,使自己加快了設(shè)計的步伐。在此向我的同學表示衷心的感謝。 最后,感謝檢查及檢查本人論文的各位老師,正式你們的嚴格要求使本人的設(shè)計不斷得到修改和改進。向所有關(guān)心和幫助我的老師們表示最衷心的感謝。
參考文獻 韓太林.單片機原理及應用[M].北京:電子工業(yè)出版社,2005. 張毅剛.單片機原理及應用[M].北京:高等教育出版社,2004. 盧飛躍.紅外遙控多路搶答器的設(shè)計[J].番禺職業(yè)技術(shù)學院學報,.2003,2(2):25-29. 黃尊熹.單片機原理接口與應用[M].西北工業(yè)大學出版社,2000.147-150. 樓然苗,李光飛.51系列單片機設(shè)計實例[M].北京:北京航空航天大學出版社,2003,103-120. 李必紅,王忠魁.基于單片機控制的機床數(shù)控改造[J].山西工學院學報,2004,20(1):70-79. 余永權(quán).Flash單片機原理及應用[M]. 北京:電子工業(yè)出版社,1997. 何立民.單片機應用系統(tǒng)設(shè)計[M]北京:北京航空航天大學出版社,1990. 李洪明.漫談紅外遙控[J]. 電子世界, 2000, (1):53. 高建榮.基于單片機控制紅外線遙控的編碼實現(xiàn)[J].計算機工程與設(shè)計,2004,25(11):2105.2107 劉曉明,安敏,王軍.兩種紅外解碼技術(shù)的探討[J].測控技術(shù),2001,20(12):51-52. 肖圣兵,仲興榮,徐清源.一種紅外遙控信號的解碼方法[J].蘇州大學學報(自然科學),2002,18(2):104.105. 付家才.單片機控制工程實踐技術(shù)[M].北京:北京化學工業(yè)出版社,2004 姚凱學,孟傳良.單片機原理及應用[M].重慶:重慶大學出版社,1998. 周立功.增強型80C51單片機速成與實戰(zhàn)[M].北京:北京航空航天大學出版社,2003. 嚴天峰.單片機應用系統(tǒng)設(shè)計與仿真調(diào)試[M].北京:北京航空航天大學出版社,2005. 馮建華.單片機應用系統(tǒng)設(shè)計與產(chǎn)品開發(fā)[M].北京:人民郵電出版社,2004. 裴彥純.基于單片機系統(tǒng)的紅外遙控器應用[M].北京:現(xiàn)代電子技術(shù),2007. West Germany.Intersection Without Signals[M]. Proceeding of an International Workshop 16-18 March. 1998.30-40.
附 錄/******************************************************************/ // send.c // 遙控發(fā)射器 /******************************************************************/ //使用AT89C51單片機,12Mhz晶振 // //#pragmasrc(E:\remote.asm) #include"reg52.h" #include"intrins.h" //_nop_():延時函數(shù)用 // #define ucharunsigned char #define uintunsigned int // sbit remoteout=P3^5; // 遙控輸出口 // // uinti,j,m,n,k,s; Ucharkeyvol,temp; // 鍵值存放 // //// /*************1毫秒延時程序***************/ void delay(uintz) { uint t1,y; for(t1=z;t1>0;t1--) For(y=110;y>0;y--); } // // /**************初始化函數(shù)****************/ clearmen() { Remoteout=0; // 關(guān)遙控輸出 IE=0x00; TMOD=0x02; // 8位自動沖撞模式 TH0=0xf3; // 40Khz初值 TL0=0xf3; EA=1; // 開關(guān)中斷 } // // // /**************發(fā)射函數(shù)****************/ sed () { ET0=1;TR0=1;delay(#);et0=0;remoteout=0; // 40Khz發(fā)3毫秒 for(m=keyvol;m>0;m--) { delay(1); //停1毫秒 ET0=1;TR0=1;delay(1);ET0=0;TR0=0;remoteout=0; //40毫秒Khz發(fā)1毫秒 } delay(10) } // tx() { switch(keyvol) { case0:keyvol=keyvol+1;sed();break; case1:keyvol=keyvol+1;sed();break; case2:keyvol=keyvol+1;sed();break; case3:keyvol=keyvol+1;sed();break; case4:keyvol=keyvol+1;sed();break; case5:keyvol=keyvol+1;sed();break; case6:keyvol=keyvol+1;sed();break; case7:keyvol=keyvol+1;sed();break; case8:keyvol=keyvol+1;sed();break; case9:keyvol=keyvol+1;sed();break; case10:keyvol=keyvol+1;sed();break; case11:keyvol=keyvol+1;sed();break; case12:keyvol=keyvol+1;sed();break; case13:keyvol=keyvol+1;sed();break; case14:keyvol=keyvol+1;sed();break; case15:keyvol=keyvol+1;sed();break; default:break; } } // // /**************鍵功能函數(shù)****************/ void keywork() { Ucharscancode,tmpcode; P0=0xf0; // 發(fā)全0行掃描碼 If((P0&0xf0)!=0xf0) //若有鍵按下 { Delay(5); //延時去抖動 If((P0&0xf0)!=0xf0) //延時后在判斷一次,去除抖動影響 { Scancode=0xfe; While((scancode&0x10)!=0)// //逐行掃描,剛好掃到第五位就推出了 { P0=scancode; //輸出行掃描碼 If((P0&0xf0)!=0xf0) //本行有鍵按下 { Tmpcode=(P0&0xf0)|0x0f; // 返回特征字節(jié)碼,為1的位即對應于行和列 Temp=(~scancode)+(~tmpcode); Switch(temp) { Case0x11:keycol=0;tx();break; Case0x21:keycol=1;tx();break; Case0x41:keycol=2;tx();break; Case0x81:keycol=3;tx();break; Case0x12:keycol=4;tx();break; Case0x22:keycol=5;tx();break; Case0x42:keycol=6;tx();break; Case0x82:keycol=7;tx();break; Case0x14:keycol=8;tx();break; Case0x24:keycol=9;tx();break; Case0x44:keycol=10;tx();break; Case0x84:keycol=11;tx();break; Case0x18:keycol=12;tx();break; Case0x28:keycol=13;tx();break; Case0x48:keycol=14;tx();break; Case0x88:keycol=15;tx();break; } } Elsescancode=(scancode<<1)|0x01; //行掃描碼左移一位 } } } } // // /**************主函數(shù)****************/ Void main() { Clearmen(); //初始化 While(1) { Keywork(); //按鍵掃描 } } // // /**************40Khz發(fā)生器****************/ //定時中斷T0 Void time_intt()(void) interrupt 1 { Remoteout=~remoteout; } // // //**********************結(jié)束************************//
|