1、笔者从事无线遥控玩具开发工作多年,开发了很多种类的无线遥控玩具产品。总结了很多工作经验。用的绝大部分IC是TX2C (遥控)和RX2C(接收),其功能分别是:前进,后退,左转,右转。笔者利用工作的空闲时间用AT89C2051单片机编出了跟TX2C和RX2C 一样的编解码程序,并成功进行了实际制作。编解码与TX2C和RX2C兼容。现将制作原理图和源程序公开给读者参考学习与制作,相信对初学者有极大的帮助,这也是笔者的心愿!其原理图如下:图2为接收部分,图3为发射部分。读者如果想仿制的话,建议RF接收和RF发射部使用市面上成品的315MHz模块,应用起来很方便,这样可以免去调试高频部分。下面图1是遥
2、控前进部分编码波形:从编码图1中看出有四个周期一样的同步脉冲,各个功能是按数据脉冲个数的不同实现功能不同的。这样编码有很强的搞干扰能力,也可以应用到其它领域遥控上面去,可以做成遥控飞机,也可以做成遥控船这要看读者的需要应用了。具体功能相应编码以下: 前进:同步脉冲+10个数据脉冲后退:同步脉冲+40个数据脉冲左转:同步脉冲+64个数据脉冲右转:同步脉冲+58个数据脉冲前进+左转:同步脉冲+34个数据脉冲前进+右转:同步脉冲+28个数据脉冲后退+左转:同步脉冲+46个数据脉冲后退+右转:同步脉冲+52个数据脉冲按键松开时发送2帧停止位:同步脉冲+4个数据脉冲。接收部分收到的是反相的信号,读者在制
3、作时要注意。;五功能遥控车发射程序.;MCU:2051;OSC:12M;DATE:08.05.18;功能:;前进(F);后退(B),;左转(L),;右转(R).;加速(T).;作者:徐增钟;=KEY EQU P3 DATAOUT BIT P1.0 ;数据输出口.LED BIT P1.1 ;发射指示灯.KEYBUF EQU 70H ;键号存放单元 .KEYMASK BIT 01H KEYFLAG BIT 05HORG 0000HAJMP STARTORG 000BHAJMP INTTCCORG 0030H;=CLEAR_RAM:MOV R0,#30H ;从30H单元开始.MOV R3,#127
4、;清除127个单元NEXT: MOV R0,#00 ;清除INC R1 ;DJNZ R3,NEXT ;127个单元清完?;RET;=;程序初始化;BEGIN: MOV SP,#50H ;MOV P1,#00H ;MOV P3,#0FFH ;MOV TMOD,#01HMOV TH0,#0B1HMOV TL0,#0E0HSETB TR0SETB EASETB ET0CLR KEYFLAGSETB KEYMASK RET;=START: CALL CLEAR_RAM ;清除RAMCALL BEGIN ;程序初始化 ;LOOP: CALL KEYON ;调用KEYSCANAJMP LOOPNOPNOP
5、NOPAJMP START;=INTTCC: MOV TH0,#0B1HMOV TL0,#0E0HSETB KEYFLAGRETI;=KEYON: MOV A,KEY CJNE A,#0FFH,KEYSEND JB KEYMASK,ET SETB KEYMASK CLR LED MOV R5,#2 X2: MOV R3,#4 CALL SEND DJNZ R5,X2 SETB DATAOUT CALL DY5MS MOV P1,#00 ET: RET ;=KEYSEND:SETB LEDCLR KEYMASK CJNE A,#0DFH,K1 MOV R3,#10 ;发送10个脉冲.AJMP S
6、END RETK1: CJNE A,#0EFH,K2 MOV R3,#40 ;发送40个脉冲.AJMP SEND RETK2: CJNE A,#0F7H,K3 MOV R3,#64 ;发送64个脉冲.AJMP SEND RETK3: CJNE A,#0FBH,K4 MOV R3,#58 ;发送58个脉冲.AJMP SEND RETK4: CJNE A,#0D7H,K5 MOV R3,#34 ;发送34个脉冲.AJMP SEND RETK5: CJNE A,#0DBH,K6 MOV R3,#28 ;发送28个脉冲.AJMP SEND RETK6: CJNE A,#0E7H,K7 MOV R3,#
7、46 ;发送46个脉冲.AJMP SEND RETK7: CJNE A,#0EBH,K8 MOV R3,#52 ;发送52个脉冲.AJMP SEND K8: CJNE A,#0FFH,KEXIT KEXIT: RET;=DOUT:SETB DATAOUT CALL DYMS5 CLR DATAOUT CALL DYMS5DJNZ R3,DOUT MOV P2,#00RETSEND: MOV R1,#04 N1: SETB DATAOUT MOV R4,#255D1: NOPNOPNOPNOPDJNZ R4,D1 CLR DATAOUT CALL DYMS5DJNZ R1,N1AJMP DOUTNOPNOPAJMP START;= DYMS5: MOV R6,#250D2: DJNZ R6,D2RET;=DY5MS:MOV R5,#4D3: MOV R3,#248DJNZ R3,$DJNZ R5,D3RET ;=END参考链接:http:/