1、单片机原理及应用课程设计电气工程学院一、课程设计任务 1、设计内容1) 设计题目总体设计方案2) 硬件电路设计3) C语言程序编制与调试4) 电路系统的综合调试5) 撰写课程设计论文6) 完成课程设计论文答辩2、设计要求1)设计一台自动寻电动小车。2)电动车能自动寻迹,按设定好的轨迹前进。3)寻迹又小车前端左右两个光电开关完成,通过调整RW2和RW4可以改变观点开关的灵敏度。4)设计结束学生应撰写课程设计报告一份,完成课程设计答辩;3、课程设计报告要求1)课程设计报告内容包括:课程设计题目;设计计划与方案论证;设计方案实现(含程序);课程设计心得。2)课程设计报告的撰写格式应符合单片机实用技术
2、课程设计报告格式要求。4、 参考资料1李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,20012 何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,19993 蔡美琴等编著.MCS-51 单片机系统及应用.北京:高等教育出版社.19925、设计进度(2011年11月28日12月12日)时间设计内容第1-2天查阅资料,方案比较、设计与论证,理论分析与计算第3-5天硬件电路调试第6-8天系统调试第9-10天书写报告、答辩6、 课程设计时间及地点地点:新实验楼323二、评语及成绩 评分项目评分标准量化分数1.理论分析计算能力很强较
3、强一般较差不行202.仿真设计能力很强较强一般较差不行203.硬件设计能力很强较强一般较差不行204.设计报告规范程度规范整洁正确杂乱有错误205.设计态度积极主动比较认真应付不认真106.出勤情况全勤缺勤次数10附加评语量化总分 成绩 指导教师单片机原理及应用课程设计班 级: 自动化0942姓 名: 学 号: 07指导教师: 撰写日期: 2012-6-5目录目录第一章 课程设计内容及方案11.1 课程设计的目的与意义11.2课程设计内容与要求21.2.1设计内容21.2 .2设计原理2第二章 系统设计42.1小车控制及驱动单元的选择42.1.1 STC10F04XE单片机42.1.2 L29
4、3D是步进电机驱动芯片42.1.3 LM393比较器52.2.传感器电路62.3.红外探头的安装72.4.软件控制8第三章 课设过程中的问题及解决方法10参考文献13附录14第一章 课程设计及内容第一章 课程设计内容及方案1.1 课程设计的目的与意义当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。作为机
5、械行业的代表产品汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重
6、要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。此项设计是在以方老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。
7、1.2课程设计内容与要求1.2.1设计内容 本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。1.2 .2设计原理这里的循迹是指小车在白色地板上循黑线行走,通常采取的方法是红外探测法,红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外
8、光遇到白色纸质地板时发生漫反 射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的 位置和小车的行走路线。红外探测器探测距离有限,一般最大不应超过15cm。对于发射和接收红外线的红外探头,可以自己制作或直接采用集成式红外探头。单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L293D发出控制命令,控制电机的工作状态以实现对小车姿态的控制。1.2.3课程设计的要求设计一台自动循迹电动小车,要求:电动小车能自动寻迹,按设定好的的轨迹从区域1前进到区域3,并在黑线末端停车,小车前进路线图如图
9、1-1所示。在区域1和区域3内,小车缓慢前进,在区域2内小车全速前进。寻迹用小车前端左右两个光电开关完成,通过调整RW2和可以改变光电开关的灵敏度。 图1-1 寻迹小车路线21第二章 系统设计第二章 系统设计2.1小车控制及驱动单元的选择2.1.1 STC10F04XE单片机此部分是整个小车的大脑,是整个小车运行的核心部件,起着控制小车所有运行状态的作用。通常选用单片机作为小车的核心控制单元,选择STC10F04XE单片机作为控制电路核心。STC10F04XE是宏晶科技设计生产的单时钟/机器周期(IT)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但
10、速度快8-12倍。内部集成高可靠复位电路,针对高速通信,智能控制,强干扰场合。2.1.2 L293D是步进电机驱动芯片L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12、
11、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转。其引脚图和真值表如下:图2-1 L293D的引脚图及真值表2.1.3 LM393比较器LM393是高增益,宽频带器件,象大多数比较器一样,如果输出端到输入端有寄生电容而产生耦合,则很容易产生振荡。这种现象仅仅出现在当比较器改变状态时,输出电压过渡的间隙,电源加旁路滤波并不能解决这个问题,标准PC板的设计对减小
12、输入输出寄生电容耦合是有助的。减小输入电阻至小于10K将减小反馈信号,而且增加甚至很小的正反馈量(滞回1.010mV)能导致快速转换,使得不可能产生由于寄生电容引起的振荡,除非利用滞后,否则直接插入IC(集成电路板integrated circuit,缩写:IC) 并在引脚上加上电阻将引起输入输出在很短的转换周期内振荡,如果输入信号是脉冲波形,并且上升和下降时间相当快,则滞回将不需要。比较器的所有没有用的引脚必须接地。LM393偏置网络确立了其静态电流与电源电压范围 2.030V无关。 通常电源不需要加旁路电容。差分输入电压可以大于Vcc并不损坏器件,保护部分必须能阻止输入电压向负端超过-0.
13、3V。LM393的输出部分是集电极开路,发射极接地的 NPN输出晶体管,可以用多集电极输出提供或OR ing 输出负载电阻能衔接在可允许电源电压范围内的任何电源电压上,不受 Vcc端电压值的限制.此输出能作为一个简单的对地SPS开路(当不用负载电阻没被运用),输出部分的陷电流被可能得到的驱动和器件的值所限制.当达到极限电流(16mA)时,输出晶体管将退出而且输出电压将很快上升。输出饱和电压被输出晶体管大约60ohm 的SAT限制。当负载电流很小时,输出晶体管的低失调电压(约1.0mV)允许 输出箝位在零电平。LM393其引脚的主要功能如下:引脚 主要功能 引脚 主要功能 1 通道1输出 5 通
14、道2正输入 2 通道1负输入 6 通道2负输入 3 通道1正输入 7 通道2输出 4 Vss 8 电源电压Vcc2.2.传感器电路光电寻线方案一般由多对红外收发管组成,通过检测接收到的反射光强,判断黑白线。原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电平输出到单片机。图2-1 传感器的电路图2.3.红外探头的安装在小车具体的循迹行走过程中,为了能精确测定黑线位置并确定小车行走的方向,需要同时在底盘装设4个红外探测头,进行两级方向纠正控制,提高其循迹的可靠 性。这4个红外探头的具体位置如图2所示。图中循迹传感器共安装4个,全部在一条直线上。其中Infra
15、redMR与InfraredML 为第一级方向控制传感器,InfraredSR 与InfraredSL 为第二级方向控制传感器。小车行走时,始终保持黑线(如图2 中所示的行走轨迹黑线)在InfraredMR和InfraredML这两个第一级传感器之间,当小车偏离黑线时,第一级探测器一旦探测到有黑线,单片机 就会按照预先编定的程序发送指令给小车的控 制系统,控制系统再对小车路径予以纠正。若小车回到了轨道上,即4个探测器都只检测到白纸,则小车会继续行走;若小车由于惯性过大依旧偏离轨道,越出了第 一级两个探测器的探测范围,这时第二级动作,再次对小车的运动进行纠正,使之回到正确轨道上去。可以看出,第二
16、级方向探测器实际是第一级的后备保护,从而 提高了小车循迹的可靠性。图2-3红外探头的安装结构图2.4.软件控制其程序控制框图如图2-4。小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序 (switch),先确定4个探测器中的哪一个探测到了黑线,如果InfraredML(左面第一级传感器)或者InfraredSL(左面第二级传感 器)探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如果是InfraredMR(右面第一级传感 器)或InfraredSR(右面第二级传感器)探测到了黑线,即车身右半部压住黑线,小车
17、向左偏出了轨迹,则应使小车向右转。在经过了方向调整后,小车 再继续向前行走,并继续探测黑线重复上述动作。由于第二级方向控制为第一级的后备,则两个等级间的转向力度必须相互配合。第二级通常是在超出第一级的控制范围的情况下发生作用,它也是最后一层保护,所 以它必须要保证小车回到正确轨迹上来,则通常使第二级转向力度大于第一级,即level2level1(level1、level2为小车转向力 度,其大小通过改变单片机输出的占空比的大小来改变),具体数值在实地实验中。 图2-4程序设计流程图第三章 课设过程中的问题及解决方法第三章 课设过程中的问题及解决方法在编写程序的过程中我们发现小车在运动的过程中,
18、一直在显示,还有在检测黑线的时候,小灯有时候会产生闪烁的情况,针对这一问题,我们调节了传感器的灵敏度并且在程序中加入了while(s1=0&s2=0)这一语句,而且改变了延时的时间。对于小车一直在显示这一问题,我们在同学和老师的帮助下对程序进行了修改,发现我们在void Disp(uint disp_value)这一子程序中已经定义了非字符型变量i,但是在后面的主程序中再一次定义了变量i,所以就造成了重复性的定义,因此在后面的主程序中我们重新定义了变量qq。课设总结 课设总结根据本次设计要求,我们小组系统地阅读了大量的资料,并认真分析了设计课题的需求。在老师给的硬件下,进行了多项试验,最终做出
19、了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次课程设计使我们对一个项目的整体设计有了初步认识,还认识了几种基本的硬件,再有对电路板的制作有了一定的了解。本次课程设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程
20、序完全有了一个新的认识,并能使用C熟练的进行编程了。通过本次课题设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。总之,在课题设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。 2012年6月5日参考文献参考文献1李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,20012 何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,19993 蔡美琴等编著.MCS-51 单片机系统及应用.北京:高等教育出版社.19
21、92附录附录/=/ 文件名称:循迹小车/ 作 者:张冉 / 版 本:1.0 / 说 明:C51数据类型/ 修改记录:2012-5-20 /=#includestc10f04xe.h#define uchar unsigned char#define uint unsigned intsbit IN1=P01;sbit IN2=P02;sbit IN3=P04;sbit IN4=P03;sbit en1=P00;sbit en2=P05;sbit s1=P06;sbit s2=P07; void go(); /声明小车的启动函数/void stop(); /声明小车的停止函数/uint flag
22、1,flag2,pwm1,pwm2,qq;void pwm_init();uchar code LED_Val=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98;uchar data num4;uchar data led_point4=0xef,0xdf,0xbf,0x7f;void Disp(uint disp_value); / 声明数据显示函数 /void Bcd(uint bcd_value); / 声明数据分离函数 /void Delay_ms(uint delay); / 声明延时函数 /void key_scan(); / 声明
23、按键扫描函数 / void pwm_init() /电机的初始化/ TMOD=0X01; /定时器0,方式1/TH0=(65536-200)/256; /200中断一次/TL0=(65536-200)%256;EA=1; /开总中断/ET0=1; /开定时器中断/TR0=1; /启动定时器/en1=1;en2=1;/void TO_Ser() interrupt 1 using 1TH0=(65536-200)/256; TL0=(65536-200)%256; /重装初值/ flag1+; flag2+;if(flag1pwm1) en1=0;if(flag1=100) /设定周期为20ms
24、/ flag1=0; if(flag2pwm2) en2=0;if(flag2=100) /PWM周期为20ms/ flag2=0; / void go() IN1=0; IN2=1; IN3=0; IN4=1; / void stop() IN1=1; IN2=1; IN3=1; IN4=1; void Disp(uint disp_value)uchar i; Bcd(disp_value); for(i=0;i0;j-) ; / void main() SCON=0x00; Disp(0x00); pwm_init(); P1=0X00; while(1) go(); Disp(qq);
25、if(s1=0&s2=0) /小车检测到黑线/ pwm1=40;pwm2=40;Delay_ms(200); while(s1=0&s2=0) /再次判断小车是否检测到黑线/ Disp(qq); qq+; Delay_ms(300); if(qq=0) go(); /显示0时,电机减速前进/ if (s1=0&s2=1) pwm1=60; pwm2=20; /S1检测到黑线,电机左转/ if (s2=0&s1=1) pwm2=60; pwm1=20; /S2检测到黑线,电机右转/ if (s1=1&s2=1) pwm1=40; pwm2=40; /S1和S2都未检测到黑线,电机前进/ if(q
26、q=1) go(); /显示1时,电机加速前进/ if (s1=0&s2=1) pwm1=99; pwm2=20; if (s2=0&s1=1) pwm2=99; pwm1=20; if (s1=1&s2=1) pwm1=99; pwm2=99; if(qq=2) go(); /显示2时,电机减速前进/ if (s1=0&s2=1) pwm1=60; pwm2=20; if (s2=0&s1=1) pwm2=60; pwm1=20;if (s1=1&s2=1) pwm1=40; pwm2=40; if(qq=3)stop(); while(1)Disp(qq); /显示3或大于3的值时,电机减速停止/