循迹小车课程设计_第1页
循迹小车课程设计_第2页
循迹小车课程设计_第3页
循迹小车课程设计_第4页
循迹小车课程设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE单片机原理及应用课程设计专业:自动化设计题目:寻迹小车设计班级:学生姓名:学号:指导教师:分院院长:教研室主任:电气工程学院一、课程设计任务书1.课程设计项目寻迹小车设计2.设计内容设计题目总体设计方案硬件电路设计C语言程序编制与调试电路系统的综合调试撰写课程设计论文完成课程设计论文答辩3.设计要求设计一台自动寻电动小车。电动车能自动寻迹,按设定好的轨迹前进。寻迹又小车前端左右两个光电开关完成,通过调整RW2和RW4可以改变观点开关的灵敏度。设计结束学生应撰写课程设计报告一份,完成课程设计答辩;课程设计报告内容包括:课程设计题目;设计计划与方案论证;设计方案实现(含程序);课程设计心得。6)课程设计报告的撰写格式应符合单片机实用技术课程设计报告格式要求。4、参考资料[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:北京航空航天大学出版社,2001[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1999[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:高等教育出版社.19925.设计进度(2011时间设计内容第1-2天查阅资料,方案比较、设计与论证,理论分析与计算第3-5天硬件电路调试第6-8天系统调试第9-10天书写报告、答辩6.设计地点新实验楼323微机实验室二、评语及成绩评分项目评分标准量化分数1.理论分析计算能力很强较强一般较差不行202.仿真设计能力很强较强一般较差不行203.硬件设计能力很强较强一般较差不行204.设计报告规范程度规范整洁正确杂乱有错误205.设计态度积极主动比较认真应付不认真106.出勤情况全勤缺勤次数10附加评语量化总分成绩:指导教师:单片机原理及应用课程设计班级:自动化0942姓名:马爽学号:37指导教师:方健撰写日期:2012.6.13目录目录第一章设计任务与方案论证 11.1. 设计任务 11.2. 方案论证 11.3. 系统总体方案 2第二章硬件模块设计 32.1STC10F04XE单片机系列单片机简介 32.2电机模块 42.3黑线检测模块 52.31LM339主要特点 62.32LM339引脚图及功能 72.4数码显示模块 82.5电机驱动模块 82.6电动机调速 92.7信号采集模块 92.8系统流程图 10第三章程序下载与调试 123.1程序下载 123.2程序调试 123.21调试过程出现的问题 12单片机课程设计总结 16参考文献 17附录 18第一章设计任务与方案论证PAGE9设计任务与方案论证设计任务设计一台自动寻迹电动小车,要求:电动车能自动寻迹,按设定好的轨迹从区域1前进至区域3,并在黑线末端停车,小车前进线路如图所示。在区域1和区域3内,小车缓慢前进,在区域2内小车全速前进。寻迹用小车前端左右两个光电开关完成,通过调整RW2和RW4可以改变光电开关的灵敏度。图1-1寻迹小车路线方案论证单片机是整个系统的处理中心,也是整个设计的核心。选取我们也综合分析了几种方案。方案一:采用MCSE-51系列单片机。AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。传统的51单片机具有价格低廉,使用简单等特点,但存在预算速度低,功能单一,RAM,ROM空间小等缺点。方案二:STC10F04XE单片机。STC10F04XE是与MCS-51指令完全兼容。STC10F04XE采用流水线结构,别适合用于对实时性要求极高的控制系统。同时STC10F04XE内置看门狗电路提高了系统的稳定性。多个I/O口和丰富的外设资源使得STC10F04XE单片机使用更加方便使用。为了能够实现系统的快速处理传感器数据要求。本设计采用方案二STC10F04XE作为系统的处理芯片。系统总体方案基于题目要求实现的各项功能及难易程度,车辆性能良好,易于控制,运行稳定。在处理器方面,寻迹小车采用STC10F04XE单片机作为核心的控制系统,结合STC10F04XE单片机实现小车沿黑线正常前进、后退、停止等功能。模块电路主要包括:检测电路、电机驱动电路、键盘和数码管显示电路等。第二章硬件模块设计硬件模块设计STC10F04XE单片机系列单片机简介主要性能:高速:1个时钟/机器周期,增强型8051内核,速度比普通8051快8~12倍宽电压:5.5~4.1V/3.7V,3.6V~2.4V/2.1V(STC11/10L系列)低功耗设计:空闲模式(可由任意一个中断唤醒)低功耗设计:掉电模式(可由任意一个外部中断唤醒,可支持下降沿/低电平和远程唤醒,STC11xx系列还可通过内部专用掉电唤醒定时器唤醒)工作频率:0~35MHz,相当于普通8051:0~420MHz时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置1/2/31280/256字节片内RAM数据存储器芯片内EEPROM功能,擦写次数10万次以上ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器2个16位定时器,兼容普通8051的定时器T0/T11个独立波特率发生器(故无需T2做波特率发生器),缺省是T1做波特率发生器可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟硬件看门狗(WDT)具有片内VDD监视器、看门狗定时器和时钟振荡器的STC10F04XE单片机是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件使能/禁止和配置。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。在使用JTAG调试时,所有的模拟和数字外设都可全功能运行。每个MCU都可在工业温度范围(-45℃到+85℃)内用2.7V-3.6V的电压工图2-1STC10F04XE电机模块采用直流减速电机。直流减速电机具有优良的调速特性,调速平滑、方便,而且制动能力好,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转。能满足各种不同的特殊运行要求。同时,直流减速电机价格适宜,更易于购买,并且电路相对简单。图2-2电机模块黑线检测模块寻迹模块是整个设计的关键部分,小车能够通过检测黑线运行。光电对管,也叫光电开关,其实内部结构就是一个发光二极管和一个光敏三极管,分为反射式和直射的,都是通过集聚光线来控制光敏三极管的导通与截止。无论如何原理都是光电的转化。光电开关一般都具有良好的回差特性,因而即使被检测物在小范围内晃动也不会影响驱动器的输出状态,从而可使其保持在稳定工作区。同时,自诊断系统还可以显示受光状态和稳定工作区,以随时监视光电开关的工作。采用红外反射式探测。用红外对管发射红外线垂直射到板面,白色会反射大部分红外线,黑色吸收大部分红外线。红外对管在黑白交界处产生跳变信号,信号经过电压比较器处理后送入单片机可以在程序里实现相应的功能。经过测试,光电开关对环境的适应性较强。在这里我们采用红外发射管和红外接收管一对一配对使用。图2-3对管和比较器LM339主要特点电压失调小,一般是2mV;共模范围非常大,为0v到电源电压减1.5v;他对比较信号源的内阻限制很宽;LM339vcc电压范围宽,单电源为2-36V,双电源电压为±1V-±18V;输出端电位可灵活方便地选用。差动输入电压范围很大,甚至能等于vcc;LM339引脚图及功能图2-4LM339引脚图表2-1LM339引脚功能排列表:引脚功能符号引引脚功能符号输出端2OUT28反向输入端31N-(3)输出端1OUT19正向输入端31N+(3)电源VCC+10反向输入端41N-(4)反向输入端11N-(1)11正向输入端41N+(4)正向输入端11N+(1)12电源Vcc-反向输入端21N-(2)13输出端4OUT4正向输入端2OUT2(2)14输出端3OUT3表2-2LM339主要参数表:参数名称符号数值单位电源电压VCC±18或36V差模输入电压VID±36V共模输入电压VI-0.3~VCCV功耗Pd570mW工作环境温度Topr0to+70℃贮存温度Tstg-65to150℃数码显示模块本实验采用四位共阳极数码管进行数码显示,它有四个位选,由于本实验只需显示小车在每个区域运动时的值,因而只需选通以为位选线,当各阴极上的电平为“0”时,该段点亮,电平为“1”时,该段熄灭。数码管与单片机之间通过反相器74LS04连接,具体电路见图。图2-5数码显示原理图电机驱动模块采用L293D芯片的驱动模块。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引脚,控制电机的正反转。图2-6驱动芯片L293D电动机调速直流调速方式有电平调速、脉频调速(PFM)及脉宽调速(PWM)等多种方式。电平调速原理比较简单,但要实现较好的控制会使电路比较复杂。如果需要通过数模转换实现步进控(PFM)计中需要的并行数据线太多,接线麻烦,实际调试复杂,故不用此方案。脉频调速(PFM)一般用于大电动机,对于本设计要求并不适合。而脉宽调速(PWM)接线方便、控制简单,采用光电耦合隔离,系统干扰在三种方式中也最小。因此,选择PWM调速。信号采集模块在底板上安装信号采集模块如下:图2-7信号采集系统流程图流程图如下:图2-8系统流程图第三章程序下载与调制程序下载与调试程序下载打开下载软件,出现下载窗口。步骤1:在MCUType中选择STC10F04XE芯片。步骤2:点击OpenFile/打开文件,找到aa.hex文件,双击此文件再点击保存。即文件打开成功。步骤3:选择串行口,COM栏中选择COM3。步骤4:设置一些选项,,具体见下图。步骤5:下载程序。直到出现程序下载成功即可。下载软件窗口图如图3-1所示。图3-1下载软件窗口图程序调试调试过程出现的问题变量i设置重复出现的现象是:程序检测无误但是小车不转。为了方便程序检测加动态显示程序,小车运行可以显示区域,如果没出现证明这段程序有误。经过下载调试发现主函数定义的变量i和显示函数定义的变量i重复。 voidmain(){uinti; pwm_init(); P1=0X00; while(1) { Disp(2); } :voidDisp(uintdisp_value){uchari;Bcd(disp_value);for(i=0;i<4;i++){ P1=led_point[i]; SBUF=LED_Val[num[i]]; while(TI==0); TI=0; Delay_ms(5); P1=0xff;}}小车不能停止解决方案:让单片机停止调用显示就不能做别的事情了。if(qq>=3)//检测到第三个黑线小车停止。 {stop();while(1){Disp(qq);} } 图3-2车不停止小车前进速度不明显解决方案:将电机速度改的差异大点。循迹速度:{pwm1=60;pwm2=20;}缓慢前进:{pwm1=60; pwm2=60;}全速前进:{pwm1=99; pwm2=99;} 数码显示过快解决方案:小车开始的时候时间太短,会造成显示过快,效果不是很明显。延时时间。if(s1==0&&s2==0)///传感器小灯相当于消除抖动 {pwm1=40;pwm2=40; Delay_ms(100) {while(s1==0&&s2==0) {Disp(qq);} {qq++; Delay_ms(200)}}}改成200,300。图3-3显示过快调试成功最后编写整个完整的函数,编译无错误后,生成“.hex”文件,下载后进行硬件调试,通过返回信息对程序进行相。图3-4调试成功单片机课程设计总结单片机课程设计总结实习几天以来,我学到了很多书上所学不到的,也体验到了许多以前未体会过的辛苦。总的来说,受益良多!

通过这次课程设计,我学到了很多书本上没有的实际知识,通过上网和去图书馆查找有关资料一一解决,对将使我今后的学习和工作是很有帮助的。最重要的是我学会了方法,这将使我今后离开学校踏上社会是相当有帮助的。其次,是进一步熟悉地掌握和运用了相关的专业软件。提高了我们自身的专业素质。同时也深深的体会到,我们书本上所学的知识和实际的东西相差甚远,我们所不懂的知识还有很多,因此今后要更加注重实际方面的锻炼和运用。在本次实习中,感谢老师对我们不厌其烦的指导和严格要求,使我们学到了很多实用的知识,增强我们的自信心,同时也使自己明白自己存在着很大的不足,认识到了自己的缺点。在以后的学习中,不断完善自己,成为一个真正具有综合能力的人才。马爽2012年6月13日参考文献参考文献[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:北京航空航天大学出版社,2001[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1999[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:高等教育出版社.1992附录附录//========================================================//文件名称://作者:马爽//版本:1.0//说明:C51数据类型//修改记录:2012-6//========================================================#include"stc10f04xe.h"#defineucharunsignedchar#defineuintunsignedintsbitIN1=P0^1;sbitIN2=P0^2;sbitIN3=P0^4;sbitIN4=P0^3;sbiten1=P0^0;sbiten2=P0^5;sbits1=P0^6;sbits2=P0^7;voidgo();//声明小车的启动函数//voidstop();//声明小车的停止函数//uintflag1,flag2,pwm1,pwm2,qq;voidpwm_init();ucharcodeLED_Val[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//0-9//uchardatanum[4];uchardataled_point[4]={0xef,0xdf,0xbf,0x7f};voidDisp(uintdisp_value);//声明数据显示函数//voidBcd(uintbcd_value);//声明数据分离函数//voidDelay_ms(uintdelay);//声明延时函数//voidkey_scan();//声明按键扫描函数////=============================================================//函数名称:pwm_init()//函数功能:电机的初始化//入口参数:void//出口参数:void//备注:无//=============================================================voidpwm_init()//电机的初始化//{TMOD=0X01;//定时器0,方式1// TH0=(65536-200)/256;//200中断一次//TL0=(65536-200)%256;EA=1;//中断允许总开关控制位开放// TR0=1;//定时器允许T0溢出中断//ET0=1;//定时器允许T0运行控制位// en1=1;//L293D始能端// en2=1; }//=============================================================//函数名称:Ser()//函数功能:中断//入口参数:void//出口参数:void//备注:无//=============================================================voidTO_Ser()interrupt1using1 { TH0=(65536-200)/256;//重装初值T0的寄存器高八位显示的数值// TL0=(65536-200)%256;//T0的寄存器低八位显示的数值// flag1++; flag2++;/********************PWM1设定*****************/ if(flag1<=pwm1)//PWM1占空比// { en1=1; } if(flag1>pwm1) { en1=0; } if(flag1==100)//设定周期为20ms// { flag1=0;//清零// }/*****************PWM2设定*******************/ if(flag2<=pwm2)//PWM2占空比// { en2=1; } if(flag2>pwm2) { en2=0; } if(flag2==100)//PWM周期为20ms// { flag2=0;//清零// } }//=============================================================//函数名称:go()//函数功能:电机的启动函数//入口参数:void//出口参数:void//备注:无//=============================================================voidgo()//小车前进两个轮子都是向前转,每个轮子对应的电机输入端都是一个高电平一个低电平//{IN1=0;//使能端1接低电平//IN2=1;//使能端2接高电平//IN3=0;//使能端3接低电平//IN4=1;//使能端4接高电平//}//=============================================================//函数名称:stop()//函数功能:电机的停止函数//入口参数:void//出口参数:void//备注:无//=============================================================voidstop()//小车停止时两个轮子都停止。{IN1=1;//使能端1接高电平//IN2=1;//使能端2接高电平//IN3=1;//使能端3接高电平//IN4=1;//使能端4接高电平//}//=============================================================//函数名称:Disp()//函数功能:显示函数//入口参数:void//出口参数:void//备注:无//=============================================================voidDisp(uintdisp_value){uchari;Bcd(disp_value);//调用分离函数//for(i=0;i<4;i++//显示四位数//{P1=led_point[i];//点亮一位// SBUF=LED_Val[num[i]];//点亮一位// while(TI==0); TI=0; Delay_ms(5); P1=0xff;}}//=============================================================//函数名称:Bcd()//函数功能:数据分离函数//入口参数:BcdValue//出口参数:void//备注:无//=============================================================voidBcd(uintbcd_value)//参数附0、1、2、3里将其分离//{num[0]=bcd_value/1000;//分离千位// num[1]=(bcd_value%1000)/100;//分离百位// num[2]=((bcd_value%1000)%100)/10;//分离十位// num[3]=((bcd_value%1000)%100)%10;//分离个位//}//=============================================================//函数名称:Delay_ms()//函数功能:延时函数//入口参数:Delay//出口参数:void//备注:无//=============================================================voidDelay_ms(uintdelay){ucharj; while(delay--) { for(j=125;j>0;j--) {;} }}//=============================================================//函数名称:main()//函数功能:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论