基于单片机智能遥控小车的设计.doc

上传人:可****阿 文档编号:72350123 上传时间:2023-02-10 格式:DOC 页数:25 大小:461.54KB
返回 下载 相关 举报
基于单片机智能遥控小车的设计.doc_第1页
第1页 / 共25页
基于单片机智能遥控小车的设计.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《基于单片机智能遥控小车的设计.doc》由会员分享,可在线阅读,更多相关《基于单片机智能遥控小车的设计.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于单片机智能遥控小车的设计编号 单片机课程设计( 级) 题 目:基于单片机智能红外遥控小车的设计学 院: 物理与机电工程学院 专 业: 电子信息科学与技术 作者姓名: 指导教师: 职称: 副教授 完成日期: 20 年 1 月 6 日二一七 年 一月基于单片机智能红外遥控小车的设计摘要本次设计的简易智能小车,采用STC89C52RC单片机作为小车的检测和控制核心;采用红外线遥控远程人为控制小车行驶状态;采用SM4105W80U3显示小车处于自动行驶还是遥控行驶;可以实现小车的前进、后退、左转、右转、停止运动。关键词:STC89C52RC;红外遥控1 前言本设计能实现对小车的运动状态进行实时控制

2、,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用MCS51系列中的STC89C52RC单片机.以STC89C52RC为控制核心,使用红外遥控对小车的前进、后退、左转、右转、停止运动进行实时的控制.本次设计主要内容是基于STC89C52RC设计一部智能小车,小车能够实现自动前进,和红外遥控的智能小车控制系统,包括了对驱动电路,红外通讯等的探索和研究。2 方案设计与论证2.1 遥控方案的选择由于属于小范围内遥控,小车在小范围内行驶,为了减少设计成本,增加便利性,所以采用常用的家用电视红外遥控器作为红外遥控发射部分,只需在小车上加装红外接收装置即可。定义遥控器的上一曲键为左转键,暂停键为

3、右转键,下一曲键为停止键,CH健为前进键,音量增大键为后退键,实现小车行驶的基本控制。红外遥控系统的组成如图2.1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。图2。1 红外流程图2。2 遥控对小车的控制切换到红外遥控功能,对小车的前进、后退、左转、右转、停止运动实现实时控制,具体如下所述:(1)前进是左右两个电机同时顺时针旋转,实现小车的前进;(2)后退是左右两个电机同时逆时针旋转,实现小车的后退;(3)停止是左右两个电机同时停止旋转,实现小车的停止;(4)右转是右电机逆时针旋转和左电机顺时针旋转同时工作,实现小车的右转;(5)左转是左

4、电机逆时针旋转和右电机顺时针旋转同时工作,实现小车的左转;实现不同的运动方式,是通过PWM信号对L293D芯片中的H桥进行控制.电桥一端接电源,另一端接了一个三极管。三极管导通时,电桥通过三极管接地,电机电枢中有电流通过;三极管截止时,电桥浮空,电机电枢中没有电流通过。系统通过电桥的输出端为转向电机供电。通过对继电器开闭的控制即可控制电机的开断和转速方向进而达到控制玩具车前行与倒车的目的。2。3 系统原理图 系统原理图如图2.2所示:LED显示模块接P1.1-1。7口;红外遥控接P3。2口;看门狗定时器接2。7口:电机控制接P0.0-0。3口;蜂鸣器接P0。7口;功能切换键接P3。4口。起停运

5、动L293D驱动STC89C52RCLED显示红外遥控复位电路光电隔离图2。2 系统框图3硬件设计3。1 89C52单片机硬件结构89C52单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上.如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器.它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。3.2最小应用系统设计3。2。1 最小系统用89C52单片机进行构成最小应用系统时,只要将单片机接上

6、时钟电路和复位电路即可,如图3.1所示.由于集成度的限制,最小系统只能用作一些最小的控制单元。但也拥有一些有点:(1)有可供用户使用的大量I/O口线.(2)内部存储器容量有限。(3)应用系统开发具有特殊性.图3.1 最小系统电路图3.2。2 烧写接口电路RST置高电平,然后向单片机串行发送编程命令.P1.7(SCK)输入移位脉冲,P1.6(MISO)串行输出,P1。5(MOSI)串行输入。被烧写的单片机一定是最小系统(单片机已经接好电源,晶振,可以运行).如图3。2烧写接口电路.图3。2 烧录程序电路图3。2。3PWM脉宽调速本设计调速采用PWM控制,选用了常用的双极式H型变换器,它是由4个三

