1、实例制作基于C51的无线遥控玩具汽车 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 15 个人收集整理 勿做商业用途 从事无线遥控玩具
2、开发工作多年,开发了很多种类的无线遥控玩具产品.总结了很多工作经验。用的绝大部分IC是TX2C(遥控)和RX2C(接收),其功能分别是:前进,后退,左转,右转.笔者利用工作的空闲时间用AT89C2051单片机编出了跟TX2C和RX2C一样的编解码程序,并成功进行了实际制作.编解码与TX2C和RX2C兼容。现将制作原理图和源程序公开给读者参考学习与制作,相信对初学者有极大的帮助,这也是笔者的心愿!其原理图如下:图2为接收部分,图3为发射部分。源程序和仿真文件见附件. 读者如果想仿制的话,建议RF接收和RF发射部使用市面上成品的315MHz模块,应用起来很方便,这样可以免去调试高频部分。
3、 下面图1是遥控前进部分编码波形: 从编码图1中看出有四个周期一样的同步脉冲,各个功能是按数据脉冲个数的不同实现功能不同的。这样编码有很强的搞干扰能力,也可以应用到其它领域遥控上面去,可以做成遥控飞机,也可以做成遥控船……这要看读者的需要应用了。 具体功能相应编码以下: 前进:同步脉冲+10个数据脉冲 后退:同步脉冲+40个数据脉冲 左转:同步脉冲+64个数据脉冲 右转:同步脉冲+58个数据脉冲 前进+左转:同步脉冲+34个数据脉冲 前进+右转:同步脉冲+28个数据脉冲 后退+左转:同步脉冲+46个数据脉冲 后退+右转:同步脉冲+52个数据脉冲 按键松开时发送
4、2帧停止位:同步脉冲+4个数据脉冲。 接收部分收到的是反相的信号,读者在制作时要注意。 图二(点击放大) 图三 ;五功能遥控车发射程序。 ;MCU:2051 ;OSC:12M ;DATE:08.05。18 ;功能: ;前进(F) ;后退(B), ;左转(L), ;右转(R)。 ;加速(T)。 ;作者:徐增钟 ;=================================================================================== KEY EQU P3 DATAOUT BIT P1.0 ;数据输
5、出口. LED BIT P1。1 ;发射指示灯。 KEYBUF EQU 70H ;键号存放单元。 KEYMASK BIT 01H KEYFLAG BIT 05H ORG 0000H AJMP START ORG 000BH AJMP INTTCC ORG 0030H ;=================================================================================== CLEAR_RAM: MOV R0,#30H ;从30H单元开始. MOV R3,#127 ;清除
6、127个单元 NEXT: MOV @R0,#00 ;清除 INC R1 ; DJNZ R3,NEXT ;127个单元清完?; RET ;================================================================================== ;程序初始化; BEGIN: MOV SP,#50H ; MOV P1,#00H ; MOV P3,#0FFH ; MOV TMOD,#01H MOV TH0,#0B1H MOV TL0,#0E0H SETB TR0 SETB EA
7、 SETB ET0 CLR KEYFLAG SETB KEYMASK RET ;=================================================================================== START: CALL CLEAR_RAM ;清除RAM CALL BEGIN ;程序初始化; LOOP: CALL KEYON ;调用KEYSCAN AJMP LOOP NOP NOP NOP AJMP START ;==================
8、 INTTCC: MOV TH0,#0B1H MOV TL0,#0E0H SETB KEYFLAG RETI ;=================================================================================== KEYON: MOV A,KEY CJNE A,#0FFH,KEYSEND JB KEYMASK,ET SETB KEYMA
9、SK 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 LED CLR KEYMASK CJNE A,#0DFH,K1 MOV R3,#10
10、发送10个脉冲。 AJMP SEND RET K1: CJNE A,#0EFH,K2 MOV R3,#40 ;发送40个脉冲. AJMP SEND RET K2: CJNE A,#0F7H,K3 MOV R3,#64 ;发送64个脉冲。 AJMP SEND RET K3: CJNE A,#0FBH,K4 MOV R3,#58 ;发送58个脉冲. AJMP SEND RET K4: CJNE A,#0D7H,K5 MOV R3,#34 ;发送34个脉冲。 AJMP SEND RET K5: C
11、JNE A,#0DBH,K6 MOV R3,#28 ;发送28个脉冲。 AJMP SEND RET K6: CJNE A,#0E7H,K7 MOV R3,#46 ;发送46个脉冲。 AJMP SEND RET K7: CJNE A,#0EBH,K8 MOV R3,#52 ;发送52个脉冲。 AJMP SEND K8: CJNE A,#0FFH,KEXIT KEXIT: RET ;=======================================================================
12、 DOUT: SETB DATAOUT CALL DYMS5 CLR DATAOUT CALL DYMS5 DJNZ R3,DOUT MOV P2,#00 RET SEND: MOV R1,#04 N1: SETB DATAOUT MOV R4,#255 D1: NOP NOP NOP NOP DJNZ R4,D1 CLR DATAOUT CALL DYMS5 DJNZ R1,N1 AJMP DOUT NOP NOP AJMP START
13、 ;=================================================================================== DYMS5: MOV R6,#250 D2: DJNZ R6,D2 RET ;==================================================================================文档为个人收集整理,来源于网络个人收集整理,勿做商业用途 DY5MS: MOV R5,#4 D3: MOV R3,#248 DJNZ R3,$
14、DJNZ R5,D3 RET ;================================================================================== END 以下是接收部分程序 ;遥控车接收程序. ;MCU:AT89C2051 ;OSC:12M ;DATE:08。05。18 ;接收相应功能:前进,后退,左转,右转。 ;E—MAIL:chinameifen@21cn。com ;作者:徐增钟 ;================================================================
15、 IN EQU P3。2 ;RECEIVE RXMA BIT 05H ;================================================================= ORG 0000H AJMP START ORG 0003H AJMP INRX ORG 0030H ;================================================================ CLEAR_RAM: MOV R1,#30H MOV R3,#127 NEXT: MOV @R1,#00 INC
16、R1 DJNZ R3,NEXT RET ;================================================================ START: MOV SP,#50H MOV P3,#0FFH ; MOV P2,#0FFH ; MOV P1,#00 ; SETB EA SETB EX0 CLR RXMA本文为互联网收集,请勿用作商业用途文档为个人收集整理,来源于网络 LOOP: CALL NORX AJMP LOOP ;====================================
17、 INRX: CLR EX0 MOV R4,#4 ;同步脉冲。 MOV TMOD,#01H NX1: MOV TH0,#00 ;计数初值为00. MOV TL0,#00 ; SETB TR0 INC1: JNB IN,INC1 ;低电平在此等 CLR TR0 MOV A,TH0 CJNE A,#05H,EXIT HERE1: JB IN,HERE1 ;等待0.5MS高电平结束。 DJNZ R4,NX1 JNB IN,$ CLR A RD1:
18、 INC A RD2: JB IN,RD2 MOV R1,#05 RD3: JB IN,RD1 LCALL DYMS5 DJNZ R1,RD3 DEC A DEC A DEC A DEC A JZ STOP DEC A DEC A DEC A DEC A DEC A DEC A JZ K1 DEC A
19、 DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A DEC A JZ FR DEC A DEC A DEC A DEC A DEC A DEC A JZ FL DEC A DEC A DEC A DEC A DEC A DEC A JZ K2 DEC A DEC A DEC A DEC
20、A DEC A DEC A JZ BL DEC A DEC A DEC A DEC A DEC A DEC A JZ BR DEC A DEC A DEC A DEC A DEC A DEC A JZ K3 DEC A DEC A DEC A DEC A DEC A DEC A JZ K4 NOP NOP本文为互联网收集,请勿用作商业用途个人收集整理,勿做商业用途 EXIT: SETB EX0 RETI STOP: MOV P1,#00
21、 AJMP EXIT K1: MOV P1,#00010000B ;F AJMP EXIT K2: MOV P1,#00100000B ;B AJMP EXIT K3: MOV P1,#01000000B ;L AJMP EXIT K4: MOV P1,#10000000B ;R AJMP EXIT FR: MOV P1,#10010000B ;F+R AJMP EXIT FL: MOV P1,#01010000B ;F+L AJMP EXIT BR: MOV P1,#10100000B ;B+R AJMP EXIT
22、 BL: MOV P1,#01100000B ;B+L AJMP EXIT ;============================================================== NORX: NET: MOV R1,#200 RX: JNB IN,NET CALL DY1MS DJNZ R1,RX MOV P1,#00 NOSI: RET ;============================================================== DYMS5: MOV R5,#135 DJNZ R5,$ RET ;============================================================== DY1MS: MOV R6,#138 D2: DJNZ R6,D2 RET ;============================================================== END






