ST20P18 無(wú)線遙控設(shè)備的設(shè)計(jì)方案
ST20P18 無(wú)線遙控設(shè)備的設(shè)計(jì)方案,以 433MHz為頻率的無(wú)線通用遙控設(shè)備,為短距離無(wú)線通信提供了非常簡(jiǎn)單的解決方案,它是開發(fā)低成本、低功耗無(wú)線通信系統(tǒng)的理想方案,下面為大***詳細(xì)講解。
一般由單片機(jī)控制電路、LCD顯示電路、無(wú)線發(fā)碼電路等構(gòu)成。按照節(jié)點(diǎn)的多少可以分為單節(jié)點(diǎn)和多節(jié)點(diǎn)模式。單節(jié)點(diǎn)也稱為點(diǎn)對(duì)點(diǎn)式,結(jié)構(gòu)簡(jiǎn)單、體積小,便于隨身攜帶,用于控制單個(gè)***電的通信。
而多節(jié)點(diǎn)又稱為點(diǎn)對(duì)多式,它可以根據(jù)用戶的要求而設(shè)計(jì)不同的路數(shù),也可以很方便地進(jìn)行擴(kuò)展,可以同時(shí)控制多個(gè)***電,功能齊全。本系統(tǒng)設(shè)計(jì)為16路,在接收部分可以根據(jù)接收到的信息控制多個(gè)***用電器。
系統(tǒng)硬件的結(jié)構(gòu)原理和設(shè)計(jì)
1 系統(tǒng)簡(jiǎn)介
通用型遙控設(shè)備主要由開/關(guān)鍵、液晶顯示屏、置位鍵、確認(rèn)鍵、返回鍵、數(shù)字鍵盤等部分組成,其外形與手機(jī)相仿。它的操作也很簡(jiǎn)單,以遙控電風(fēng)扇為例,打開遙控器后,***先顯示主菜單,是各種電器的名稱,用上下鍵選中所要操作的***用電器。
例如選中“電風(fēng)扇”,按確認(rèn)鍵后就可進(jìn)入其子菜單,再選擇所操作的項(xiàng)目,如風(fēng)力擋位的大小、風(fēng)扇的方向等,再按確認(rèn)鍵進(jìn)入下級(jí)子菜單,進(jìn)行具體的操作,如調(diào)整風(fēng)力和風(fēng)向等,其余***用電器類似操作。
硬件電路是由1個(gè)4位的撥碼開關(guān)電路、無(wú)線發(fā)射電路、ST20P18單片機(jī)主控制電路、鍵盤掃描電路、液晶(LCD)顯示電路等組成。
2 無(wú)線發(fā)碼電路
其中單片機(jī)采用的是 ST20P18,它是由臺(tái)灣矽創(chuàng)公司生產(chǎn)的一種CMOS工藝制造的低功耗低價(jià)位的8位單片機(jī),芯片內(nèi)部帶有振蕩器、系統(tǒng)定時(shí)器、看門狗定時(shí)計(jì)數(shù)器、LCD 控制器和16Kb的ROM以及192B的RAM。
ST20P18控制的發(fā)碼電路原理圖如圖1所示,其發(fā)碼的基本原理為:系統(tǒng)利用撥碼開關(guān)來(lái)控制地址位和數(shù)據(jù)位(二進(jìn)制)信息的設(shè)置,再通過(guò)單片機(jī)運(yùn)行發(fā)碼程序進(jìn)行編碼并把地址位和數(shù)據(jù)位信息變換成一串脈沖信號(hào),***后由無(wú)線發(fā)射電路發(fā)射出去。
具體實(shí)現(xiàn)為:?jiǎn)纹瑱C(jī)PB0口為發(fā)碼電路的數(shù)據(jù)輸出口和控制口,當(dāng)需要發(fā)碼的時(shí)候該口設(shè)置為輸出口,然后以脈沖的形式,按照相關(guān)的通信協(xié)議,輸出當(dāng)前所要發(fā)出的正確數(shù)據(jù)。反之,PB0口可復(fù)用為其他功能。PB0口的脈沖數(shù)據(jù)經(jīng)發(fā)碼電路調(diào)制并發(fā)射出433MHz的無(wú)線電波。
圖1 無(wú)線發(fā)碼電路
在無(wú)線發(fā)射電路中使用聲表面濾波器搭建的模擬發(fā)射模塊電路,其工作頻率是433MHz,采用聲表諧振器SAW穩(wěn)頻,頻率穩(wěn)定度極***,當(dāng)環(huán)境溫度在 -25~+85℃之間變化時(shí),頻漂僅為10-6/℃,特別適合一發(fā)多收無(wú)線遙控及數(shù)據(jù)傳輸系統(tǒng)。
但因無(wú)線電信號(hào)傳輸時(shí)受到很多因素的影響,所以一般實(shí)用距離只有標(biāo)準(zhǔn)理想距離的一半甚至更少,這點(diǎn)在開發(fā)時(shí)需要注意,如果需要更遠(yuǎn)一點(diǎn)的發(fā)射距離,可以在發(fā)射模塊的輸出端增加一級(jí)射頻功率放大器。
經(jīng)過(guò)對(duì)電路的研究得到以下結(jié)論:
● 為了得到穩(wěn)定且正確的頻率,經(jīng)過(guò)反復(fù)的調(diào)試得出無(wú)線電波頻率取決于R3,當(dāng)R3=15kΩ時(shí),發(fā)射的無(wú)線電頻率為433MHz。
● 由于該模塊是由模擬電路搭建,所以決定了其性能不如相關(guān)的其他類型的數(shù)字射頻芯片,但是其成本相當(dāng)?shù)牡土?考慮到尺寸和成本因素且射頻波長(zhǎng)短,在設(shè)計(jì)中選用50Ω的1/4波長(zhǎng)偶極子微帶印制板天線,即在接地層由電介質(zhì)隔開的印制電導(dǎo)線。
故在該電路中天線的形狀以及長(zhǎng)短具有至關(guān)重要的作用。設(shè)計(jì)實(shí)踐表明:天線的形狀和長(zhǎng)短如選取不滿足50Ω的1/4波長(zhǎng)偶極子天線,該電路發(fā)射不穩(wěn)定,更嚴(yán)重直接導(dǎo)致該電路不能起振。
3 鍵盤掃描電路
由于ST20P18的I/O口有限,故在鍵盤電路中采用掃描的方式來(lái)實(shí)現(xiàn)。該電路的實(shí)現(xiàn)方式如圖2所示。其工作的基本原理是:?jiǎn)纹瑱C(jī)初始化后先設(shè)置 PA0至PA5、6個(gè)I/O口均為輸入方式。
以K1為研究對(duì)象,先設(shè)置PA0口為***電平,設(shè)置PA5口為低電平,當(dāng)K1按鍵按下后,PA0則由***電平跳變?yōu)榈碗娖?,并產(chǎn)生中斷。單片機(jī)響應(yīng)該中斷,執(zhí)行中斷服務(wù)程序。同理,其他6個(gè)按鍵也是按照該方式工作的。單片機(jī)掃描原則是自上而下,自左而右的。
圖2 鍵盤掃描電路
4 LCD顯示電路
本設(shè)計(jì)采用的ST20P18單片機(jī),其內(nèi)核中自帶控制/驅(qū)動(dòng)液晶模塊,該LCD(圖3)顯示模塊是8×40點(diǎn)陣,常用于遙控設(shè)備的液晶顯示。液晶顯示的主要控制引腳為COM0~COM7。本設(shè)計(jì)只用到COM0~COM3。
圖3 LCD顯示電路
該模塊的顯示RAM分為4塊,每塊5行,8列,所以共有4×5×8位。液晶屏幕上的每一個(gè)8點(diǎn)列對(duì)應(yīng)顯示RAM中的一個(gè)列字節(jié)。當(dāng)設(shè)置了塊地址和列地址后,就***確定了顯示RAM中的一個(gè)列字節(jié)。每個(gè)列字節(jié)中***上面一位為L(zhǎng)SB,***下面一位為MSB。對(duì)顯示RAM的一個(gè)列字節(jié)賦值就是對(duì)液晶屏幕上對(duì)應(yīng)像素點(diǎn)是否顯示進(jìn)行控制。把不同字符的字模寫到不同位置的顯示RAM字節(jié)中,就能在屏幕上顯示相應(yīng)的所要求的字符。
通用遙控器的軟件設(shè)計(jì)
開機(jī)后,先進(jìn)行初始化,包括對(duì)單片機(jī)的初始化、LCD的初始化和其他模塊的初始化。出于省電的考慮在40s內(nèi)若沒(méi)有鍵按下,讓單片機(jī)的LCD控制器進(jìn)入空閑模式。用“for”循環(huán)來(lái)計(jì)時(shí),并設(shè)計(jì)初值為零。
隨后開始40s計(jì)時(shí),若在此期間有鍵按下,則進(jìn)入中斷服務(wù)程序,若40s內(nèi)無(wú)鍵按下,則單片機(jī)的 LCD控制器進(jìn)入空閑模式。若在空閑中有鍵被按下,單片機(jī)被喚醒,執(zhí)行中斷服務(wù)程序。
由于單片機(jī)的LCD控制器被中斷喚醒執(zhí)行完中斷程序返回后,單片機(jī)會(huì)接著執(zhí)行把單片機(jī)的LCD控制器置為空閑模式的那條指令的下一條指令,因此在把單片機(jī)的LCD控制器置為空閑模式的指令后再有一個(gè)循環(huán)來(lái)計(jì)時(shí),由于中斷返回前,重設(shè)計(jì)數(shù)初值為零,所以會(huì)重新開始5s的計(jì)時(shí)。在這40s內(nèi),若無(wú)鍵按下, 則單片機(jī)的LCD控制器又進(jìn)入空閑模式。程序流程圖如圖4所示。
圖4 軟件設(shè)計(jì)流程
通信協(xié)議
1 編碼字的格式
能實(shí)現(xiàn)編碼功能的邏輯電路稱為編碼器。每一種遙控編碼芯片都有一種特定的編碼格式。我們把傳送一位二進(jìn)制數(shù)0或者1的時(shí)間作為一個(gè)時(shí)間單位T,編碼信號(hào)的頻率為F=1/T。這里用的是種比較常用的編碼格式,每一幀由步碼、地址碼和數(shù)據(jù)碼組成,同步碼用在一幀的開始,是一幀的識(shí)別標(biāo)志,寬度為8T;地址碼20(A0—A19),寬度為20T;數(shù)據(jù)碼4位(D0-D3),寬度為4T, 一幀占據(jù)的總時(shí)間是32T。
對(duì)應(yīng)于每一種狀態(tài),編碼芯片內(nèi)部能夠生成一種特殊的編碼,這種編碼也是由“1”和“0”組成,但并不是簡(jiǎn)單的用***電平代表“1”,用低電平代表 “0”,而是用***電平與低電平寬度比例的不同來(lái)區(qū)分“1”和“0”,也就是所謂的占空比。為了提***此編碼傳輸串行信號(hào)的可靠性,故此編碼采用一個(gè)周期的占空比為1/4的脈沖表示0,占空比為3/4的脈沖表示1,同步信號(hào)用一個(gè)占空比為1/32的脈沖表示,如圖5所示。
圖5 信號(hào)占空比
2 協(xié)議設(shè)計(jì)
通常遙控信號(hào)的發(fā)射,就是將某個(gè)按鍵所對(duì)應(yīng)的控制指令和信息碼(由0和1組成的序列),調(diào)制在32~56kHz范圍內(nèi)的載波上,然后經(jīng)放大、驅(qū)動(dòng)無(wú)線發(fā)射電路將信號(hào)發(fā)射出去。
如表1所示,各部分碼的作用:引導(dǎo)碼用來(lái)通知接收器其后為遙控?cái)?shù)據(jù)。地址碼用來(lái)區(qū)分是哪一機(jī)型的數(shù)據(jù),接收端據(jù)此來(lái)判斷后續(xù)的數(shù)據(jù)是否為本機(jī)必須執(zhí)行的指令。信息碼用來(lái)區(qū)分是哪一個(gè)鍵被按下,接收端接受信息碼的數(shù)據(jù)并據(jù)此做出應(yīng)該執(zhí)行什么動(dòng)作的判斷。信息碼也包括在持續(xù)按鍵時(shí)發(fā)送的連續(xù)碼。它告知接收端,某鍵是在被連續(xù)地按著。結(jié)束碼用來(lái)通知接收器一幀數(shù)據(jù)發(fā)送完畢。
遙控?cái)?shù)據(jù)傳輸系統(tǒng)的關(guān)鍵是數(shù)據(jù)傳輸?shù)目煽啃?。為了?**編碼的可靠性,本協(xié)議規(guī)定地址碼后接著傳送一個(gè)反碼,供誤碼校驗(yàn)使用。每一位的信息碼后接著傳送一個(gè)奇偶校驗(yàn)位也是用來(lái)作為誤碼校驗(yàn)使用。
本設(shè)計(jì)的創(chuàng)新在于提出了通用***電遙控設(shè)備的設(shè)計(jì)方案,根據(jù)實(shí)際的要求能夠控制多個(gè)***用電器,睡眠模式實(shí)現(xiàn)低功耗,且成本低于其他同類產(chǎn)品。經(jīng)過(guò)實(shí)際運(yùn)行測(cè)量,該無(wú)線傳輸系統(tǒng)工作穩(wěn)定,穿透能力強(qiáng),功耗低(當(dāng)在空閑模式下,電路中電流小于10μA)能夠很好的實(shí)現(xiàn)相應(yīng)設(shè)計(jì)要求的功能。