单片机课程设计高度检测仪.docx
- 文档编号:7114937
- 上传时间:2023-01-19
- 格式:DOCX
- 页数:20
- 大小:219.84KB
单片机课程设计高度检测仪.docx
《单片机课程设计高度检测仪.docx》由会员分享,可在线阅读,更多相关《单片机课程设计高度检测仪.docx(20页珍藏版)》请在冰豆网上搜索。
单片机课程设计单片机课程设计高度检测仪高度检测仪课题:
高度检测任务书设计内容:
本课题以52系列单片机为核心,设计一个超声波测距系统。
要求用按键控制超声波模块实现对障碍物的测量,并在LCD显示器上显示测量到的距离。
设计要求:
1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;5)应用程序的调试。
一、课题名称.1二、内容摘要.1三、方案论证.2四、单独电路设计34.1键盘接口电路.34.2液晶显示电路44.3超声波驱动电路.54.4电源供电电路.64.5单片机的选择74.6单片机最小系统.9五、完整电路图.10六、系统软件设计.116.1液晶显示.116.2主程序.15七、实验心得.23致谢24参考文献25附录26一、课题名称:
高度检测仪二、内容摘要电子测距仪要求测量范围在0.102.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。
超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于液位、井深、管道长度的测量等场合。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。
本设计采用以STC89C52单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。
整个电路采用模块化设计,由主程序、预置子程序、发射子程序、接受子程序、显示子程序、语音播报子程序等模块组成。
发射模块发射超声波,接受模块接受回波等。
三、方案论证3.1超声波高度仪的设计思路超声波是指频率高于20KHz的机械波。
为了以超声波作为检测手段,必须产生超生波和接收超声波。
完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。
超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。
超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
超声波测距的原理一般采用渡越时间法。
首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。
因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12.0MHZ晶振,所以此系统的测量精度理论上可以达到毫米级。
由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。
利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。
超声波发生器可以分为两类:
一类是用电气方式产生超声波,一类是用机械方式产生超声波。
本课题属于近距离测量,可以采用常用的压电式超声波换能器来实现。
3.2超声波测距仪原理图框图根据设计要求并综合各方面因素,可以采用STC89C52单片机作为主控制器,用动态扫描法实现LCD数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统框图如图1.四、单独电路设计4.1键盘接口设计键盘是人工干预计算机的主要手段,输入数据、查询及控制系统的工作状态,都要用到键盘。
微型计算机所用的键盘可分为编码键盘和非编码键盘两种。
编码键盘采用硬件线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能,这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种。
非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛用。
按键盘与CPU的连接方式可以分为独立式按键和矩阵式键盘,本系统采用独立式键盘,分为四个独立键盘:
液位下限增加键、减少键,液位上限增加键、减少键,键盘接口电路如图2所示。
图2键盘接口电路图4.2液晶显示电路液位显示采用液晶1602显示,显示容量为16*2个字符,工作电压在4.55.5V,字符尺寸2.95*4.35(WXH)mm,更直观的反映液位的变化,范围从204000(单位mm),更方便对高度范围的设置。
图3是显示电路的原理图。
图3显示电路原理图4.3超声波驱动电路HC-SR04超声波测距模块可提供2cm-400cm的非接触距离感测功能,测距精度可高达3mm;模块包括超声波发射器、接收器与控制电路。
采用IO口TRIG触发测距,模块发送8个40kHZ的方波,自动检测信号返回,测试距离=(发送到返回时间差*声速340M/S)/2。
原理图如图4所示。
图4超声波驱动原理图4.4电源供电电路由于本系统单片机及其他芯片的工作电压在4.5-5.5V之间,而供电的电压为12V远远超过其工作电压,需要通过此电路进行转换。
如图5所示图5电源供电电路原理图4.5单片机的选择本文选用STC89C52RC单片机,STC89C52RC是一种带8K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100000次以上。
AT89C51是一种带4K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,STC89C52RC是它的一种升级版本。
STC89C52RC单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:
与MCS-51兼容8K字节可编程闪烁存储器寿命:
100000写/擦循环数据保留时间:
10年全静态工作:
0Hz-80MHz三级程序存储器锁定2568位内部RAM32可编程I/O线两个16位定时器/计数5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路如图6是STC89C52单片机的示意图图6STC89C52单片机示意图4.6单片机最小系统其作用主要是为了保证单片机系统能正常工作。
如图7所示,单片机最小系统主要由STC89C52单片机、外部振荡电路、复位电路和+5V电源组成。
在外部振荡电路中,单片机的XTAL1和XTAL2管脚分别接至由12MHZ晶振和两个30PF电容构成的振荡电路两侧,为电路提供正常的时钟脉冲。
图7单片机最小系统五、完整电路图六、系统软件设计主程序模块要做的主要工作是上电后对系统初始化和构建系统整体软件框架,其中初始化包括对单片机的初始化和串口初始化等。
本次课题软件方面的程序包括主程序和液晶显示程序。
6.1液晶显示模块#defineucharunsignedchar#defineuintunsignedint/LCD管脚声明sbitLCDRS=P20;sbitLCDEN=P21;/初始画时显示的内容ucharcodeInit1=IN:
0000MM-0000MM;ucharcodeInit2=LevelNOW:
0000MM;/LCD延时voidLCDdelay(uintz)uintx,y;for(x=z;x0;x-)for(y=10;y0;y-);/写命令voidwrite_com(ucharcom)LCDRS=0;P0=com;LCDdelay(5);LCDEN=1;LCDdelay(5);LCDEN=0;/写数据voidwrite_data(uchardate)LCDRS=1;P0=date;LCDdelay(5);LCDEN=1;LCDdelay(5);LCDEN=0;/1602显示voidinit_1602()uchari=0;write_com(0x38);/屏幕初始化write_com(0x0c);/打开显示无光标无光标闪烁write_com(0x06);/当读或写一个字符是指针后一一位write_com(0x01);/清屏write_com(0x80);/设置位置for(i=0;i16;i+)write_data(Init1i);write_com(0x80+3);write_data(0+LEVEL_one/1000);write_data(0+LEVEL_one%1000/100);write_data(0+LEVEL_one%1000%100/10);write_data(0+LEVEL_one%1000%100%10);write_com(0x80+10);write_data(0+LEVEL_two/1000);write_data(0+LEVEL_two%1000/100);write_data(0+LEVEL_two%1000%100/10);write_data(0+LEVEL_two%1000%100%10);write_com(0x80+40);/设置位置for(i=0;i16;i+)write_data(Init2i);write_com(0x80+0x40+10);write_data(0+VALUE0);write_data(0+VALUE1);write_data(0+VALUE2);write_data(0+VALUE3);voiddisplay_1602()write_com(0x80+3);write_data(0+LEVEL_one/1000);write_data(0+LEVEL_one%1000/100);write_data(0+LEVEL_one%1000%100/10);write_data(0+LEVEL_one%1000%100%10);write_com(0x80+10);write_data(0+LEVEL_two/1000);write_data(0+LEVEL_two%1000/100);write_data(0+LEVEL_two%1000%100/10);write_data(0+LEVEL_two%1000%100%10);write_com(0x80+0x40+10);write_data(0+VALUE0);write_data(0+VALUE1);write_data(0+VALUE2);write_data(0+VALUE3);voiddisplay_NNNN()write_com(0x80+3);write_data(0+LEVEL_one/1000);write_data(0+LEVEL_one%1000/100);write_data(0+LEVEL_one%1000%100/10);write_data(0+LEVEL_one%1000%100%10);write_com(0x80+10);write_data(0+LEVEL_two/1000);write_data(0+LEVEL_two%1000/100);write_data(0+LEVEL_two%1000%100/10);write_data(0+LEVEL_two%1000%100%10);write_com(0x80+0x40+10);write_data(N);write_data(O);write_data(N);write_data(O);6.2主程序#include/器件配置文件#includeunsignedintLEVEL_one=40,LEVEL_two=60;unsignedintVALUE4=0,0,0,0,;#includesbitRX=P17;sbitTX=P16;sbitKEY0=P10;sbitKEY1=P11;sbitKEY2=P12;sbitKEY3=P13;sbitMOTOR_one=P14;/排水水泵sbitMOTOR_two=P15;/进水水泵voidDelay5Ms(void);voidDelay400Ms(void);unsignedinttime=0;unsignedlongintS=0;unsignedcharflag=0,sign;/400ms延时voidDelay400Ms(void)unsignedcharTempCycA=5;unsignedintTempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-);/*/voidConut(void)time=TH0*256+TL0;TH0=0;TL0=0;S=(time*2.15)/10;/算出来是MMif(S=7000)|flag=1)/超出测量范围显示“-”flag=0;sign=1;elseVALUE0=S%10000/1000;VALUE1=S%10000%1000/100;VALUE2=S%10000%1000%100/10;VALUE3=S%10000%100%100%10;/*/voidtime_init()TMOD=0x01;/设T0为方式1,GATE=1;TH0=0;TL0=0;ET0=1;/允许T0中断EA=1;/开启总中断/*/voidStartModule()/启动模块TX=1;/启动一次模块_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=0;/*/voiddelayms(unsignedintms)unsignedchari=100,j;for(;ms;ms-)while(-i)j=10;while(-j);/*/voidmain(void)P0=0x00;time_init();init_1602();Delay400Ms();/启动等待,等LCM讲入工作状态while
(1)StartModule();while(!
RX);/当RX为零时等待TR0=1;/开启计数while(RX);/当RX为1计数并等待TR0=0;/关闭计数Conut();/计算if(S%10000)LEVEL_two)MOTOR_one=0;MOTOR_two=1;/进水elseMOTOR_one=1;MOTOR_two=1;if(KEY0=0)while(KEY0=0);if(LEVEL_one+1)(LEVEL_one+14)LEVEL_two-;if(LEVEL_two=50)LEVEL_two=80;if(sign=0)display_1602();elsedisplay_NNNN();sign=0;delayms(10);/80MS/*/voidtimer0()interrupt1/T0中断用来计数器溢出,超过测距范围TH0=0;TL0=0;flag=1;/中断溢出标志七、实验心得此次实验花费的心神较多,首先是设计电路,然后是单片机代码,由于我做的是高度仪,通过超声波来实现的,无法在单片机上仿真。
在做实验期间挫折不断,但是在有一点成功后就会有无与伦比的喜悦,很有成就感。
通过自己的努力,最终圆满完成了本次实验,结果很理想。
致谢在这次超声波高度仪设计的过程中,我得到了许多人的帮助。
首先我要感谢的是我的老师,在课程设计上给了我各方面的指导,这是我能顺利完成这次报告的首要条件。
更重要的是帮我解决了许多技术上的难题,让我能把系统做的更加完善。
在此期间,我不仅学到了许多的新知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢我的同学,他们也为我解决了不少的设计难题。
这次课程设计让我明白了一个道理,个人英雄主义精神自然可贵,但我发现,个人最终还是离不开集体。
参考文献【1】黄智伟.全国大学生电子设计竞赛系统设计【M】.北京航空航天大学出版社,2006.【2】张永瑞.电子测量技术基础【M】.西安电子科技大学出版社,1994.【3】张谦琳.超声波检测原理和方法.北京:
中国科技大学出版社,1993.10【4】九州.放大电路实用设计手册.沈阳:
辽宁科学技术出版社,2002.5【5】樊昌元,丁义元.高精度测距雷达研究.电子测量与仪器学报,2000.10【6】苏伟,巩壁建.超声波测距误差分析.传感器技术,2004.【7】恒清,张靖.加强单片机系统抗干扰能力的方法.通化师范学院学报,2004.10【8】晗晓,袁慧梅.单片机系统的印制板设计与抗干扰技术.电子工艺技术,2004.6附录材料清单STC89C52芯片1个上拉电阻1个LCD显示1个超声波模块1个开关4个滑动变阻1个电容2个30pF晶振1个12MHZ电阻2个1KLEDD灯2个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 高度检测仪 单片机 课程设计 高度 检测