车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc

上传人:小小飞 文档编号:3973066 上传时间:2019-10-11 格式:DOC 页数:38 大小:1.73MB
返回 下载 相关 举报
车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc_第1页
第1页 / 共38页
车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc_第2页
第2页 / 共38页
车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc_第3页
第3页 / 共38页
车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc_第4页
第4页 / 共38页
车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc》由会员分享,可在线阅读,更多相关《车载超声波测距毕业论文2012-基于52单片机的车用超声波测距系统设计与实现.doc(38页珍藏版)》请在三一文库上搜索。

1、 本科生毕业设计本科生毕业设计 基于 52 单片机的车用超声波测距系统设计与实 现 Based on 52 single-chip ultrasonic distance measurement system for Car reversing 学生姓名 所在专业电气工程及其自动化 所在班级 申请学位工学学士 指导教师职称副教授 副指导教师职称 答辩时间2012 年 12 月 22 日 目 录 目目 录录 设计总说明 I INTRODUCTION.II 1设计的研究背景及意义.1 1.1国内应用于汽车测距地方法对比1 2整体方案设计及器件的选择.1 2.1超声波测距的原理1 2.2HC-SR0

2、4 超声波测距模块的原理及参数.2 2.3数据处理的核心:AT89S52 芯片.3 2.4DS18B20 芯片介绍.5 2.5语音报警模块板载 ISD1820 芯片6 3超声波电路测距系统的硬件设计.7 3.1整体电路设计7 3.2超声波模块电路7 3.3超声波显示电路设计9 3.4超声波温度补偿的电路设计10 3.5报警电路设计语音报警模块板载 ISD1820 芯片10 4超声波测距的软件系统设计.11 4.1软件设计分析11 4.2软件设计思路11 4.2.1主程序.11 4.2.2温度补偿流程图.13 5调试及误差分析.13 5.1 软件调试13 5.1.1 超声波发射启动:14 5.1

3、.2 超声波模块工作14 5.1.3 测距计算15 5.1.4 距离溢出处理及报警15 5.2 测试分析.16 5.3 误差分析17 鸣 谢18 参考文献19 设计总说明 I 设计总说明 随着汽车产业的快速发展和人们生活水平的不断提高,我国的汽车数量正逐年增 加。同时汽车驾驶人员中非职业汽车驾驶人员的比例也逐年增加。在公路、街道、停 车场、车库等拥挤、狭窄的地方倒车时,驾驶员既要前瞻,又要后顾,稍微不小心就 会发生事故。据相关调查统计,15的汽车碰撞事故是因倒车时汽车的后视能力不良 造成的。因此,增加汽车的后视能力,研制汽车后部探测障碍物的倒车报警装置便成为 近些年来的研究热点。安全避免障碍物

4、的前提是快速、准确地测量障碍物与汽车之间 的距离。国内外的学者开始逐步重视倒车报警器在实际方面的应用,在低成本的基础 上力求高精度,这对于降低生产成本、促进技术发展和普及倒车雷达具有很重要的意 义1。 本设计采用 AT89S52 芯片为核心,三个 HC-SR04 超声波测距模块为采样对象, lcd1602 为显示模块。三个超声波模块分别位于汽车的后方的左中右,实时把汽车后部 距离障碍物的距离显示给驾驶员,当某个距离少于 10cm 时,ISD1820 语音报警模块播 报录音对驾驶员提出预警。 经试验证明,这套系统软硬件设计合理,抗干扰能力强,实时性能好,可以有效 地解决汽车倒车碰撞,能让汽车停靠

5、的更加整齐,驾驶员更加轻松、安全地倒车。 关键词:(52 单片机;汽车倒车;超声波模块) ABSTRACT II INTRODUCTION With the rapid development of industry and the improvement in peoples living standards,more and more people have their cars in our country. The proportion of non- occupational car drivers also increased year by year. Reversing in

6、the crowded, narrow roads, streets, parking lots, garages and other places make the drive pay too much attention and it is easily cause traffic accidents. According to surveys, 5% traffic accidents are due to the drivers can not see what is behind the car. So improving the sight behind the car is ve

7、ry important. If the drivers know the distance between the barrier and the car, they can avoid obstructions while Car reversing. The domestic and foreign scholars start to take the back- draft alarm apparatus used in the cars. My design is using AT89S52 chip at the core, Three HC-SR04 ultrasonic ran

