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