超声波视力保护器毕业论文.doc_第1页
超声波视力保护器毕业论文.doc_第2页
超声波视力保护器毕业论文.doc_第3页
超声波视力保护器毕业论文.doc_第4页
超声波视力保护器毕业论文.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

超声波视力保护器毕业论文1 绪论1.1 课题背景 21 世纪是广大中小学生学习压力最大的时期。2006年09月13日,黑龙江省暨哈尔滨市青少年心理健康宣传月活动圆满结束,活动月期间,50余名心理咨询专家对 2000余名大中小学生进行义务咨询时发现,近30%学生处理人际关系困难,近60%中小学生学习压力大。学生近视在我国已成为一个日益严重的社会问题。国家有关部门对许多职业均有明确的视力要求,而一旦近视,花再多的钱医治也不可能恢复原有的视力。专家认为造成学生近视的最主要原因是读写姿势不正确。国家教委规定:学生在读写时,应在一定亮度下,眼睛离读物一尺,身离书桌一拳。学习压力如此之大,学习时间如此之多,那么,有一个保护视力的装置便显得越来越重要。 目前,青少年视力低下,已成为国内外共同关心的公共卫生问题。资料显示,我国小学生视力低下率为26.96%,初中生53.43%,高中生72.8%,大学生77.95%。 特别是调查显示50%以上的学生及家长缺乏视力保健最基本的科普知识,不懂得“近视与盲只差一步”的危害性,因而有41.6%视力低下的学生并未采取任何矫正措施,又缺专业机构的治疗。对此我们进行了多功能视力保护器的研究设计。通过创造健康的读写环境和科学方式,避免因长期读写(现代意义的读写包括:看书、写字、用电脑、看 电视等)而导致的近视、驼背、脊柱侧弯、斜视、颈椎病等疾病的发生和发展,用非医药的手段,防范和解除因不良读写习惯,避免给人们身体带来伤害。这个时代在给了我们太多好处的同时,也给了我们太多的附属和悲哀,比如:如果顺其自然 90的孩子将来注定要和眼镜做一辈子“伴侣” 近视,作为一种现代通病,几乎没有办法根治它。目前的激光切除手术其实是伤害了人体的自然完整,戕害着身心的健全。于是,百年来人们沿用着“玻璃凹凸”的笨办法维系着人们对外界求索的目光。 既然治疗近视这么困难,人们为什么不听听2000年前中国中医经典的劝谏呢?“是故圣人不治已病治未病” ,防患于未然正和现在的“预防医学”不谋而合。研究表明,造成近视 99的原因,源自于孩子们平时读书、写字时坐姿不标准,导致眼睛距离书本太近所致。大部分孩子喜欢趴在课桌上读写,并且老师、家长屡教不改,很难扭转习惯,是家长一直头疼的事。 综上所述:为了避免因长期使用不正确的读书写字姿势而导致的近视、脊椎弯曲变形、驼背、斜视以及颈椎病等。有必要设计一款视力保护器进行防范。从而纠正人们读写的不良姿势,习惯。避免给人们的身心带来伤害。尤其对学生群体而言,可帮助学生矫正坐姿,改善学习环境,培养学生良好的学习习惯,保护学生视力。1.2 视力保护器的现状 现在国内外已经有许多电子公司都有自己公司生产的视力保护器。国内这方面的研究现状为:在国内生产的视力保护器,又称坐视宝,它能有效的对使用者的坐姿不当进行语音提示。还有国内一些厂家生产的坐姿矫正器。可以纠正看书,写字的不良坐姿。总体看来,国内生产的视力保护器功能特点比较单一,与人们的个性化需求尚有很大的差距。故不能很好的满足广大使用者的需求。 国外也致力于对保护视力的研究,但是他们更侧重于对近视原因的研究。美国德克萨斯大学西南医学中心何于光博士表示,吃鱼和新鲜蔬菜能够保护视力,降低发生近视的概率。他们认为通过合理的饮食营养搭配,以及正确的学习习惯,对视力的保护能起到事半功倍的作用。 研究证明,市场上真正的多功能视力保护器几乎没有。现有的产品只是侧重视力保护的一方面,功能比较单一,不能从多个角度保护使用者的视力。 现在市场上设计的有以超声波技术为主要理论依据的视力保护器。它就具体就视力保护器的理论与硬件的设计进行了研究。 基于实验室现有的硬件平台,研究目标是完成多功能视力保护器的硬件开发与设计,并完成相应的硬件制作。其研究内容分为两部分:对视力保护器的硬件设计和硬件制作。在设计中存在着如何有效的提高视力保护以及对硬件电路准确调试的难点。在硬件设计中,基于超声波技术设计的多功能视力保护器电路,通过超声波接收头对接收的超声波信号进行调制输出,实现控制声光提示电路工作的理论研究有一定的研究意义。通过实践证明该视力保护器可行且可靠性良好,使用方便但也存在一些问题,比如说没有光线控制报警的功能,光线也是伤害学生的视力的一个重要因素。该设计通过该电子硬件的制作和理论的研究,能为后期进一步设计多功能视力保护器并采取合理措施提高视力保护的有效性提供可靠和有效的数据源和信息依据。由于现在国内外大量的市场需求,视力保护器的起步才刚刚开始,存在很大的发展空间,各个国家的很多公司均在此方面展开了研究,相信未来视力保护器一定会得到巨大的发展,为广大的中小学生的视力保护做出根本的保障。 1.3 设计要求 鉴于单片机芯片的智能处理功能本设计采用理论计算和实验验证的方法相结合的以单片机芯片为核心的主体电路。首先是对各单元电路进行设计,并选择合适的元器件。在选择元器件时,要注意所选芯片的性价比,对于电阻、电容等常用元件要先进行参数计算后再选择。其次是设计整个电路,并在计算机上对各单元电路进行相应功能的调试仿真!其中单片机芯片选用较为普遍的STC89C52,坐姿传感器选用超声波传感器,光线报警选用光敏电阻来实现,报警发声蜂鸣器发声硬件电路。本次毕业设计的研究内容是设计一个多功能视力保护器。它具备以下功能:1 当使用者脸部与桌面之间的距离小于30CM时,电路将发出声音提示; 2 当读写环境光线照度不足时,电路将发出声音提示; 3 当使用时间达到45分钟时,电路自动发出声音提示,提醒使用者注意休息; 4 电路测光报警的灵敏度可调;5. 电路可靠,做出实物能够实现相应的功能。真正帮助学生做到国家教委规定:学生在读写时,应在一定亮度下,眼离读物一尺,身离书桌一拳。 2 总体方案设计 系统采用STC89C52单片机作为多功能视力保护器的核心控制单元,本系统通过光敏电阻采集光线信号,通过AD采集光线信号的强弱,把光线强度等级化,通过设定报警等级来确定光照不足时报警。利用超声波测距传感器测出人脸部与桌面的距离,当小于30CM时发出报警声提醒。通过单片机内部定时器计时,当使用达到45分钟时电路自动发出声音提示,提醒使用者注意休息。系统采用的提示电路由三极管驱动蜂鸣器组成。系统总体的设计方框图如图1所示。 电源模块STC89C52主控模块蜂鸣器报警模块超声波模块光线强度检测模块 图1 系统总体方框图2.1 硬件设计2.1.1 电源稳压电路设计 由于本系统采用电池供电,我们考虑了如下几种方案为系统供电。方案1:采用12V蓄电池稳压后为系统供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。但是蓄电池的体积过于庞大,更换成本高,在报警器上使用极为不方便。因此我们放弃了此方案。方案2:采用3节1.5 V干电池共4.5V做电源,为单片机,传感器供电。经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。综上所述采用方案22.1.2 主控制器模块方案1: 采用可编程逻辑器件CPLD作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑我们放弃了此方案。方案2: 采用STC89C52单片机作为整个系统的核心,系统采用STC89C52单片机作为多功能视力保护器的核心控制单元,充分分析我们的系统,其关键在于实现系统的自动报警与提醒,处理超声波测得的信号,以及处理光照强度信息,而在这一点上,单片机就显现出来它的优势控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。STC89C52单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是STC89C52单片机价格非常低廉。因此,这种方案是一种较为理想的方案。从方便使用的角度考虑,我们选择了方案2。2.1.3 光照强度检测模块 光照度传感器的选择 方案1: 采用光照度传感器M124749,该光照度传感器采用先进的电路模块技术开发变送器,用于实现对环境光照度的测量,输出标准的电压及电流信号,体积小,安装方便,线性度好,传输距离长,抗干扰能力强,量程可调。但价格昂贵,性价比不高,且不易购买。 方案2: 采用光敏电阻。光敏电阻的工作原理是当有光线照射时,电阻内原本处于稳定状态的电子受到激发,成为自由电子,所以光线越强,产生的自由电子也就越多,电阻就会越小。光敏电阻的优点有内部的光电效应和电极无关(光电二极管才有关),即可以使用直流电源。灵敏度和半导体材料、以及入射光的波长有关,价格低廉,性价比高。 比较以上两个方案,方案一虽然具有更好的设计精度和线性度,但性价比不如光敏电阻好。方案二具有较高的性价比且同时也能满足系统的设计要求,故采用方案2光敏电阻作为光照度传感器。 2.1.4 报警提示模块本系统为多功能视力保护器,对于报警器来说,其提醒的方式有很多种。我们综合考虑了一下两种方案。方案1: 采用语音报警,可以实现语音提示用户休息,和姿势是否正确,直接明了。虽然采用语音提醒有诸多优点,但是语音芯片编程需要专业编程器,价格昂贵编程复杂,不适用于多功能视力保护器的普及。经综合比较考虑,我们放弃了此方案。方案2: 采用蜂鸣器报警。蜂鸣器,体积小,重量轻,装配简单,使用方便。价格实惠,对推动视力保护器的普及有很好的优势。能够较好的满足系统的要求,因此我们选择了此方案。2.1.5 坐姿检测模块 本系统需要检测坐姿是否正确,我们选了两种方案 方案1: 采用红外热释电传感器,红外热释电传感器对红外线感应灵敏,当人把坐姿坐好,然后开启视力保护器,如果坐姿发生变化,红外热释电传感器就会有一个由高到低的电信号输出。虽然红外热释电传感器敏感度高,但是对于用在视力保护器上不合适,当人只是轻微的移动视力保护器也会报警,误报警的情况很多。除非人坐在那一动不动,因此红外热释电传感器不适用于多功能视力保护器的的坐姿检测。经综合考虑,我们放弃了此方案。方案2: 采用超声波传感器检测。通过测量人脸与桌面的距离来确定坐姿。当距离小于30CM时就提醒。超声波体积小,重量轻,使用方便。价格实惠,对推动视力保护器的普及有很好的优势。能够较好的满足系统的要求,因此我们选择了此方案。2.1.8 显示模块方案1: 用数码管进行显示。数码管显示速度快,使用简单,显示效果简洁明了,但是显示单一,不能表达出很好的人机界面,因此我们放弃用数码管显示。方案 2:用LCD1602液晶进行显示。LCD1602由于其显示清晰,显示内容丰富、清晰,显示信息量大,使用方便,显示快速而得到了广泛的应用。单对于此系统我们需要显示丰富的内容,人机界面需要友好,因此我们选择了此方案。 综上所述我们选择方案22.2 最终方案经过反复论证,我们最终确定了如下方案:1、 电源采用3节5号电池2、采用STC89C52单片机作为主控制器。3、用光敏电阻检测光照强度。4、用超声波传感器检测坐姿。5、用LCD1602液晶显示。6、用蜂鸣器提醒。3 硬件实现及单元电路设计3.1 主控制模块主控制最小系统电路如图2所示。 图2 单片主控电路3.2 电源电路设计 供电电源采用7805稳压芯片稳压成5V给传感器,单片机供电。电路如图3图3 电源电路 3.3 蜂鸣器驱动电路 蜂鸣器采用三极管驱动,驱动原理图如图4。图4 L298N引脚图 3.4 按键电路系统采用4个按键来设定参数,和设定光照强度报警值。电路如图5图5 按键电路3.5 光照强度检测电路 光照强度检测采用光敏电阻,当光线发生变化时,光敏电阻的阻值也就不同,然后分得的电压也不同。经过AD采集后就可以得到各种光照强度下的电压值。从而设定出理想的光线强度报警值。电路如图6所示图6 光照采集电路3.6 显示模块 显示采用LCD1602液晶显示,显示电路如图7图7 数码管显示3.7 超声波坐姿测距模块 超声波模块采用现成的HC-RS04超声波模块,该模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm。模块包括超声波发射器、接收器与控制电路。基本工作原理:采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号;模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2。实物如下图10。其中VCC 供5V 电源,GND 为地线,TRIG 触发控制信号输入,ECHO 回响信号输出等四支线。图8 超声波模块实物3.6.1 超声波的基本特性超声波是一种在弹性介质中的机械振荡,其频率超过20KHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其传播速度不同。它有折射和反射现象,且在传播过程中有衰减。超声波的基本特性如下所述:1 波长波的传播速度是用频率乘以波长来表示。电磁波的传播速度是3108m/s,而声波在空气中的传播速度很慢,约为344m/s (20时)。在这种比较低的传播速度下,波长很短,这就意味着可以获得较高的距离和方向分辨率。正是由于这种较高的分辨率特性,才使我们有可能在进行测量时获得很高的精确度。2 反射要探测某个物体是否存在,超声波就能够在该物体上得到反射。由于金属、木材、混凝土、玻璃、橡胶和纸等可以反射近乎100的超声波,因此我们可以很容易地发现这些物体。由于布、棉花、绒毛等可以吸收超声波,因此很难利用超声波探测到它们。同时,由于不规则反射,通常可能很难探测到凹凸表面以及斜坡表面的物体,这些因素决定了超声波的理想测试环境是在空旷的场所,并且测试物体必须反射超声波。3 温度效应声波传播的速度“c”可以用下列公式表示。c=331.5+0.607t (m/s)式中,t=温度 ()也就是说,声音传播速度随周围温度的变化而有所不同。因此,要精确的测量与某个物体之间的距离时,始终检查周围温度是十分必要的,尤其冬季室内外温差较大,对超声波测距的精度影响很大,此时可用18B20作温度补偿来减小温度变化所带来的测量误差,考虑到本设计的测试环境是在室内,而且超声波主要是用于实现避障功能,对测量精度要求不高,所以关于温度效应对系统的影响问题在这里不做深入的探讨。4. 衰减传播到空气中的超声波强度随距离的变化成比例地减弱,这是因为衍射现象所导致的在球形表面上的扩散损失,也是因为介质吸收能量产生的吸收损失。如图9所示,超声波的频率越高,衰减率就越高,超声波的传播距离也就越短,由此可见超声波的衰减特性直接影响了超声波传感器有效距离。HC-RS04型超声波传感器的震荡频率为40KHz,传播10米超声波信号强度便衰减到40个声压级,此时超声波接收探头就很难接收到回波信号。图9 声压在不同距离下的衰减特性3.6.2 超声波的电器特性1声压特性声压级 (S.P.L.) 是表示音量的单位,利用下列公式予以表示。S.P.L.= 20logP/Pre (dB)式中,“P”为有效声压 (bar),“Pre”为参考声压 (210-4bar)如图10所示为几种常用超声波传感器的声压图。图10 超声波传感器的声压图2灵敏度特性灵敏度是表示声音接收级的单位,使用下列公式予以表示。灵敏度= 20log E/P (dB)式中,“E”为所产生的电压 (Vrms),“P”为输入声压(bar)。超声波传感器的灵敏度直接影响着系统测距范围,如图12所示为几种中常见超声波传感器的灵敏度图,从图中可以发现40KHz时传感器的声压级最高,也就是说40KHz时所对应的灵敏度最高。图12 超声波传感器灵敏度示意图3辐射特性把超声波传感器安装在台面上。然后,测量角度与声压 (灵敏度) 之间的关系。为了准确地表达辐射,与前部相对比,声压 (灵敏度) 级衰减6dB的角度被称为半衰减角度,用1/2表示。超声波设备的外表面尺寸较小易于获得精确的辐射角度。如图13所示为几种常见超声波传感器的辐射特性示意图。图13 超声波传感器辐射特性示意图分析以上研究结果不难看出超声波传感器工作在40KHz范围内具有最大的声压级和最高的灵敏度,这为设计中选择合适的超声波传感器指明了方向。3.6.3 超声波的工作原理市面上常见的超声波传感器多为开放型,其内部结构如图14所示,一个复合式振动器被灵活地固定在底座上。该复合式振动器是由谐振器以及一个金属片和一个压电陶瓷片组成的双压电晶片元件振动器。谐振器呈喇叭形,目的是能有效地辐射由于振动而产生的超声波,并且可以有效地使超声波聚集在振动器的中央部位。当电压作用于压电陶瓷时,就会随电压和频率的变化产生机械变形。另一方面,当振动压电陶瓷时,则会产生一个电荷。利用这一原理,当给由两片压电陶瓷或一片压电陶瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。相反,当向双压电晶片元件施加超声振动时,就会产生一个电信号。图14 超声波传感器内部结构图图15 避障原理 如图15所示,超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2就是所谓的时间差测距法3.7 定时报警电路 报警电路分为单片机控制电路和报警发声电路。它主要通过单片机的定时计数功能完成定时45分钟并使报警电路发出报警声,用以提醒学生休息!89c52单片机内有两个可编程的定时器/计数器,满足诸如对外部脉冲进行记数,产生精确的定时时间,作串行口的波特发生器等功能的需要。它们具有两种工作模式(计数器模式和定时器模式)及4种工作方式(方式0,方式1,方式2,方式3)。其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编制,可以方便的选择适当的工作模式和工作方式。 当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计数满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:T=1/(12106)Hz1/12=1s这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。工作方式控制寄存器TMOD用于控制定时器/计数器的工作模式及工作方式,它的字节地址为89H。定时器/计数器的两个作用是用来精确的模拟一段时间间隔(作定时器用)或累计外部输入的脉冲个数(作计数器用)。当作定时器用时,在其输入端输入周期固定的脉冲个数,即可计算出所定时间的长度。当89c52内部的定时器/计数器被选定为定时器工作模式时,记数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1,因此,定时器/计数器的输入脉冲和机器周期一样,为时钟频率的1/12。本设计采用的时钟周期为6MHz,记数速度为500KHz,输入脉冲的时间间隔为0.5秒。4 系统软件设计方案该方案的编程思路是先确定主程序,之后根据各硬件电路功能来设计子程序模块,最后再将各模块嵌入主程序中。这样编程结构简单,由于子程序模块与硬件电路一一对应,所以调试起来十分方便。本设计软件方框图如图18所示。多功能视力保护器主程序超声波子程序测光子程序计时子程序报警子程序图18 系统软件设计方框图4.1 系统主程序流程图如图19所示为系统坐姿检测超声波测量主程序流程图。系统初始化开始发送超声波脉冲等待发射超声波计算避障显示结果图19 超声波测距子程序流程图5 系统的安装与调试5.1 安装步骤1.检查元件的好坏按电路图买好元件后首先检查买回元件的好坏,按各元件的检测方法分别进行检测,一定要仔细认真。而且要认真核对原理图是否一致,在检查好后才可上件、焊件,防止出现错误焊件后不便改正。2.放置、焊接各元件按原理图的位置放置各元件,在放置过程中要先放置、焊接较低的元件,后焊较高的和要求较高的元件。特别是容易损坏的元件要后焊,在焊集成芯片时连续焊接时间不要超过10s,注意芯片的安装方向。5.2 电路的调试首先烧入显示程序,控制液晶显示,显示正常。说明显示部分无误。然后加入超声波测距程序,调节超声波的灵敏度使达到理想效果。在调试程序时,发现有的指令用的不正确,导致电路功能不能完全实现,另外软件程序中的延时有的过长、有的过短。类似的现象还有很多就不一一列举了。5.3 本章小结本章的主要内容是电路的测试和调试注意事项参考文献1 家庭电子1998年合订本.J1999. 212-214 2 康华光.电子技术基础模拟部分.M北京:高等教育出版社,2005.1-203 康华光.电子技术基础数字部分.M北京:高等教育出版社,2005.40-604 电子工艺实习.J成都,2003.1-235 电子技术实验.J 成都, 2005.1-206 电子线路设计实验测试第二版.M武汉:华中科大出版社, 2002.1-407 赵健.实用声光电及无线电遥控电路300例.J北京:中国电力出版社,2005.90-1008 郑浩,高静.怎样用万用电表检测电子元器件修订本.J 北京:人民邮电出版社,2005.32-669全新实用电路集粹编辑委员会编著.全新实用电路集粹. M北京:机械工业出版社,2006.56-7410 王新贤.通用集成电路速查手册第二版.M 山东科学技术出版社,22-5711 The Institute of Electrical and Electronics Engineers,Inc.IEEE Std 802.3,2000 edition,2000.44-94附录1 整机电路原理图附录2 部分源程序#include #define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#include #include eepom52.hsbit SCL=P26;/SCL定义,连接ADC0832SCL脚sbit DO=P25;/DO定义,连接ADC0832DO脚sbit CS=P24;/CS定义,连接ADC0832CS脚sbit beep = P27;/这三个引脚参考资料sbit rs=P32; /1602数据/命令选择引脚 H:数据 L:命令sbit rw=P33; /1602读写引脚 H:数据寄存器 L:指令寄存器sbit e =P34; /1602使能引脚 下降沿触发sbit c_send = P37;/超声波发射sbit c_recive = P36;/超声波接收uchar flag_hc_value; /超声波中间变量long distance; /距离uint set_d; /距离bit flag_csb_juli; /超声波超出量程uint flag_time0; /用来保存定时器0的时候的bit flag_200ms = 1 ;uchar guangxian; /光线的显示变量uchar set_gx;/设置光线的强弱的变量uchar value;uchar flag_alarm; /报警变量uchar miao = 55,fen = 44,shi;uchar xuexi_start; /开始学习标志位uchar menu_1;/*把设置温度数据保存到单片机内部eepom中*/void write_eepom_12()SectorErase(0x2000);byte_write(0x2000, set_d % 256);byte_write(0x2001, set_d / 256);byte_write(0x2002, set_gx);byte_write(0x2057, value);/*把数据从单片机内部eepom中读出来*/void read_eepom12()set_d = byte_read(0x2001);set_d =set_d * 256 + byte_read(0x2000); set_gx = byte_read(0x2002);value = byte_read(0x2057);/*开机自检eepom初始化*/void init_eepom()read_eepom12();/先读if(value != 2)/新的单片机初始单片机内问EEPOMset_d = 300;value = 2;set_gx = 50;write_eepom_12();/* 名称 : delay()* 功能 : 延时,延时时间大概为5US。* 输入 : 无* 输出 : 无*/void delay_uint(uint q)while(q-);/* 名称 : bit Busy(void)* 功能 : 这个是一个读状态函数,读出函数是否处在忙状态* 输入 : 输入的命令值* 输出 : 无*/bit busy(void)bit busy_flag = 0;rs = 0;rw = 1;e = 1;delay_uint(3);busy_flag = (bit)(P1 & 0x80);e = 0;return busy_flag;/* 名称 : write_com(uchar com)* 功能 : 1602命令函数* 输入 : 输入的命令值* 输出 : 无*/void write_com(uchar com)while(busy();e=0;rs=0;rw=0;P1=com;delay_uint(3);e=1;delay_uint(25);e=0;/* 名称 : write_data(uchar dat)* 功能 : 1602写数据函数* 输入 : 需要写入1602的数据* 输出 : 无*/void write_data(uchar dat)while(busy();e=0;rs=1;rw=0;P1=dat;delay_uint(3);e=1;delay_uint(25);e=0;/*lcd1602上显示两位十进制数*/void write_sfm2(uchar hang,uchar add,uchar date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add); write_data(0x30+date/10%10);write_data(0x30+date%10);/*lcd1602上显示超声波距离*/void write_sfm_csb(uchar hang,uchar add,uint date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add); write_data(0x30+date/100%10);write_data(.);write_data(0x30+date/10%10);write_data(0x30+date%10);/* 名称 : init_1602()* 功能 : 1602初始化,请参考1602的资料* 输入 : 无* 输出 : 无*/void init_1602()write_com(0x38);/write_com(0x0c);write_com(0x06);/* 名称 : write_string(uchar hang,uchar lie,uchar *p)* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示ab cd ef ,调用该函数如下 write_string(1,5,ab cd ef;)* 输入 : 行,列,需要输入1602的数据* 输出 : 无*/void write_string(uchar hang,uchar add,uchar *p)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);while(1) if(*p = 0) break;write_data(*p);p+;uchar key_can;/*独立按键程序*/void key()static uchar key_new;key_can = 20;if(P2 & 0x0f) != 0x0f)delay_uint(50);if(P2 & 0x0f) != 0x0f) & (key_new = 1)key_new = 0;switch(P2 & 0x0f)case 0x0e: key_can = 1; break; /左边第1个case 0x0d: key_can = 2; break; /左边第2个case 0x0b: key_can = 3; break; /左边第3个case 0x07: key_can = 4; break; /左边第4个/write_sfm2(2,0,key_can);else key_new = 1;/*读数模转换数据*/请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的/ 1 0 0 通道/ 1 1 1 通道 unsigned char ad0832read(bit SGL,bit ODD)unsigned char i=0,value=0,value1=0;SCL=0;DO=1;CS=0;/开始SCL=1;/第一个上升沿SCL=0;DO=SGL;SCL=1; /第二个上升沿SCL=0;DO=ODD;SCL=1; /第三个上升沿SCL=0; /第三个下降沿DO=1;for(i=0;i8;i+)SCL=1;SCL=0; /开始从第四个下降沿接收数据value=1;if(DO)value+;for(i=0;i=1;if(DO)value1+=0x80;SCL=1;SCL=0;CS=1;SCL=1;if(value=value1)/与校验数据比较,正确就返回数据,否则返回0return value;return 0;/*小延时函数*/void delay()_nop_(); /执行一条_nop_()指令就是1us_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*超声波测距程序*/void send_wave()c_send = 1; /10us的高电平触发 delay();c_send = 0; TH0 = 0; /给定时器0清零TL0 = 0;TR0 = 0; /关定时器0定时flag_hc_value = 0;while(!c_recive); /当c_recive为零时等待TR0=1;while(c_recive) /当c_recive为1计数并等待flag_time0 = TH0 * 256 + TL0;if(flag_hc_value 1) | (flag_time0 65000) /当超声波超过测量范围时,显示3个888TR0 = 0;flag_csb_juli = 2;distance = 888;flag_hc_value = 0;return ;else flag_csb_juli = 1; if(flag_csb_juli = 1)TR0=0; /关定时器0定时distance = TH0; /读出定时器0的时间distance = distance * 256 + TL0;dis

温馨提示

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

评论

0/150

提交评论