8、ging module as a sample object, cd1602 as the demonstration module. Three ultrasonic modules which are located in the left rear of the car to the right. Tell the distance to the drivers at anytime. When one of the distances is less than 10cm, ISD1820 voice alarm module broadcasts recorded on drivers

9、 early warning. The test proved that this system is reasonable and it has strong anti-interference ability, it is a effective solution to the auto reversing collision. Drivers can be more easily and safely reverse while having this system. KEYWORDS: 52 single-chip;Car reversing; Ultrasonic modules 广

10、东海洋大学 2012 届本科生毕业设计 1 基于 52 单片机的车用超声波测距系统设计与实现 电气工程及其自动化, 指导教师: 毕业设计说明书 1设计的研究背景及意义 超声波是指频率高于 20Khz 的声波,属于机械波的范畴,遵循一般机械波在弹性 介质中的传播规律,如在介质中的分界面处发生的反射和折射现象,在进入介质后被 介质吸收而发生的衰减等,正是因为有这些性质,使得超声波可以用于距离的测量, 随着经济的发展,科技水平的不断提高,电子测量技术应用越来越广泛,超声波测量 精度高,成本低,性能稳定则备受青睐,所以超声波测距技术被广泛应用于人们的生 活和工作中1。 超声波测距是一种非接触检测技术,

11、不受光线、被测对象颜色的影响,比其他仪 器更加卫生,具有不污染、高可靠、寿命长等特点,被广泛应用于纸业、矿业等行业 中,可在不同环境中进行距离测量的准确度的在线标定,可直接用于水、酒精、等液 位控制,能达到工业实用的指标要求。因为超声波测距具有以上的这些特点,使得其 在汽车防碰撞方面有广泛的应用1。 1.1国内应用于汽车测距地方法对比 目前,运用于汽车的测距的主要有以下四种方式:超声波测距、毫米波雷达测距、 摄像系统测距、激光测距。雷达测距能够探测多目标,精度高,受天气影响较少,已 达到实用水平。作为车载雷达,却存在着电磁波的干扰问题,必须防止因雷达间以及 其他通讯设施的电磁波干扰而发生的误动

12、作。目前,车载雷达测距主要作为防撞雷达, 防止在高速公路上发生的追尾碰撞。 摄像系统测距模仿人体视觉原理,测量精度高。 但目前价格较高,同时由于受软件和硬件的制约,成像速度较慢。 激光测距仪虽然 具有测量时间短,量程大、精度高等优点,但同样被高昂的价格制约着他的发展。 超 声波测距原理简单,制作方便,成本较低,虽然受环境因素不能用于远距离和高精度 测量,但由于其理想的测量距离为 4-5 米,用于汽车的倒车防碰撞刚好合适1。 2整体方案设计及器件的选择 2.1超声波测距的原理 谐振频率高于 20Khz 的声波称为超声波。超声波为直线传播方式,频率越高,反 广东海洋大学 2012 届本科生毕业设计

13、 2 射能力越强,而绕射能力越弱。利用超声波这种特性,常常利用检测其发射时间进行 测量。其工作原理是:超声波模块向介质发射超声波,声波遇到目标后必然有反射回 波作用在模块上。若已知介质中胜诉为 c,回波到达时刻与发射波的时间差为 t,就可 以算出发射点与反射点的距离为 s: s=c*t/2. 2 式中的 C 为超声波在空气中的传播速度 340m/s,其与温度有关。如果环境温度变化 显著,必须考虑进行温度补偿。空气中声速与温度的关系可以表示为: c=331.4+0.607t 2 2.2HC-SR04 超声波测距模块的原理及参数 图 2-1 HR-SR04 超声波集成模块正面外观图 图 2-2 H

14、R-SR04 超声波集成模块背面外观图 HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感应测距功能,模块 包括超声波发射器、接收器与控制电路。 基本工作原理: (1) 、采用 IO 口 TRIG 触发测距,至少给出 10US 的高电平信号; (2) 、模块自动发送 8 个 40Khz 方波,自动检测是都有信号返回; (3) 、有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平的持续时间就是超 声波从发射到返回的时间。测试距离=(高电平时间*声速(340m/s) )/2; 广东海洋大学 2012 届本科生毕业设计 3 HC-SR04 超声波电气参数 2.3数据

