ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:566.58KB ,
资源ID:3465382      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3465382.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(济南大学自动化学院小车倒车测距系统实训报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

济南大学自动化学院小车倒车测距系统实训报告.docx

1、济南大学自动化学院小车倒车测距系统实训报告综合实训报告 2013 2014学年第 1 学期实训名称: 单片机汽车倒车测距仪设计 指导教师: 李春梅 学 院: 自动化与电气工程学院 班 级: 电传11111班 姓 名: 11111 学 号: 1111111111111111 2013 年 11 月 16 日汽车倒车测距仪一 综合实训的主要内容根据超声波测距原理,设计一单片机倒车测距仪,并实现距离显示、报警功能。此次实训设计的主要环节包括了一下三个系统:1.超声波测距;通过超声波测距模块,获取当前障碍物距离2.LCD距离显示;通过LCD1602液晶模块显示障碍物距离3.距离报警;随距离接近,蜂鸣器

2、发出不同频率的报警声二 硬件方案设计(1)HC-SR04超声波测距模块 - 主要技术参数:1:使用电压:DC5V2:电平输出:高5V3:电平输出:底0V4:感应角度:不大于15度5:探测距离:2cm-450cm测试距离=高电平时间*声速(340m/s)/2 实物图 -工作原理(1)采用IO口TRIG触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。 -本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有

3、输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值 -超声波时序图(2)单片机芯片模块 -STC89C52单片机作为它的中心控制模块STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。使用经典的MCS-51内核,但做了很多的改进使得芯片

4、具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式

5、下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 -STC89C52的在此设计中的主要功能及特点:8K字节程序 存储空间; 512字节数据存储空间; 内带4K字节EEPROM存储空间; 可直接使用串口下载。 -STC89C52单片机的最小系统引脚图(3)1602液晶显示模块 -1602功能简介 1602液晶是一种字符型的液晶,它可以显示16*2的32个字符,即16列2行液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接

6、驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、移动信工具等众多领域。 实物图 原理图 -1602的管脚1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714

7、脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 -1602液晶的工作原理1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。通过查找1602的16进制ASCII码地址

8、表,并把地址传送给1602,当然在传送之前需要对1602进行初始化 -1602液晶的操作控制 读状态 输入RS=0,RW=1,E=1 写指令 输入 RS=0,RW=0,D07=指令码,E=H脉冲 读数据 输入 RS=1,RW=1,E=1 写数据 输入 RS=1,RW=0,D07=数据,E=H脉冲 -1602液晶的初始化写指令38H : 显示模式的设置写指令08H : 显示关闭写指令01H : 显示清屏写指令06H : 显示光标移动设置写指令0cH: 显示开及光标设置每次读写前,需要进行忙检测再把需要显示的字符的地址输入此设计是测试距离,在初始化后,把“distance”给1602液晶,当测距模

9、块测得距离后,经单片机处理后把数值给1602液晶(4)蜂鸣器模块 原理图 -蜂鸣器模块的功能蜂鸣器作为一个发声模块,只有两个引脚,单片机时不能直接驱动蜂鸣器的,所以需要一个驱动电路来使得蜂鸣器工作,此电路是利用PNP三极管来驱动蜂鸣器。此时单片机通过某一引脚产生不同频率的方波来驱动蜂鸣器发出不同的声音 -蜂鸣器工作原理按上图所示,当P23为高电平时,三极管截止,此时蜂鸣器是不响的,但是当这个引脚为低电平时,三极管导通,蜂鸣器发出响声。这样,通过改变蜂鸣器高低电平的时间,从而发出不同频率的声音。测距模块把测得的距离给单片机,单片机处理后,单品机给蜂鸣器不同频率的方波,发出不同频率的声音。此设计分

10、成三段,距离10厘米且距离50厘米三段,不同的段发出不同的声音。(4)总设计方案我们选用STC89C52单片机作为它的中心控制模块,HC-SR04作为超声波检测模块,1602作为测得结果的液晶显示模块,蜂鸣器是用来发出不同频率声音来实现提醒的功能。三 软件编程1.程序流程图 否 是 是 否 是 否2.主程序#include sbit RS=P20; /当RS=0时,读出的状态或写入的是指令,RS=1时表示写入或独读出的是数据sbit RW=P21; /读写转换sbit EG=P22; /始能端控制sbit feng=P23; sbit trig=P24;sbit test=P25; unsig

11、ned int distance;unsigned int m;unsigned char count;void write_com(unsigned char n);void delay(unsigned int t);void write_data(unsigned char k);unsigned char check_busy();void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s); void LCD_Clear(); void display(unsigned int number);unsi

12、gned int check_distance(); void display(unsigned int c);void compara(unsigned int a);void intial() TMOD = 0x01; /定时器1初始化,设置为16位自动重装模式 TL0 = 0x66; TH0 = 0xfc; /1ms ET0 = 1; /开定时器2 EA = 1; /总中断使能 write_com(0x38); /设置显示模式,2*16,5*7D的点阵,8位数据口 delay(5); write_com(0x38); write_com(0x08); /关闭显示和光标 write_com

13、(0x06); /当写一个字符时整屏不移动,只有光标移动 write_com(0x01); /表示清屏 delay(5); write_com(0x0c); /显示开关及光标设置 void LCD_Clear(void) write_com(0x01); delay(5); void write_com(unsigned char n) /写入指令 while(check_busy()=0x80); /检测液晶是否处在忙的状态,只有在不忙时,才进行下一步 RS=0; RW=0; P0=n; EG=1; delay(5); EG=0;unsigned char check_busy() P0=0

