基于单片机的超声波视力保护仪的设计_第1页
基于单片机的超声波视力保护仪的设计_第2页
基于单片机的超声波视力保护仪的设计_第3页
基于单片机的超声波视力保护仪的设计_第4页
基于单片机的超声波视力保护仪的设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编号2021301157毕业设计(2021届本科)设计题目:基于单片机的超声波视力保护仪的设计学院:电气工程学院专业:电气工程及其自动化班级:11级电气(1)班作者姓名:XXX指导教师:XXX职称:讲师完成日期:年月日目录TOC\o"1-1"\h\u17582陇东学院本科生毕业设计诚信声明 (1)20707基于单片机的超声波视力保护仪的设计 (2)8491摘要 (2)13705关键词 (2)31993Abstract (2)72911引言 (3)46571.1研究的背景 (3)213251.2研究的主要内容 (3)31811.3应解决的关键问题 (4)5472总体方案设计 (4)149562.1硬件设计 (5)39072.1.1电源稳压电路设计 (5)311902.1.2主控制器模块 (5)62142.1.3光照强度检测模块 (5)56762.1.4报警提示模块 (5)301562.1.5坐姿检测模块 (5)235892.1.6显示模块 (5)96972.2最终方案 (6)279113硬件实现及单元电路设计 (6)67723.1主控制模块 (6)31169。 (6)52583.3蜂鸣器报警驱动电路 (7)30213.4按键电路 (8)148743.5光照强度检测电路 (8)292183.6显示模块 (9)173303.7超声波坐姿测距模块 (9)232313.8定时报警电路 (11)185144系统软件设计方案 (11)96274.1系统主程序流程图 (12)84875系统分析 (13)92115.1测试结果及误差分析 (13)276557优点和不足 (14)20343结论 (15)10972参考文献 (15)7739致谢 (16)12133附录1总电路图 (17)1608附录2成品展示 (18)15853附录3(单片机C源程序清单) (19)陇东学院本科生毕业设计诚信声明本人郑重声明:所呈交的本科毕业设计,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承当。作者签名:二O一五年月日基于单片机的超声波视力保护仪的设计XXX,吴志荣(陇东学院电气工程学院甘肃庆阳745000)摘要:本设计主要内容是人体视力与桌面距离检测电路的设计与制作,该电路的工作原理是由AT89C52单片机为控制的核心部分,通过超声波传感器测距,能实现使用者距离与学习时间进行定时并通过报警来提示时间已到的功能和使用者注意用眼卫生的功能。通过LCD显示各种参数信息,并能在线修改各个参数初值来适应不同使用者的需求。软件利用C语言进行编程,并采用模块化的设计思路。该系统具有简单实用的特征,对青少年视力保护具有很好的效果。本设计通过实践证明该视力保护器可行且可靠性很好,使用方便。本设计期望通过该电子的制作和理论的研究,能为后期进一步设计多功能视力保护器并采取合理措施提高视力保护的有效性提供可靠和有效的数据源和信息依据。关键词:单片机;液晶显示;报警;测距Ultrasonicdistancemeasurementbasedonsinglechip

