1、超声波测距单片机课程设计报告书 西南科技大学2012级微机原理与接口技术课程设计报告课题名称微机原理与接口技术姓 名学 号院、系、部制造科学与工程学院专 业机械设计制造及其自动化指导教师 2015年7月15日一、设计任务及要求:设计任务: 1、利用AT89S51单片机和超声波测距模块HC-SR04设计一超声波测距器;2、能用LCD1602正常显示;3、具有警报系统;4、做出成功的仿真和实物。要 求: 首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。在确定硬件的基础上,
2、要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明。然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。最后写出设计报告。指导教师签名: 2015年 月 日 三、成绩 指导教师签名: 年 月 日 一、 绪 言4二、系统设计42.1设计任务42.2方案论证与比较4 2.2.
3、1测距原理4 2.2.2 系统整体流程图5 2.2.3 单片机选择方案论证5 2.2.4 显示模块方案论证5三、超声波测距模块HC-SR04介绍6 3.1 主要参数6 3.2超声波测距模块时序图6四、硬件电路设计74.1超声波测距器电路设计74.2最小系统设计电路设计74.3 LCD1602显示电路的设计74.4警报系统电路的设计84.5主要元器件的选择9五、程序流程图10六、 c语言程序设计11 6.1 LCD1602.h头文件11 6.2 主程序文件15七、超声波测距器仿真197.1 Keil调试197.2 Proteus调试19八、结束语20 九、参考文献201、绪 言 超声测距是一种非
4、接触检测技术,不受光线、被测对象颜色等的影响;较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等;对于被测物处于黑暗、有灰尘、烟雾、电磁干扰等恶劣环境有一定的适应能力;超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求。它广泛应用于矿业、化工业、污水处理厂、食品等各行业。例如,食品业中用于水、酒、糖、饮料等液位控制往往也是用超声波检测的。2、系统设计2.1 设计任务 1、利用AT89S51单片机和超声波测距模块HC-SR04设计一超声波测距器;2、能用LCD1602正常显示;3、具有警报系统;4、做出成功的仿真和实物2.2 方案比较与论证2.1
5、测距原理 超声波测距的原理是通过测量超声波在发射后遇到障碍物反射回来的时间并根据发射和接受的时间差及超声波在空气中的传播速度,计算出发射点到障碍物的实际距离。发射器发出的超声波以速度在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由s=0.5*v*t即可算出被测物体的距离。 所以我们的测距的实质是测出超声波往返时间t。2.2.2 系统整体流程图2.2.3 单片机的选择方案论证方案一:采用可编程逻辑期间CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适
6、合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案方案二:采用STC公司的STC89C52RC单片机作为控制器。STC89C52RC是一个低功耗,高性能的51内核的CMOS 8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(RAM),32个IO口,2个16位可编程定时计数器。综合考虑,选择方案二,采用STC公司的STC89C52RC单片机作为控制器。2.2.4显示模块的选择方案论证方案一:采用带字库LCD模块显示。能显示复杂的信息,具有质量轻
7、,体积小,功耗低,指令功能强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机交流。但是价格昂贵。方案二:采用LED数码管显示。数码管能显示数字和符号,但是占用IO口资源较多,对于简单的电路可以选用此方案。超声波测距,需显示单位、解释等信息的字体,所以选用方案一,显示所需信息。3.超声波测距模块(HC-SR04)介绍3.1主要参数超声波测距模块包含超声波发射器和接收器其主要技术参数: 1:使用电压:直流5V 2:静态电流:小于2mA 3:电平输出:高+5V、低0V 4:感应角度:不大于15度 6:探测距离:3cm-450cm 7:精度:0.3cm 8:接线方式:VCC(+5V)、tr
8、ig(控制端)、 echo(接收端)、GND(接地)3.2超声波测距模块时序图(1)采用IO触发测距,给控制端trig至少10us的高电平信号;(2)模块自动发送8个40kHz的方波,自动检测是否有信号返回;(3)有信号返回,接收端(echo)输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。4 硬件电路设计4.1 超声波测距器电路图 注:由于距离不好模拟,Proteus没有超声波测距模块,我们用另一单片机代替超声波测距模块,通过改变其程序来改变距离,图中左下角为代替超声波测距模块的单片机。4.2 最小系统电路的设计 为保证单片机系统能正常工作。STC89C52RC单片机最小系统主要
9、由单片机、外部振荡电路、复位电路和+5V电源组成。 时钟电路:在外部振荡电路中,单片机的XTAL1和XTAL2管脚分别接至由11.0592MHz晶振和两个30pF电容构成的振荡电路两侧,为电路提供正常的时钟脉冲。 复位电路:单片机RST管脚一方面经10uF的电容接至电源正极,实现上电自动复位,另一方面经开关S接电源,实现按键复位。图3 键盘电路4.3 LCD1602显示电路的设计数码管驱动采用8 个共阴极数码管显示, 由于单片机的驱动能力有限,采用74LC245 作为数码管的驱动,在7 段码输出线上串联100 欧姆电阻起限流作用。其电路如图3所示。图4 数码管显示电路4.4 警报电路的设计警报
10、电路设计图5警报电路图4.5 主要元器件选择主要元器件选用型号和数量如表1所示:表1 主要元器件清单序号材料名称规格型号数量元件代号1单片机STC89C52RC1单片机2晶振11.0592MHz1X13电容30PF2C1、C24自锁开关7*715LCD1062双行显示1LCD16轻触开关6*61S7绿色发光二级管3mm1续表1 主要元器件清单8红色发光二级管3mm1D19电阻4702R110电阻2K2R2 11电位器10k1R5 程序流程图 主程序流程图 中断服务程序入口 6 C语言程序设计6.1 LCD1602.h头文件#define uchar unsigned char#define u
11、int unsigned intsbit EN = P34;/定义P3.4为使能端sbit RS = P35;/定义P3.5为数据/命令寄存器选择端sbit RW = P36;/定义P3.6为读/写操作选择端#define DataPort P2/P2口作为数据端口与LCD数据总线DB相连int S=0;/定义距离变量 /* 延时函数*/void delayms(uint i) unsigned int j; for(;i0;i-) for(j=100;j0;j-);/* 写入命令函数*/ void LCD_Write_Com(uchar com) delayms(5); RS=0;/选择命令
12、寄存器 RW=0;/选择写操作 EN=1;/使能LCD DataPort=com;/写入命令 _nop_(); EN=0;/禁止LCD /* 写入数据函数*/ void LCD_Write_Data(uchar Data) delayms(5); RS=1;/选择数据寄存器 RW=0;/选择写操作 EN=1;/使能LCD DataPort= Data;/写入数据 _nop_(); EN=0;/禁止LCD /* 清屏函数*/ void LCD_Clear(void) LCD_Write_Com(0x01);/清楚屏幕显示 delayms(5); /* 写入字符串函数*/ void LCD_Wri
13、te_String(uchar x,uchar y,uchar *s) if (y = 0) LCD_Write_Com(0x80 + x);/数据显示存储地址在第一行第x+1列 else LCD_Write_Com(0xC0 + x);/数据显示存储地址在第二行第x+1列 while (*s)/当指定字符*s的ascii码值不为0时(字符串结束符号的ascii值是0)执行以下循环 LCD_Write_Data( *s);/显示指定的字符 s +;/指针指向的地址加1即在字符串中指针指向下一个字符的地址 /* 写入字符函数*/ void LCD_Write_Char(uchar x,uchar
14、 y,uchar Data) if (y = 0) LCD_Write_Com(0x80 + x);/数据显示存储地址在第一行第x+1列 else LCD_Write_Com(0xC0 + x);/数据显示存储地址在第二行第x+1列 LCD_Write_Data( Data); /* 初始化函数*/ void LCD_Init(void) P2=0X1F; delayms(15); LCD_Write_Com(0x38);/功能设置(8位数据口,双行显示,57点阵) delayms(5); LCD_Write_Com(0x08);/显示开关控制(显示关闭,光标关闭,字符不闪烁) LCD_Wri
15、te_Com(0x01);/显示清屏 LCD_Write_Com(0x06);/输入方式设置(增量方式,不移位) delayms(5); LCD_Write_Com(0x0C);/显示开关控制(显示开,光标关闭,字符不闪烁) LCD_Write_Com(0x01);/显示清屏 /* 主函数*/void disp(void) LCD_Write_String(0,0,Distance - );/显示距离标志LCD_Write_Char(11,0,0+S/100);/显示距离的百位LCD_Write_Char(12,0,0+S%100/10);/显示十位LCD_Write_Char(13,0,0+
16、S%100%10);/显示个位LCD_Write_String(14,0,cm);/显示单位6.2 主程序文件#include#include/包含空指令函数_nop_()#include/LCD1602头文件#define uchar unsigned char#define uint unsigned intsbit trig=P10;/定义P1.0为超声波测距模块输入引脚sbit echo=P11;/定义P1.1为超声波测距模块输出引脚sbit JBD=P12;/P1.2口接警报灯bit flag=0;/成功标志位0表示成功,1表示失败uint time=0;/定义时间变量/* 延时20
17、us多的函数*/yanshi_20us()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/* 延时函数10ms左右*/yanshi_10ms() uint j=500; while(j) j-; yanshi_20us(); /* 延时函数1s左右*/yanshi_1s() uint k=100; for(;k0;k-) y
18、anshi_10ms();/* 主函数*/main() trig=0;/拉低脉冲输入引脚; TMOD=0x01;/设置定时器T0为工作方式1 EA=1;/总中断允许 ET0=1;/T0中断允许 LCD_Init();/初始化(见LCD1602.h头文件) LCD_Clear();/清屏(见LCD1602.h头文件) delayms(20);/延时函数(见LCD1602.h头文件) LCD_Write_String(4,0,Welcome!);/进入欢迎界面(见LCD1602.h头文件) yanshi_1s(); while(1) TH0=0; TL0=0;/定时器0清0 trig=1; yan
19、shi_20us();/给一个20us的脉冲 trig=0; while(echo=0);/等待econ产生高电平,变高后T0开始计时 TR0=1;/打开定时器T0 while(echo=1);/等待econ产生低电平,变低后T0停止计数 TR0=0;/关闭定时器T0 if(flag)/如果失败 flag=0; LCD_Write_String(0,0, Out! );/第一行显示out (见LCD1602头文件) JBD=0;/开启警报灯 else/如果成功 time=TH0*256+TL0;/读取定时器T0的计数时间 S=time*1.88/100;/计算距离(cm),变量S见LCD160
20、2.h头文件 disp();/显示(见LCD1602.h头文件) if(S=450)/如果距离超出范围打开警报灯 JBD=0; else JBD=1; yanshi_10ms();/延时100毫秒,进行下一次测量 /* 中断函数*/void zd0() interrupt 1/T0中断用来定时器溢出,超过测距范围 flag=1;/成功标志置1-失败 7 超声波测距器仿真在完成了电子密码锁硬件设计和软件设计以后,便进入系统的调试阶段。系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。7.1 Keil调试7.2 Proteus调试 8 结束语通过这次课程设计,一方面使得我们学会的单片机基本原理以及C语言程序设计的方法;另一方面,通过做课程设计,使我们学会利用单片机控制一些简单的电子器件,以及运用软件仿真和实际电路板的焊接。9 参考文献1 张毅刚.单片机原理与接口技术M.北京:人民邮电出版社,2011:204-210.2 王毅.单片机器件应用手册M.北京:人民邮电出版社,1995:30-53.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1