tc9148是cmos低功耗紅外遙控發(fā)射專用ic,通常與tc9149/tc9150紅外遙控接收ic配合使用,對(duì)家用電器進(jìn)行控制。tc9148可連接18?jìng)€(gè)鍵,其中12個(gè)鍵為脈沖發(fā)射鍵(即按一次發(fā)射一次編碼脈沖,接收機(jī)解調(diào)后生成一個(gè)單脈沖信號(hào)),其余6鍵,具有連續(xù)發(fā)射功能(即按下發(fā)射鍵,紅外發(fā)射管連續(xù)發(fā)射該鍵的編碼信號(hào)直到放開該鍵為止,接收機(jī)端可得到一串脈沖信號(hào))。本文介紹不用tc9148對(duì)應(yīng)的專用接收電路,直接用mcs-51單片機(jī)的定時(shí)器及外中斷功能,接收tc9148的紅外編碼信號(hào),即用tc9148遙控mcs-51單片機(jī)的方法。
一、tc9148的編碼
要用單片機(jī)接收tc9148的遙控信號(hào),首先應(yīng)知道tc9148的編碼信號(hào)。筆者利用自制的以8031為cpu的仿真器,對(duì)tc9148的編碼進(jìn)行監(jiān)測(cè)分析,得出tc9148的編碼,如附表所示。
從表中可知tc9148的編碼信號(hào)規(guī)則如下:
1。 碼長(zhǎng)24位,位寬840μs。2。 編碼的第1、3、5……23位全為1,作為識(shí)別標(biāo)記。3。 去掉1、2條中的識(shí)別標(biāo)志后的純編碼中只有4位為1,其余8位為0。4。 脈沖發(fā)射鍵的編碼以ee開頭,連續(xù)發(fā)射鍵的編碼以ef開頭(為編解碼方便,接收校驗(yàn)后將去除以上兩種識(shí)別標(biāo)記)。
手動(dòng)按鍵后,發(fā)射一次本鍵編碼,延時(shí)40位后再發(fā)射一次。若按的是連續(xù)發(fā)射鍵,延時(shí)80位后,重復(fù)上述過程,直至該鍵斷開為止。
mcs-51單片機(jī)根據(jù)以上規(guī)則對(duì)收到的編碼信號(hào)進(jìn)行校驗(yàn),若不符合,則視為無效。
二、發(fā)射、接收電原理圖
發(fā)射器原理如圖1所示。tc9148靜態(tài)功耗極低,可不設(shè)電源開關(guān)。讀者也可以選用tc9148制作的遙控器成品,使用時(shí)要注意{13}腳至{12}、{11}、{10}腳之間的二極管的接法,這三個(gè)二極管對(duì)應(yīng)編碼的前3位。筆者將前3位編碼為“101”,故第2個(gè)二極管不接。接收器原理較簡(jiǎn)單,如圖2所示。紅外接收頭選用成品,通過一反相器倒相后,將信號(hào)送入單片機(jī)的int1端(也可接int0,但要修改相應(yīng)程序)。
三、接收及解碼程序
設(shè)單片機(jī)使用的晶振為6mhz。設(shè)定時(shí)器的定時(shí)時(shí)間為0。42ms、定時(shí)方式2、int1為負(fù)沿觸發(fā)。當(dāng)?shù)谝晃粩?shù)據(jù)到來時(shí),觸發(fā)int1中斷,產(chǎn)生中斷。在int1中斷服務(wù)程序中關(guān)外中斷1,啟動(dòng)定時(shí)器0,0。42ms后,定時(shí)器中斷,讀數(shù)據(jù)。此時(shí)正好在該位數(shù)據(jù)的中間,以后定時(shí)器每中斷2次讀一位數(shù)據(jù),讀完24位數(shù)據(jù)后,將數(shù)據(jù)保存在內(nèi)存中,延時(shí)40位,再讀24位數(shù)據(jù),若讀出的24位數(shù)據(jù)和前面的相同,則進(jìn)行校驗(yàn)、解碼,得出相應(yīng)的控制程序入口,執(zhí)行相應(yīng)的程序。以上任何一步不能通過則放棄此次接收結(jié)果。
本文提供的程序本為嵌入其他程序而設(shè)計(jì)的,程序中使用了定時(shí)器t0,外中斷1,內(nèi)存單元10h、11h、12h、30h、31h、32h、33h、34h、35h,位地址77h,若讀者在主程序中使用了以上資源,也可進(jìn)行更換,要注意不要和棧沖突。
若將此程序嵌入其他程序,只要將其中的初始化程序編入主程序的初始化部分中即可。中斷服務(wù)程序可放在程序存儲(chǔ)器的任意位置。此程序相當(dāng)于在后臺(tái)執(zhí)行,不影響主控程序。注意6個(gè)連續(xù)發(fā)射鍵將導(dǎo)致相應(yīng)處理程序的反復(fù)執(zhí)行。
源程序清單(略)。
本文中的程序在自制仿真器中運(yùn)行通過。實(shí)踐證明此方法穩(wěn)定性好、可靠性高、抗干擾性能優(yōu)良。用戶將此程序嵌入控制程序中,可完成非常復(fù)雜的遙控功能。