張金美 王慶福
摘要:當(dāng)前工業(yè)化的自動(dòng)化水平已經(jīng)成為衡量一個(gè)行業(yè)是否進(jìn)步的標(biāo)志,工業(yè)自動(dòng)化要求能夠通過簡(jiǎn)單的機(jī)器操作來減少人為干涉,從而提升社會(huì)勞動(dòng)力的合理分配。文章指出,家庭電器設(shè)備自動(dòng)化是當(dāng)前智能家居的重點(diǎn)和中心實(shí)驗(yàn)領(lǐng)域,基于單片機(jī)的紅外控制能夠有效地解決家庭設(shè)備多路控制問題,極大地改善人們的日常生活。
關(guān)鍵詞:工業(yè)自動(dòng)化;單片機(jī);紅外控制
單片機(jī)作為—種微型計(jì)算機(jī),能夠?qū)⒏鬟壿嫴考凑找欢ǖ倪壿嫻δ芙M合在一起,其內(nèi)可以包含CPU、RAM、ROM、總線、控制系統(tǒng)等必需的邏輯部件,將這些邏輯部件按照各組件的有機(jī)結(jié)合固化在芯片上。當(dāng)前工業(yè)的自動(dòng)化水平作為檢驗(yàn)社會(huì)生產(chǎn)力進(jìn)步的重要標(biāo)志,如何提升工業(yè)自動(dòng)化程度是一個(gè)非常重要的指標(biāo)。工業(yè)自動(dòng)化的目標(biāo)是希望通過提高機(jī)器自動(dòng)化的程度來盡可能地減少人為的強(qiáng)行干預(yù),極大地提升社會(huì)生產(chǎn)力。家庭電器作為人們?nèi)粘I钪凶畛R姷牟糠郑瑢?shí)現(xiàn)家庭電器操作的一體化是單片機(jī)的一個(gè)重要應(yīng)用領(lǐng)域,應(yīng)對(duì)家庭電器中諸多遙控器的問題,采用基于單片機(jī)的紅外控制系統(tǒng),減少人為操作的復(fù)雜性,實(shí)現(xiàn)一鍵式操作模式,能夠極大地方便人們的生活,具有非常重要的經(jīng)濟(jì)意義和社會(huì)意義。
1.單片機(jī)
當(dāng)前單片機(jī)在日常生活中的每個(gè)方面都有涉及,幾乎是人們?nèi)粘I畈豢苫蛉钡囊徊糠?。小到電話、玩具、手機(jī)、各類刷卡機(jī)、電腦鍵盤、彩電、冰箱、空調(diào)、電磁爐,大到汽車、工業(yè)自動(dòng)控制、機(jī)器人、導(dǎo)彈導(dǎo)航裝置,甚至是美國的火星車,這些設(shè)備里面都含有一個(gè)或者多個(gè)單片機(jī)。單片機(jī)是一種控制芯片,一個(gè)微型的計(jì)算機(jī),而晶振、存儲(chǔ)器、地址鎖存器、邏輯門、七段譯碼器(顯示器)、按鈕(類似鍵盤)、擴(kuò)展芯片、接口等都是單片機(jī)系統(tǒng)。下面介紹單片機(jī)中一些重要概念。
(1)時(shí)鐘周期。也稱為振蕩周期,定義時(shí)鐘頻率的倒數(shù)(時(shí)鐘周期就是單片機(jī)所接的外部晶振的倒數(shù),如12MHz的晶振,它的時(shí)鐘周期就是1/12us),它是單片機(jī)中最小的時(shí)間單位。在一個(gè)時(shí)鐘周期內(nèi),CPU只完成一個(gè)最基本的動(dòng)作。時(shí)鐘脈沖是CPU的基本工作脈沖,脈沖的大小反映CPU工作頻率的快漫節(jié)奏,通常可以認(rèn)為時(shí)鐘脈沖越高,CPU的工作效率也越高。然而因?yàn)椴煌瑔纹瑱C(jī)的內(nèi)部構(gòu)成不同,高脈沖的CPU不適用于任何單片機(jī)。所以,通常不同的單片機(jī)都有其自身獨(dú)特的時(shí)鐘脈沖。常用的STC89C系列單片機(jī)的時(shí)鐘范圍大概在1-40MHz。
(2)狀態(tài)周期。它是時(shí)鐘周期的2倍。用作單片機(jī)內(nèi)部各功能部件按序協(xié)調(diào)工作的控制信號(hào)。
(3)機(jī)器周期。單片機(jī)的基本操作周期,在一個(gè)機(jī)器周期內(nèi),單片機(jī)完成一項(xiàng)基本操作,如取指令、讀寫存儲(chǔ)器等。由12個(gè)時(shí)鐘周期(6個(gè)狀態(tài)周期)組成。
(4)總線周期??偩€上掛載了存儲(chǔ)器、控制器和相關(guān)的I/O設(shè)備,CPU對(duì)這些設(shè)備的訪問通過總線實(shí)現(xiàn),因此定義以此CPU的外設(shè)訪問為一個(gè)總線周期。
(5)指令周期。顧名思義,是指執(zhí)行一條指令所需要的時(shí)間。一般而言,一條指令包含多個(gè)操作,可能會(huì)需要1~4個(gè)機(jī)器周期。例如,對(duì)于一條簡(jiǎn)單的取數(shù)指令,從寄存器中獲取數(shù)據(jù)并編碼執(zhí)行即可,一個(gè)機(jī)器周期即可完成,但對(duì)于一些較為復(fù)雜的運(yùn)算指令,可能涉及取數(shù)、存儲(chǔ)、運(yùn)算等多個(gè)步驟,則可能需要一個(gè)或者多個(gè)機(jī)器周期。通常意義上,一個(gè)機(jī)器周期的指令成為單周期指令,多個(gè)機(jī)器周期的指令成為多周期指令。
(6)總線。總線是元器件中一個(gè)重要的概念,在模擬電路中各種部件之間都是通過串行的方式連接,各部件之間的連線并不多,然而計(jì)算機(jī)中各種元器件太繁多,還涉及各部件之間相互通信和協(xié)調(diào)的問題,如果每條功能指令或者2個(gè)元器件之間的通信都通過線互聯(lián),則計(jì)算機(jī)內(nèi)部的線路將會(huì)非常龐大,對(duì)于整體的維護(hù)和升級(jí)也極為不易,因此需要總線來協(xié)調(diào)各組件問的及時(shí)通信。總線是計(jì)算機(jī)內(nèi)部的主干線路,一切互聯(lián)的器件都通過總線進(jìn)行通信。然而還存在另一個(gè)問題,當(dāng)2個(gè)元器件同時(shí)對(duì)外輸出信號(hào)時(shí),一個(gè)元器件的輸出信號(hào)為1,另一個(gè)元器件的輸出信號(hào)為0,則接受方在接受后應(yīng)該如何處理呢。這種情況依賴當(dāng)前的總線是不夠的,因此引入了控制總線的概念??刂瓶偩€是各元器件之間指令交互的工具,任何時(shí)候控制總線只被允許進(jìn)行一種指令的傳輸來保證指令的有序性,這樣,接受方在收到指令后則可以進(jìn)行有效的判斷。而數(shù)據(jù)總線是各元器件間數(shù)據(jù)交換的工具。另外,單片機(jī)內(nèi)部還存在著地址的分配,某些存儲(chǔ)單元要完成地址分配才能進(jìn)行信號(hào)傳輸,由于存儲(chǔ)單元過多,管理起來也較為不易,因此以地址總線進(jìn)行協(xié)同控制。
(7)數(shù)據(jù)、地址、指令。從某種意義上來說,這三者都可以認(rèn)為是數(shù)字,是由一連串0101的數(shù)字串構(gòu)成的。簡(jiǎn)而言之,地址和指令也可以認(rèn)為是數(shù)據(jù)。地址通過0101的數(shù)字序列對(duì)應(yīng)到計(jì)算機(jī)存儲(chǔ)器件中某個(gè)具體位置,指令通過0101的數(shù)字序列表征具體的指令,指令有著比較嚴(yán)格的界定,不能由單片機(jī)的開發(fā)者隨意更改,一個(gè)確定的數(shù)字序列指令就對(duì)應(yīng)著具體的操作。同理,單片機(jī)內(nèi)部器件的地址也是事先由芯片設(shè)計(jì)者設(shè)計(jì)好的,不可更改,外部的單元可以提供給開發(fā)者自由設(shè)定,不受限制。數(shù)據(jù)部分是整個(gè)單片機(jī)處理的核心,最終的結(jié)果都是為了數(shù)據(jù)的傳輸和運(yùn)算,不同的電路中數(shù)據(jù)也有著一定的差異。
2.紅外控制系統(tǒng)
紅外控制是一種應(yīng)用比較廣泛的通信和遙感技術(shù)。因其功耗低、體積小、攜帶便捷、價(jià)格低等優(yōu)勢(shì),已經(jīng)在家用電器(空調(diào)、彩電、冰箱)中廣泛應(yīng)用,一些音響設(shè)備等也逐漸開始使用紅外控制。一方面,紅外控制在操作上簡(jiǎn)便易行;另一方面,獨(dú)特的控制性能是首選。此外,在不適合人現(xiàn)場(chǎng)操作的場(chǎng)景下,如高壓、高氣流、缺氧、毒氣和粉塵等環(huán)境下,紅外控制也逐漸嶄露頭角,可靠的穩(wěn)定性和操作性能夠有效地隔離毒氣粉塵對(duì)人身體的影響和傷害。
紅外控制系統(tǒng)一般由發(fā)射系統(tǒng)和接收系統(tǒng)兩部分組成,發(fā)射系統(tǒng)通??梢杂涉I盤、芯片和相關(guān)的紅外發(fā)射源通過連接紅外發(fā)射電路,將基帶產(chǎn)生的二進(jìn)制信號(hào)轉(zhuǎn)換為脈沖信號(hào),通過紅外發(fā)射管發(fā)射。接收系統(tǒng)通過接收傳遞過來的紅外光線進(jìn)行脈沖分析,提取脈沖信號(hào)對(duì)應(yīng)的二進(jìn)制信號(hào),從而進(jìn)一步對(duì)二進(jìn)制進(jìn)行響應(yīng)。
UPD6121G通過產(chǎn)生連續(xù)的32位二進(jìn)制編碼輸出指令,在32位編碼中,前16位用于區(qū)分不同的發(fā)射方,防止不同電器之間的信號(hào)干擾。通常情況下,前16位身份碼固定為01H;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多有128種不同組合的編碼。
相應(yīng)的操作設(shè)備按鍵被按下時(shí),會(huì)周期性地輸出不同的指令(即32位狀態(tài)碼),每組的狀態(tài)碼間通過0101的數(shù)據(jù)分布相區(qū)別,不同的數(shù)據(jù)分布對(duì)應(yīng)不同的數(shù)據(jù)指令。
下面介紹采用單片機(jī)的紅外控制系統(tǒng)的具體布線細(xì)節(jié),圖1為紅外遙控的系統(tǒng)結(jié)構(gòu)。
如前所述,通常意義上的紅外控制系統(tǒng)由兩部分組成:信號(hào)發(fā)射部分和信號(hào)接收解析部分。因此,一般需要編碼器/解碼器對(duì)此種功能進(jìn)行解析,編碼器的目的是將當(dāng)前的輸出指令編碼成脈沖信號(hào)進(jìn)行傳輸,解碼器的作用是針對(duì)發(fā)射的脈沖信號(hào)進(jìn)行解碼,換成對(duì)應(yīng)的電信號(hào)。此處以TC9012編碼芯片為例分析紅外遙控,介紹如何利用51單片機(jī)進(jìn)行信號(hào)的解碼。當(dāng)用戶使用遙控設(shè)備按下按鍵時(shí),觸發(fā)按鍵背后的單片機(jī)線路,不同的按鍵對(duì)應(yīng)著不同的功能,不同的按鍵會(huì)產(chǎn)生不同的脈沖信號(hào),此類遙控碼具備如下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,遙控器發(fā)射的信號(hào)由一串0和1的二進(jìn)制代碼組成,不同的芯片對(duì)O和l的編碼有所不同。編碼主要以曼徹斯特編碼和脈沖寬度編碼2種為主,TC9012的0和1采用PWM方法編碼,即脈沖寬度調(diào)制,其0碼和l碼如圖2所示(以遙控接收輸出的波形為例)。0碼由0.56ms低電平和O.56ms高電平組合而成,脈沖寬度為1.12ms。l碼由O.56ms低電平和1.69ms高電平組合而成,脈沖寬度為2.25ms。在編寫解碼程序時(shí),通過判斷脈沖的寬度,即可得到0或1,具體的編碼細(xì)節(jié)如圖2所示。
當(dāng)接收系統(tǒng)接收到來自發(fā)射方的脈沖信號(hào)后,首先對(duì)信號(hào)進(jìn)行判斷,判斷當(dāng)前的信號(hào)屬于何種信號(hào),如按下空調(diào)的遙控開關(guān)時(shí),表示是需要調(diào)節(jié)當(dāng)前空調(diào)的溫度還是調(diào)節(jié)風(fēng)量,又或是調(diào)節(jié)當(dāng)前房間的濕度等。解碼的關(guān)鍵就是需要根據(jù)接收的脈沖信號(hào)0101中解析具體的信號(hào)??上攵瑢?duì)于特征的設(shè)備和頻段,固定的命令格式必然是固定的,否則不同型號(hào)的空調(diào)可能會(huì)對(duì)相同的按鍵產(chǎn)生不同的操作,這是不能接收的。如果從0.56ms低電平過后,開始延時(shí),0.56ms以后,若讀到的電平為低,說明該位為“0”,反之則為“l(fā)”,為了可靠起見,延時(shí)必須Lho.56ms長(zhǎng)些,但又不能超過1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可。根據(jù)碼的格式,應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。
3.結(jié)語
本文從當(dāng)前工業(yè)的自動(dòng)化水平為切入點(diǎn),闡述當(dāng)前家庭電器的重要開發(fā)領(lǐng)域,分析基于單片機(jī)的紅外控制系統(tǒng)的研發(fā),能夠極大地提高經(jīng)濟(jì)效益,節(jié)約時(shí)間。