15、处理的核心:AT89S52 芯片 图 2-3 AT89S52 单片机引脚图及实物图 AT89S52 是一种低功耗、高性能 CMOS 8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和 引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单 芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 在众多嵌入式控 制应用系统中得到广泛应用3。 P P0 0 口口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TT

16、L 逻 辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。 当访问外部 程序和数据存储器时, P0 口也被作为低 8 位地址/数据复用。在这种模式下, P0 不具有内部上拉电阻。 在 flash 编程时,P0 口也用来接收指令字节;在程序校验 时,输出指令字节。程序校验 时,需要外部上拉电阻。 广东海洋大学 2012 届本科生毕业设计 4 P P1 1 口口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器 能驱动 4 个 TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高, 此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的

17、 原因,将输出电流( IIL)。 P2 口:口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 PLCC 封装 4 个 TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口 使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。 在 访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行MOVX DPTR) 时, P2 口送出高八位地址。在这种应用中, P2 口使用很强的内部上拉发送 1。在使用 8 位地址 (如 MOVX RI)访问外部数据存储器时, P2 口输出 P2 锁存器的内容。

18、 在 flash 编程和校 验时,P2 口也接收高 8 位地址字节和一些控制信号。 P3P3 口:口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p3 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为 输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流 (IIL)。 P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所示。 在 flash 编程和校验时,P3 口也接收一些控制信号4。 第二功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中

19、断 0) P3.3 INT1(外中断 1) P3.4 T0(定时/计数器 0) P3.5 T1(定时计数器 1) P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通) A AL LE E/ /P PR RO OG G:当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输 出脉冲用于锁存地址的低 8 位字节。一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当 访问外部数据存储器时将跳过一个ALE 脉冲。对 FLASH 存储器编程期间,该引脚 还用于输入编程脉冲( PROG)。如有必要,可通过

20、对特殊功能寄存器( SFR)区中 的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设 置 ALE 禁止位无效 5。 P PS SE EN N:程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当 AT89S52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效, 即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN 信号。 广东海洋大学 2012 届本科生毕业设计 5 E EA A/ /V VP PP P:外部访问允许,欲使

21、 CPU 仅访问外部程序存储器(地址为 0000H- FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程, 复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端),CPU 则执行内部 程序存储器的指令。 FLASH 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。 X XT TA AL L1 1:振荡器反相放大器和内部时钟发生电路的输入端。 X XT TA AL L2 2:振荡器反相放大器的输出端 6。 2.4DS18B20 芯片介绍 由于考虑到汽车倒车环境的复杂性,对声速进行温度补

22、偿将大大提高数据的准确性。 DS18B20 数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺 纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874 等 等。主要根据应用场合的不同而改变其外观。封装后的DS18B20 可用于电缆沟测 温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库 测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用 于各种狭小空间设备数字测温和控制领域 11。 图 2-4 DS18B20 的引脚图及实物图 特点:独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传 感应用 无需外部

