基于51单片机的四驱无线遥控小车(附电路图,源代码)

合集下载

基于51单片机的无线遥控小车设计

基于51单片机的无线遥控小车设计

基于51单片机的无线遥控小车设计随着科技的不断发展,无线遥控小车已经成为了人们生活中不可或缺的一部分。

无线遥控小车具有控制方便、灵活性高等特点,可以广泛应用于各个领域,如家庭娱乐、工业搬运等。

本文将介绍一种基于51单片机的无线遥控小车设计,并附上相应的代码。

本设计的无线遥控小车由四个轮子、两个直流电机、一个超声波测距模块和一个遥控模块组成。

其中,遥控模块用于接收人们发送的指令,超声波测距模块用于测量小车与障碍物之间的距离,以便避免碰撞。

首先,我们需要连接四个轮子和两个直流电机到51单片机的相应引脚上。

接下来,将超声波测距模块连接到51单片机的一个引脚上,用于接收超声波测距的信号。

最后,将遥控模块接收到的指令转化为电平信号,并将其连接到51单片机的引脚上。

在代码部分,我们首先需要初始化相应的引脚和串口,以便接收和发送指令。

然后,我们需要编写一个函数用于接收遥控模块发送的指令,并根据指令来控制小车的运动。

例如,当接收到前进指令时,小车向前运动;当接收到后退指令时,小车向后运动。

在控制小车运动的同时,我们还需要通过超声波测距模块来检测小车与障碍物之间的距离,以便避免碰撞。

此外,在代码中还需设置一些保护措施,例如在小车运动过程中检测到距离障碍物过近时自动停止前进,或者在接收到无效指令时忽略该指令等。

总结起来,基于51单片机的无线遥控小车设计离不开硬件连接和代码编写两个方面的工作。

合理的硬件连接可以保证信号的稳定传输,而完善的代码编写可以保证小车的正常运行和灵活性。

这种无线遥控小车具有控制方便、灵活性高等优点,可广泛应用于各个领域。

通过不断的优化和改进,无线遥控小车的性能将会更加出色。

基于51单片机WiFi智能小车制作

基于51单片机WiFi智能小车制作

基于51单片机WiFi智能小车制作基于51单片机WiFi智能小车制作一、基本原理51单片机WiFi智能小车是利用PC或手机作为控制端,通过手机连接wifi模块(路由器)以获得wifi信号,同时车载也连接wifi模块以获得和手机相同的IP地址,实现手机和小车的连接,然后利用PC或手机上的控制软件以wifi网络信号为载体发送相关信号,wifi模块接收PC 或手机端发送来的相关信号并分析转换成TTL 电平信号,然后发送给单片机,单片机接收到的电平信号处理、分析、计算,转化成控制指令并发送给电机驱动模块以实现小车的前进、后退、左拐、右拐等功能。

二、购买所需材料了解51单片机WiFi智能小车基本原理后,需要购买所需材料进行制作。

下面列出所需制作材料:序号材料备注图例6 小车底盘7 摄像头 根据固件支持摄像头购买8 电源根据自己需要购买种类9 杜邦线及小配件制作所需工具:序号工具名备注图例称1 电烙铁一套 包括松香焊锡2 螺丝刀 平口、十字等3 微型电钻 可以自制4手工刀5 剪刀6 万用表7 热熔胶枪或快干胶8US B下载器三、开始制作1、制作流程开始制作前,我们首先需要看购买路由器的型号,笔者采用的是703n 路由器,所以需要引出ttl 线。

总体步骤为:路由器引TTL 线→路由器刷OpenWrt 固件→制作51单片机最小系统→下载下位机程序到51单片机→安装上位机程序至PC 或手机→测试上、下位机通信→组装→调试完成。

2、路由器引ttl线首先打开703n路由器,按照下图标示位置焊接ttl线。