7、极电力晶体管和四个续流二极管组成的桥式电路。图3.3为双极式H型可逆PWM变换器的电路原理图。4个电力晶体管的基极驱动电压分为两组。VT1和VT4同时导通和关断,其驱动电路中Ub1=Ub4;VT2和VT3同时动作,其驱动电压Ub2=Ub3=Ub1.双极式PWM变换器的优点如下:(1)电流一定连续;(2)可使电动机在四象限中运行;(3)电机停止时有微振电流,能消除静摩擦死区;(4)低速时,每个晶体管的驱动脉冲仍较宽,有利于保证晶体管可靠导通;(5)低速平稳性好,调速范围可达20000左右。图3.3 PWM驱动电路图3。2.4 电源的设计本设计的电源为车载电源.为保证电源工作可靠,单片机系统与动力

8、伺服系统的电源采用了大功率、大容量的蓄电池;而传感器的工作电源则采用了小巧轻便的干电池。3。3 红外线遥控电路方便起见,本设计直接采用电视遥控器作为红外遥控的发射器,只需在小车上加装红外接收装置即可红外接收器的电路图如图3.4所示:图3.4 红外线遥控电路3.4 显示电路设计本设计中用一片1位七段数码管SM4105W80U3作显示器,显示数字.七段数码管SM4105W80U3中的abcdefgdp分别连接在单片机的P2。1P2.7,分别控制各段码,与单片机的连接如图3.5所示.图3。5 显示电路图4软件设计4.1设计流程一个智能化的系统,软件设计必不可少,软件设计是更具系统需求,通过编程语言控

9、制单片机的行为,实现智能控制。模块化的程序设计有以下有点:(1) 单个模块比起一个完整的程序易编写及调试;(2)模块可以共存,一个模块可以被多个任务在不同条件下调用;(3) 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便.本系统软件采用模块化结构,由主程序中断子程序显示子程序算法子程序、遥控子程序构成。本次设计采用的即是模块化的软件编程,各程序功能清晰、明确。软件流程图如图4.1所示:NY结束自动行驶遥控行驶遥控功能选择开始 开始图4。1 流程图4。2 软件抗干扰技术提高小车智能控制的可靠性,仅靠硬件抗干扰是不够的,需要进一步借助于软件抗干扰技术来克服某些干扰。在单片机控制系统中,

10、如能正确的采用软件抗干扰技术,与硬件干扰措施构成双道抗干扰防线,无疑为了将大大提高控制系统的可靠性。经常采用的软件抗干扰技术是数字滤波技术、指令冗余技术、软件陷阱技术等。4.3程序设计软件设计采用模块化设计,思路清晰,也便于查找问题。红外遥控键位对应子程序流程图如图4.2所示开始 开始采集红外遥控数据NY延时等待判地址码是否相同进行键位对应结束图4.2 红外遥控流程图5 不足与展望本次设计的总体效果不是很好,控制灵敏性较差,寻迹和避障功能没有很好的实现。因此要设计具有优良的调速特性,调速平滑,方便使用,控制精确,转动灵敏,可实现频繁的无极快速起动、制动和转动,需要满足生产过程自动化系统各种不同

11、的特殊要求。为此,设计制造高性能、高可靠性的智能小车控制系统有着十分重要的现实意义。6 设计心得经过这次课程设计我感受颇多,在正式进行设计之前,我参考了一些网上的资料,通过对这些设计方案来开拓自己的思路,最后终于有了自己的思路。此次课程设计不仅是对前面所学单片机技术和运动控制理论的一种检验,更是对所学知识大融合,站在新的高度看待新的问题,而且也是对自己运用所学知识的能力的一种提高。通过这次课程设计使我明白了自己原来知识还比较欠缺,自己要学习的东西还太多.以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程.参考文献1 张毅刚,喜元。原理与