23、元件 可用数据总线供电,电压范围为 3.0 V 至 5.5 V 无需备用 电源 测量温度范围为 -55 C 至+125 。华氏相当于是 -67 F 到 257 华氏 度 -10 C 至+85 C 范围内精度为 0.5 C 温度传感器可编程的分辨率为 912 位 温度转换为 12 位数字格式最大值为 750 毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统, 消费电子产品 温度计,或任何热敏感系统 描述该 DS18B20 的数字温度计提供 9 至 12 位(可编程设备温度读数。信息 广东海洋大学 2012 届本科生毕业设计 6 被发送到/从 DS18B20 通过 1 线接口

24、,所以 中央微处理器 与 DS18B20 只有一个一 条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个 DS18B20 的包含一个独特的序号,多个 ds18b20s 可以同时存在于一条 总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控 制,感测建筑物内温设备或机器,并进行过程监测和控制 18。 2.5语音报警模块板载 ISD1820 芯片 板载 ISD1820 语音模块具有接线简单,容易控制等特点,只需在 PLAYE 引脚上 连上单片机的某个 IO 口,当给出一个有效电平时,语音模块即可播放预先录制的声音。 1、板载咪头,可以直接录音

25、 2、可以进行 10 秒左右的语音录放 3、高质量自然的语音还原,可用作喊话器模块 4、带循环播放,点动播放,单遍播放功能 5、芯片主要的引脚已经引出,可以通过单片机控制操作 6、工作电压:35V 图 2-4 板载 ISD1820 芯片模块的正面实物图 整体电路的控制核心为单片机 AT89S52,三个超声波发射和接收模块 HC-SR04 对汽 车的左、中、右数据进行采集并发送到芯片处理。DS18B20 则对实时温度采集保证声速 误差尽量减少。所测得的数据全部显示在 LED1602 上面,当某个数据显示的距离少于 广东海洋大学 2012 届本科生毕业设计 7 10cm 时,ISD1820 语音报

26、警模块播报录音对驾驶员提出预警。 3超声波电路测距系统的硬件设计 3.1整体电路设计 LED1602 显示 AT89S52 HC-SR04 HC-SR04 HC- SR04 DS18B20 ISD1820ISD1820 语音报警语音报警 图 3-1 整体电路设计系统框图 三个 HC-SR04 超声波模块发出 40kHz 的信号,遇到障碍物后返回并发给单片机一个 有效电平,单片机内部定时器记录期间的时间 T,结合被 DS18B20 修正了的声速计算出 距离并显示在 LED1602,一同显示的还有实时的温度。当某个测量距离少于 10cm 时, ISD1820 语音报警芯片播报预先录制的声音对驾驶员

27、提出预警。 3.2超声波模块电路 广东海洋大学 2012 届本科生毕业设计 8 图 3-2 超声波模块发射电路 图 3-3 超声波模块接收电路 图 3-4 超声波时序图 以上时序图表明只要提供一个 10us 以上的脉冲触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响 信号的脉冲宽度与所测距离成正比。由此通过发射信号到回收的回响信号时间间 隔可以计算得到距离。 广东海洋大学 2012 届本科生毕业设计 9 3.3超声波显示电路设计 图 3-5 LCD1602 模块正面图 图 3-6 LCD1602 模块的电路引脚接线 由于本设计连接三个

28、超声波模块,一个温度检测芯片,要显示的内容较多,综合 考虑采用 LED1602 显示。1602 液晶也叫 1602 字符型液晶它是一种专门用来显示字 母、数字、符号等 的点阵型液晶模块它有若干个 5X7 或者 5X11 等点阵字符位组成, 每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间 隔起到了字符间距和行间距的作用 。1602 液晶模块内部的字符发生存储器 (CGROM)已经存储了 160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英文 字母的大小写、常用的符号、和日文假名等 。 1602 采用标准的 16 脚接口,其中: 第 1 脚:VSS 为电源地 第 2

29、脚:VDD 接 5V 电源正极 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源 时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个 10K 的电位 广东海洋大学 2012 届本科生毕业设计 10 器调整对比度) 。 第 4 脚:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指 令寄存器。 第 5 脚:RW 为读写信号线,高电平 (1)时进行读操作,低电平 (0)时进行写操 作。 第 6 脚:E(或 EN)端为使能(enable)端。 第 714 脚:D0D7 为 8 位双向数据端。 第 1516 脚:空脚或背灯电源。 15 脚背光正

30、极, 16 脚背光负极。 3.4超声波温度补偿的电路设计 DS18B20 是美国 DALLAS 半导体公司推出的一种改进型智能温度传感器。与传统的 热敏电阻相比,它能够直接读出被测温度并且可以根据实际要求通过简单的编程实现 9-12 位数字式读数方式。可以在 93.75ms 和 750ms 内完成 9 位和 12 位的数字量,并且 从 DS18B20 读出的信息或写入 DS18B20 的信息仅需要一根接线的读写,温度变换功率 来源于数据总线,总线本线也可以向所挂接的 DS18B20 供电,无需额外电源。因而使 用 DS18B20 可以使系统结构更加简单,可靠性更高。由于声速受气温的影响比较大,

31、 所以通过 IO 口控制该芯片来对超声波测距中的声速进行校正,尽量减少测距中的误差。 图 3-7 DS18B20 的引脚接线 3.5报警电路设计语音报警模块板载 ISD1820 芯片 广东海洋大学 2012 届本科生毕业设计 11 图 3-8 ISD1820 语音报警模块的引脚接线 当测量的距离少于系统设定的值(本系统预设值为 10cm) ,给 BEEP 引脚一个高 低电平(专门用于出发 ISD1820) ,语音芯片收到信号,开始播报预先录制的音乐。 语音报警模块板载 ISD1820 芯片内部电路 图 3-9 ISD1820 语音报警模块的内部结构 4超声波测距的软件系统设计 4.1软件设计分

