用單片機(jī)制作通用型電視遙控器
關(guān)鍵詞:全碼;簡(jiǎn)碼;引導(dǎo)碼;系統(tǒng)碼;數(shù)據(jù)碼
引言
上世紀(jì)八十年代初,日本率先在電視產(chǎn)品中使用了紅外遙控技術(shù),目前已經(jīng)在電視機(jī)上得到了廣泛應(yīng)用。電視遙控器使用的是專用集成發(fā)射芯片來(lái)實(shí)現(xiàn)遙控碼的發(fā)射,如東芝TC9012,飛利浦SAA3010T等。這些芯片價(jià)格較貴,且相互之間采用的遙控編碼格式互不兼容,所以各機(jī)型的遙控器通常只能針對(duì)各自的遙控對(duì)象而無(wú)法通用。本文在試驗(yàn)驗(yàn)證的基礎(chǔ)上,介紹了如何利用低成本的MCS-51系列單片機(jī)來(lái)實(shí)現(xiàn)遙控碼的模擬發(fā)射,并實(shí)現(xiàn)遙控器的通用化。
遙控發(fā)射技術(shù)的基本原理
圖1 NEC標(biāo)準(zhǔn)下的主碼表示
圖2 NEC標(biāo)準(zhǔn)下,數(shù)據(jù)0和1的表示
圖3 PHILIPS標(biāo)準(zhǔn)下的全碼表示
圖4 硬件原理圖
通常彩電遙控信號(hào)的發(fā)射,就是將某個(gè)按鍵所對(duì)應(yīng)的控制指令和系統(tǒng)碼(由0和1組成的序列),調(diào)制在32~56KHz范圍內(nèi)的載波上,然后經(jīng)放大、驅(qū)動(dòng)紅外發(fā)射管將信號(hào)發(fā)射出去?! ?BR>不同公司的遙控芯片,采用的遙控碼格式也不一樣。在此介紹較普遍的兩種,一種是NEC標(biāo)準(zhǔn),一種是PHILIPS 標(biāo)準(zhǔn)。
NEC標(biāo)準(zhǔn):遙控載波的頻率為38KHz(占空比為1:3);當(dāng)某個(gè)按鍵按下時(shí),系統(tǒng)首先發(fā)射一個(gè)完整的全碼,然后經(jīng)延時(shí)再發(fā)射一系列簡(jiǎn)碼,直到按鍵松開(kāi)即停止發(fā)射。簡(jiǎn)碼重復(fù)延時(shí)108ms,每?jī)蓚€(gè)引導(dǎo)脈沖上升沿之間的間隔都是108ms。一個(gè)完整的全碼如圖1所示。 其中,引導(dǎo)碼高電平4.5ms,低電平4.5ms;系統(tǒng)碼8位,數(shù)據(jù)碼8位,共32位;數(shù)據(jù)0用“高電平0.5625ms+低電平0.5625ms”表示,數(shù)據(jù)1用“高電平0.5625ms+低電平1.6875ms”表示,如圖2所示:一個(gè)簡(jiǎn)碼=引導(dǎo)碼+系統(tǒng)碼位0的反碼+結(jié)束位(0.5625ms)高電平。
各部分碼的作用:引導(dǎo)碼用來(lái)通知接收器其后為遙控?cái)?shù)據(jù)。系統(tǒng)碼用來(lái)區(qū)分是哪一機(jī)型的數(shù)據(jù),接收端依此來(lái)判斷后續(xù)的數(shù)據(jù)是否為須執(zhí)行的指令。數(shù)據(jù)碼用來(lái)區(qū)分是哪一個(gè)鍵被按下,接收端根據(jù)數(shù)據(jù)碼做出應(yīng)該執(zhí)行什么動(dòng)作的判斷。簡(jiǎn)碼是在持續(xù)按鍵時(shí)發(fā)送的碼。它告知接收端,某鍵是在被連續(xù)地按著。
遙控?cái)?shù)據(jù)傳輸系統(tǒng)的關(guān)鍵是數(shù)據(jù)傳輸?shù)目煽啃?。為了提高編碼的可靠性,NEC標(biāo)準(zhǔn)規(guī)定系統(tǒng)碼、數(shù)據(jù)碼后分別接著傳送一個(gè)同樣的碼或者反碼,供誤碼校驗(yàn)用。
PHILIPS標(biāo)準(zhǔn):載波頻率為38KHz;沒(méi)有簡(jiǎn)碼,點(diǎn)按鍵時(shí),控制碼在1和0之間切換,若持續(xù)按鍵,則控制碼不變。一個(gè)全碼=起始碼‘11’+控制碼+系統(tǒng)碼+數(shù)據(jù)碼,如圖3所示。
數(shù)據(jù)0用“低電平1.778ms+高電平1.778ms”表示;數(shù)據(jù)1用“高電平1.778ms+低電平1.778ms”表示。 連續(xù)碼重復(fù)延時(shí)114ms。
硬件原理圖
圖4為硬件原理圖,電路主要由三大部分組成:AT89C52及其外圍電路部分;8×8鍵矩陣部分;及直流電源部分。
AT89C52單片機(jī)及其外圍電路組成的控制和遙控碼產(chǎn)生部分:主要有外中斷信號(hào)處理、12M時(shí)鐘、CPU復(fù)位、I/O口上拉電路、紅外遙控發(fā)射、按鍵指示等。由P0口和P2口搭成按鍵矩陣,當(dāng)有鍵按下時(shí),產(chǎn)生的外中斷請(qǐng)求信號(hào)(低電平有效)經(jīng)八輸入與非門(mén)和非門(mén)后送至P32端,使CPU進(jìn)入中斷處理,同時(shí)點(diǎn)亮按鍵指示燈。系統(tǒng)產(chǎn)生的遙控編碼信號(hào)通過(guò)P14端發(fā)出,經(jīng)放大后驅(qū)動(dòng)發(fā)射管發(fā)射出去。撥碼開(kāi)關(guān)DIP的作用是進(jìn)行不同機(jī)芯狀態(tài)的切換。比如當(dāng)DIP設(shè)置為“1000”時(shí),系統(tǒng)處于長(zhǎng)虹CH-10機(jī)芯狀態(tài);為“1001”時(shí),則處于CN-12機(jī)芯狀態(tài)。R13、C11和按鍵KEY組成單片機(jī)復(fù)位電路。
8×8鍵矩陣部分:由64只鍵盤(pán)開(kāi)關(guān)排列而成,可以根據(jù)需要,選擇合適的按鍵數(shù)。 8*8鍵是不增加擴(kuò)展器件的情況下最多的按鍵數(shù)。
整個(gè)系統(tǒng)的工作電源為直流+5V。由電源模塊IC31 (PS0500DS)、整流橋HBA、HBK等組成。
程序?qū)崿F(xiàn)
NEC編碼程序用MCS-51系列單片機(jī)匯編語(yǔ)言編寫(xiě)而成,PHILIPS編碼可以此類推。
NEC、TOSHIBA、SAMSONG公司的編碼格式有其共通之處:遙控全碼都由“引導(dǎo)碼+系統(tǒng)碼+系統(tǒng)碼(或系統(tǒng)碼取反)+數(shù)據(jù)碼+數(shù)據(jù)碼取反”組成;數(shù)據(jù)“0”和“1”的定義相同;不同的只是引導(dǎo)碼高低電平的持續(xù)時(shí)間不同,系統(tǒng)碼位數(shù)有長(zhǎng)有短,第一個(gè)簡(jiǎn)碼和全碼最后一位之間的延時(shí)不同,簡(jiǎn)碼的引導(dǎo)脈沖不同等;所以可以把相同的部分做成通用子程序,包括產(chǎn)生數(shù)據(jù)“0”和“1”的子程序“ONE”和“ZERO”,9ms、4.5ms、2.25ms、22ms、45ms等時(shí)間控制子程序。
8×8的鍵矩陣處理,采用外中斷的方式,有鍵按下時(shí),就向CPU發(fā)出中斷請(qǐng)求,然后按照“先列后排”一個(gè)個(gè)掃描,從而找出被按下的鍵,當(dāng)然這里面還包括了去抖動(dòng)、多鍵同時(shí)按時(shí)只處理一鍵的處理部分。
機(jī)芯的不同狀態(tài)由單片機(jī)P3口的P3.5、P3.4、P3.1、P3.0四位的輸入數(shù)值來(lái)區(qū)分判斷,比如“0000”表示工作于東芝TC90××系列狀態(tài),“0001”則表示要求工作于NEC公司的PD61××系列狀態(tài)。
判斷了是哪一只鍵按下以及處于機(jī)芯的哪種狀態(tài)以后,程序就嚴(yán)格按照相應(yīng)的遙控編碼方式來(lái)進(jìn)行遙控碼的發(fā)射,也就是說(shuō)將一定時(shí)段、一定數(shù)值的電平脈沖調(diào)制在38KHz載波上,逐一發(fā)射出去。
流程圖如圖5所示
圖5 程序流程圖
部分程序段:
這里給出的是產(chǎn)生NEC遙控碼的主要部分,而像鍵掃描等較常見(jiàn)的程序段就不再提供.
主程序初始化部分:
ORG 100H
main: mov psw,#0 ;
mov sp,#30h ;設(shè)置堆棧
mov tmod,#02h ;方式2定時(shí)
mov th0,#0f3h ;38KHZ方波時(shí)間數(shù)
mov p2,#0 ;
mov p0,#0ffh
setb ex0 ;允許外中斷0
setb pt0 ;外中斷0(有鍵按下)優(yōu)先
clr it0 ;電平觸發(fā)方式
clr mdl ;設(shè)有無(wú)按鍵的標(biāo)志
setb p3.2 ;
setb p3.4
setb p3.5
setb p3.1
setb p3.0 ;置P3.0~P3.5為輸入狀態(tài)
clr c ;清進(jìn)位標(biāo)志位
clr p1.4 ;清遙控輸出端
clr a ;清累加器A
mov KEYHAO,#0H ; 清按鍵號(hào)存儲(chǔ)器
xrl a,#11000000b ;0000(p3.5 p3.4 p3.1 p3.0)
jz TV1
mov a,r7
xrl a,#11000001b ;0001
jz TV2
mov a,r7
xrl a,#11000010b ;0010
jz VCD
mov a,r7
……
SET ETO
SET EA ;開(kāi)中斷
pp:jnb mdl,pp ;循環(huán)等待按鍵
clr mdl ;
CLR KEYHAO
sjmp pp……
‘0’子程序和‘1’子程序部分:ZERO: CLR A
SETB TR0 ;啟動(dòng)定時(shí)器0#
CJNZ A,#39,$ ;0.5625ms高電平
CLR TR0 ;停定時(shí)器0#
ACALL DE05625 ;沿時(shí)0.5625ms
CLR A
RET
ONE: CLR A
SETB TR0 ;啟動(dòng)定時(shí)器0#
CJNE A,#39,$ ;0.5625ms高電平
CLR TR0 ;停定時(shí)器0#
ACALL DE16875 ;沿時(shí)1.6875ms
RET
結(jié)語(yǔ)
本文介紹了AT89C52單片機(jī)代替專用遙控芯片設(shè)計(jì)通用型電視遙控器,該方案具有結(jié)構(gòu)簡(jiǎn)單、成本低等優(yōu)點(diǎn),用本文介紹的方法進(jìn)行單片機(jī)遙控信號(hào)模擬,可以作出一款自己家的通用遙控器。
參考文獻(xiàn)
1 《MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)》.何立民.北京航空航天大學(xué)出版社
2 《長(zhǎng)虹最新系列機(jī)芯彩色電視機(jī)》.電子科技大學(xué)出版社
3 NEC公司.PHILIPS公司專用遙控芯片資料
作者簡(jiǎn)介:李王旬,女,四川長(zhǎng)虹電器股份有限公司電視公司工程師,主要從事電視生產(chǎn)自動(dòng)化技術(shù)工作。
評(píng)論