12、应用设计M. 北京:北京市海淀区四季青印刷厂,2010。2 张毅刚。新编MCS51单片机运用设计M. 哈尔滨:哈尔滨工业大学出版社,2003.3 张义和,敏男,宏昌,长春.例说51单片机(c语言版)M. 北京:人民邮电出版社,2009。4 马忠梅 籍顺心 张 凯 马 岩.单片机的C语言应用程序设计M。 北京:北京航空航天大学,2010.5 Samsung Electronics。 S3C44BOX Risc microcontroller ARM instruction sheet 。2002.6 郭天祥。51单片机C语言教程M.子工业出版社,2005年7月.7 丁元杰.单片微机原理及应用M,

13、械工业出版社,2005年7月。8 楼然苗,光.单片机课程设计指导M.京: 北京航空航天大学出版社,2007。附 录1 实物图232 源程序清单#include REGX52。H include intrins.hsbit LeftLed=P20; sbit RightLed=P07; sbit FontLled=P17;sbit LeftIR=P35; sbit RightIR=P36; sbit FontIR=P37; sbit M1A=P00; sbit M1B=P01; sbit M2A=P02; sbit M2B=P03; sbit B1=P04; sbit SB1=P06; sbit

14、 IRIN=P33; unsigned char code LedShowData=0x03,0x9F,0x25,0x0D,0x99, 0x49,0x41,0x1F,0x01,0x19;unsigned char code RecvData=0x19,0x46,0x15,0x43,0x44,0x40,0x0D,0x0E,0x00,0x0F;unsigned char IRCOM7;static unsigned int LedFlash; bit EnableLight=0; define ShowPort P2 unsigned char temp = 1;void tingzhi() M1

15、A=0; M1B=0; M2A=0; M2B=0;void qianjin() M1A=1; M1B=0; M2A=1; M2B=0;void houtui() M1A=0; M1B=1; M2A=0; M2B=1;void zuozhuan() M1A=0; M1B=1; M2A=1; M2B=0;void youzhuan() M1A=1; M1B=0; M2A=0; M2B=1;void Delay1ms(unsigned int i) unsigned char j,k; do j = 10; do k = 50; do _nop_(); while(-k); while(j); wh

16、ile(-i); void delay_nus(unsigned int i) i=i/10; while(-i); void delay_nms(unsigned int n) n=n+1; while(n) delay_nus(900); void delayms(unsigned char x) unsigned char i; while(x-) for (i = 0; i13; i+) void Delay() unsigned int DelayTime=30000; while(DelayTime); return; void ControlCar(unsigned char C

17、onType) tingzhi(); switch(ConType) case 1: /前进 LeftLed = 0 ;qianjin(); break; case 2: /后退 LeftLed = 1 ; houtui(); break; case 3: /左转 zuozhuan(); break; case 4: /右转 youzhuan(); break; case 8: /停止 tingzhi();break; void ControlCar_yaokong(unsigned char ConType) tingzhi(); switch(ConType) case 1: /前进 ti

18、ngzhi(); Delay1ms(150);LeftLed = 0 ;qianjin(); break; case 2: /后退 tingzhi(); Delay1ms(150); LeftLed = 1 ; houtui(); break; case 3: /左转 tingzhi(); Delay1ms(150); zuozhuan(); break; case 4: /右转 tingzhi(); Delay1ms(150); youzhuan(); break; case 8: /停止 tingzhi();break; void main() bit RunFlag=0; LedFlas

19、h=3000; EX1=1; IT1=1; EA=1; ControlCar(8); while(1) if(P3_2 = 0) delay_nms(10); if(P3_2 = 0) temp+; while(!P3_2); if(temp 3) temp = 1; switch(temp) case 1:ShowPort= LedShowData1;Robot_Traction();EX1 = 0;break;case 2: ShowPort= LedShowData2;Robot_Avoidance();EX1 = 0;break;case 3: ShowPort = LedShowDa

20、ta3;EX1 = 1;break; void IR_IN() interrupt 2 using 0 unsigned char j,k,N=0; EX1 = 0; delayms(15); if (IRIN=1) EX1 =1; return; while (!IRIN) delayms(1); for (j=0;j4;j+) for (k=0;k=30) EX1=1; return; IRCOMj=IRCOMj 1; if (N=8) IRCOMj = IRCOMj | 0x80; N=0; if (IRCOM2!=IRCOM3) EX1=1; return; for(j=0;j10;j+) if(IRCOM2=RecvDataj) ControlCar_yaokong(j); EX1 = 1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