32、析 完成了系统的硬件设计之后,接下来就是系统的软件设计,此设计所需要完成的 主要是针对系统功能的实现及数据的处理和应用。由以上所述系统硬件设计和各个电 路功能,系统软件需要实现以下功能: 1. 信号控制。在系统硬件中,已经完成了 hc-sr04 与单片机的连接。在系统软件设计 中只需要完成循环控制触发或接收各个超声波模块的信号。 2. 数据的存储。测量系统中需要得到发射信号和接收回波的时间差,需要读出计数 器的值,然后存储在 RAM 中,在发射下一个信号前,需要对定时器以及存储参数 清零。 3.数据处理以及显示。RAM 中的计数值通过程序得到真实值*CM,再通过 LCD 显 示出来,必要时启动

33、语音芯片。 4.2 软件设计思路 4.2.1主程序 主程序的流程图如下图所示。主程序首先对系统各个连接的硬件进行初始化,包 括设置 T0 的工作方式,开中断,1602 的初始化等。然后控制给超声波模块触发管脚一 个 TRIG 一个持续 10us 的有效信号,超声波模块开始发射 8 个 40Hkz 的周期电平信号, 一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测距离成正比。回 响信号刚变高电平时,开启定时器,等到电平拉低,关闭定时器并记录时间 T。程序进 入计算子程序,中间首先执行记速程序,利用 DS18B20 修正当时速度。通过一系列判 断(超过 4m 发生溢出,低于设定的 10

34、cm,启动语音报警)显示在 lcd1602 上面。 广东海洋大学 2012 届本科生毕业设计 12 开始 系统初始化 1602 初始显示 超声波发射子程序 启动温度修正程序 判断距离 循环计算三个模块的 距离 显示-显示距离 显示距离 启动语音报警 结束 超出 4m 少于 10cm 图 4-1 系统程序流程图 广东海洋大学 2012 届本科生毕业设计 13 4.2.2温度补偿流程图 图 4-2 温度补偿流程图 考虑到温度对声速的影响,程序在一开始就进行温度采集,在关闭定时器后,修正声 速后再进行数据处理。 5调试及误差分析 5.1软件调试 由于本设计采用的是模块连接,连接前首先保证 GND 都

35、已连接,有万用表可以测试 一下它们是否已经有效连接。连接前,可以先测试各个模块是否能够工作,其功能能 否达到要求。硬件测试好后,便可以将程序便已下载到单片机中试运行。根据实际情 况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的时间间隔,以适应不 同距离的测量需要。根据所设计的电路参数和程序,测距仪能测量的范围为 0.04- 4m,测距仪最大的误差不应超过 1cm。系统调试完后应对测量误差和重复一致性进行多 次实验分析,不断优化系统使其达到实际使用效果要求。本设计使用 KEIL3 编译。 广东海洋大学 2012 届本科生毕业设计 14 图 5-1 Keil3 的程序编译界面 设计采用调用

36、多个头文件的方法,这样层次和思路比较清晰,其中的包括 LED1602.h 是以前就编译后的,这让调用起来比较节省时间,修改也很方便。 5.1.1超声波发射启动: void StartModule1() /启动模块1 unsigned char nop ; TX1=1; /启动一次模块 for(nop=0;nop=400)|flag=1) /超出测量范围显示“-” flag=0; DisplayOneChar(2, 1, ASCII11); DisplayOneChar(3, 1, ASCII10);/显示点 DisplayOneChar(4, 1, ASCII11); DisplayOneCh

