




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于STC89C51单片机智能小车控制项目名称:基于单片机STC89C51智能小车控制小组成员:xx班级:xx指导教师:xx开发结束时间:2011年7月10日 星期日 目录1.1 项目概述31.2 项目要求31.3 系统设计31.3.1框图设计31.3.2知识点41.4 硬件设计41.4.1电路原理图41.4.2 原件清单61.4.3 L293D驱动单片机的原理简介71.4.4 STC89C51单片机管脚图及其功能71.5 软件设计91.5.1 程序流程图91.5.2 L293D驱动器管脚赋值表101.5.3 程序清单101.6 软件仿真及硬件调试211.6.2 硬件调试211.6.1 软件仿真221.7 总结231.8 文献参考231.1 项目概述随着单片机技术的不断发展和完善已经大量的运用在工业的控制、数据的采集、智能化仪表、机电一体化、家用电器等领域,极大地提高了这些领域的技术水平和自动化控制水平。为此我们基于STC89C51这款单片机进行智能小车开发。1.2 项目要求基于STC89C51单片机智能小车的设计要求如下:实现智能小车上电自动寻迹。实现智能小车向前行驶时避障及其避悬。实现智能小车红外遥控控制小车左右转弯前后行驶。1.3 系统设计智能小车的控制主要是控制小车车轮的转向,以STC89C51单片机为核心芯片,通过控制小车车轮的电路,控制其一个轮和两个轮的正转和反转。而红外遥控控制是通过红外发送端和接收端来驱动电机的控制。根据设计的要求,制定总体设计思想如下:(1)小车的正转:两个电机按同一个方向转动。(2)小车的反转:两个电机按同一个方向反向转动。(3)小车的左转和右转:一个电机快速转动而另一个电机缓慢的转动。1.3.1框图设计基于STC89C51单片机智能小车的控制系统由电源电路、单片机主控电路、复位电路、晶振电路、车轮转轴驱动电路、按键电路等组成,框图组成如图1-1所示。电源电路晶振电路复位电路电机驱动电路数码管显示电路红外遥控驱动电路避障电路寻线电路锋鸣器电路单片机STC89C51图1-1 基于STC89C51单片机智能小车的控制系统框图1.3.2知识点本项目需要通过学习和查阅资料,了解和掌握一下知识。+5v电源原理及设计。单片机复位电路工作原理及设计。单片机晶振电路工作原理及设计。按键电路的设计。数码管的特性及其使用。STC89C51单片机的引脚图及其功能使用。L293D驱动器管脚及其功能使用。红外接收装置的使用。单片机C语言的及其设计。1.4硬件设计1.4.1电路原理图 (1)数码管显示电路原理图如图1-2所示。图1-2 数码管显示电路原理图(2)智能小车车轮驱动电路原理图如图1-3所示。L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。图1-3 智能小车车轮驱动电路原理图(3)LED指示灯原理图如图1-4所示。图1-4 LED指示灯原理图(4)红外传感器寻线的原理图如图1-5所示。图1-5 红外传感器寻线的原理图(5)红外传感避障原理图如图1-6所示。 图1-6 红外避障原理图 综上所述,可以设计出STC89C51单片机控制智能小车的最小系统原理图如图1-7所示。图1-7 STC89C51单片机控制智能小车的最小系统原理图1.4.2原件清单 基于STC89C51单片机智能小车控制系统的原件清单如表1-1所示。表1-1 基于STC89C51单片机智能小车控制系统的原件清单原件名称型号数量用途原件名称型号数量用途单片机电容电容电解电容电源VCC直流电机三极管集成块STC89C51100uF30pF10uF/10V+5v/1AL293D1个4个2个1个1个2个若干1个控制核心晶振电路复位电路提供电源车轮驱动脉宽调整集成块晶振电阻发光二极管数码管蜂鸣器电位器电阻L293D11.0592MHZ1K0.7V共阴极3001个1个1个1个1个1个若干若干直流电机驱动晶振电路复位电路指示灯显示数字数码管限流1.4.3 L293D驱动单片机的原理简介如图2-6 L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转1.4.4 STC89C51单片机管脚图及其功能(1)STC89C51管脚图如图1-8所示。图1-8 STC89C51管脚图(2)STC89C51的管脚图功能如图2-7为STC89C51的引脚功能图,其各个引脚功能概述如下:VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。1.5 软件设计1.5.1 程序流程图智能小车控制流程图如图1-9所示。开始初始化K0成立吗?NK1成立吗?NK2成立吗?NK3成立吗?YYYY小车左转小车右转小车前进小车后退NNK4成立吗?Y小车停止图1-9 智能小车控制流程图1.5.2 L293D驱动器管脚赋值表L293D驱动器小车电机转动的管脚图赋值表如表1-2所示。表1-2 L293D驱动器小车电机转动的管脚图赋值表 状态引脚停止(K4)左转(K0)右转(K1)前进(K2)后退(K3)Out1(P2.0)00110Out2(P2.1)00001Out3(P2.2)01010Out4(P2.3)000011.5.3 程序清单相关软件程序清单如下:(1)智能小车自动寻线软件清单如下:#include #defineuchar unsigned char #define uint unsigned intsbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit K5=P14;sbit KIN1=P15;sbit KIN2=P16;sbit out1 = P20 ;sbit out2 = P21 ;sbit out3 = P22 ;sbit out4 = P23 ; void delay(uint t) /延时程序1 uchar j; while(t-)for(j=5;j0;j-); /左转void comeleft()uchar i; out1=0; out2=0; out3=1; out4=0; for(i=0;i10;i+)out1=!out1;delay(1);/左微转void sleft()uchar i; out1=0; out2=0; out3=1; out4=0; for(i=0;i5;i+)out1=!out1;delay(1);/右微转void sright() uchar i;out1=1; out2=0; out3=0; out4=0; for(i=0;i5;i+)out3=!out3; delay(1);/右转void comeright () uchar i;out1=1; out2=0; out3=0; out4=0; for(i=0;i10;i+)out3=!out3; delay(10);/前进加速;void comeon() out2=0;out4=0;out1=1;out3=1; /避障原路返回void shunback() if(!KIN1)|(!KIN2) out1=0; out2=1; out3=1; out4=0;delay(4000);comeon();delay(4000); out1=1; out2=0; out3=0; out4=0;delay(1000); comeon();delay(2000);while(K1&K2&K3&K4&K5) comeright (); ;else;/循迹void scanline()P1=0XFF;if(K5=0)comeleft();else if(!K1) comeright ();else if(!K4) sleft();comeon();else if(!K2) sright();comeon();else if(!K3) comeon();comeon();else P2=P2;void main(void) P1=0XFF;P2=0XFF; while(1) shunback(); scanline(); (2)智能小车避障(悬崖)软件程序清单如下:#include #defineuchar unsigned char #define uint unsigned intsbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit K5=P14;sbit KIN1=P15;sbit KIN2=P16;sbit out1 = P20 ;sbit out2 = P21 ;sbit out3 = P22 ;sbit out4 = P23 ; void delay(uint t) /延时程序1 uchar j; while(t-)for(j=5;j0;j-); /*void stop() out1=0; out2=0; out3=0; out4=0; delay(10);/左转void comeleft()uchar i; out1=0; out2=0; out3=1; out4=0; for(i=0;i10;i+)out1=!out1;delay(1);/左微转void sleft()uchar i; out1=0; out2=0; out3=1; out4=0; for(i=0;i5;i+)out1=!out1;delay(1);/右微转void sright() uchar i;out1=1; out2=0; out3=0; out4=0; for(i=0;i5;i+)out3=!out3; delay(1);/右转void comeright () uchar i;out1=1; out2=0; out3=0; out4=0; for(i=0;i10;i+out3=!out3; delay(1); /前进加速;void comeon() out2=0;out4=0;out1=1;out3=1;/后退void comeback() out1=0; out3=0; out2=1;out4=1; delay(10000); /循迹void bxy()P1=0XFF;if(!(K5&K4) comeback();out2=0;out4=1;out1=1;out3=0;delay(5000);comeon();else if(!(K1&2) comeback(); out2=1;out4=0;out1=0;out3=1;delay(5000);comeon();else if(!K3) out2=0;out4=1;out1=1;out3=0;delay(10000);comeon();else comeon();void main(void) P1=0XFF;P2=0XFF; while(1) bxy(); (3)遥控控制小车程序清单如下:#include #defineuchar unsigned char #define uint unsigned intsbit SET1=P24;sbit SET2 =P25;sbit SET3 =P26;sbit out1 = P20 ;sbit out2 = P21 ;sbit out3 = P22 ;sbit out4 = P23 ;unsigned long xdata rec_code;unsigned long xdata time_us;unsigned char xdata rec_cnt;unsigned char xdata kbuf;uchar sdata;bit rec_b;bit key_save;bit keyp;uchar code seg7code=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void delay(uchar t) /延时程序1 uchar j; while(t-)for(j=50;j0;j-); void Init()TMOD = 0x09;/T/C1采用16位定时器/计数器 ET1 = 1;/定时器1开中断 TH0 = 0x00; TL0 = 0x00; ET0 = 0; TR0= 1;/定时计数器启动计数 EX0 = 1;/外部中断0关中断EX1 = 0;/外中断1关中断EA = 1;/CPU开中断void stop() out1=0; out2=0; out3=0; out4=0; delay(10);/左转void comeleft() out1=0; out2=1; out3=1; out4=0; delay(200);/右转void comeright () out1=1; out2=0; out3=0; out4=1; delay(200);/前进加速;void comeon() out2=0;out4=0;out1=1;out3=1/后退void comeback() out1=0; out3=0; out2=1;out4=1; delay(200);/避开障碍物void shunout() if(sdata=157) comeon();rec_code=0;sdata=0;else if (sdata=87)comeback();rec_code=0;sdata=0;else if (sdata=253)stop();rec_code=0;sdata=0; else if (sdata=61)comeright();rec_code=0;sdata=0;else if (sdata=221)comeleft();rec_code=0;sdata=0;else;void inter_x0() interrupt 0 TR0 = 0; time_us = (unsigned long)(TH03800&time_us300&time_us700) rec_cnt +; rec_code = rec_code1300&time_us1750) rec_cnt +; rec_code = rec_code1800&time_us1) rec_cnt = 0; key_save = 1; if(rec_cnt=32) rec_b = 1; key_save = 0; rec_cnt = 0; void GetKeyValue() if(rec_b) unsigned char da; rec_b = 0; kbuf = (rec_code&0x0000ff00)8; da = rec_code&0x000000ff; if(kbuf=da) sdata=da; void main()P1=0XFF;P2=0XFF;P3=0XFF;P0=0XFF;Init(); while(1)GetKeyValue(); shunout();(4)数码管显示软件程序如下:#include #defineuchar unsigned char #define uint unsigned intsbit SET1=P24;sbit SET2 =P25;sbit SET3 =P26;sbit SET4 =P27;uchar code seg7code=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void delay(uchar t) /延时程序1 uchar j; while(t-)for(j=50;j0;j-); void display ()P2=P2|0XF0;P0=seg7code1;SET1=0;delay(10);P2=P2|0XF0;P0=seg7code2;SET2=0;delay(10);P2=P2|0XF0;P0=seg7code3;SET3=0;delay(10);P2=P2|0XF0;P0=seg7code4;SET4=0;delay(10);P2=P2|0XF0;void main()P1=0XFF;P2=0XFF;P3=0XFF;P0=0XFF; while(1)display();1.6 软件仿真及硬件调试1.6.1软件仿真STC89C51单片机程序下载软件STC-ISP.exe,图1-10是下载界面。下载方式步骤如下:(1)首先像2-5连接串口,安装硬件驱动。右击“我的电脑”,点击“属性”,选择“硬件/设备管理器”单击“端口”查看串口是否被连接。连接成功则显示com端口号。 (2)首先点击STC-ISP.exe快捷方式进入图2-4界面。点击“Open File”按钮选择要下载的程序确定,在选择下载点串口COM,下一步点击“Download/下载”,按“Download/下载”之前小车处于断电状态,按下瞬间必须给小车供电。 图1-10 STC89C51单片机程序下载界面1.6.2 硬件调试(1)当STC89C51单片机中下载的是智能小车(如图1-11所示)上电自动寻线小车软件控制程序时(此小车的传感器上电自动识别黑色),在地板上用黑石粘胶布布置出小车寻迹轨道。对小车上电放在布置黑色轨迹上,小车将自动寻迹,以黑色为轨迹在上面运行。寻迹时下面五个红外探头起到寻迹作用,小车上电放在轨迹上是我哥红外探头处于OFF状态(也就是指示灯处于熄灭状态),当探头接受到黑色轨迹后红外探头将处于ON(也就是指示灯发亮),这是小车将自动寻迹。结合寻迹程序软件我们可以知道,当小车最右端的探头指示灯发亮时说明小车将要向右越过寻迹,这是小车将左转弯纠正小车回到寻迹上;当右端第二个红外探头指示灯发亮时说明小车开始右偏离寻迹,此时对小车有微调作用是小车稍微向左运动回到寻迹上;当最中间那个探头指示灯发亮时说明小车正好运行在轨迹上,小车将直行;同理当小车红外探头最左端指示灯发亮时说明小车将要向左越过寻迹,此时小车将向右转弯纠正小车回到寻迹上;当左边第二个红外探头指示灯发亮时说明小车还处于左偏离寻迹状况,此时小车将稍微向右转运动回到寻迹上。图1-11 智能小车组装图(2)当单片机STC89c51下载的是红外遥控控制智能小车控制程序时,我们将可以用如下图2-N红外遥控控制小车的运行左转、右转、前进、后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025自考专业(会计)综合提升测试卷(轻巧夺冠)附答案详解
- 自考专业(工商企业管理)高频难、易错点题往年题考附答案详解
- 应急处置安全培训课件
- 车辆转让合同(标准版)
- 船员劳动派遣合同(标准版)
- 2024资料员之资料员基础知识练习题及完整答案详解【全优】
- 2025安全员考试全真模拟模拟题附参考答案详解【巩固】
- 2024年高职单招自我提分评估及参考答案详解(精练)
- 2025年农村信用社招聘考试考前冲刺练习题及答案详解(考点梳理)
- 中小学生心理健康案例集
- 2023年重庆市大渡口区春晖路街道阳光社区工作人员考试模拟试题及答案
- 医疗机构门诊患者流行病学调查表
- GB/T 18253-2000钢及钢产品检验文件的类型
- 虚拟仪器-第4章-LabVIEW的程序结构课件
- 2022年太原市第二热力有限责任公司招聘笔试试题及答案解析
- 《中职地理》配套教学课件
- 水运工程质量检验标准表格
- DB51∕T 2571-2019 林下黄精种植技术规程
- 世园会周边环境综合整治工作汇报
- 金相检验4-结构钢的金相检验
- 不同截面钢牛腿设计计算(excel)
评论
0/150
提交评论