14、xFF; /检测最高位,如果是1,说明是在忙的状态 RS=0; RW=1; EG=0; delay(10); EG=1; return (P0&0x80); void write_data(unsigned char k) /表示写入数据 while(check_busy()=0x80); /检测液晶是否处在忙的状态,只有在不忙时,才进行下一步 RS=1; RW=0; P0=k; delay(5); EG=1; delay(5); EG=0; void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) if (

15、y = 0) write_com(0x80 + x); /表示第一行 else write_com(0xC0 + x); /表示第二行 while (*s) write_data( *s); s +; void delay(unsigned int t) while(t-);void main() intial(); LCD_Clear();/清屏 LCD_Write_String(2,0,distance ); while(1) m=check_distance(); /检测距离 compara(m); display(m); delay(1000); void display(unsign

16、ed int number) unsigned int ge,shi,bai,qian; qian= (number / 1000); bai= (number / 100) % 10; shi= (number / 10) % 10; ge = number % 10; write_com(0xc0 + 0x06); write_data(qian + 48); write_data(bai + 48); write_data(shi+ 48); write_data(ge+ 48); /小数点的ASCII write_data(46); write_data(99); /c的ASCII w

17、rite_data(109); /m的ASCIIunsigned int check_distance() unsigned char l; unsigned int h,y; trig=0; test=0; trig=1; delay(20); trig=0; while(test=0); /超声波回波检测 TR0=1; while(test=1); TR0=0; l = TL0; /这里读取它的小数点后的数据 h = TH0; y = (h 8) + l; y = y - 0xfc66; /us部分 distance = y + 1000 * count;/计算总时间 TL0 = 0x66

18、; /重装初值 方便下一次超声波测距 TH0 = 0xfc; count=0; delay(30); distance = distance *0.017; /cm delay(30); return(distance); void timer0 (void) interrupt 1 /超声波计时中断 TF0 = 0; /一直计时 当超声哦接收信号后 操作定时器 TL0 = 0x66; TH0 = 0xfc; count+; if(count = 18)/超声波回声脉宽最多18ms TR0 =0; TL0 = 0x66; TH0 = 0xfc; count = 0; void compara(

19、unsigned int a) if(a5) delay(5); feng=feng; else if (a10) delay(50); feng=feng; /* else if (a20) delay(100); feng=feng; else if (a40) delay(200); feng=feng; /* else delay(10000); feng=feng; 四 总结本次课设最基本的原来全部都来自于我们的书本,所以一切我们都需要回到书本,回到课堂曾经用过的知识,我觉得这一点很好。我们可以通过我们学过的只是进行复习以及加深对他们的印象,并且将他们与实际结合起来。下面我就分软件和

20、硬件进行阐述。 1、 硬件部分-硬件是软件的前提,所以主要通过上网查阅资料,翻阅书本,花了大部分的时间在硬件的确定上,一旦硬件搞定了 ,那么剩下的就会得心应手一些。 此外,我们一个组还一起研究学习了protel软件,学会了如何绘制电路图。在这其中也碰到了许多困难,我们通过一同协作克服了这些困难。 2、 软件部分-老师曾经教导我们,编程高手花90%时间思考,10%来写。要把思路理清,表达出来,就要画流程图。虽然这次设计的思路看似简单,但编写起来依然感到吃力,因为有个元件我第一次编程的8259,加上中断程序的编写,不仅要写处理程序,还要写现场保护和现场恢复,之前还要写入口地址。对于编程,最好就是参

21、考,于是我就反复看课本上关于中断程序的例子,从中参透,加上上网查找资料和请教师兄,最终完成理论的程序。 3、 团队协作-老师为什么安排我们一组人完成这样一个项目,目的就是让我们能够有这种团队协作的意识。这次我和搭档合作,主要是因为我们曾经有过合作的经验,互相比较了解对方。所以在合作的过程中还是相当顺利的。当一个人出现些许问题的时候,需要开动大家的脑筋去解决这些问题,这些可能是一个人所无法做到的,这也是团队协作意识的精髓吧。 4、 不足之处及建议-本次课设最让我感觉之深的地方就是要学会一门技能,你需要花上相当大的功夫。就比如这次的硬件设计,虽然之前学过一点protel,但是一点需要上手去画的时候

22、,却又不知从何下手。这就是我这次最大的缺陷。学一门技能,要精,要学的扎实才是真本事。 5、 要说有什么建议的话,我觉得我们这个题目很贴近实际,也希望以后能够有更多这样贴近实际的题目出现,这样我们才能做到理论与实际相结合,才能学的更好。6、 对自己的启发:其中在最后的程序测试阶段,先初期测定每一个最小系统是否可行通用,发现显示器无论如何都不显示示数,开始以为自己程序编写错误,后来把最简单的输出程序输入还是不显示,然后检查自己连接的实物图是否发生错误,又检查自己的焊接连线问题,看见其他同学的基本完成,虽然比较着急但也只能耐心查找问题,经过整整一下午的排除问题,最终发现自己在焊接单片机的两个引脚短路,才致使自己的液晶显示器没有示数无法显示。这一件事就告诉我:无论以后做什么事情,都要细致耐心,特别是如果从事被专业相关的工作时更是如此。如果是到了工厂工作那时候一个小小的错误甚至会导致无法估计的经济损失,只更加使我明白认真细致做好一件事情的重要性。五 附(硬件电路图,实物图,实验结果等) -实物图 -硬件电路图 -实验结果 在老师的指导下,通过一系列前期准备工作以及查阅资料、画原理图、选定方案及器材、焊接实物电路板以及最后的调试程序查找问题,最终比较完美的实现汽车倒车测距仪要求的距离显示、报警功能,其中可以检测到2米以内的障碍物,在障碍物在50CM以内和10CM以内时发出不同频率的报警声音。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1