版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计设计报告说明书设计题目:汽车距离自动测定系统课程名称: 单片机课程设计 所在院系: 机电学院 姓 名: 路小娃 班 级: 13机电师 学 号: 2013095444026 指导教师: 杨 永 小组成员: 林韩 路小娃 黎桂雄 日 期: 2015年12月23日 武汉大学珞珈学院本科毕业论文目录第1章 系统总体设计方案11一、设计目的及意义11二、设计报告111.设计题目:112.主要功能、作用:113.主要技术性能指标:114.设计方案115.设计方案选择12第2章 硬件系统132.1.硬件系统的基本结构和原理图132.2红外收发模块142.3 语音报警模块142.4 LCD显示模
2、块152.5AT89C52单片机概述162.6 按键模块17第3章 软件设计183.1 程序流程图18第4章 系统软硬件调试204.1 硬件调试204.2软件调试204.3测试结果绘图204.5 调试中遇到的问题21结 论22参考文献23附录24附录一 程序24附录二 使用元器件一览表33附录三 心得3425 第1章 系统总体设计方案一、设计目的及意义1. 在学习了单片机原理与开发这门课程之后,通过理论与实践结合的方式,加深对理论知识的理解,启发思维。2. 通过一个简单、完整的设计,让大家熟悉设计步骤,将理论应用于实际,增强应用能力,锻炼动手能力。3. 加深同学之间的了解,促进大家团结互助的精
3、神。二、设计报告1. 设计题目:汽车距离自动测定系统2. 主要功能、作用:1) 设计一传感器系统,要求可以测定车辆前、后方距离。2) 当车辆前、后方的距离达到一定值时,自动用语音报告距离的变化;3) 随着距离的缩短,报告的声音要有一定的节奏变化。3. 主要技术性能指标:1) 驱动电路的运行状况;2) 测距系统的测量准确度;3) 显示和语音播报的准确度。4. 设计方案方案一1) 设计红外传感收发模块测距,STC12C5A60S2单片机作为主控模块;2) 设定报警阈值(设定50CM,可用键盘调整阈值),随着距离的缩短,改变蜂鸣器响的频率实现节奏变化;3) 利用AT89C52的P1口AD转换功能,I
4、SD1820语音播放距离,并用LCD1602显示其距离值。方案二1) 超声波测距器的系统设计,STC12C5A60S2单片机作为主控模块;2) 用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成;3) 单片机使用P1.0端口输出超声波转化器所需的40KHz方波信号ISD1820语音播放距离,并用LED数字显示显示其距离值。方案三1) 激光测距系统设计,STC12C5A60S2单片机作为主控模块;2) 过单片机控制CPLD计时部分开始计时与停止计时,并通过软件计算控制LED显示所测得的被测物的实际距离;3) CPLD计时部分采,40MHZ的脉冲信号,单个周期为2.5ns,通过P0
5、口调取到单片机的方便,并用LED数字显示显示其距离值。5. 设计方案选择我们小组考虑到红外测距的优点是便宜,易制,安全。激光测距存在诸多缺点,例如需要注意人体安全,且制做的难度较大,成本较高,而且光学系统需要保持干净,否则将影响测量。 超声波测距缺点是精度较低,且成本较高。三者经过相互比较,从经济和我们所学的知识考虑。红外测距对我们初学者的锻炼是大于其他两者的。并且红外测距的电路相对于其他两者比较容易焊接,容易检查和修改。第2章 硬件系统2.1.硬件系统的基本结构和原理图该系统主要由AT89C52芯片,红外测距传感器,ISD语音模块、LCD显示、电源模块及键盘接口电路等组成。其主要组成构图如下
6、:图2.1 电路结构图图2.2 电路原理图2.2红外收发模块红外发送管是用于发送信号,经过障碍物将信号反射,红外接收管接收到反射回来的信号,然后根据信号强弱将对应的电压值显示在显示模块上,并将此时的距离记录下来。然后整改程序,用红外收发模块进行测距,就可在显示模块上显示出红外接收管接收的信号强度对应的距离值。GP2Y0A02YK0F 红外测距传感器 20-150cm 图2.3 红外传感器结构图 图2.4 protel中红外传感器如图2.4所示GP2Y0A02YK0F有3个端口,其中VCC接信号输入,VO接P1口,GND接地线。GP2Y0A02YK0F测量范围在20cm-150cm之间,测量误差
7、小于0.5cm,是一个距离测量传感器单元,PSD的集成组合构成 (位置敏感探测器),IRED(红外发光二极管)和信号原理电路。2.3 语音报警模块2.3.1 ISD1820可以播报实时距离图2.5 ISD1802电路图2.3.2 蜂鸣器及LED警示灯警报蜂鸣器,发声元件。当距离达阈值的时候,蜂鸣器响同时用 LED警示灯进行闪烁报警提示。2.6 蜂鸣器报警2.4 LCD显示模块图2.7 LCD显示模块LCD与单片机的接口电路如图2.7所示,单片机P0分别接D1-D7,同时接上排阻,而在排阻另一端接上vcc。单片机上的P3.4接E, P3.5接RS,单片机通过P0口向LCD输送数据,显示测得的距离
8、。值得注意的是,P0口要接上拉电阻来保证对LCD的成功驱动。2.5AT89C52单片机概述本次课程设计采用的是增强型8051单片机,型号STC12C5A60S2。STC12C5A60S2/AD/PWM系列单片机指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。图2.8 STC12C5A60S2 单片机单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。本次设计选择在单片机外接晶体振荡器构成内部振荡方式,片内高增
9、益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。外接晶体以及电容C2和C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30P左右,晶振频率选11.0592MHz。图2.9 ST89C52单片机最小系统2.6 按键模块此模块采用4个独立按键来改变报警阈值。按键1(加10CM)接P14,按键2(减10CM)接P15,按键3(RESET),接P16,按键4(RESET),接P17。图2.10 按键模块第3章 软件设计3.1 程序流程图在整个系统运行过程中。当红外系统被启动后,首先,对AT89C52单片机进行初始化。然后,当AT89C5
10、2单片机接收到红外接收电路传输的电压信号后,经A/D转换程序,将片外的模拟信号转换为单片机可识别的数字信号,并经电压距离转换子程序,将变化的电压转换为距离。最后,在动态扫描LCD显示器上显示出来。主程序流程图如图3.1所示。图3.1 程序流程图红外测距系统软件设计主要由主程序,延时函数,显示程序函数组成。程序开始, 红外测距主程序第一步将显示屏1602初始化,并显示测量开始,第二步导入延时程序,并显示程序,显示电压和距离。其次子函数调用, 读A/D并转换函数得出电压值,再调用距离计算函数,得出距离值。此时主函数中显示函数会将电压和距离显示出来,程序就此结束。此程序中多次使用调用子函数,读A/D
11、,距离计算函数,算术平均滤波程序构成AD值的采集和计算;LCD忙标志判断函数,写数据子函数,写命令子函数,显示数据调整函数,字符串显示函数,显示子函数构成显示函数;1602初始化函数,LCD清屏函数则构成清屏函数。不过完成程序并不是一次就能成功的,首先要先将AD采集程序写入单片机中,进行实验,将固定距离所采集到的信号强度记录下来,然后将对应的数据加入程序中,最后通过红外模块进行测量,便可显示出对应的距离值,主程序是整个程序的基础,也是核心。此时距离计算函数才算完成,距离计算函数实际就是测量时得出距离电压关系,我们反过来先拿出距离再得出电压,举例来说,用卷尺量50CM距离,再用红外测距系统来量5
12、0CM距离,这时对应50CM距离的电压记下来。根据这个方法把其它各个距离的电压记下来,把这个对应关系变成计算距离的函数,再测距时就可以根据这个函数来得出距离了。图3.2单片机实物图第4章 系统软硬件调试4.1 硬件调试红外测距仪的制作为了使信号稳定,最好给输入电源加上一个滤波电路,否则显示屏上有闪烁,不稳定,会增加误差,但总体来说不影响结果。在本次设计中,主控模块是非常重要的部分,它不仅是本次设计的核心,在本次硬件调试中也遇到了问题,接上电源的时候,显示屏不亮,没有任何显示,于是我做了如下的工作:(1)检查电源是否通电,发现指示灯亮着;(2)编程使P1为低电平,检查到P1输出为低;(3)检查P
13、0口未接上拉电阻,接上显示屏发亮了。在本次硬件调试中还遇到了显示屏出显示,但显示有很大问题,调节距离后,显示还是不变,检查后发现LCD与vcc没接好,或RS,RW,E与单片机接触不良。4.2软件调试硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。根据所设计的电路参数和程序,测距仪能测的范围为20cm150cm,测距仪最大误差不超过0.5cm。系统调试完后对各个距离进行多次测量,与预定值进行比较,对测量误差进行多次实验分析,不断调节器件和修改程序使其达到实际使用的测量要求。为了更方便了解电压与距离之间的关系,我将程序做了些许修改,在显示距离的基础上再把电压也显示出来了,这样结果一
14、目了然。因为电压与距离之间的关系不是线性关系,所用用函数来表示会有误差,于是我将此函数修改,重新测量,每个距离对应的电压记录下来输入程序,如此一来,测试更加准确,误差更小了。4.3测试结果绘图图4.1是红外距离传感器GP2Y0A02YK0F电压距离关系图,图中所测电压对应的不同距离值,图中横坐标代表距离,纵坐标是距离电压值,单位是cm。从图中可以看出,电压与距离并不是线性关系,而是一条相对平滑的曲线。因此结果不一定十分准确,接近此图即可。最终的红外测距系统可以实现20-150cm的近距离测量,测量误差为0.5cm,可以计算出被测物体的距离。在测量距离精度方面,还有待于改进。电压v2.891.9
15、41.471.180.98测距cm1930415162实距cm2030405060表4.1 电压距离关系4.5 调试中遇到的问题在焊接过程中一些地方出现虚焊等接触不良的问题,导致显示不稳定有闪烁。接线过程中用插针接线容易导致接线松动,没接到或者接触不良。环境问题:红外线在空气介质的传播过程中会有很大的衰减,其衰减遵循指数规律。一般情况下能测150cm,但是空气介质发生改变,如尘埃过多,导致红外线强度降低,测量发生误差,且测量距离变小。周围有其他辐射源,并且强度很大时会影响测量结果。结 论对所设计的电路进行测量、校准发现其测量范围在20cm150cm内的平面物体做了多次测量发现,其最大误差为0.
16、5cm,且重复性好。该测距仪稳定性比较高、灵敏度比较高,测量时在红外线测距仪周围没有其它物体。但是在检测过程中会有一些不便的地方: 1.测量时在红外线测距仪和目标物体之间周没有其它可阻挡的物体,由于是根据反射能量法,且发射功率有限,反射回来的红外线能量容易过低而无法采集,测距仪无法测量150cm外的物体。2.必须在干净清新的空气环境下测量,空气中一旦尘埃过多,会对反射红外线强度有极大的干扰,最终影响计算距离的值。3.不能够实现不同温度下的测距功能。4.因为超声波是将空气作为媒介所以受电磁干扰比较大。红外线测距仪的原理有两种:一种是红外线传播的时间来计算出传播距离;一种是根据发射光的强弱可以判断
17、所测的距离,由于接收管接收的光强是随与发光管的距离变化而变化的,因而,距离近则接收光强,距离远则接收光弱。由上述的分析知,如果能够干净清新的空气环境,稳定的温度下,无其它电磁干扰,阻挡的物体,能够获得较高的测量精度。参考文献1 张明峰,PIC单片机入门与实战,北京航空航天大学出版社2 窦振中,PIC单片机应用设计与实例,北京航空航天大学出版社3 谢自美,电子线路综合设计,华中科技大学出版社,2006-64 康华光,电子技术基础:模拟部分(第五版),高等教育出版社,20065 潘永雄,沙河电子线路CAD实用教程M西安:西安电子科技大学出版社:20076 51单片机C程序设计100例7 康华光主编
18、电子技术 基础M第四版北京:高等教育出版社,19998单片机原理与应用实验武汉大学珞珈学院 9一种红外线测距技术的探讨10红外测距传感器的原理与设计最终版11 刘坤,51单片机典型应用开发范例大全 中国铁道出版社 12 彭伟,单片机C语言程序设计实训基于8051+Proteus仿真电子工业出版社13 薛小玲、刘志群、贾俊荣编著单片机接口模块应用于开发实例详解 北京航空航天大学出版社 201014 谭浩强,著C程序设计(第三版) 清华大学出版社 200515 何桥、段清明、邱春玲编著单片机原理及应用 中国铁道出版社 200416 曲波 肖圣兵 吕建平编著工业常用传感器选型指南 清华大学出版社 2
19、00217 陈鸿茂编著常用电子器件简明手册 中南矿业大学出版社 2001附录 附录一 程序#include <REGX52.H>#define uchar unsigned char#define uint unsigned int#define ADC_POWER 0x80#define ADC_FLAG 0x10 #define ADC_START 0x08 #define ADC_SPEEDLL 0x00 #define ADC_SPEEDL 0x20 #define ADC_SPEEDH 0x40 #define ADC_SPEEDHH 0x60uchar code tab
20、le="0123456789"uchar code table1="L1="uchar code table3="L2="uchar code table2="SET:"sbit deng=P33;sbit lcden=P34;sbit lcdrs=P35;sbit yin=P24;sbit dula=P27;sbit key1=P20;sbit key2=P21;sbit key3=P22;sbit key4=P23;sfr ADC_CONTR = 0xBC;sfr ADC_RES = 0xBD;sfr ADC_
21、LOW2 = 0xBE;sfr PLASF = 0x9D;int distance_danger=30;int a;int c;int e;int bai,shi,ge;int AD_result=0;int AD_result2=0;int count=0;int beep_count=0;int distance=0,distance2=0;void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1;del
22、ay(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);void xianshi(int number,int adress) write_com(0x80+adress);/84if (number>999|number<=0)bai=0;shi=0;ge=0;write_data(table
23、bai);delay(5);write_data(tableshi);delay(5);write_data(tablege);delay(5);else if (number>99)bai=number/100;shi=number%100/10;ge=number%100%10;write_data(tablebai);delay(5);write_data(tableshi);delay(5);write_data(tablege);delay(5);else if (number>9)bai=0;shi=number/10;ge=number%10;write_data(t
24、ablebai);delay(5);write_data(tableshi);delay(5);write_data(tablege);delay(5);else bai=0;shi=0;ge=number;write_data(tablebai);delay(5);write_data(tableshi);delay(5);write_data(tablege);delay(5); /write_com(0x80+0x42);void keyone()if(key1=0&&key2=1&&key3=1&&a=0)distance_danger+
25、;a=1;else if(key1=1)a=0;void keytwo()if(key2=0&&key3=1&&key1=1&&c=0)distance_danger-;c=1;else if(key2=1)c=0;void keythree()if(key3=0&&key1=1&&key2=1&&e=0)distance_danger=30;e=1;else if(key3=1)e=0; void InitADC()PLASF = 0xff;ADC_RES = 0;/ADC_CONTR = ADC
26、_POWER | ADC_SPEEDLL | ADC_START | ch;delay(2);int AD_caculate(char ch)int result=0;ADC_CONTR &= !ADC_FLAG;result=ADC_RES;/ch = 0; ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;return result;int pinjun(char ch)int i;float sum1=0;int he30;for(i=0;i<20;i+)hei=AD_caculate(ch);sum1+=hei;su
27、m1=sum1/20;return AD_caculate(ch);void beep_time(int x)beep_count+;if(beep_count>x)beep_count=0;dula=dula;yin=yin;int AD_cal(int AD)float y;if(AD>=98&&AD<140)y=-0.0045*AD*AD+0.715*AD+3.1;else/if(AD>=71&&AD<=98)y=0.0344*AD*AD-6.554*AD+341.9; if(y>60)y=60;return y; /*
28、/void beep_warning(int xg,int yg)if(yg<=distance_danger)beep_time(yg*3);deng=1;else if(xg<=distance_danger) beep_time(xg*3);/yin=yin;deng=1;else dula=0;yin=1;deng=0; void main() int aa=0;init();InitADC();/IE = 0xa0;delay(5);write_com(0x80+0x40); /显示"L1="for(aa=0;aa<3;aa+)write_dat
29、a(table1aa);delay(5); delay(5);write_com(0x80+0x48); /显示"L2="for(aa=0;aa<3;aa+)write_data(table3aa);delay(5); write_com(0x80);/显示"SET="for(aa=0;aa<4;aa+)write_data(table2aa);delay(5); a=0;c=0;e=0;dula=0;yin=1;deng=0;while(1)count+;keyone();keytwo();keythree();AD_result=pinjun(0);AD_result2=pinjun(1);distance=AD_cal(AD_result);/distance2=AD_cal(AD_result2);beep_warning(distance,distance2);if(count>150)delay(5); xianshi(distance_danger,0x04);delay(5); xianshi(distance,0x43);delay(5); xianshi(distance2,0x4b);count=0;附录二
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024高考政治二轮复习题型专练6体现说明类主观题含解析
- 艺术节开幕词范文800字(9篇)
- 二零二五年度火车站保洁托管服务合同范本2篇
- 2025年度软件开发与维护合同页50专用3篇
- 二零二五年度金融资产管理公司股权转让与风险预警协议3篇
- 2024版二手叉车买卖合同范文模板
- 表扬信范文范文
- 提升学校用电安全打造和谐校园环境
- 技术变革下学生观察力的挑战与机遇
- 2024年沪教版九年级地理上册月考试卷含答案
- 森林报测试题
- 刑法涉及安全生产的16宗罪解读
- 北京高考化学方程式知识点总结
- 铜精矿加工费简析
- 机电拆除专项施工方案
- 平键键槽的尺寸与公差
- 8S目视化管理实施计划表(放大)
- 分式混合运算专项练习158题(有答案)26页
- 地铁日常保洁程序及应急预案
- 牛津译林版四年级英语上册专项训练排序
- 毕业设计(论文)-多轴自动螺栓拧紧机的设计
评论
0/150
提交评论