37、ar(5, 1, ASCII11); DisplayOneChar(6, 1, ASCII12);/显示 M else disbuff0=S%1000/100;/定义距离数组 disbuff1=S%1000%100/10; disbuff2=S%1000%10 %10; DisplayOneChar(2, 1, ASCIIdisbuff0); DisplayOneChar(3, 1, ASCII10);/显示点 DisplayOneChar(4, 1, ASCIIdisbuff1); DisplayOneChar(5, 1, ASCIIdisbuff2); DisplayOneChar(6,

38、1, ASCII12);/显示 M S1=disbuff0*10+disbuff1+0.1* disbuff2; if(S1/主体程序 #include #include #include #include #include void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); void Decode(unsigned char Sc

39、anCode); /*/ void zd0() interrupt 1 /T0 中断用来计数器溢出,超过测距范围 flag=1; /中断溢出标志 /*/ void main(void) unsigned char delay; int ds18b20_temp; Delay400Ms(); /启动等待,等 LCM 讲入工作状态 LCMInit(); /LCM 初始化 Delay5Ms(); /延时片刻(可不要) designer_display_initial() ; for (delay=0; delay0x19) /若到达字串尾则退出 if (X 480us dq=1; delay(14)

40、;/delay25us while(dq);/等待 1820 的回应信号 / led1=0;/受到回应 led1 发光 delay(10); dq=1; /*1820 读时序*/ unsigned char read(void) unsigned char i; unsigned char dt=0; for(i=0;i1; _nop_(); _nop_(); _nop_(); 附 录 28 _nop_(); if(dq) dt=dt|0x80; delay(10);/delay49us return dt; /*1820 的写时序*/ void write(unsigned char d)

41、unsigned char i; for(i=0;i15us dq=d delay(10); dq=1; d=d1; /*温度转换*/ void rd_te(void) unsigned char low,high; init(); write(0xcc); write(0x44); delay(200); init(); write(0xcc); write(0xbe); low=read(); high=read(); if(high16) 附 录 29 sign=0;/零下温度 else sign=1; if(!sign) low=low+1; if(!low) high=high+1;

42、/向 high 进位 else high=high; /对零下温度取反加一 t=high*160+low*0.625; /*数据处理*/ void pro(void) /uchar i; if(sign) fuhao=13; else fuhao=11; bai=t/100%10; shi=t%100/10; ge=t%10; voiddisplay_tempture() rd_te();/读取温度 pro();/数据处理 DisplayOneChar(10,1,ASCIIfuhao); DisplayOneChar(11,1,ASCIIbai); DisplayOneChar(12,1,AS

43、CIIshi); DisplayOneChar(13,1,ASCII10); DisplayOneChar(14,1,ASCIIge); wenduzhi=bai*10+shi+0.1*ge ; /* DisplayOneChar(5,0,ASCII15); 附 录 30 DisplayOneChar(6,0,ASCII14); */ /*数据处理子程序 */ unsigned char code Cls = “ “; sbit speak = P36; static unsigned char DisNum = 0; /显示用指针 unsigned int time=0; unsigned

44、long S=0,S1=0; bit flag =0; unsigned char disbuff4 = 0,0,0,0,; void speed() float speed=0; time=TH0*256+TL0; TH0=0; TL0=0; speed=(331.4+0.607*wenduzhi)/200; S=(time*speed)/100; /算出来是 CM void speak1() speak=0; delay(10); speak=1; /*/ void StartModule0() /启动模块 0 unsigned char nop ; TX=1; /启动一次模块 for(n

45、op=0;nop=700)|flag=1) /超出测量范围显示“-” flag=0; DisplayOneChar(2, 1, ASCII11); DisplayOneChar(3, 1, ASCII10); /显示点 DisplayOneChar(4, 1, ASCII11); DisplayOneChar(5, 1, ASCII11); DisplayOneChar(6, 1, ASCII12); /显示 M else 附 录 32 disbuff0=S%1000/100;/定义距离数组 disbuff1=S%1000%100/10; disbuff2=S%1000%10 %10; Dis

46、playOneChar(2, 1, ASCIIdisbuff0); DisplayOneChar(3, 1, ASCII10); /显示点 DisplayOneChar(4, 1, ASCIIdisbuff1); DisplayOneChar(5, 1, ASCIIdisbuff2); DisplayOneChar(6, 1, ASCII12); /显示 M S1=disbuff0*10+disbuff1+0.1* disbuff2; if(S1=700)|flag=1) /超出测量范围显示“-” flag=0; DisplayOneChar(11, 0, ASCII11); DisplayO

47、neChar(12, 0, ASCII10);/显示点 DisplayOneChar(13, 0, ASCII11); DisplayOneChar(14, 0, ASCII11); DisplayOneChar(15, 0, ASCII12);/显示 M else disbuff0=S%1000/100;/定义距离数组 disbuff1=S%1000%100/10; disbuff2=S%1000%10 %10; DisplayOneChar(10, 0, ASCIIdisbuff0); DisplayOneChar(11, 0, ASCII10);/显示点 DisplayOneChar(12, 0, ASCIIdisbuff1); 附 录 33 DisplayOneChar(13, 0, ASCIIdisbuff2); DisplayOneChar(14, 0, ASCII12);/显示 M S1=di

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1