引言
人們的生活已經(jīng)全面邁入了信息化的時代,使用紅外遙控的家電種類開始增多,在日常生活中利用紅外遙控來控制紅外控制的家電種類非常的多,普通的家電就有:電視、DVD機(jī)、空調(diào)等,這些都是需要紅外遙控進(jìn)行控制的,但一個家電只能由廠家的配置的遙控器進(jìn)行控制,而且只有對應(yīng)的紅外遙控發(fā)出的紅外編碼才能控制相關(guān)的紅外家電。
為了探究紅外遙控的內(nèi)在原理并延伸紅外遙控技術(shù),本文利用平時所學(xué)的單片機(jī)原理及應(yīng)用、傳感器技術(shù)與應(yīng)用、模擬電子技術(shù)和數(shù)字電子技術(shù)基礎(chǔ)等相關(guān)電子專業(yè)知識,設(shè)計了一款基于STC89C52RC單片機(jī)的紅外遙控系統(tǒng)。該紅外遙控系統(tǒng)能夠?qū)W習(xí)并記憶市場上的家電紅外遙控器紅外編碼信號,可以融合多種紅外遙控于一體,從而滿足對多種紅外遙控設(shè)備的集中控制。整個紅外遙控系統(tǒng)功耗低,操作簡單方便,性價比高,能較好的滿足生活中人們對紅外遙控器的需要。
- ?課題背景
隨著紅外遙控技術(shù)快速發(fā)展讓人們的生活變得越來越方便與快捷的同時,在平時的家居生活中使用的智能化家電也越來越多,同樣,我們使用的紅外遙控型號也越來越多樣化,但是,一個紅外遙控只能控制相對應(yīng)的紅外受控家電,家電多的家庭平時還因?yàn)檫b控器多以及找不到相對應(yīng)遙控器而煩惱,這時候,設(shè)計一款基于單片機(jī)紅外遙控器設(shè)計系統(tǒng),此系統(tǒng)要兼顧紅外遙控的簡單實(shí)用、操作方便和性價比高等特點(diǎn),以滿足人們生活中對遙控器的需要。
2? 系統(tǒng)方案與功能指標(biāo)
2.1 系統(tǒng)方案
圖 0?1系統(tǒng)硬件總體設(shè)計框圖
基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的整個硬件設(shè)計系統(tǒng)以STC89C52RC芯片作為系統(tǒng)的主控芯片,以4×4矩陣鍵盤作為基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的控制輸入模塊,LCD1602液晶顯示屏作為系統(tǒng)的輸出顯示模塊,再利用STC89C52RC芯片通過UART協(xié)議以波特率9600波特與IR01紅外收發(fā)模塊進(jìn)行通訊,控制IR01紅外收發(fā)模塊對紅外遙控器的紅外編碼進(jìn)行學(xué)習(xí)和發(fā)射?;趩纹瑱C(jī)紅外遙控器設(shè)計系統(tǒng)的硬件設(shè)計圖如上圖2-1所示。
2.2 功能指標(biāo)
- 利用單片機(jī)和紅外學(xué)習(xí)模塊進(jìn)行設(shè)計;
- 選取合適的液晶顯示屏顯示;
- 紅外遙控范圍能在4到6米;
- 能對相應(yīng)電器的遙控器進(jìn)行學(xué)習(xí),從而實(shí)現(xiàn)操控相應(yīng)電器。
- ?系統(tǒng)器件選型
- ?主控芯片
基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的主控芯片采用的是STC89C52RC芯片。STC89C52RC芯片是STC公司研發(fā)的新一代小型單片機(jī),其在軟件和硬件方面與MCS-51完全兼容,這個類型的單片機(jī)抗干擾能力強(qiáng),數(shù)據(jù)傳輸速率快,具備高性能的同時,其功耗也低,為很多嵌入式控制系統(tǒng)提供了一個性價比較高的方案。
STC89C52RC芯片擁有以下特點(diǎn):①STC89C52RC芯片可以工作在2.7V~6V電壓范圍,以及可以工作在-40°C~85°C的溫度環(huán)境;②STC89C52RC芯片與MCS-51系列的單片機(jī)在指令系統(tǒng)和引腳上的分布完全兼容,意味著MCS-51系列的單片機(jī)在指令系統(tǒng)能在STC89C52RC芯片直接適用;③STC89C52RC芯片具有4K字節(jié)可反復(fù)編程快速擦寫程序的內(nèi)部RAM;④STC89C52RC芯片可以工作在頻率范圍為0Hz~24Hz之間全靜態(tài)工作模式。
STC89C52RC芯片同時也具備豐富的芯片資源:①STC89C52RC芯片內(nèi)部擁有128×8位的RAM;②STC89C52RC芯片擁有32位可以雙向輸入輸出的功能引腳;③STC89C52RC芯片擁有兩個16位的定時器和兩個16位的計數(shù)器;④STC89C52RC芯片擁有5個中斷源,5個中斷源又分兩級中斷優(yōu)先級;⑤STC89C52RC芯片擁有一個支持全雙工的異步通訊串行口。
綜合STC89C52RC芯片具有這些功能與特點(diǎn),所 以STC89C52RC芯片是本基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的主控芯片的不二之選。STC89C52RC直插芯片引腳資源分布圖如下圖3-1所示:
圖 3?1 STC89C52RC直插芯片引腳資源分布圖
-
- ?顯示模塊
根據(jù)自己目前所掌握的知識,初步認(rèn)為以下兩種的顯示方案適合基于單片機(jī)紅外遙控器設(shè)計系統(tǒng):
方案1:
使用MAX7219 數(shù)碼管顯示模塊作為基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)輸出顯示模塊,MAX7219 數(shù)碼管顯示模塊是一種共陰極顯示驅(qū)動器,它連接微控制器與8位數(shù)字顯示的7段數(shù)字LED顯示。該顯示模塊的支持四線串行接口,可以并聯(lián)多個MAX7219 型號的數(shù)碼管,達(dá)到多個數(shù)碼管同時使用,還不占用芯片資源的好處。
MAX7219 數(shù)碼管顯示模塊支持10MHz連續(xù)串行口;該顯示模塊擁有獨(dú)立的LED段選控制接口;該顯示模塊可以選擇非譯碼與數(shù)字的譯碼等方式;該顯示模塊支持150uA的低功耗關(guān)閉模式;該顯示模塊是共陰極LED顯示驅(qū)動;該顯示模塊可以限制回轉(zhuǎn)電流的段驅(qū)動來減少EMI;該模塊支持QSPI、MICROWIRE和SPI等多種串行接口;MAX7219 數(shù)碼管顯示模塊可以工作在0°C~70°C的溫度范圍。MAX7219 數(shù)碼管顯示模塊實(shí)物圖如下圖3-2所示:
圖 3-2 MAX7219 數(shù)碼管顯示模塊實(shí)物圖
方案2:
使用LCD1602液晶顯示模塊作為基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)輸出顯示模塊,LCD1602液晶顯示模塊作為電子愛好者平時電子制作中常用到的電子顯示元器件,其是一種經(jīng)常用來顯示數(shù)字、字母和符號等的LCD顯示模塊,LCD1602液晶顯示模塊的1602表示該顯示模塊能顯示的最多內(nèi)容是16×2,簡而言之就是說LCD1602液晶顯示模塊只能顯示兩行字符,每一行字符最多可以顯示16個字符;LCD1602液晶顯示模塊工作在電壓4.5V~5.5V之間;LCD1602液晶顯示模塊的額定工作電流為2.0mA(即也就是說額定電壓5V,5V是LCD1602液晶顯示模塊的最佳工作電壓);LCD1602液晶顯示模塊的字符尺寸為2.95×4.35(W×H)mm;模塊分辨率為16×2×35,35為單個字符占用的點(diǎn)大小。LCD1602液晶顯示模塊實(shí)物如下圖3-3所示:
圖 3?3 LCD1602液晶顯示模塊實(shí)物圖
最后,通過兩個顯示模塊的對比,MAX7219 數(shù)碼管顯示模塊只能顯示數(shù)字、一些常用的字母以及個別字符,而LCD1602液晶顯示模塊可以顯示大多數(shù)的數(shù)字、字母和符號等,能更好的滿足電子制作者的需求,所以基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)選用LCD1602液晶顯示模塊作為輸出顯示模塊。
-
- ?紅外收發(fā)模塊
對于基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的紅外接收方案,通過查資料和相關(guān)文獻(xiàn)了解到的紅外收發(fā)方案如下所示:
方案1:
利用普通的紅外對管作為基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的紅外收發(fā)。紅外對管分為紅外發(fā)射頭和紅外接收頭,我們知道紅外線的光譜位于紅色光之外,人的肉眼無法察覺,波長是0.76μm~1.5μm,比紅光的波長還長。紅外對管通過發(fā)射端的晶振產(chǎn)生與被控紅外接收設(shè)備的相同的調(diào)制載波頻率,進(jìn)而控制被控紅外接收設(shè)備。紅外對管支持NEC解碼,通過解碼紅外對管可以控制紅外碼段較簡單和紅外頻段較低的紅外設(shè)備。紅外對管實(shí)物圖如下圖3-4所示:
圖 3?4 紅外對管實(shí)物圖
方案2:
使用IR01 紅外遙控學(xué)習(xí)模塊作為基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的紅外收發(fā)模塊。IR01 紅外遙控學(xué)習(xí)模塊是一款可以學(xué)習(xí)的萬能型紅外遙控學(xué)習(xí)模塊,它可以支持普通的NEC編碼的紅外遙控學(xué)習(xí),也支持空調(diào)的長碼編碼的學(xué)習(xí),它可以先學(xué)習(xí)紅外遙控的編碼,之后再利用以學(xué)習(xí)的鍵碼發(fā)送出去,就能實(shí)現(xiàn)遙控器的復(fù)制或者集成到更智能的設(shè)備中。IR01 紅外遙控學(xué)習(xí)模塊可以通過簡碼串口控制,并配合上位機(jī)軟件,就能輕松實(shí)現(xiàn)產(chǎn)品的開發(fā),可以很大程度上降低新產(chǎn)品的開發(fā)難度。
IR01 紅外遙控學(xué)習(xí)模塊支持DC5V,100mA的供電方式,其中靜態(tài)電流<1mA,發(fā)射電流為80mA;IR01 紅外遙控學(xué)習(xí)模塊可以控制半徑10m內(nèi)的紅外設(shè)備;IR01 紅外遙控學(xué)習(xí)模塊采用標(biāo)準(zhǔn)的串口通信,即5V/3.3V的TTL電平,8位數(shù)據(jù),1個停止位,0個奇偶校驗(yàn)位;IR01 紅外遙控學(xué)習(xí)模塊支持波特率為2400、4800、9600、19200和115200等波特率;IR01 紅外遙控學(xué)習(xí)模塊支持NEC、RC-5、PWM、PPM和空調(diào)碼等絕大部分的紅外遙控器;IR01 紅外遙控學(xué)習(xí)模塊支持的載波頻率高達(dá)38KHz。IR01 紅外遙控學(xué)習(xí)模塊的應(yīng)用范圍也十分廣泛,可以應(yīng)用在智能家居產(chǎn)品,如:多功能遙控器魔方、萬能遙控器等;也可以應(yīng)用在工業(yè)控制產(chǎn)品,如空調(diào)控制器,溫濕度機(jī)控制器,恒溫恒濕控制器等。
IR01 紅外遙控學(xué)習(xí)模塊帶有記憶存儲芯片,具有掉電保護(hù)功能,不會因?yàn)閱纹瑱C(jī)復(fù)位或者電源突然掉電/上電導(dǎo)致要重新解碼;IR01 紅外遙控學(xué)習(xí)模塊可以反復(fù)的進(jìn)行紅外學(xué)習(xí)模塊,可以通過上位機(jī)學(xué)習(xí)把已學(xué)習(xí)的紅外編碼導(dǎo)入或者導(dǎo)出,IR01 紅外遙控學(xué)習(xí)模塊是一個可以實(shí)現(xiàn)高效率研發(fā)、生產(chǎn)產(chǎn)品的紅外學(xué)習(xí)模塊。IR01 紅外遙控學(xué)習(xí)模塊實(shí)物圖如下圖3-5所示:
圖 3?5 IR01 紅外遙控學(xué)習(xí)模塊實(shí)物圖
綜上兩個方案所述以及進(jìn)行測試對比,普通的紅外對管只能控制普通的紅外遙控,稍微頻段高一點(diǎn)的以及編碼長一點(diǎn)的紅外編碼,就無法對紅外設(shè)備進(jìn)行解碼控制;而IR01 紅外遙控學(xué)習(xí)模塊支持NEC、RC-5、PWM、PPM和空調(diào)碼等絕大部分的紅外遙控器。在當(dāng)前來說,市場上的紅外接收家電的紅外編碼都不一樣,頻段也不一樣,普通的紅外接收管難以滿足本設(shè)計的需求,IR01 紅外遙控學(xué)習(xí)模塊更適合本基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)的需要,并且IR01 紅外遙控學(xué)習(xí)模塊自帶記憶存儲芯片,具有掉電保護(hù)功能,不會因?yàn)閱纹瑱C(jī)復(fù)位或者電源突然掉電/上電導(dǎo)致要重新解碼,IR01 紅外遙控學(xué)習(xí)模塊開發(fā)效率也高,對于研發(fā)人員來說也非常友好,所以IR01 紅外遙控學(xué)習(xí)模塊非常適合本設(shè)計的需要。
- ?系統(tǒng)硬件電路設(shè)計
4.1 主控系統(tǒng)電路
圖 4?1 主控系統(tǒng)電路圖
主控電路由STC89C52RC直插芯片、電源指示燈模塊、復(fù)位電路、起振電路以及上拉排阻組成一個最小系統(tǒng)。復(fù)位電路采用了一個10K直插電阻和一個10uF的鋁電解電容,由此可以計算出系統(tǒng)的復(fù)位時間為T=RC=10000(10K)×0.00001F(10uF)=100ms;起振電路采用的是11.0592MHz的晶振芯片和兩個22pF的獨(dú)石電容組成,選擇晶振11.0592MHz是因?yàn)樗軌驕?zhǔn)確的劃分時鐘頻率,與串口通信的波特率有很大的關(guān)系,其參數(shù)對于較高的波特率計算比較準(zhǔn)確,例如波特率為19600,波特率為19800等都可以準(zhǔn)確的計算出來,11.0592MHz晶振對于STC89C52RC直插芯片的定時器來說也有很大的影響,因?yàn)橛闷溆嬎愕牡亩〞r器初值都是整數(shù)的,如果使用12MHz的晶振,對于波特率的計算和定時器的初值計算都存在一定的變差;STC89C52RC芯片P0端口加一個103阻值的上拉排阻,因?yàn)镾TC89C52RC芯片內(nèi)部P0端口沒有上拉電阻,加上拉電阻可以提高P0端口的引腳驅(qū)動能力和提高總線的抗干擾能力;同時電源指示燈是用來提示整個主控系統(tǒng)有沒有正常工作,以及獨(dú)立的程序燒寫接口,方便在編程過程中對系統(tǒng)程序進(jìn)行燒寫和擦除。主控系統(tǒng)電路如上圖4-1所示。
-
- ?紅外解碼電路
紅外解碼模塊使用的是IR01 紅外遙控學(xué)習(xí)模塊,其采用串口通訊方式(波特率為9600波特,1個停止位,8個數(shù)據(jù)位,0個奇偶校驗(yàn)位)和STC89C52RC芯片進(jìn)行通訊,STC89C52RC芯片的TX端口連接IR01 紅外遙控學(xué)習(xí)模塊的RX端口,STC89C52RC芯片的RX端口連接IR01 紅外遙控學(xué)習(xí)模塊的TX端口,兩個模塊的GND要相連,最后給兩個模塊有效的工作電壓兩個模塊就能進(jìn)行工作和通訊。STC89C52RC芯片通過4×4矩陣鍵盤掃描輸入,STC89C52RC芯片再給IR01 紅外遙控學(xué)習(xí)模塊有效串口信息,IR01 紅外遙控學(xué)習(xí)模塊通過STC89C52RC芯片發(fā)送過來的訊息判斷是要學(xué)習(xí)紅外碼還是發(fā)射紅外碼。并且IR01紅外遙控學(xué)習(xí)模塊使用了CH554T芯片,此芯片是一款兼容MCS51指令集,其79%的指令是單字節(jié)單周期指令,平均指令速度比標(biāo)準(zhǔn)MCS51快8~15倍,可支持24MHz系統(tǒng)主頻,內(nèi)置16K程序存儲器ROM和256字節(jié)內(nèi)部iRAM,此芯片還內(nèi)置了ADC數(shù)模轉(zhuǎn)換、觸摸按鍵電容檢測、雙異步串口,支持4種復(fù)位信號源,內(nèi)置上電復(fù)位,支持軟件復(fù)位和看門狗溢出復(fù)位,可選引腳外部輸入復(fù)位;還使用了FT24C128A存儲器,是一種電可擦除PROM,電壓可允許低至1.8V,待機(jī)電流和工作電流分別為1μA和1mA,具有頁寫能力。IR01 紅外遙控學(xué)習(xí)模塊連接電路如下圖4-2所示:
圖 4?2 IR01 紅外遙控學(xué)習(xí)模塊連接電路圖
-
- ?矩陣鍵盤電路
矩陣鍵盤電路采用的是4×4矩陣鍵盤,通過并行與STC89C52RC芯片的P1端口進(jìn)行連接,STC89C52RC芯片內(nèi)部一直使用I/O電平掃描,先進(jìn)行行掃描,再進(jìn)行掃描,就能讀取那個按鍵按下。使用4×4矩陣鍵盤是因?yàn)榭梢允褂枚鄠€按鍵學(xué)習(xí),方便可以管控多個紅外設(shè)備。4×4矩陣鍵盤連接電路如下圖4-3所示:
圖 4?3 ?4×4矩陣鍵盤連接電路圖
-
- ?LCD1602顯示電路
LCD1602液晶顯示模塊采用總線并行與STC89C52RC芯片進(jìn)行通信,通過分析LCD1602液晶顯示模塊的讀寫操作時序圖,寫指令時,單片機(jī)給LCD1602液晶顯示模塊的RS引腳使能為高電平、RW和EN引腳使能為低電平,就可以把指令數(shù)據(jù)送到D0~D7;寫數(shù)據(jù)時,CD1602液晶顯示模塊的RS引腳、RW和EN引腳都要使能為低電平,就可以把數(shù)據(jù)送到D0~D7用以顯示出來。LCD1602液晶顯示模塊的VL引腳接了一個10K的可調(diào)電阻,用于調(diào)節(jié)LCD1602液晶顯示模塊的背光亮度。LCD1602顯示連接電路如下圖4-4所示:
圖4-4 LCD1602顯示連接電路圖
-
- ?DC-5V電源電路
基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)使用一個DC-5V電源接口,再接一個開關(guān)作為系統(tǒng)的電源開關(guān),用以控制整個系統(tǒng)的電源輸入,方便使用前后的斷電和上電。DC-5V電源電路設(shè)計電路如下圖4-5所示:
圖 4?5 DC-5V電源電路設(shè)計電路圖
- ?系統(tǒng)軟件設(shè)計
- ?主程序設(shè)計
圖 5?1 主程序流程圖
系統(tǒng)主程序流程圖主要分為:模塊初始化、初始化顯示信息、學(xué)習(xí)/發(fā)射控制模式判斷、矩陣鍵盤掃描、LCD1602液晶顯示模塊顯示和紅外模塊學(xué)習(xí)/發(fā)射控制。矩陣按鍵有15個按鍵可以用于控制紅外模塊的學(xué)習(xí)和發(fā)射控制,當(dāng)不同的按鍵按下,LCD1602液晶顯示模塊會顯示不同的按鍵信息;有一個按鍵用于紅外模塊的學(xué)習(xí)/發(fā)射控制模式切換鍵,當(dāng)模式切換鍵按下,LCD1602液晶顯示模塊就會顯示當(dāng)前是學(xué)習(xí)模式還是發(fā)射模式。不同的按鍵按下,IR01 的紅外遙控學(xué)習(xí)模塊接收到相應(yīng)的訊號,就會進(jìn)行紅外信號學(xué)習(xí)或者發(fā)送。程序流程圖如上圖5-1所示。
-
- ?測試分析
在設(shè)計硬件電路的時候,要注意器件之間的安全距離,不能挨得太近,挨得太近容易產(chǎn)生干擾,導(dǎo)致一些模塊不能正常工作,特別是在線路得布局上,如果兩個電路線挨得太近,不保持一定得安全距離,就會很容易影響器件得工作,特別在通信方面容易產(chǎn)生干擾,導(dǎo)致接收和發(fā)送的訊號不正確,嚴(yán)重的會導(dǎo)致電路短接,造成整個系統(tǒng)燒毀。
在制作STC89C52RC單片機(jī)最小系統(tǒng)時,要注意復(fù)位電路的電容和電阻的選擇,因?yàn)镾TC89C52RC芯片時高電平復(fù)位有效,所以要選用帶正負(fù)極的鋁電解電容,不能選用沒有正負(fù)極的獨(dú)石電容和瓷片電容,獨(dú)石電容和瓷片電容只有低電平復(fù)位有效才會使用,不同的芯片的需要的復(fù)位電平時間不一樣,因此需要選用符合芯片最短的復(fù)位時間的電容和電阻;系統(tǒng)的電源指示燈需要的限流電阻也需要選合適的規(guī)格,電阻過大,指示燈無法點(diǎn)亮;起振電路的電容要選擇,常用的有22pF和33pF,使用的兩個電容大小要一致,不一致會導(dǎo)致芯片起振不正常,導(dǎo)致最小系統(tǒng)無法正常工作。當(dāng)使用內(nèi)部存儲器時,STC89C52RC單片機(jī)的EA引腳需要給高電平,這樣系統(tǒng)運(yùn)行后才能訪問內(nèi)部RAM,如果使用的時外部存儲器,則EA不用使能高電平;設(shè)計STC89C52RC單片機(jī)最小系統(tǒng)時,需要預(yù)留單片機(jī)的程序下載口,方便后續(xù)程序修改和調(diào)試。
在使用單片機(jī)系統(tǒng)的外設(shè)模塊時,在使用前需要仔細(xì)閱讀其參數(shù),比如工作電壓、工作電流、需要的有效電平信號等,模塊上電前需要檢查是否接錯線路,防止接錯,導(dǎo)致模塊損壞,造成損失。
在使用LCD1602液晶顯示模塊時,LCD1602液晶顯示器模塊的VL腳需要加一個10K左右的可調(diào)電阻,方便后續(xù)調(diào)節(jié)LCD1602液晶顯示屏的背光度,以保證顯示內(nèi)容的清晰度;以及在使用Keil uVision5對LCD1602液晶顯示模塊進(jìn)行編程顯示時,要顯示下一條信息內(nèi)容時,一定要對上一次顯示的信息內(nèi)容進(jìn)行消隱,防止影響信息的下一次顯示。
在系統(tǒng)時鐘電路的晶振選型上要特別注意,因?yàn)楸鞠到y(tǒng)的STC89C52RC芯片與IR01 的紅外遙控學(xué)習(xí)模塊之間通信是串口通信,因此對于芯片內(nèi)部的指令周期、機(jī)器周期要求十分精確,一開始由于疏忽選用了12MHz的晶振,導(dǎo)致軟件延時、波特率、定時器初值的設(shè)定和計算不準(zhǔn)確,使整個程序存在很大的誤差,尤其是串口的發(fā)送接收,因?yàn)椴ㄌ芈实牟粶?zhǔn)確,導(dǎo)致發(fā)送和接收到的信息不一致和存在誤差,導(dǎo)致IR01 的紅外遙控學(xué)習(xí)模塊沒有辦法正常工作,后面經(jīng)過百度查閱相關(guān)資料,以及詢問一些比較懂硬件的同學(xué),在知道要使用11.0592MHz的晶振,該型號的晶振能較精確的計算出波特率、定時器初值的設(shè)定。
在軟件得編寫過程,變量的定義的位置和類型選擇特別重要,因?yàn)椴煌淖兞繒加貌煌淖止?jié),如果變量占據(jù)的字節(jié)過大,就會導(dǎo)致芯片無法正常運(yùn)行,因?yàn)槊恳粋€芯片的內(nèi)存都是有限的;變量定義在不同的位置,變量的屬性也會不一樣;程序的編寫要規(guī)范整齊并寫相應(yīng)的注釋解析,防止后續(xù)出現(xiàn)問題,因?yàn)槌绦蛱靵y找不到以及時間久了忘記該段程序?qū)崿F(xiàn)的意義;在編譯遇到錯誤時,要及時去查找并排除錯誤的原因,找到并及時修改,避免因?yàn)殄e誤導(dǎo)致整個系統(tǒng)崩潰無法正常運(yùn)行;程序的編寫最好簡潔明了,方便以后檢查。
-
- ?測試結(jié)果
基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)上電后,系統(tǒng)所有模塊初始化完成后,LCD1602液晶顯示模塊會顯示“Production Time”和“1852200221 - PMZ!”,顯示停留片刻后,系統(tǒng)就會進(jìn)入默認(rèn)的紅外模塊的發(fā)射控制模式,LCD1602液晶顯示模塊會顯示“Control? Model”提示進(jìn)入紅外發(fā)射控制模式,在該模式下,按鍵序號1~15不同的按鍵按下,紅外模塊都會發(fā)射不同的紅外信號,當(dāng)不同的按鍵按下,LCD1602液晶顯示模塊會顯示“Press key is Key_ID”,系統(tǒng)有一個紅外模塊的紅外發(fā)射模式和紅外學(xué)習(xí)模式的切換鍵,按下切換鍵,系統(tǒng)就會在紅外發(fā)射模式和紅外學(xué)習(xí)模式之間進(jìn)行切換,在紅外學(xué)習(xí)模式下,系統(tǒng)按下1~15的任意按鍵,紅外模塊就會進(jìn)入學(xué)習(xí)模式,此時紅外模塊的紅燈會長亮20s,當(dāng)拿要學(xué)習(xí)的紅外遙控,對準(zhǔn)紅外模塊的紅外接收頭按下要學(xué)習(xí)的按鍵,當(dāng)紅外模塊的紅燈熄滅,就說明紅外模塊以學(xué)習(xí)該按鍵的紅外編碼和波長,把模式切換到發(fā)射控制模式,使用剛剛學(xué)習(xí)的按鍵就能控制紅外家電相應(yīng)的功能?;趩纹瑱C(jī)紅外遙控器設(shè)計系統(tǒng)的紅外模塊可以反復(fù)學(xué)習(xí)紅外編碼和波長信號,同時具有掉電功能,系統(tǒng)斷電后再重新上電不會抹除掉電前已學(xué)習(xí)的紅外編碼和波長信號。
通過系統(tǒng)硬件測試沒有問題后,通過實(shí)際環(huán)境應(yīng)用測試,該系統(tǒng)確實(shí)能學(xué)習(xí)紅外遙控的紅外編碼,能使用已學(xué)習(xí)的紅外編碼信號控制家電設(shè)備,經(jīng)測試,系統(tǒng)的15個發(fā)射學(xué)習(xí)按鍵都能正常使用。
基于單片機(jī)紅外遙控器設(shè)計系統(tǒng),整個系統(tǒng)可以正常運(yùn)行所有任務(wù)功能。正常運(yùn)行期間,可以通過LCD1602液晶模塊顯示相應(yīng)的信息,可以通過4×4矩陣鍵盤進(jìn)行掃描輸入,可以利用紅外模塊進(jìn)行紅外信號的學(xué)習(xí)和發(fā)射控制。通過軟硬件測試,本作品已基本滿足課設(shè)的任務(wù)要求,接下來就是慢慢的去完善整個基于單片機(jī)紅外遙控器設(shè)計系統(tǒng),讓它變得更加穩(wěn)定,完美。
- ?結(jié)論
隨著人類的生活已經(jīng)全面邁入了信息化的時代,使用紅外遙控的家電種類開始增多,人們?nèi)粘I钪欣眉t外遙控來控制紅外控制的家電種類非常的多,但一個紅外控制的家電的遙控只有一個,而且只有對應(yīng)的紅外遙控發(fā)出的紅外編碼才能控制相關(guān)的紅外家電。基于單片機(jī)紅外遙控器設(shè)計系統(tǒng)能夠?qū)W習(xí)并記憶市場上的家電紅外遙控器紅外編碼信號,可以融合多種紅外遙控于一體,從而滿足對多種紅外遙控設(shè)備的集中控制。整個紅外遙控系統(tǒng)功耗低,操作簡單方便,性能價格比高,能較好的滿足生活中人們對紅外遙控器的需要。
附錄三:部分源程序
#include<reg52.h>
#include"delay.h"
#include "lcd.h"
#include "key4x4.h"
void display_time(void);
void display_author(void);
void SendStr(unsigned char *s);
void set_data(unsigned char Byte[]);
unsigned char code time1[]="Production Time ";
unsigned char code time2[]="2022-05-15 22:55";
unsigned char code author1[]="1852200221 – PMZ";
unsigned char code author2[]="? Hand Made!!!? ";
unsigned char Disp1[]=" Learning Model ";
unsigned char Disp2[]=" Control? Model ";
void InitUART? (void)
{
SCON? = 0x50;
TMOD |= 0x20;
TH1?? = 0xFD;
TR1?? = 1;
EA??? = 1;
}
void main (void)
{
unsigned char i;
InitUART();
LcdInit();
display_time();
display_author();
while (1)
{
if(flag==1)
{
LcdWriteCom(0x80);
for(i=0;i<16;i++)
{
LcdWriteData(Disp1[i]);
}
}
else
{
LcdWriteCom(0x80);
for(i=0;i<16;i++)
{
LcdWriteData(Disp2[i]);
}
}
scankey();
delay_ms(240);
delay_ms(240);
}
}
void set_data(unsigned char Byte[])
{
unsigned char i;
for(i=0;i<5;i++)
{
SBUF=Byte[i];
while(!TI);
TI = 0;
}
}
void display_time(void)
{
for(i=0;i<16;i++)
{
LcdWriteData(time1[i]);
}
LcdWriteCom(0xc0);
for(i=0;i<16;i++)
{
LcdWriteData(time2[i]);
}
delay_ms(5000);
LcdWriteCom(0x01);
}
void display_author(void)
{
LcdWriteCom(0x80);
for(i=0;i<16;i++)
{
LcdWriteData(author1[i]);
}
LcdWriteCom(0xc0);
for(i=0;i<16;i++)
{
LcdWriteData(author2[i]);
}
delay_ms(5000);
LcdWriteCom(0x01);
}
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。
紛傳點(diǎn)擊用微信打開即可,過程有點(diǎn)繁瑣請見諒。