注意:1、焊接的时候要小心焊接,焊好后微拉下查看松紧2、焊接最好采用软线焊接,防止意外整块拉掉焊点3、焊好后一定用胶固定,最好采用热熔胶下图为引好ttl线样子3 刷OpenWrt固件何为OpenWrt固件,OpenWrt可以被描述为一个嵌入式的Linux 发行版,(主流路由器固件有dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的,静态的系统。

基于51单片机红外无线遥控智能小车控制设计

基于51单片机红外无线遥控智能小车控制设计

基于51单片机红外无线遥控智能小车控制设计摘要:本文利用51单片机设计了一款具有红外无线遥控功能的智能小车控制系统。

该系统基于红外技术,实现了对智能小车的远程控制。

通过建立遥控信号传输模型和小车控制模块,实现了智能小车的实时运动控制,包括前进、后退、左转、右转等操作。

本文详细介绍了系统设计方案、硬件设计和软件设计,通过实验验证,证明该系统能够稳定地实现智能小车的远程控制,具有一定的应用价值和推广前景。

关键词:51单片机;红外无线遥控;智能小车控制;遥控信号传输模型Abstract:In this paper, a smart car control system with infrared wireless remote control function based on 51 single-chip microcomputer is designed. The system is based on infrared technology, which realizes the remote control of the smart car. By establishing the remote control signal transmission model and the car control module, real-time motion control of the smart car, including forward, backward, turning left and turning right, is realized. This paper introduces the system design scheme, hardware design and software design in detail. Through experiments, it is proved that the system can stably realize the remote control of the smart car, and has certain application value and promotion prospects.Keywords:51 single-chip microcomputer; infrared wireless remote control; smart car control; remote control signaltransmission model1. 引言智能小车控制系统是一种目前比较受关注的智能化系统,在智能出行和智慧交通中有着广泛的应用。

基于51单片机的红外遥控智能小车源程序(C语言)

基于51单片机的红外遥控智能小车源程序(C语言)

/*预处理命令*/#include<reg52.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件#define uchar unsigned char#define uint unsigned int#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};sbit IRIN=P3^2; //红外接收器数据线sbit LCD_RS = P0^7;sbit LCD_RW = P0^6;sbit LCD_EN = P0^5;uchar begin[]={"My car!"};uchar cdis1[]={"jiansu!"};uchar cdis2[]={"qianjin!"};uchar cdis3[]={"jiasu!"};uchar cdis4[]={"zuozhuang!"};uchar cdis5[]={"STOP!"};uchar cdis6[]={"youzhuan!"};uchar cdis8[]={"daoche!"};sbit M1 = P1^0;sbit M2 = P1^1;sbit M3 = P1^2;sbit M4 = P1^3;sbit EN12 = P1^4;sbit EN34 = P1^5;uchar IRCOM[7];uchar m,n;uchar t=2;uchar g;uchar code digit[]={"0123456789"};uint v;uchar count;bit flag;void delayxms(uchar t);void delay(unsigned char x) ;void delay1(int ms);void motor();void lcd_display();/*检查LCD忙状态lcd_busy为1时,忙,等待。

51单片机无线遥控小车设计

51单片机无线遥控小车设计

51单片机无线遥控小车设计一、引言无线遥控小车是一种基于51单片机的智能小车系统,它利用无线通信技术实现了对小车的遥控。

通过无线遥控,我们可以随时控制小车的方向,实现室内或者室外的移动。

本设计将详细介绍51单片机无线遥控小车的整体设计框架、电路连接和关键模块设计。

二、整体设计框架整个系统分为遥控器端和小车端两个部分。

遥控器端通过按键或者摇杆输入控制指令,经过编码和解码处理后,通过无线传输模块将指令发送给小车端。

小车端接收到指令后,通过解码和控制模块来控制小车的运动。

三、电路连接遥控器端由单片机、按键(或者摇杆)、编码芯片和无线传输模块组成。

按键用于输入控制指令,编码芯片用于将按键输入的模拟信号转换为数字信号,单片机将数字信号进行编码后发送给无线传输模块,最终通过无线通信将指令传输给小车端。

小车端由单片机、解码芯片、电机驱动、电机和无线接收模块组成。

无线接收模块用于接收遥控器端发送过来的指令,解码芯片将数字信号转换为控制信号,单片机根据控制信号来控制电机驱动,从而实现小车的运动。

四、关键模块设计1.编码和解码模块设计编码和解码模块是整个系统中的关键部分,它负责将模拟信号转换为数字信号,并将数字信号转换为控制信号。

2.无线传输模块选择无线传输模块是实现遥控通信的关键组件,我们可以选择使用蓝牙模块、无线射频模块等。

选择合适的无线传输模块需要考虑通信距离、通信速率、功耗等因素。

3.电机驱动模块设计电机驱动模块负责将控制信号转换为电机运动控制信号,驱动电机完成小车的移动。

在设计电机驱动模块时,需要考虑电机的类型和电机驱动电路的选型。

五、总结本设计详细介绍了51单片机无线遥控小车的整体设计框架,电路连接和关键模块设计。

通过对整个设计的理解和实现,我们可以实现对小车的远程遥控,从而实现室内或者室外的自动移动。

这种无线遥控小车系统在娱乐、智能家居、无人巡检等领域都有广泛的应用前景。

实例制作基于C51的无线遥控玩具汽车

实例制作基于C51的无线遥控玩具汽车

实例制作基于C51的无线遥控玩具汽车从事无线遥控玩具开发工作多年,开发了很多种类的无线遥控玩具产品。

总结了很多工作经验。

用的绝大部分IC是T X2C(遥控)和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 P3DATAOUT BIT P1.0 ;数据输出口.LED BIT P1.1 ;发射指示灯.KEYBUF EQU 70H ;键号存放单元.KEYMASK BIT 01HKEYFLAG BIT 05HORG 0000HAJMP STARTORG 000BHAJMP INTTCCORG 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,#01HMOV TH0,#0B1HMOV TL0,#0E0HSETB TR0SETB EASETB ET0CLR KEYFLAGSETB KEYMASKRET;======================================================= ============================START:CALL CLEAR_RAM ;清除RAMCALL BEGIN ;程序初始化;LOOP:CALL KEYON ;调用KEYSCANAJMP LOOPNOPNOPNOPAJMP START;======================================================= ============================INTTCC:MOV TH0,#0B1HMOV TL0,#0E0HSETB KEYFLAGRETI;======================================================= ============================KEYON:MOV A,KEYCJNE A,#0FFH,KEYSENDJB KEYMASK,ETSETB KEYMASKCLR LEDMOV R5,#2X2: MOV R3,#4CALL SENDDJNZ R5,X2SETB DATAOUTCALL DY5MSMOV P1,#00ET:RET;======================================================= =============================KEYSEND:SETB LEDCLR KEYMASKCJNE A,#0DFH,K1MOV R3,#10 ;发送10个脉冲. AJMP SENDRETK1: CJNE A,#0EFH,K2MOV R3,#40 ;发送40个脉冲. AJMP SENDRETK2: CJNE A,#0F7H,K3MOV R3,#64 ;发送64个脉冲. AJMP SENDRETK3: CJNE A,#0FBH,K4MOV R3,#58 ;发送58个脉冲. AJMP SENDRETK4: CJNE A,#0D7H,K5MOV R3,#34 ;发送34个脉冲. AJMP SENDRETK5: CJNE A,#0DBH,K6MOV R3,#28 ;发送28个脉冲. AJMP SENDRETK6: CJNE A,#0E7H,K7MOV R3,#46 ;发送46个脉冲. AJMP SENDRETK7: CJNE A,#0EBH,K8MOV R3,#52 ;发送52个脉冲. AJMP SENDK8: CJNE A,#0FFH,KEXIT KEXIT:RET;======================================================= ============================DOUT:SETB DATAOUTCALL DYMS5CLR DATAOUTCALL DYMS5DJNZ R3,DOUTMOV P2,#00RETSEND:MOV R1,#04N1: SETB DATAOUTMOV R4,#255D1: NOPNOPNOPNOPDJNZ R4,D1CLR DATAOUTCALL DYMS5DJNZ R1,N1AJMP DOUTNOPNOPAJMP START;======================================================= ============================DYMS5:MOV R6,#250D2:DJNZ R6,D2RET;======================================================= ===========================DY5MS:MOV R5,#4D3: MOV R3,#248DJNZ R3,$DJNZ R5,D3RET;======================================================= ===========================END以下是接收部分程序;遥控车接收程序.;MCU:AT89C2051;OSC:12M;DATE:08.05.18;接收相应功能:前进,后退,左转,右转.;E-MAIL:chinameifen@;作者:徐增钟;======================================================= ==========IN EQU P3.2 ;RECEIVERXMA BIT 05H;======================================================= ==========ORG 0000HAJMP STARTORG 0003HAJMP INRXORG 0030H;======================================================= =========CLEAR_RAM:MOV R1,#30HMOV R3,#127NEXT: MOV @R1,#00INC R1DJNZ R3,NEXTRET;======================================================= =========START:MOV SP,#50HMOV P3,#0FFH ;MOV P2,#0FFH ;MOV P1,#00 ;SETB EASETB EX0CLR RXMALOOP:CALL NORXAJMP LOOP;======================================================= =============INRX:CLR EX0MOV R4,#4 ;同步脉冲.MOV TMOD,#01HNX1: MOV TH0,#00 ;计数初值为00.MOV TL0,#00 ;SETB TR0INC1: JNB IN,INC1 ;低电平在此等CLR TR0MOV A,TH0CJNE A,#05H,EXITHERE1: JB IN,HERE1 ;等待0.5MS高电平结束.DJNZ R4,NX1JNB IN,$CLR ARD1: INC ARD2: JB IN,RD2MOV R1,#05RD3: JB IN,RD1LCALL DYMS5DJNZ R1,RD3DEC ADEC ADEC ADEC AJZ STOPDEC ADEC ADEC ADEC ADEC ADEC AJZ K1DEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC ADEC AJZ FRDEC ADEC ADEC ADEC ADEC 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 ANOPNOPEXIT: SETB EX0RETISTOP: MOV P1,#00AJMP EXITK1:MOV P1,#00010000B ;FAJMP EXITK2:MOV P1,#00100000B ;BAJMP EXITK3:MOV P1,#01000000B ;LAJMP EXITK4:MOV P1,#10000000B ;RAJMP EXITFR: MOV P1,#10010000B ;F+RAJMP EXITFL:MOV P1,#01010000B ;F+LAJMP EXITBR:MOV P1,#10100000B ;B+RAJMP EXITBL:MOV P1,#01100000B ;B+LAJMP EXIT;======================================================= =======NORX:MOV R1,#200RX: JNB IN,NETCALL DY1MSDJNZ R1,RXMOV P1,#00NOSI:RET;======================================================= =======DYMS5:MOV R5,#135DJNZ R5,$RET;======================================================= =======DY1MS:MOV R6,#138D2:DJNZ R6,D2RET;======================================================= =======END。

基于51单片机四路循迹小车

基于51单片机四路循迹小车

基于51单片机四路循迹小车[导读]这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~一. 任务要求二. 系统原理本系统以设计题目的要求为目的,采用STC89C52单片机为控制核心,利用红外传感器检测轨道,控制电动小汽车的自动循迹,快慢速行驶。

这里的轨道是指汽车沿着白色地板上的黑线行驶。

由于黑线与白地板的反射系数不同,可以根据接收到的反射光的强度来判断“道路”。

常用的方法是红外检测。

红外检测方法,即在汽车行驶过程中,利用红外光在具有不同颜色的物体表面的不同反射特性,不断向地面发射红外光。

当红外光与白纸地板相遇时,会发生漫反射,反射光被安装在车内的接收器接收,如果遇到黑线,就会变成红色。

外部光被吸收,车内的接收器不能接收红外线。

单片机根据是否接收到反射的红外光来确定黑线的位置和汽车的行驶路线。

三. 整体方案1. 控制模块小车的核心控制部件采用STC公司生产的8位单片机STC89C52。

它是一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。

STC89C52有3个16 位定时器/计数器,2个外部中断,1个串口中断。

最小系统51单片机的具体引脚功能不细说,不了解的可自行百度。

直接上最小系统电路图(自己画的,凑合着看)。

顺便说一句,在我看来一个没有指示灯的电路是最烦的电路<(`^´)> 我的复位一定要有灯才行!三部分:①电源电路:给单片机提供5V的电源②时钟电路:外接11.0592M石英晶振。

③复位电路:确保单片机是从一个确定的初始状态开始。

焊接时注意P0口要接上拉电阻,否则不能用,一般都用排阻做上拉电阻(当然如果能自己画板子就更好了)。

去除AD网格线记一下怎么去除AD网格线,如图步骤,最后去掉Visible前面的对勾即可,别忘记最后点OK:2. 电机驱动模块我使用的是最经典的LM298N电机驱动:我太喜欢用298了。

(完整版)基于51单片机的智能小车控制源代码(毕业设计)

(完整版)基于51单片机的智能小车控制源代码(毕业设计)

'*************************************************//***************************************************//// 智能小车控制器基于51 单片机实现前进后退转弯与智能采样控制功能#include <reg52.h>#include<intrins.h>unsigned int tata[8];unsigned char flag=0,flag2=0,flag3=0,n,m;unsigned int Angle,q,length,temp1;sbit A仁P3A2;sbit A2=P3A3;sbit B1=P3A4;sbit B2=P3A5;sbit ENA=P3A6;sbit ENB=P3A7;sbit red1=P1A3;sbit red2=P1A6;void InitUART(void) {TMOD = 0x20;SCON = 0x50;TH1 = 0xFD;TL1 = TH1;PCON = 0x00; ES = 1; TR1 = 1;EA = 1;ENA = 1;ENB = 1;}void delay(void) // 直线延时延时函数{unsigned char a,b;for(b=255;b>0;b --) for(a=38;a>0;a--);}void delay1(void) // 转角延时函数{unsigned char w,y,c;for(c=1;c>0;c--) for(y=97;y>0;y--)for(w=3;w>0;w --);void delay3(void) // 避障延时函数{unsigned char a,b,c; for(c=98;c>0;c--) for(b=100;b>0;b --)for(a=40;a>0;a --);}void delay2(void) // 手动控制延时函数{unsigned char a,b,c;for(c=98;c>0;c--) for(b=15;b>0;b --) for(a=17;a>0;a --) { if(m){ break;}}}void qianjin() // 前进{unsigned char f;A1=1;A2=0;B1=1;B2=0;for(f=0;f<155;f++){A1=0;A2=0;B1=0;B2=1;} // 直线校准语句A1=1;A2=0;B1=1;B2=0;}void zuozhuan() // 左转{A1=1;A2=0;B1=0;B2=1;}void youzhuan() // 右转A1=0;A2=1;B1=1;B2=0;}void houtui(){A1=0;A2=1;B1=0;B2=1;}void tingzhi(){A1=0;A2=0;B1=0;B2=0;}void main(){unsigned char temp;InitUART();while(1){if(flag){flag=0;for(temp=2;temp<8;temp++) // 字符型转成整型函数{tata[temp]=tata[temp]%16;}// 执行转角指令Angle=10*(tata[2]*100+tata[3]*10+tata[4]);m=0;if(Angle<10) // 地面小角度摩擦校正函数{Angle++;}if(tata[1]=='L'){for(q=0;q<Angle;q++){zuozhuan();delay1();if(m){break;}}}else if(tata[1]=='R'){for(q=0;q<Angle;q++){ youzhuan(); delay1(); if(m) { break;}}} tingzhi();delay(); for(temp=2;temp<8;temp++) // 字符型转成整型函数{ tata[temp]=tata[temp]%16;}// 执行前进指令length=100*(tata[5]*100+tata[6]*10+tata[7]);// m=0;if(!m){ for(q=0;q<length;q++){ qianjin(); delay(); delay(); if(m) { break;} if(!red1){ delay1(); if(!red1) { youzhuan(); delay3();while(!red1);}if(!red2){delay1(); if(!red2){zuozhuan(); delay3();while(!red2);}}if((!red1)||(!red2)){houtui();delay3();while((!red1)||(!red2));}}}}if(flag3){m=0;flag3=0;if(tata[1] =='W'){qianjin(); }else if(tata[1]=='A'){A1=0;A2=0;B1=0;B2=1;} elseif(tata[1]=='S'){houtui();}else if(tata[1]=='D'){A1=0;A2=1;B1=0;B2=0;}else if(tata[1]=='T'){tingzhi(); }delay2();}tingzhi();}}void UARTInterrupt(void) interrupt 4 {if(RI) m=1;RI = 0;if(SBUF=='$'){flag2=1;}if(flag2){tata[n]=SBUF;n++;if(n==9&&tata[8]=='*'){n=0;flag=1;flag2=0;}if(n==3&&tata[2]=='#'){n=0;flag3=1;flag2=0;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机的四驱无线遥控小车(附电路图,源代码)
遥控小车大家都玩过,网上也有各种DIY小车的制作详解,本文介绍的这个遥控小车和其他的作品大同小异,但作为单片机设计,这次设计主要强调单片机控制,就是说,这个小车是由单片机控制的,把单片机按键发送程序、无线模块使用、电机驱动是本教程的核心内容。

一硬件组装
1 小车运动部分
所需工件:直流电机4个,L293D电机驱动模块,蓄电池一块,车身底盘
说明:车身底盘大家根据自己的购买力自行购买,蓄电池也是,至于L293D模块,淘宝上卖的比较贵,不过我用的就是成品模块,效果非常好,钱不多的同学可以自己买芯片,自制模块,原理很简单,官方资料是很详细的;或者改为继电器控制都可以,具体看自己的实际购买力。

用模块的好处是,模块可以输出5V 电源给系统供电,详细请参考淘宝网。

如果你买的是现成的底盘,那就和我的一样了,组装实在是没啥可说的,把电机固定上去就是,不行?别开玩笑了,小学生都会的!至于想自己做底盘的,我想说,要搞结实点,咱这次的小车马力是很足的,因为有电机驱动,速度比较快(不带减速齿轮的底盘一定要小心,速度非常的快),后劲也足,不小心撞墙很正常,所以不好的底盘就得小心了!
组装好后,就是电机和驱动模块的接线了,下面我就详细的说一下L293D模块的使用:
L293D是专门的电机驱动芯片,工作电压5V,驱动电压输入可达36V,输出电流正负600ma,4个控制端,4个输出端,原理如图:
其中A为输出控制端,Y为输出控制端,1A即控制1Y,以此类推。

1,2EN 3,4EN需要短接,芯片最大工作电压不得超过7V。

封装图:
Vcc1接工作电压,5V,Vcc2接电机的驱动电源,一般来说,这个电压要比5V 高,我用的是12V蓄电池,就把12v的正极接到VCC2,要记住的是,芯片、单片机、蓄电池电源是需要共地的,不要觉得你电机是12V,单片机控制部分是5V就把电源完全独立开来,正极是完全独立的没错,但是GND(负极)都必须是接在一起的。

驱动芯片与电机的接法:
例:左边前后轮:
1Y接电机红线,2Y接电机黑线,左边前轮电机
3Y接电机红线,4Y接电机黑线,左边后轮电机
前进指令:1A=1(输出12V),2A=0(输出0V),3A=1(输出12V),4A=0(输出0V)
后退指令:1A=0(输出12V),2A=1(输出0V),3A=0(输出12V),4A=1(输出0V)
右边的和左边的接法是完全一样的
注意:前进和后退并不是绝对的,因为是直流电机,不刻意的强调正负极,就看你电机是怎么接线的,结果完全可以与我的相反。

不过一定要保证电机接线的统一性,不能随意,不能说前轮接的是顺时针线序,后轮是逆时针线序,如果买的电机连接线不带颜色,一定要自己测好了那种接法是顺时针的,哪种是逆时针,否则前轮前进后轮后退,很摧残电机的,或者左右边的2对电机转动方向不统一,导致编程麻烦。

芯片默认输出0V ,所以在没有程序的时候,大家不需要担心电机会转动。

一个芯片只能控制2个电机,右边的再接个芯片就可以了,网上卖的模块都是2个驱动芯片的,刚刚好够4个电机。

买模块的好处就是拿来可以直接接线,而且
模块上有标号,不必担心接错,希望初学者还是买模块,贵是贵了,但是速度有保证的!驱动模块如图:
接好之后,我就说下小车的转动方式:前进后退就是4个电机同时的正转、反转;左转弯和有转弯有2种方式:A一边转动一边不转,B一边正向转动一边反向转动,这两种各有个的好处,各位可以根据自己的实际情况来确定转弯的方式,不同车的底盘效果肯定是不一样的,转弯的方式是程序控制的,本程序是B种方式。

我的小车图:
这种电机是减速的,所以不会很快,如果是直接电机带动的轮子,再用12V 电源的话,那速度就非常快了,模块的输出直接连接电机电源线,输出根据标号或根据程序接入到单片机上
单片机的接线:
如图:
这是我的最小系统板,全部引出IO,带板载USB下载功能,P0口输出接了8路流水灯(有选通开关),这样设计板子是为了P0口做输出时专门看输出状态的。

板子是我们工作室自己设计的,我们所有的作品调试都是建立在它的基础上,网上也有的卖这种USB下载板,40元左右吧!
我这个人比较懒,用的是电机驱动模块,L293D的输入是有标号的,1——8直接按照顺序接到P1.0——P1.7就可以了,说到这里,我不得不说一下,单片机的接线是非常自由的,因为是程序控制,无法就是改改端口而已,我只根据我的程序来说明接线,有基础的可以自己设计!
驱动芯片和电机连接好后,就是要把线固定好,留出要与单片机连接的8跟控制线。

也要注意给无线模块留一个小空间。

无线模块解说:
我们工作室一直使用的是433无线串口模块,具体型号和价格我会附在清单表里,现在我说下它的性能、这种无线模块最大的好处就是有较强的抗干扰性,2个模块直接可以设置ID,只有在一个ID号下的个模块才可以通信,而且可以实现一对多通信;而且这种模块是无需编程的,直接把数据发送到串口即可,模块会自动调制解调,就目前使用的情况而言,还没发现它有调制解调错误的时候,
可以说,在数据传输上,这个模块误码率还是极低的,不过需要注意的是,模块2次接收(发送)之间的间隔要大于200ms,这是非常重要的一个参数,如果想做高速数据传输的朋友请慎重选用!(本段文字来源于淘宝睿迪无线模块手册,本人也已经上传,也请读者尊重该店的著作权)。

模块的接线还是蛮简单的,电源2根线,数据线2根:TX(接单片机RX)、RX(接单片机TX),关于无线模块的设置方案,请参考淘宝睿迪无线
XL02-232AP1型号的资料手册。

模块在通电的一瞬间红灯绿灯同时会闪一下,然后熄灭,此时进入待机状态,模块发送数据时,红灯亮;接收数据时,绿灯亮。

组装好之后的图:
我用是12v蓄电池,接到驱动模块后,模块的5V输出又可以直接给无线模块和最小系统部分供电。

虽然看起来比较笨重,但是12V的电源,与一般的小车在速度和耐力上,都有了本质的提高!
遥控部分:
下面是原理图和hex代码,以后程序我会直接挂在网页上,仿真提供16进制文件
原理仿真.zip
原件清单.xls
源代码:
;接收程序
ORG 0 ;程序起始地址
SJMP STAR ;跳转到主程序
ORG 30H ;串口中断地址
sjmp loop ;跳转到中断服务程序
STAR:
MOV SP,#5FH ;设置堆栈
MOV SCON,#50H ;串行数据格式(详情请参考51手册)
MOV TMOD,#20H ;定时器工作方式(请参考51手册)
MOV PCON,#0 ;波特率不倍速(请参考51手册)
MOV TH1,#0fdH ;设置波特率在9600
MOV TL1,#0fdH ;设置波特率在9600
SETB EA ;开起中断
clr ET1 ;关闭定时1中断
SETB ES ;开起串口中断
SETB TR1 ;启动定时器1
mov a,#0 ;
mov p1,a ;设置初始值,即开机p1输出00h小车不动作main:
mov p1,a ;把a值给p1端口
sjmp main ;无限循环main程序
LOOP:
jnb ri,$ ;判断接收位是否接收完
clr ri ;接收完后清空接收位
mov a,sbuf ;发送的数据给a
reti ;返回后,a的值就会给p1
END
;发送程序
ORG 0 ;程序起始地址
SJMP START ;跳转到主程序
ORG 30H ;串口中断地址
START:
MOV SP,#5FH ;设置堆栈
MOV TMOD,#20H ;定时器工作方式(请参考51手册)MOV PCON,#0 ;波特率不倍速(请参考51手册)
MOV SCON,#50H ;串行数据格式(详情请参考51手册)MOV TH1,#0fdH ;设置波特率在9600
MOV TL1,#0fdH
setb EA ;开起中断
clr ET1 ;关闭定时1中断
setb ES ;开起串口中断
SETB TR1 ;启动定时器1
main:
lcall kcs ;调用按键扫描程序
jnz key ;有键按下则跳转到key程序段
sjmp main ;无限循环main程序
kcs:
mov p1,#0ffh ;p1给初值
mov a,p1 ;p1的数值给a
cpl a ;取反a
anl a,#0ffh ;与运算
ret
key:
lcall delay ;软件延时程序,按键去抖jb acc.0,send1
jb acc.1,send2
jb acc.2,send3
jb acc.3,send4
jb acc.4,send5
ret
DELAY:
MOV R5,#20
D1:MOV R6,#10
D2:MOV R7,#100
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
ret
send1:
mov r1,#10101010b ;前进指令sjmp send
send2:
mov r1,#01010101b ;后退指令sjmp send
send3:
mov r1,#01011010b ;左转指令sjmp send
send4:
mov r1,#10100101b ;右转指令sjmp send
send5:
mov r1,#00h ;停止指令
sjmp send
send:
MOV SBUF,r1 ;指令给sbuf
JNB TI,$ ;判断是否发送完
reti ;中断返回
END。

相关文档
最新文档