了解了遙控發(fā)射的原理,就可以來自己動(dòng)手做一個(gè)遙控器了,可是沒有專門的芯片怎么辦?用單片機(jī),然后配合程序完成遙控碼的發(fā)射。 1、硬件電路
 其中,單片機(jī)選用AT89C2051, 使用兩節(jié)電池供電就可以工作,用P1口構(gòu)成3×3的模擬鍵盤,用一個(gè)IO口作為遙控波形輸出端,然后接三極管驅(qū)動(dòng)紅外發(fā)射管,發(fā)出需要的遙控波形。 2、程序編寫 由于要把波形“發(fā)射”出去,需要對(duì)遙控碼進(jìn)行調(diào)制,調(diào)制即把遙控碼的高電平和載波進(jìn)行“與”,結(jié)果是連續(xù)發(fā)射一定數(shù)量的載波,而低電平則只需進(jìn)行簡單的延時(shí)即可。以SAA3010T編碼為例,為雙相位編碼方式,“0”用844US高電平加844US低電平表示,“1”用844US低電平加844US高電平表示,根據(jù)上述原理,844US高電平和載波進(jìn)行“與”,載波的頻率為38KHZ,周期為1/38k, 所以,結(jié)果是 32個(gè)完整載波+12us,另外,844US低電平只需用一個(gè)延時(shí)函數(shù)即可。由于程序不長且時(shí)間精度要求很高,所以用匯編來編程,程序如下:
發(fā)射“0”的子函數(shù)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA3010T;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SEND0: MOV R0, #20H NEXT0: SETB REMOTE ; 844us=32個(gè)完整載波+12us MOV R1, #03H ;發(fā)送正電平9us DJNZ R1, $ NOP CLR REMOTE ;發(fā)送負(fù)電平17us MOV R1, #06H DJNZ R1, $ NOP DJNZ R0, NEXT0 ; 32個(gè)完整載波發(fā)送完畢 SETB REMOTE ;發(fā)送高電平9us MOV R1, #03H DJNZ R1, $ |