ZHAOXue-qin,WUZhi-rong(ElectricalEngineeringCollege,longdongUniversity,Qingyang745000,Gs)Abstract:Thisdesignisthemaincontentofhumanvisionanddesktopdistancedetectioncircuitdesignandproduction,theworkingprincipleofthecircuitiscontrolledbyAT89C51singlechipmicrocomputerasthecore,throughtheultrasonicsensorrange,canrealizeuserdistanceandthelearningtimefortimingandbythetimehascometopromptthealarmfunctionanduserattentionwitheyehealthfunction.ThroughtheLCDdisplayvariousparameters,andcanmodifytheparametersoftheinitialvalueon-linetomeettheneedsofdifferentusers.SoftwareusingClanguageprogramming,andUSESthemodulardesignthinking.Thesystemhasthecharacteristicsofsimpleandpractical,hastheverygoodeffecttoteenagersvisionprotection.Thisdesignthroughthepracticehasprovedthevisionprotectorfeasibleandgoodreliability,easytouse.Thisdesignexpectationsthroughthetheoreticalstudyoftheelectronicproductionandlateforfurtherdesignofmultifunctionalvisionprotectorandtakereasonablemeasurestoimprovetheeffectivenessofeyeprotectiontoprovidereliableandeffectivedataandinformationbasis.Keywords:microcontroller;LCDdisplay;alarm;ranging1引言1.1研究的背景单片机技术的迅速兴起与蓬勃发展,其稳定、安全、高效、经济等优点十分突出,所以其应用也十分广泛。单片机已经无处不在、与我们生活息息相关,并且渗透到生活的方方面面,如空调、VCD机、、微波炉、自动洗衣机及汽车电子设备等。单片机的特点是体积较小,也就是其集成特性,其内部结构是普通计算机系统的简化,增加一些外围电路,就能够组成一个完整的小系统,单片机具有很强的可扩展性。它具有和普通计算机类似的、强大的数据处理功能,通过使用一些科学的算法,可以获得很强的数据处理能力。所以单片机在工业应用中,可以极大地提高工业设备的智能化、数据处理能力和处理效率,而且单片机无需占用很大的空间。当前由于电视、网络的高速发展、学习压力的加重等诸多因素,使得青少年长时间不卫生、超负荷用眼,造成了青少年近视率大大提高。据国家统计局最近的一项调查显示,目前我国学生视力低下的状况令人担忧。小学生近视比例为34%,初中生为68%,重点高中生为90%左右,在校大学生视力合格者更少。而在高考体检中由于自身缺陷原因被限考的学生当中有74%为近视。据卫生部、教育部联合调查,目前我国学生近视发病率居世界第二,人数居世界之首,全国近视及眼疾患者近3亿人,已经成为全社会关注的公共卫生和社会问题。视力下降不仅影响青少年的日常生活和学习,对青少年的身心健康造成极大的影响,同时给青少年的成长与发育造成极大的障碍。在这种情况下,亟须开发一种智能视力保护器。通过创造健康的读写环境和科学方式,避免因长期读写而导致的近视、驼背、脊柱侧弯、斜视、颈椎病等疾病的发生和发展,用非医药的手段,防范和解除不良读写习惯,避免给人们身体带来伤害。1.2研究的主要内容自1992年全国防近视专家指导小组成立以来,防近视产品经历了一个由简单到复杂、由单一到多元、由科技含量低到科技含量高的历程。在此基础上,科学家们进行了大量艰苦的研制开发工作,推向市场的产品多达几百种,给防近视工作带来了无限的生机。在国内新疆乌鲁木齐市旭之龙科技生产的“学生1.5视力保护器”又名称坐视宝,它能对使用者的坐姿不当进行提示。还有深圳市华恒电子生产的型号为MS-3023的坐姿矫正器。可以纠正看书,写字的不良坐姿。总体看来,国内生产的视力保护器功能特点比拟单一,与人们的个性化需求尚有很大的差距,故不能很好的满足广阔使用者的需求。国外也致力于对保护视力的研究,但是他们更侧重于对近视原因的研究。美国德克萨斯大学西南医学中心何于光博士表示,吃鱼和新鲜蔬菜能够保护视力,降低发生近视的概率。他们认为通过合理的饮食营养搭配,以及正确的学习习惯,对视力的保护能起到事半功倍的作用。研究证明,现有的产品只是侧重视力保护的单一方面,功能尚不全面,不能从多个角度保护使用者的视力。课题由51单片机最小系统、超声波测距模块、显示电路、温度传感器等组成。利用超声波测距模块HC-SR04测量距离,并对数据进行分析处理,传给51单片机,再通过1602LCD显示出来,同时电源部分采用5V直流电源。1.3应解决的关键问题1、对主要硬件电路设计、制作实物时拟解决的关键问题是:温度等外界干扰对测距精度的影响。2、超声波测距采用软件编程实现,通过仿真验证其正确性。2总体方案设计系统采用STC89C52单片机作为多功能视力保护器的核心控制单元,本系统通过光敏电阻采集光线信号,通过AD采集光线信号的强弱,把光线强度等级化,通过设定报警等级来实现报警;利用超声波测距传感器测出人脸部与桌面的距离,当小于设定距离时发出报警声提醒;通过单片机内部定时器计时,当使用达到45分钟时电路自动发出声音提示,提醒使用者注意休息;系统采用的报警电路由三极管驱动蜂鸣器组成。。STC89C52STC89C52超声波模块复位电路晶振电路蜂鸣器报警模块光线强度检测模块按键模块电源供电模块图2.1系统总体方框图2.1硬件设计2.1.1电源稳压电路设计本系统采用电池供电,我们考虑了如下方案为系统供电:电源电压通过7805稳压芯片为单片机及其它模块提供+5V电压。经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。2.1.2主控制器模块系统采用STC89C52单片机作为智能视力保护器的核心控制单元,充分分析系统,其关键在于实现系统的自动报警与提醒,处理超声波测得的信号,以及处理光照强度信息,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源、有较为强大的控制功能和运算功能,I/O口均可按位寻址,同时STC89C52单片机价格非常低廉,这是一种较为理想的方案。2.1.3光照强度检测模块光强检测系统采用光敏电阻。光敏电阻的工作原理是当有光线照射时,电阻内原本处于稳定状态的电子受到激发,成为自由电子,所以光线越强,产生的自由电子也就越多,电阻就会越小。光敏电阻的优点有内部的光电效应和电极无关,即可以使用直流电源。灵敏度和半导体材料、以及入射光的波长有关,价格低廉,性价比高。2.1.4报警提示模块报警系统采用蜂鸣器报警。蜂鸣器,体积小,重量轻,装配简单,使用方便。价格实惠,对推动视力保护器的普及有很好的优势,能够较好的满足设计的要求。2.1.5坐姿检测模块坐姿检测系统采用超声波传感器测距,通过测量人脸与桌面的距离来确定坐姿。当距离小于设定距离时就发出警报提醒。超声波传感器体积小,重量轻,使用方便。价格实惠,是一种较为理想的方案。2.1.6显示模块显示界面采用LCD1602液晶进行显示。LCD1602由于其显示清晰,显示内容丰富、清晰,显示信息量大,使用方便,显示快速而得到了广泛的应用。在本设计中很好的发挥其优势。2.2最终方案经过反复论证,我们最终确定了如下方案:(1)电源采用6节5号电池。(2)采用STC89C52单片机作为主控制器。(3)用光敏电阻检测光照强度。(4)用超声波传感器检测坐姿。(5)用LCD1602液晶显示。(6)用蜂鸣器实现报警。3硬件实现及单元电路设计。图3.1单片主控电路(1)中央处理器(CPU)。它是单片机的核心,包括运算器和控制器两个主要组成部分,用于实现运算和控制功能。(2)数据存储器。89C52单片机芯片数据存储器共有128个存储单元,用于存放可读写的数据。(3)定时器/计数器。89C52单片机共有两个位的定时器/计数器,以实现定时和计数功能。(4)并行I/O口。89C52单片机共有四个8位的I/O口(即P0、P1、P2和P3),用以完成数据的并行输入/输出。(5)串行I/O口。89C52单片机有一个全双工串行口,以实现单片机和其他计算机或设备之间的串行数据传送。(6)程序存储器。(7)中断控制系统。3.2电源电路设计所示。图3.2电源电路电源采用7805稳压芯片稳压成5V给传感器,单片机供电。3.3蜂鸣器报警驱动电路所示。图3.3报警电路蜂鸣器采用三极管驱动,当实际的距离小于设定的距离或实际的光强小于设定值时就会报警。3.4按键电路所示。图3.4按键电路第一个键:设置键,能在测距和光强功能间转换第二个键:加键(设置界面)/学习时间清零键(正常显示界面)第三个键:减键(设置界面)/暂停学习键(正常显示界面)第四个键:开始学习键3.5光照强度检测电路光照强度检测电路所示。图3.5光照采集电路3.6显示模块所示。图3.6显示电路显示模块显示的超声波测距模块测的距离、显示的光线强度、显示学习的时间。3.7超声波坐姿测距模块测距模块采用HC-SR04超声波测距模块,该模块可提供2cm-250cm的非接触式距离感测功能,测距精度可达高到3mm。模块包括超声波发射器、接收器与控制电路。基本工作原理:采用IO口TRIG触发测距,给至少10us的高电平信号;模块自动发送8个40KHZ的方波,自动检测是否有信号返回;有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。实物如下图3.7所示。其中VCC供5V电源,GND为地线,TRIG触发控制信号输入,ECHO回响信号输出等四支线。图3.7超声波模块实物常见的超声波传感器多为开放型,其内部结构如图3.8所示,一个复合式振动器被灵活地固定在底座上。该复合式振动器是由谐振器以及一个金属片和一个压电陶瓷片组成的双压电晶片元件振动器。谐振器呈喇叭形,目的是能有效地辐射由于振动而产生的超声波,并且可以有效地使超声波聚集在振动器的中央部位。当电压作用于压电陶瓷时,就会随电压和频率的变化产生机械变形。另一方面,当振动压电陶瓷时,则会产生一个电荷。利用这一原理,当给由两片压电陶瓷或一片压电陶瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。相反,当向双压电晶片元件施加超声振动时,就会产生一个电信号。图3.8超声波传感器内部结构图超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中入射波入射波反射波S=C×1/2障碍物障碍物图3.9避障原理3.8定时报警电路报警电路分为单片机控制电路和报警发声电路。它主要通过单片机的定时计数功能完成定时45分钟并使报警电路发出报警声,用以提醒学生休息。89c52单片机内有两个可编程的定时器/计数器,满足诸如对外部脉冲进行记数,产生精确的定时时间,作串行口的波特性发生器等功能的需要。它们具有两种工作模式(计数器模式和定时器模式)及4种工作方式(方式0,方式1,方式2,方式3)。。4系统软件设计方案该方案的编程思路是先确定主程序,之后根据各硬件电路功能来设计子程序模块,最后再将各模块嵌入主程序中。这样编程结构简单,由于子程序模块与硬件电路一一对应,所以调试起来十分方便。4.1系统主程序流程图所示。是否是否小于设定光照是否小于设定距离是否到设定时间系统初始化报警Y开始N当系统开始工作后,首先进行初始化。然后进行对光照、距离、定时的判定,若光照、距离、定时超出设定值,进入报警系统,报警结束后返回继续判断。若未达到,直接返回去再判定。4.2系统子程序流程图如图4.2所示为超声波模块测距功能流程图。测距功能开始后,首先判断定时是否到1s,如果已到1s,则超声波发射标志位置1,启动超声波发射,并开启定时器T1和外部中断0。若不到1s,则返回继续计时。如果外部中断被触发,则表示接收到了回波,停止定时器T1,计算距离。若外部中断未被触发,则返回继续发射超声波。计算距离时,如果算得距离小于设定距离,则报警。若算得距离大于设定距离,则返回主程序进行下一功能。5系统分析5.1测试结果及误差分析对所要求测量范围2cm-300cm内的平面物体做了50次测量测试结果如下表实距(cm)51520253035404550556065707580859095100105110测距(cm)51520253036404550556065707480869096101106110实距(cm)115120125130135140145150155160165170175180185190195测距(cm)116121124130136141146151155159166171175181186191197实距(cm)200205210215220225230235240245250255测距(cm)202207212217223227233236242246253257误差分析通过对上表的综合分析得出如下结果:最大误差为3cm,最小误差为0cm,进一步分析得知平均误差为0.92cm,在0-100cm内,平均误差为0.2cm,在101-200cm内误差为0.85,在201-260cm内平均误差为1.1cm,可见测量范围的增大平均误差也随之增大。鉴于使用者对智能视力保护器的测量距离要求为30cm左右,而在实际对智能视力保护器测试当中,发现在20-40cm距离范围内误差为0.2cm,较好地体现出来视力保护器的实用性。7优点和不足本设计的优点:(1)该设计能清晰、及时的显示使用者的使用指数;(2)该设计根据个人需求可对光照和距设置;(3)该设计电路结构简单,本钱低廉,不易发生故障,且损坏时易修复;(4)该设计电路模块化,采用C语言编程,易修改和挪用,可以运用到其他控制器的设计,具有实用性。本设计的不足:(1)该设计测定的光强、和距离与实际光强、和距离有一定的误差,有待进一步改进;(2)该设计的对长时间看电视、电脑,玩也是造成近视重要因素,本设计对这一因素考虑较少。结论本次设计在硬件上完成了一个STC89C52单片机的视力保护器的设计,并在此平台上用单片机C语言进行软件设计,经过测试,基本满足设计目标,可以完成各项基本功能。本系统开发空间大,使用灵活,便于用户扩展功能。本文创新点主要为利用单片机设计视力保护器的思想,增加了单片机在现实生活中的应用。利用光敏电阻电路检测光照,通过超声波传感器模块帮助学生保持正确坐姿进而校正其视力,简单方便且不会产生系统稳定性方面的问题;尽可能发挥系统优势,可以方便向其他功能扩展,也就是利用平台优势可以衍生更多功能。当然,由于时间关系,本次设计不足之处。比方说随着科技的飞速发展,众多电子产品进入我们的生活,如长时间看电视、电脑,玩也是造成近视重要因素,本设计对这一因素考虑较少。该设计通过该电子硬件的制作和理论的研究,能为后期进一步设计智能视力保护器并采取合理措施提高视力保护的有效性提供可靠和有效的数据源和信息依据。参考文献[1]家庭电子2021年合订本.[J],2021.212-214[2][3][4][5][6][7][8][9][M].西安:西安电子科技大学出版社,2021[10][M][11][M].北京:电子工业出版社。2021,6[12][M].北京:中国电力出版社,2021致谢首先要感谢学校给我提供了做这个系统的时机,感谢学校的各位领导和老师一直以来对我的教导和帮助。其次感谢指导老师,给我进行了很多的辅导,不仅在技术上给了我很大帮助,也在系统需求和设计方面给予了我很大帮助。指导老师的谆谆教导,使我受益匪浅。老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,给以终生受益无穷之道。我对老师的感激之情是无法用言语表达的。还要感谢我的同学,是你们在我平时设计和论文中与我一起探讨问题,并指出我设计上的误区,使我能及时的发现问题把设计顺利的进行下去,没有你们的帮助我不可能这样顺利地结稿,在此表示深深的谢意。附录1总电路图附录2成品展示附录3(单片机C源程序清单)//宏定义#defineucharunsignedchar#defineuintunsignedint#defineULintunsignedlongint//温度零上与零下的标志位charflag=0;//超声波charflags=0;//超声波距离charflag1s=0;//计算定时间uinttime=0;//计算距离ULintL_=0;//温度uintt_=0;//显示模式0正常1最大值调整2最小值调整ucharmode=0;uintMax=40;uintMin=0;//按键标志uchark=0;//数值有误ucharFW=0;//头函数#include<reg52.h>#include<intrins.h>#include"BJ_Key.h" //报警按键#include"display.h" //显示头函数#include"ultrasonic_wave.h"//超声波头函数#include"DS18B20.h" //温度传感器头函数//函数声明voiddelayms(uintms);//主函数voidmain(){ Init_ultrasonic_wave(); //屏幕初始化 Init1602(); //温度初始化 tmpchange(); t_=tmp(); tmpchange(); t_=tmp(); tmpchange(); t_=tmp(); //循环显示 while(1) { Key(); //正常显示 if(mode==0) { StartModule();//启动超声波 while(!RX); //当RX为零时等待 TR0=1; //开启计数 while(RX); //当RX为1计数并等待 TR0=0; //关闭计数 delayms(20);//20MS tmpchange();//温度转换 t_=tmp();//度温度 Conut(t_/10);//计算距离 if(L_>Max||L_<Min) Display_1602(t_/10,L_); } //调整显示 elseif(mode!=0) { //最大最小值 Init_MaxMin(); while(mode!=0) { Key(); if(k==1&&mode==1) { Init_MaxMin(); write_com(0x8d);//设置位置 } elseif(k==1&&mode==2) { Init_MaxMin(); write_com(0x8d+0x40);//设置位置 } k=0; } //界面初始化 Init1602(); } }}voiddelayms(uintms){ uchari=100,j; for(;ms;ms--){ { j=10; while(--j); } }}//T0中断用来计数器溢出,超过测距范围voidCJ_T0()interrupt1{flags=1; //中断溢出标志}//LCD管脚声明sbitLCDRS=P2^7;sbitLCDEN=P2^6;//初始画时显示的内容ucharcodeInit1[]="Temperature:C";ucharcodeInit2[]="Distance:000CM";//初始画时显示的内容ucharcodeInit3[]="Max------CM";ucharcodeInit4[]="Min------CM";//LCD延时voidLCDdelay(uintz){uintx,y;for(x=z;x>0;x--)}//写命令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初始化voidInit1602(){uchari=0;write_com(0x0C);//打开显示无光标无光标闪烁write_com(0x06);//当读或写一个字符是指针后一一位write_com(0x01);//清屏write_com(0x80);//设置位置for(i=0;i<14;i++){ write_data(Init1[i]);} write_data(0xdf); write_data(Init1[14]);write_com(0x80+40);//设置位置for(i=0;i<16;i++){ write_data(Init2[i]);}}//温度距离显示voidDisplay_1602(ucharW,uintL){ //温度值显示 write_com(0x80+12); write_data('0'+W%10); //长度值显示 if(flag1s==1) { write_com(0x80+0x40+0x0a); write_data(''); write_data('0'+L/100); write_data('0'+L/10%10); write_data('0'+L%10); } elseif(flag1s==0) { write_com(0x80+0x40+0x0a); write_data('-'); write_data('-'); write_data('-'); write_data('-'); }}//1602初始化最大化最小化调整界面voidInit_MaxMin(){uchari=0;write_com(0x38);//屏幕初始化write_com(0x0f);//打开显示无光标无光标闪烁write_com(0x06);//当读或写一个字符是指针后一一位write_com(0x01);//清屏write_com(0x80);//设置位置for(i=0;i<16;i++){ write_data(Init3[i]);}write_com(0x80+40);//设置位置for(i=0;i<16;i++){ write_data(Init4[i]);}write_com(0x8b);//设置位置 write_data('0'+Max/100); write_data('0'+Max/10%10); write_data('0'+Max%10);write_com(0x80+0x40+0x0b);//设置位置 write_data('0'+Min/100); write_data('0'+Min/10%10); write_data('0'+Min%10);write_com(0x8d);//设置位置 }#defineucharunsignedchar#defineuintunsignedint//defineinterface定义DS18B20接口sbitDS=P1^4;//variableoftemperatureuinttemp=0;//延时子函数//signoftheresultpositiveorvoiddelay(uintcount){ uinti; while(count){i=200;while(i>0)i--;count--;}}//发送初始化及复位信号voiddsreset(void){ //DS18B20初始化uinti;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;}//readabit读一位bittmpreadbit(void){uinti;bitdat; //i++fordelay小延时一下DS=0;i++;DS=1;i++;i++;i=8;while(i>0)i--;return(dat);}//readabytedate读一个字节uchartmpread(void){uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit(); //读出的数据最低位在最前面,这样刚好 //一个字节在dat里dat=(j<<7)|(dat>>1);} //将一个字节数据返回return(dat);}//writeabytetods18b20//写一个字节到DS18B20里voidtmpwritebyte(uchardat){uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)//write1写1部分{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;//write0写0部分i=8;while(i>0)i--;DS=1;i++;i++;}}}//DS18B20beginchange发送温度转换命令voidtmpchange(void){dsreset();//初始化DS18B20delay(1);//延时tmpwritebyte(0xcc);//跳过序列号命令tmpwritebyte(0x44);//发送温度转换命令}//getthetemperature获得温度uinttmp(){floattt=0;uchara=0,b=0;dsreset();delay(1); //发送读取数据命令tmpwritebyte(0xcc);tmpwritebyte(0xbe); //连续读两个字节数据a=tmpread();b=tmpread(); //twobytecomposeaintvariable //两字节合成一个整型变量。temp=b;temp<<=8; if(b==0xff) { flag=1; temp=~temp+1; } //得到真实十进制温度值,因为DS18B20 tt=temp*0.0625;//可以精确到0.0625度,所以读回数据的最低位代表的是//0.0625度。 //放大十倍,这样做的目的将小数点后第一位temp=tt*10+0.5;//也转换为可显示数字,同时进行一个四舍五入操作。 //返回温度值returntemp;}//超声波管脚定义sbitRX=P2^1;sbitTX=P2^0;//超声波初始化voidInit_ultrasonic_wave(){ TX=0; //关闭发射 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;}//计算不同温度下的速度voidJS_(ucharWD){ //大于-30 if(WD>=30&&flag==1) { L_=(time*3.13)/200;//算出来是CM; } //大于-20<-30 elseif(WD>=20&&WD<30&&flag==1) { L_=(time*3.19)/200;//算出来是CM; } //大于-10<-20 elseif(WD>=10&&WD<20&&flag==1) { L_=(time*3.25)/200;//算出来是CM; } //大于0<-10 elseif(WD>=0&&WD<10&&flag==1) { L_=(time*3.23)/200;//算出来是CM; } //大于0<10 elseif(WD<=10&&WD>0&&flag==0) { L_=(time*3.38)/200;//算出来是CM; } //大于20<30 elseif(WD<=30&&WD>20&&flag==0) { L_=(time*3.49)/200;//算出来是CM; } //大于30 elseif(WD>30&&flag==0) { L_=(time*3.86)/200;//算出来是CM; }}//距离计算SD为当时的超声速度voidConut(ucharWD){ time=TH0*256+TL0; TH0=0; TL0=0; JS_(WD); //距离大于200或者超时 if(L_>200||flags==1) { flags=0; //无效显示 flag1s=0; L_=0; Feng_Start(); } //距离小于100 elseif(L_<=200) { flag1s=1; FW=1; Feng_Stop(); }}//管脚声明sbitFeng=P1^0;sbitK1=P1^1;sbitK2=P1^2;sbitK3=P1^3;//蜂鸣打开voidFeng_Start(){ Feng=0;}//蜂鸣关闭voidFeng_Stop(){ Feng=1;}//等待voiddelay_key(){for(i=0;i<200;i++) for(j=0;j<200;j++);}//按键检测voidKey(){ //功能键按下 if(K1==0) { Feng_Start();//蜂鸣器开 delay_key();//消抖 while(K1==0);//等待松手 Feng_Stop();//蜂鸣器关闭 mode++;//模式++ if(mode==3) //达到最大限度归为 mode=0; k=1; //按键标志位 } //+键 elseif(K2==0) { Feng_Start();//蜂鸣器开 delay_key();//消抖 Feng_Stop();//蜂鸣器关闭 //最大值调整 if(mode==1)//在最大值调整下 { Max++; //调整最大值 if(Max==201)//到达51归为50 { Max=200; } } //最小值 elseif(mode==2)//最小模式下调整 { Min++; //调整最小值if(Min>Max)//最小值不能大于最大值 { Min=Max;} } k=1; } //-键 elseif(K3==0) { while(K3==0); Feng_Stop(); //最大值调整 if(mode==1) { Max--; { Max=Min; } } //最小值 elseif(mode==2) { Min--; if(Min==0xff) { Min=0; } } k=1; }}

论大学生写作能力写作能力是对自己所积累的信息进行选择、提取、加工、改造并将之形成为书面文字的能力。积累是写作的基础,积累越厚实,写作就越有基础,文章就能根深叶茂开奇葩。没有积累,胸无点墨,怎么也不会写出作文来的。写作能力是每个大学生必须具备的能力。从目前高校整体情况上看,大学生的写作能力较为欠缺。一、大学生应用文写作能力的定义那么,大学生的写作能力究竟是指什么呢?叶圣陶先生曾经说过,“大学毕业生不一定能写小说诗歌,但是一定要写工作和生活中实用的文章,而且非写得既通顺又扎实不可。”对于大学生的写作能力应包含什么,可能有多种理解,但从叶圣陶先生的谈话中,我认为:大学生写作能力应包括应用写作能力和文学写作能力,而前者是必须的,后者是“不一定”要具备,能具备则更好。众所周知,对于大学生来说,是要写毕业论文的,我认为写作论文的能力可以包含在应用写作能力之中。大学生写作能力的体现,也往往是在撰写毕业论文中集中体现出来的。本科毕业论文无论是对于学生个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论