实例制作基于C51的无线遥控玩具汽车.docx
- 文档编号:11401083
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:12
- 大小:122.76KB
实例制作基于C51的无线遥控玩具汽车.docx
《实例制作基于C51的无线遥控玩具汽车.docx》由会员分享,可在线阅读,更多相关《实例制作基于C51的无线遥控玩具汽车.docx(12页珍藏版)》请在冰豆网上搜索。
实例制作基于C51的无线遥控玩具汽车
从事无线遥控玩具开发工作多年,开发了很多种类的无线遥控玩具产品。
总结了很多工作经验。
用的绝大部分IC是TX2C(遥控)和RX2C(接收),其功能分别是:
前进,后退,左转,右转。
笔者利用工作的空闲时间用AT89C2051单片机编出了跟TX2C和RX2C一样的编解码程序,并成功进行了实际制作。
编解码与TX2C和RX2C兼容。
现将制作原理图和源程序公开给读者参考学习与制作,相信对初学者有极大的帮助,这也是笔者的心愿!
其原理图如下:
图2为接收部分,图3为发射部分。
源程序和仿真文件见附件.
读者如果想仿制的话,建议RF接收和RF发射部使用市面上成品的315MHz模块,应用起来很方便,这样可以免去调试高频部分。
下面图1是遥控前进部分编码波形:
从编码图1中看出有四个周期一样的同步脉冲,各个功能是按数据脉冲个数的不同实现功能不同的。
这样编码有很强的搞干扰能力,也可以应用到其它领域遥控上面去,可以做成遥控飞机,也可以做成遥控船……这要看读者的需要应用了。
具体功能相应编码以下:
前进:
同步脉冲+10个数据脉冲
后退:
同步脉冲+40个数据脉冲
左转:
同步脉冲+64个数据脉冲
右转:
同步脉冲+58个数据脉冲
前进+左转:
同步脉冲+34个数据脉冲
前进+右转:
同步脉冲+28个数据脉冲
后退+左转:
同步脉冲+46个数据脉冲
后退+右转:
同步脉冲+52个数据脉冲
按键松开时发送2帧停止位:
同步脉冲+4个数据脉冲。
接收部分收到的是反相的信号,读者在制作时要注意。
图二(点击放大)
图三
;五功能遥控车发射程序.
;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 ;键号存放单元.
KEYMASKBIT 01H
KEYFLAG BIT 05H
ORG 0000H
AJMP START
ORG 000BH
AJMP INTTCC
ORG 0030H
;===================================================================================
CLEAR_RAM:
MOV R0,#30H ;从30H单元开始.
MOV R3,#127 ;清除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
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
;===================================================================================
INTTCC:
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB KEYFLAG
RETI
;===================================================================================
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 LED
CLR KEYMASK
CJNE A,#0DFH,K1
MOV R3,#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:
CJNE 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
;===================================================================================
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
;===================================================================================
DYMS5:
MOV R6,#250
D2:
DJNZ R6,D2
RET
;==================================================================================
DY5MS:
MOV R5,#4
D3:
MOV R3,#248
DJNZ R3,$
DJNZ R5,D3
RET
;==================================================================================
END
以下是接收部分程序
;遥控车接收程序.
;MCU:
AT89C2051
;OSC:
12M
;DATE:
08.05.18
;接收相应功能:
前进,后退,左转,右转.
;E-MAIL:
chinameifen@
;作者:
徐增钟
;=================================================================
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 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
;====================================================================
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:
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
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 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
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
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实例 制作 基于 C51 无线 遥控 玩具 汽车