基于51单片机的超声波测距系统设计内容摘要:
容易知道,当连接的线数越多,节省的 IO口效率就越明显。 不过矩阵键盘的识别原理比一般的独立按键识别原理要复杂一些,最常用的识别方法就是“高低电平翻转法”。 以 4*4矩阵键盘为例,当列线通过上拉电阻接电源正极,并将行线接到单片机的 IO口上,而列线所接的 IO 口作为输入。 这样,当按键在断开状态下,它们的输入端都呈现为 1,代表没有按键按下去。 此时行线输出的是 0,当检测到有按键按下,则输入线就会被拉低而置为 0,这样,通过检测下 输入线的状态就可判断是否有键被按下 [8]。 矩阵键盘具体电路图如图 210 所示。 湖南人文科技学院毕业设计 12 图 210 矩阵键盘原理图 湖南人文科技学院毕业设计 13 蜂鸣器报警模块 本测距系统带有超出手动设置量程报警的功能,报警装置采用压电式蜂鸣器发声来报警。 蜂鸣器是目前使用较多的一种小型发声类器件。 通常 采用直流电源供电,广泛被用在小型嵌入 式装置,声控系统,实验开发箱,报警装置,打印装置中。 蜂鸣器按照其工作方式来分类可分为压电式蜂鸣器和电磁式蜂鸣器 [9 ]。 压电式蜂鸣器主要由压电发声片、阻抗匹配电路及共鸣器、 多谐振荡器 、塑料外壳等组成。 多谐振荡器由三极管或者 CMOS 管组成,也可由专门 IC 组成。 当接通 电源 后 ,多谐振荡器起振 ,输出 的 音频信号 ,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由特殊的化学压电 陶瓷 材料制成。 在陶瓷片的两面镀有一层 电极 ,在经过极化处理后,再与另外一种金属片粘贴在一起来构成 [10]。 在嵌入式应用的设计上,很多设计都需要用到蜂鸣器,由于蜂鸣器的发声稳定特性,经常将蜂鸣器用作报警和提示的作用,还有也可用作按键、步骤提示或是故障停止等方面作用。 由于 自激 蜂鸣器大部分是采用 直流电压 来驱动,而很少使用交流电,只需对驱动口输出驱动电平并通过 三极管 放大驱动电流就能使蜂鸣器发出声音。 蜂鸣器报警模块原理图如图 211 所示。 图 211 蜂鸣器报警模块原理图 湖南人文科技学院毕业设计 14 第 3 章 系统软件设计 软件设计总流程 当整个系统上电后,首先单片机自动复位,然后配置外部中断 0 和定时器中断 0 的模式和触发方式。 初始化 DS18B20,等到 DS18B20 初始化完毕后,立刻启动DS18B20 进行温度测量,继续等待,等待到测温结束后,将当前温度值存储到 EPROM中便于后续处理。 接下来就初始化 LCD1602,一直等到 LCD1602 初始化完毕。 之后单片机发送指令驱动 HCSR04 模块发射超声波,于此同时开启定时器开始定时,并且开始等待,若在定时器中断响应前,接收到了超声波遇到障碍物反射回来的声波,则立刻停止计数,并把定时器计数值存储起来 后续处理。 如果在定时器溢出前没有接收到超声波,则响应定时器中断,并且置位 flag1 标志为 1。 之后判断flag1 标志位是否为 1,若为 1,则驱动 LCD1602 显示错误,若 flag1 标志等于 0(初始值)则首先调用转换函数,将定时器计数值和当前环境温度值联合转换成距离值,再驱动 LCD1602 显示当前温度值和距离值。 在整个程序运行过程中,若没有单独外部中断 0 响应,说明没有设置量程。 若在程序运行过程中,有人为按键按下,则程序立即响应外部中断 0,并且置位 flag2=1。 若程序运行到 flag2 判断处,若为 0,则无需应答,若 为 1,则立刻进入按键操作程序,在程序中首先同样初始化 LCD1602 便于显示按键操作值,然后调用矩阵键盘扫描函数,从而得到按键的键值,并且将键值通过 LCD1602 显示出来,在显示键值的同时,还需要显示一些固化的字符,以作为标示。 最后我们通过将按键值进行处理,计算出人为设置的量程并将该值存储起来。 在程序运行过程中,若检测到当前所测得的距离,超出了人为设置的量程,则立刻启动蜂鸣器报警,否则程序继续运行。 系统软件流程图如图 31 所示。 湖南人文科技学院毕业设计 15 Y N Y N Y N Y N 图 31 系统软件流程图 初始化 DS18B20 测温模块 是否初始化完毕 启动 HCSR04 测距模块发射超声波并且开启定时器计数 是否接收到回波 定时器是否溢出 置位 flag1=1 停止计数,保存计数值,置flag1=0 flag1 是否为 1 驱动 LCD1602 显示错误 换算当前距离值 驱动 LCD1602 显示距离和温度 结束 开始 初始化外部中断 0 和定时器中断 0 湖南人文科技学院毕业设计 16 单片机驱动 HCSR04 模块程序设计 等待 LCD 初始化与 DS18B20 测温完毕后,单片机将 IO 口 电平拉高并且维持 10us 以上,之后 HCSR04 将自动产生 8 个 40KHZ 的方波驱动发射头发 射超声波,并且使得 口位高电平,当 HCSR04 模块接收到发射回来的超声波后,将。 其时序逻辑图如图 32 所示。 图 32 HCSR04 时序逻辑图 由于该设计系统是采用定时器计数的方式来计算超声波传输的时间,而所用的定时器为 16 位定时器,计数最大时间为 65536us,当计数时间达到此值时,超声波接收头还未接收到外射回来的超声波时,将产生定时器中断,此时表面已经超出测量范围,显示错误。 湖南人文科技学院毕业设计 17 d 单片机计算测试模块与障碍物距离算法设计 超声波测距是通过计时超声波来回所耗时间来实现的。 设超声波脉冲由传感器发出到接收所经历的时间为 t,超声波在当前温度下传播速度为 v,则从传感器到被测物的距离 d可由下列公式计算得到 2/)( tvd [11]其基本原理如图 33所示。 图 33 超声波测距计算原理图 由于此系统是利用超声波的传输时间来测量距离,就需要考虑声音传输媒介的弹性模量和密度对声速的影响。 在空气中,气体的温度,湿度,压强等因素会引起空气密度和弹性模量的变化,气体声速主要受密度的影响,超声波 在气,液,固三者的中传播速度关系是固体 液体 气体。 气体中声速受温度影响较大,根据声音在空气中传播速度为 273/10 TC ,其中 T 为当前环境温度,单位为摄氏度,0C 为 [12]。 根据此公式,我们将 DS18B20 测出的当前环境温度 T 代入上式计算,就可以提高测量的精度,对最终测量结果进行温度补偿。 单片机定时器计时程序设计 STC89C52 单片机内 部有两个 16 位可编程的定时器 /计数器,它们均是二进制加计数器,当计数器计时后溢出时, CPU 自行产生溢出中断并且置位标志位,用于标示计时时间达到或计数已经终止。 两个定时器 /计数器均可编程设置为定时模式和计数模式两种,在这两种模式下又均可设定 4 种工作方式。 其各类控制字节和 HCSR 超声波测距模块 超声波发射头 超声波接收头 障碍物 湖南人文科技学院毕业设计 18 状态标示位都存储在特定存储器中,人为设定存储器的初始值,就可改变工作方式和状态。 定时模式下的定时时间和计数模式下的计数值在程序运行之处就可装载相应存储器中。 定时器和计数器主要由 16 位加法计数器,工作方式寄存器 TMOD和控制寄存器 TCON 组成,定 时器 /计数器 T0, T1 均由 TH0/TH1(高八位), TL0/TL1(低八位)组成, TMOD 用于设置定时器 /计数器的工作方式, TCON 用于控制 T0,T1的启动 /停止计数 [13]。 TCON 寄存器的格式如表 31 所示。 TCON 的高四位用于定时器 /计数器控制,并且可以进行位寻址。 TR0 与 TR1 用于控制定时器 /计数器的启动和停止, 1 为启动, 0 为停止。 TF0 与 TF1 分别为 TO 与 T1的溢出标志位,当定时或者计数溢出时,由单片机自动置位为 1[13]。 表 31 控制寄存器 TCON 的格式 位 D7 D6 D5 D4 D3 D2 D1 D0 地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TMOD 的格式如表 32 所示, TMOD 寄存器不支持位寻址,高四位为 T1 方式字段,低四位为 T0方式字段, GATE 用于控制定时器逻辑输入, C/T 控制为定时模式还是计数模式, 1 为计数, 0 为定时, M1, M0用于选择定时器的工作方式,其工作方式如表 33 所示 [13]。 表 32 方式控制寄存器 TMOD 格式 位 D7 D6 D5 D4 D3 D2 D1 D0 TMOD GATE C/T M1 M0 GATE C/T M1 M0 湖南人文科技学院毕业设计 19 表 33 定时器工作方式 M1 M0 工作方式 0 0 方式 0,为 13 位定时器 /计数器 0 1 方式 1,为 16 位定时器 /计数器 1 0 方式 2,8 位初始值自动重载的 8 位定时器 /计数器 1 1 方式 3,仅适用于 T0,分成两个 8 位计数器, T1 停止计数 由定时器的工作原理,我们发射超声波之前配置好定时器工作方式,在单片机发出控制超声波发射的同时开启定时器,一直等到接收到反射回来的超声波时再关闭定时器,就可得到超声波的传播时间。 DS18B20 驱动程序设计 DS18B20 的内部结构如图 34 所示。 ROM 中的 64 位序列号是出厂前被光记好的,它可以看作是该 DS18B20 的地址序列码,每 DS18B20 的 64 位序列号均不相同。 64 位 ROM 的排列是:前 8 位是产品家族码,接着 48位 DS18B20 的序列号,最后 8位是前面 56 位的循环冗余校验码 (CRC=X8+X5 +X4 +1)[14]。 ROM 作用是使每一个DS18B20 都各不相同,这样就可实现一根总线上挂接多个。 像 DALLS 公司出产的单总线器件都有特点的操作时序,要按照公司给定时序图 操作。 DS18B20 共有 6 种信号类型:复位脉冲、应答脉冲、写 0、写 读 0 和读 1。 DS18B20 的操作一般来说分为指令操作和数据操作,除了读数据操作外的时序,一般都是采用数据和指令分时复用那一根单总线, CPU 首先向器件发送开始指令,标志着数据和指令传输开始,然后再写入相应的数据或者指令,之后从机 DS18B20 就会给出相应的应答信号以标志着数据或者指令传输完毕 [15]。 湖南人文科技学院毕业设计 20 图 34 DS18B20 的内部结构图 要在 DS18B20 的 单总线上实现数据交互,首先要对从机初始化 ,主机首先将总线拉低并且保持低电平时间至少 480us,从而产生使得从机复位。 然后总线被释放,由于总线上接了上拉电阻,所以此时总线释放回高电平,然后延时 15 到 60 us左右,这个时候主机就处于准备发送数据模式,而从机初始化完毕。 若连接在总线上的 DS18B20 器件无损坏的情况下, DS18B20 将拉低总线 60 至于 240us,以产生低电平应答脉冲,若为低电平,再延时 480 us。 其初始化时序图如图 35 所示。 图 35 DS18B20 初始化时序图 湖南人文科技学院毕业设计 21 写时序分为写 0 和写 1 两种情况。 二者都必须最 少保持 60us 时间间隔,若要重复的写数据进去从机需要至少 1us 的等待时间,当写 0 或者写 1 时,首先 CPU 把总线拉低,当写 1 的时候:主机拉高总线,维持 2us,然后释放总线,维持 60us。 写 0 的时候:主机拉低总线,维持 2us,同样释放总线,延时 60us,之后 DS18B20将读取到单片机要写入到 DS18B20 的数据,等到读取数据完毕后,将自动释放总。基于51单片机的超声波测距系统设计
相关推荐
页 共 33 页 图 1056 写操作时序 10. 8. 2. 4 1602LCD 的 RAM 地址映射及标准字库表 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。 要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图 1057是 1602的内部显示地址。 图 1057 1602LCD 内部显示地址
5 显示模块 本设计显示模块主要采用 LCD12864 液晶显示器,其电路原理图如下: 图 35 LCD12864 模块 LCD12864液晶显示器通过数据端口也即端口 7~ 14与主控芯片 AT89S52 的 I/O端口 P3相连接实现数据与指令的传输,再通过控制端口 RS、 RW、 EN也即端口 4~ 6与主控芯片 , 端口相接实现对数据和指令传输 的控制。 显示模块采用 12864
89C51单片机作为主机,它们都具有4K片内ROM,128字节片内RAM,片外ROM寻址范围达64K,片外RAM寻址范围达64K,2个16位计数器,5个中断源,4个并行口,1个串行口。 简易自动乐曲播放器采用单片机最小系统足以满足系统设计要求,同时要设计单片机最小系统的晶振和复位电路。 单片机复位电路复位是单片机的初始化操作,其作用是使CPU中的各个部件都处于一个确定的初始状态
P31P 0. 732P 0. 633P 0. 534P 0. 435P 0. 336P 0. 237P 0. 138P 0. 039V C C40GND20A T 89 C 5 16VB A T T E R Y1234D11 N 40 0 2D21 N 40 0 2N P N 1T R A N S 1A C 2 20 V1 00 u FV i n1V o ut3GND2L M 7 80 51
V 编程电压( Vpp)。 抢答器的优点及组成 在知识比赛中,特别是做抢答题目的时候 , 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。 如果在抢答中,靠视觉是很难判断出哪组先答题。 利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。 本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。
G2 引脚接地,然后以 A、 B、 C、 D 四脚为输入端,就会形成 16 种不同的输入状态,分别为0000~1111,然后使每种状态只控制一路输出,即会有 16 路输出。 如果一行 64 点全部点亮,则通过 74LS154 的电流将 达 640 mA,而实际上,74LS154 译码器提供不了足够的吸收电流来同时驱动 64 个 LED 同时点亮,因此,应在 74LS154 每一路输出端与 16