资源描述
龙岩学院毕业设计 题目: 基于单片机的智能垃圾桶设计 专业: 电子信息工程 学号: 2014041808 作者: 陈志涵 指导教师(职称): 曾玮 副教授 二一六年五月二十三日基于单片机的智能垃圾桶设计【摘要】本文提出一种基于单片机STC89C51的智能垃圾桶的设计。系统主要由超声波测量距离模块、光电感应模块、电机模块和语音提示模块等功能模块组成,以单片机为控制器,通过超声波传感器、光电传感器来获取距离数据,再通过数模转换及单片机处理后发出相应的命令,外围电路执行相应的动作,假设当超声波传感器检测到人距离垃圾桶的距离小于设定距离时,电机转动垃圾桶盖自动翻开;如果光电传感器检测到垃圾桶装满,系统就会有语音进行提示;在规定时间对垃圾桶进行喷洒消毒剂消毒。本设计与传统垃圾桶相比,不仅结构简单、性能稳定,且具有操作方便、低成本、智能化等优点,能有效提高垃圾分类的效率,是减少环境污染的一个可行的措施。【关键词】单片机 光电传感器 超声波传感器 智能垃圾桶IDesignofIntelligentGarbageBinBasedonSingleChipMicrocomputer【Abstract】 This paper is a design of intelligent ashbin based on MCU STC89C51, which is composed of ultrasonic distance measuring module, photoelectric sensor module, motor module and the voice prompt module function module. With MCU as the controller, ultrasonic sensors and photoelectric sensors are used to obtain the distance data, and then issue the corresponding command through the digital to analog conversion and single chip processing and peripheral circuits execute corresponding action, hypothesis when the ultrasonic sensor etects that the distance between the people and the garbage bin is smaller than the set distance, the motor rotates a trash can lid opens automatically, if full of photoelectric sensor detection to the garbage can, the system will have the voice prompt and can be sprayed disinfectant for the garbage in the prescribed time . Compared with the traditional garbage can, the design has the advantages of simple structure, stable performance, convenient operation, low cost, intelligent, etc., and can effectively improve the garbage classification and reduce the environmental pollution.【Key Words】 singlechip Photoelectric sensor ultrasonic sensor Intelligent garbage can I基于单片机的智能垃圾桶设计目录第1章 绪 论11.1 选题意义11.2 发展现状及趋势11.3 课题的主要内容21.3.1 课题内容21.3.2 设计内容21.4 本章小结2第2章 系统硬件电路32.1 系统总体框架32.2 单片机最小系统32.2.1 STC89C51RC单片机简介32.2.2 复位电路42.3 光电传感器模块52.4 电机模块62.5 超声波测距模块72.6 语音模块82.7 喷洒消毒剂电路82.8 本章小结9第3章 系统软件设计103.1 系统总体程序设计流程图103.2 超声波检测程序设计113.3 语音模块的程序设计123.4 自动消毒的程序设计133.5 本章小结13第4章 系统调试144.1 硬件调试144.2 软件调试14第5章 成品模拟及设计总结165.1 成品模拟165.2 设计总结18致谢20参考文献21附录一22附录二23第1章 绪 论1.1 选题意义现如今,垃圾存在于我们生活各个方面,同样也影响我们生活的各个方面,倘若不能及时有效地解决,将会带来相当棘手的问题。对于如何处理垃圾问题的措施也是不胜枚举,概括起来主要有两大方向,一个从生产方面入手,比如鼓励生产使用如遇潮湿可很快溶化的塑料袋或是容易降解的外包装;另一个就是废物回收处理,而将垃圾进行分类回收就是其中一种有效的办法。而作为存放垃圾的垃圾桶,已然成为了我们生活中不可或缺的物品了,不仅在家里房间里需要它,在公共休闲娱乐场所更是不可或缺的。市面上的垃圾桶也是总类繁多,有的垃圾桶更是与装饰品结合起来,既实用又美观,普遍也都是有进行垃圾的分类。但就目前看来,收益甚微,不论是在垃圾分类还是垃圾的存放,人们在投放垃圾的时候有可能会接触到细菌微生物,大家在投放垃圾的时候都是近而远之,丢放垃圾的方式经常是抛的,“投篮”技术不佳的就很容易导致没扔进垃圾桶了,从而污染了环境;而且普遍人们对垃圾分类的意识淡薄,如果在人们丢放垃圾的时候给予语音提示,相对于文字或者是图片提醒来说的话,效果会更好,所以需要研究和开发一种集多种优点且更加智能的垃圾桶。1.2 发展现状及趋势普通的垃圾桶主要有敞口式,脚踩式还有翻盖式的,现在市面上已经有成熟的智能垃圾桶的产品了,采用超声波或红外范围感测技术,能够在手或者物体接近时,自动打开盖子。虽然产品已经不再需要人用手或者脚踩的方式去打开盖子,但是功能还是比较单一,一般适用于家庭和办公环境居多,而这类环境大多数人会倾向于购买普通的垃圾桶,因为对于像家庭这种小环境内,简单的普通垃圾桶已经很适合了。还有一类是利用太阳能来给垃圾桶供能1,配备有压缩机,当垃圾快要放满时,压缩机会短时间内把垃圾的体积压缩为原来的四分之一,这样大大增加空间利用率,但是不具备垃圾分类的功能。因为是利用太阳能,所以此类垃圾桶大抵都是适用于户外环境,这也同时成为它局限了,商业价值不是很高,没有得到广大商家的青睐,没有得到广泛使用。伴随着社会的不断发展以及人们环保意识的不断增强,垃圾处理问题必将越来越受到关注,从而也会提高垃圾桶厂家对新型智能垃圾桶的兴趣,并带动其走向“智能化”和“多样化”。现如今,不论是国内还是国外,都还没有开发出来可以用直接自动的把垃圾自行分类的控制系统,现在的垃圾处理也是仅仅停留在对垃圾的简单分类,比如说之前提到的将垃圾体积压缩,目前来说要实现垃圾分类最终还是需要人类自己将垃圾进行分类。垃圾桶自动垃圾分类的实现还有很一段路要走,垃圾桶也会朝着这一方向发展,变得更加方便智能,变得更加卫生、干净,更贴近我们的生活,智能垃圾桶也会普及到家家户户。1.3 课题的主要内容1.3.1 课题内容设计并制作基于单片机的智能垃圾桶控制系统,以51单片机为控制芯片,并结合所学知识以及相应的传感器电路,实现更加智能化、更加适用于人类的垃圾桶,可实现以下几点功能:1.自动检测物体接近;2.垃圾桶装满提示;3.垃圾桶盖的自动开启和关闭;4.间隔一定时间自动消毒;1.3.2 设计内容1.传感器检测电路;2.语音提示电路;3.自动开启盖子电路;4.自动消毒电路;1.4 本章小结通过这一章对智能垃圾桶的发展现状以及未来发展的趋势行进了详细的介绍,我们知道垃圾桶在人们的生活中扮演着重要的角色,也阐明了课题设计的意义。了解了现阶段智能垃圾桶的发展状况,在设计思路上也有了方向。28第2章 系统硬件电路2.1 系统总体框架本次基于单片机的智能垃圾桶的设计所要实现的功能有:自动检测物体接近、垃圾桶盖的自动开启和关闭、垃圾装满自动语音提示、定时自动消毒等。本系统不仅可以让扔垃圾变得更方便,还可以提高人们对垃圾分类的习惯,使环境更加干净整洁。本次智能垃圾桶选用STC89C51RC单片机来控制。图2-1 为系统框图。 单 片 机光电传感器模块器自动翻盖语音提示超声波模块定时消毒图2-1 系统框图2.2 单片机最小系统2.2.1 STC89C51RC单片机简介如图2-2为STC89C51RC引脚图。图2-2 STC89C51RC引脚图本次设计使用一个STC89C51RC单片机2,由于具有技术十分成熟且稳定的优点,所以广泛运用在电子电路设计中,其特点:4K字节的Flash闪存,32个可编程I/O端口线,128字节的内部RAM;两个16位定时器/计数器,两级5向量中断结构,一个全双工串行通信端口,以及芯片上的时钟振荡器电路。51单片机P0端口口是开漏输出,而P1、P2以及P3端口是弱上拉输出。如果P0作为普通的I/O来用时,必须外部接上上拉电阻。而P1、P2、P3的结构差异不大,输出接在上拉电阻与mos管漏极之间。2.2.2 复位电路复位电路的作用就是使系统回到最开始时的状态,有点类似于计算器的C键。51单片机的复位可以通过外部的电路来实现,简单的复位电路可以是电阻加上电容即可组成了。通常使用按钮复位和上电复位两个方式。本设计选用的是上电复位电路,如图2-3所示,上电自动复位是vcc给电容c1充电加到rst上的高电平,这个高电平会随着c1的充电渐渐下降,电容c1的充电时间决定了rst上的高电平,而后电容相当于开路,rst拉低。图2-3复位电路图2.3 光电传感器模块光电传感器模块是通过反射型光电传感器在检测距离内检测有没有物体存在,通过比较器候输出给单片机系统,然后又后者程序执行相应动作。该传感器模块采用2并行RPR220传感器电路3,光电传感器模块电路图如图2-5所示。本次垃圾桶分为两个小桶,所以由两个反射型光电探测器RPR220和四电压比较器LM3934组成。RPR220传感器实际上是由两部分组成,分别是红外发射二极管和接收管,顾名思义,一个用于接收而另一个用于发射;LM3934是4电压比较器,里面集成4个比较器,引脚图如图2-4所示。图2-4 LM3934引脚图图2-5光电感应模块电路如图2-5所示,就U4管来说,当没有物体接近时,光电传感器的发射管所发射的红外光没有发射回来,即接收管未接收到,接收管截止,3,4不通,则对于比较器的5脚就有一个电压。比较器U5的4脚接华东变阻器,可滑动直至4脚电压为2v上下,作为基准电压;当光电传感器接收管为接收到反射光,5脚有电压,且比4脚的基准电压大时,即正端大于负端,LM393的2脚输出高电平给单片机;相反的,当有物体靠近,并且形成反射时,则LM393的2脚输出低电平给单片机,执行相应动作。2.4 电机模块本次垃圾桶系统内部有两个类别的小垃圾桶,配有一个大盖子,即开盖则两个类别的小垃圾桶同时开启,关闭也是。电机模块用于开启和关闭垃圾桶的盖子,需要较为精准的定位控制,所以相对于直流电机而言,步进电机在定位控制中较为出色。步进电机是开环控制元件4,它将电脉冲信号转换为角位移或者是线位移。通常的状况下脉冲个数和频率直接决定着步进电机的转速大小,给多少个脉冲即转过多少角度,可控性和稳定度上面很优秀。脉冲序列的更变可以很轻松地变动转向。把步进电机看成一个发动机的话,那么驱动信号就是让步进电机运行的汽油,没有汽油的话,发动机则无法工作,本次设计采用的电机驱动是ULN2003芯片5,驱动电路如图2-6所示。图2-6电机驱动电路图ULN2003电流增压大,可以带高负载电流运行,可以用在各种有较大功率驱动的系统.将ULN2003的4到7引脚分别一次接入单片机的P2口,10到13引脚分别与步进电机的1至4接口相连接,控制步进电机的转动。ULN2003的GND脚接地,9脚vcc和P1的5脚相连接,如图2-7所示。单片机的P2.0口对应ULN2003的A,单片机的P2.1口对应ULN2003的B相,单片机的P2.2口对应ULN2003的C相,单片机的P2.0口对应ULN2003的D相。2.5 超声波测距模块超声波测距模块一共有4个引脚6,7,引脚1接电源,引脚4接地,触发信号的输入端接到单片机的P3.4端口,信号输出端3脚接到P3.5端口。由单片机的I/O端口产生一10us以上高电平,单片机同时开始计时,当超声波被物体反弹回来并接收时,超声波模块会产生一个高低电平的跳变并输出给单片机,单片机记录发出方波到跳变的时间。通过公式:距离等于时间与声速的乘积的一半,最终得出距离,本次设计没有加入显示模块,没有很精确的独处距离并显示,而是单单用于检测物体靠近,而相较于光电检测物体,超声波的准确度和精度都比较高,而且稳定性也比较好,不容易受环境因素干扰。具体模块电路图如图2-7所示。图2-7超声波测距模块电路图2.6 语音模块WT588D语音模块是可重复擦除烧写的的单片机语音芯片8,模块的上位机软件操作简单容易上手,可以对任意语音进行组合。而且模块与单片机可直接交互,可以通过发送地址码来触发播放指定的语音,模块可存储220段的语音。本次设计采用三线串口的控制模式来控制语音输出。语音模块电路如图2-8所示。图2-8语音模块电路图图2-9语音模块引脚图2.7 喷洒消毒剂电路由于本次设计主要侧重于垃圾桶的控制系统的设计,所以用led指示灯来模拟消毒剂喷洒。当系统定时时间60ms到,单片机P3.3口变为低电平,led灯亮,即垃圾桶正在喷洒消毒剂进行消毒,led灯灭即停止,每60s循环一下,可有效的抑止细菌的滋生还有垃圾腐烂发臭。喷洒消毒剂电路如图2-10所示。图2-10喷洒消毒剂电路图2.8 本章小结这一章对智能垃圾桶系统的几个重要模块的硬件进行了详细的说明,在这一设计过程中,通过查阅书籍和网上资料,并结合在学校学到的知识,一步步从整体的框架到具体的每个模块的设计,最后得出最终的原理图。每一个模块的准确性和稳定性都决定着最终整个系统的成败。硬件部分的确定,也就为整个系统打下基石。第3章 系统软件设计3.1 系统总体程序设计流程图系统程序分为三个大块,分别是超声波检测程序、自动消毒程序和语音提示程序。系统从外部接入5V电源,通电后,先把各个模块初始化,然后系统开始计时,计时到达60s后,启动自动消毒功能;在此期间,如果超声波系统检测到物体接近10cm后,启动步进电机控制程序和语音提示功能,语音模块提示将垃圾分类,并且步进电机同步正向转动开启垃圾桶盖,3秒后反向转动关闭;如果光电传感器检测到垃圾已满的话,也将启动语音提示功能,语音提示“一号垃圾箱满”或者“二号垃圾箱满”,视情况而定,两个类别的垃圾桶都装满则提示“一、二号垃圾箱已满”。系统总体程序流程图如图3-1所示。开始模块初始化超声波测量距离判断1号和2号垃圾桶满的情况N到达消毒时间?N开门状态?物体接近10cm?N垃圾已满?NYYYY喷洒消毒剂电机正转开门,语音播报:垃圾放置请分类延时3s关门语音播报相关信息“1号垃圾箱已满”“2号垃圾箱已满”图3-1系统总体程序设计流程图3.2 超声波检测程序设计超声波主要运用在测量距离上面,通过单片机产生一段连续的高电平给超声波,单片机同时开始计时,当超声波被物体反弹回来并接收时,超声波模块会产生一个高低电平的跳变并输出给单片机,单片机统计处发出方波到跳变的时间。通过公式:距离等于时间与声速的乘积的一半,最终得出距离。而本次设计最主要的是用来超声波来检测物体靠近与否。下图为超声波检测程序流程图。开始单片机发送脉冲给超声波,开启模块定时器清零Nc_recive为高?Y开启定时器c_recive为低?NY读取时间,计算出距离返回图3-2超声波检测程序流程图3.3 语音模块的程序设计本设计采用三线串口控制模式,不仅可以控制语音播放和停止,还能够控制音量的高低。可以发送0219的地址位,每个地址对应相应语音段,最多220段语音段。复位信号在发码前拉低5ms之后保持高电平,片选信号拉低5ms。控制时序图如图3-3图3-3超声波测距子程序流程图语音模块控制时序图框图如图3-4所示。初始化主循环N按键动作?Y地址累加发送串口程序图3-4语音模块控制时序框图3.4 自动消毒的程序设计喷洒消毒剂部分设计由led模拟,时间到达60s开启喷洒消毒剂,喷洒时间持续为1s,然后重新开始计时并循环。具体程序流程图如下:开始开始计时N计时200ms?Yxiaodu累加NXiaodu大于等于300?Y消毒1秒,消毒置零重新计时返回图3-5自动消毒程序流程图3.5 本章小结程序就是一个系统的大脑,所有的命令都由它来发出,而程序流程图就是来表示程序的框架,有利于增加程序的条理性,也有助于读程序。从整体程序流程图细化到每个模块子程序,它决定系统的实现的稳定度和性能。第4章 系统调试硬件电路搭建和程序编写完之后,就是对系统的调试了。调试过程中存在着很多不确定因素,在硬件设计和软件设计若存在着缺陷或是错误,在调试阶段就会被放大。4.1 硬件调试本次设计由于制作工序的关系选用普通的万能板而没有用pcb板来制作。然后对照着原理图和元器件将器件的位置确定下来后,进行焊接。由于是万能版,所以很多走线需要用到跳线来完成,这也影响到了这个设计的美观。焊接前应先将各个模块进行模拟,测试一下电路设计是否存在问题,把模块电路先在面包板上搭建起来,然后可以通过led灯来观察输出是否正常,有的则需要借助示波器来进行观察。在调试过程中,发现了有错焊的地方,如图4-2所示,元器件焊点很近而且多,一不注意的话就可能就搭在一起了。这个故障也是花费大量的时间来排查,先通过程序运行的状况将问题点大致范围确定下来,然后再细致的排查故障点。图4-1焊接完的万能版4.2 软件调试除了程序编写的问题,软件的调试是建立在硬件调试的基础上来进行的。程序编写最常见的故障就是编译失败了,本次使用的是c语言来编写程序9,有几次由于输入法的问题一直导致编译不成功,后面就比较注意这个问题并少犯错;编写完之后配合着硬件调试的同步进行,在确定了硬件没问题后,调试起来就比较有针对性,效率也会大大增大,主要是参数的修改和程序的优化,程序的优化可以提高系统的稳定度,减少程序运行错乱的发生。第5章 成品模拟及设计总结5.1 成品模拟经过反复实验和不断的调试,最终达到了预想的结果。当人或物体接近至距离超声波传感器小于10cm时,用白色纸板来模拟人体,如图5-1所示。然后系统语音提示“垃圾放置请分类”,同时垃圾桶盖子自动开启,如图5-2为垃圾桶盖子关闭状态,然后步进电机慢慢左转开启,垃圾桶翻盖状态如图5-3所示。图5-1人接近垃圾桶模拟图图5-2垃圾桶盖子关闭状态图5-3垃圾桶翻盖状态翻盖动作完成后延时3s,让人扔放垃圾,然后步进电机反向转动重新关闭盖子。本次设计的垃圾桶又分有两个垃圾桶,用于垃圾的分类,有一号垃圾桶和二号垃圾桶,所以配有两个用于检测垃圾是否装满的光电传感器,当一号垃圾桶装满时(用手指模拟垃圾装满),语音提示“一号垃圾桶装满”如图5-4,二号垃圾桶装满如图5-5所示。图5-4一号垃圾桶装满模拟图图5-5二号垃圾桶装满模拟图当两个垃圾桶同时装满时,也会对应的两个指示灯都亮起,并且语音提示“一、二号垃圾桶已满”。本次系统还有自动消毒功能,每过60秒,系统就会自动对垃圾桶进行消毒,由图5-6自动消毒模拟图中的红灯来模拟,每次消毒的持续时间设为1秒。图5-6自动消毒模拟图5.2 设计总结本次基于单片机的垃圾桶的设计,具有自动开盖,语音提示以及自动消毒等功能,主要的设计目的是为了提高人们的垃圾分类意识,将垃圾分类逐渐形成一种习惯,提高垃圾回收利用率,从而减少人类对环境的污染。时代在进步,科技在进步,人类的环保意识也要也必将越来越强,智能垃圾桶也会在不久的将来走进我们的生活。本次设计通过对网上的现有产品的参考与借鉴,取其精华取其糟粕,舍弃了一些相对鸡肋的功能,确定了较为合理的设计方案。当然,本次设计相比正真的智能垃圾桶还是很粗糙的10,也还有很多细节需要进行优化的,这在后面会慢慢完善;还有就是一些功能的欠缺,如电源部分可以使用太阳能来供能,就更加环保了;还有可以加入对金属的检测分类,甚至是对垃圾自动进行分类11,这些在未来可能会实现的,由于本身学识的欠缺,还有各方面能力的不足,这次设计存在很多需要改进的地方,争取在后面的学习工作中,不断改进。致谢经过这一段时间的忙碌,设计终于完成了,感谢我的指导老师曾玮老师,在课题设计的时,我还是毫无头绪也没有方向,多亏了来时的指导踩最终确定下来,并给予我专业知识的指导,我才能如期完成我的毕业设计。老师平时课程繁多,还耐心的对我的论文进行审查批注,做事一丝不苟,细致入微,每次修改都是耐心的跟我讲解修改的重点。除了感谢我的指导老师,也感谢任课老师们以及班上同学的帮助,有了老师们的认真教学才可以完成这次的设计。参考文献1李伟国.网记看两会:太阳能垃圾桶盖子可自动开关http:/ 2张毅刚,彭喜元.单片机原理与应用设计M.电子工业出版社,2008.3国胜,陆明,常天庆.基于光电传感器电路的迷宫机器人设计J. 单片机与嵌入式系统应用,2011(01):65-674Mohanty Kant Nalin;Muthu Ranganath.Microcontroller based PWM controlled four switch three phase I nverter fed induction motor driveJ. Serbian Journal of Electrical Engineering 2010(02):195-204.5郑振杰,江衍煊,游德智. 单片机结合ULN2003驱动步进电机J.电机技术,2010(06):44-466孔明,侯蕊,赵军.基于FPGA的超声波测距系统J.仪表技术与传感器,2013(06):78-83.7郑晖,林树青.超声检测M.中国劳动社会保障出版社,2008.8王春武,刘春玲,秦政坤,王广德,王立忠. 基于WT588D模块的语音播报系统设计J.电子技术应用,2012(01)21-121.9唐国明,王智群.C语言程序设计M.清华大学出版社,2009.10徐强民,陈学平,唐洪兴,张华.农户庭院卫生垃圾箱制作及利废技术J.农村能源,1996(01):24-25.11朱杜.垃圾分类管理到位J. 乡镇企业导报,2008(08):171-171.附录一附录二#include #define uchar unsigned char #define uint unsigned int #include sbit led = P33; /xiaodusbit c_send = P34;/chaoshengjiesbit c_recive = P35;/chaoshengshouuchar flag_hc_value; bit flag_200ms ;sbit hongwai_1 = P15; /hongwai1sbit hongwai_2 = P16; /hongwai2uchar hw1_value ;uchar hw2_value ;uchar hw12_value ;uchar flag_k_g ; uint xiaodu; long distance; uint set_d; bit flag_csb_juli; uint flag_time0; uchar menu_1; uchar a_a;sbit VRST = P14; sbit VBUSY= P13;sbit VSDA = P12; sbit VCS = P11; sbit VSCL = P10;uchar yujing3;uchar flag_z_f; unsigned char code zheng4=0 x08,0 x04,0 x02,0 x01;/zhengunsigned char code fan4=0 x01,0 x02,0 x04,0 x08;/fanuint bjdj_value; uchar i;uchar flag_lj_value; uchar flag_guan;void delay_uint(uint q)while(q-);void bujindj() if(flag_z_f != 0)if(flag_z_f = 1) /kaibjdj_value +;if(bjdj_value = 127)flag_z_f = 0;P2 = P2 & 0 xf0;if(flag_z_f = 2) /guanif(bjdj_value = 1)flag_z_f = 0;bjdj_value = 1;P2 = P2 & 0 xf0; bjdj_value -;for(i=0;i4;i+) if(flag_z_f = 2) /guanP2=zhengi; /else if(flag_z_f = 1)/kaiP2=fani; delay_uint(900); void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+);void delay_us (unsigned int us)while(us-)_nop_();void Send_threelines(unsigned char addr) unsigned char i;if(VBUSY = 1)VRST=0;delay_1ms(5);VRST=1;delay_1ms(20);VCS=0;delay_1ms(5); for(i=0;i=1;delay_us(150); VSCL=0;delay_us(150); VCS=1;void delay()_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); void send_wave()c_send = 1; delay();c_send = 0; TH0 = 0; TL0 = 0;TR0 = 0; while(!c_recive); TR0=1;while(c_recive) flag_time0 = TH0 * 256 + TL0;if(flag_time0 40000) TR0 = 0;flag_csb_juli = 2;distance = 888;break ;else flag_csb_juli = 1;if(flag_csb_juli = 1)TR0=0; distance =flag_time0; distance *= 0.017; if(distance 500) distance = 888; void time_init() EA = 1; TMOD = 0X11; ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 1; void main()static uchar value;led = 0; delay_1ms(200);P0 = P1 = P2 = P3 = 0 xff;send_wave();time_init();while(1)bujindj(); if(flag_200ms = 1)flag_200ms = 0;xiaodu +;if(xiaodu = 300) /60sled = 0;if(xiaodu = 305) xiaodu = 0;led = 1;send_wave();if(distance = 2)if(flag_z_f = 0) Send_threelines(0 x1d); /fenleivalue = 0;flag_z_f = 1; /kaiflag_k_g = 1; flag_guan = 0;else value = 0;if(flag_z_f = 0)flag_guan+;if(flag_guan = 15) /3sflag_guan = 0;if(flag_k_g = 1)flag_k_g = 2;flag_z_f = 2; /guanif(hongwai_1 = 0) & (hongwai_2 = 0)/doumanhw12_value +;if(hw12_value 5)hw12_value = 0;Send_threelines(0 x1c); else hw12_value = 0;if(hongwai_1 = 0) /1hw1_value +;if(hw1_value 5)hw1_value = 0;Send_threelines(0 x1a); else/hw1_value = 0;if(hongwai_2 = 0) /2hw2_value +;if(hw2_value 5)hw2_value = 0;Send_threelines(0 x1b); else/hw2_value = 0;void time0_int() interrupt 1 flag_hc_value +; void time1_int() interrupt 3static uchar value;TH1 = 0 xf8;TL1 = 0 x30; /2msvalue+;if(value = 100)value = 0;flag_200ms = 1;
展开阅读全文