新闻中心

EEPW首页>嵌入式系统>设计应用> ATmega16的语音型超声波测距仪的设计

ATmega16的语音型超声波测距仪的设计

作者: 时间:2013-01-11 来源:网络 收藏

2.3 语音播报模块
语音播报模块电路如图4所示。由集成稳压芯片AMS1117—3.3构成的稳压电路输出3.3 V电压供给ISD4004。ISD4004的语音输入由麦克风MIC输入或由插头输入,插入插头时麦克风输入电路自动断开,此时可以与电脑连接进行录音。放音时,音频输出经LM386放大驱动扬声器进行放音。ATmega16通过SPI接口向ISD4004发送录音地址和录音命令进行录音,发送放音地址和放音命令进行放音。中文液晶YM12 864和温度传感器DS18B20与ATmega16的连接较为简单,在此不作详述。

本文引用地址://m.amcfsurvey.com/article/170620.htm

d.JPG



3 软件设计
3.1程序设计
超声波测量距离的表达式为S=[(331.4+0.607T)×t]/2。其中,T为环境温度,t为从发射超声波信号到接收到回波信号所经过的时间。由此可见,测量距离的关键是尽可能精确地测出时间t。测量时间t常用的方法是用一个定时器/计数器和一个外部中断来实现。定时器/计数器用来计时,外部中断设置成电平触发方式,用于检测一个脉冲的上升沿和下降沿,当ATmega16外部中断引脚输入电平由低变高时触发第一次中断,读取时间值t1,然后将外部中断设置为下降沿触发中断,等到ATmega16外部中断引脚输入的电平由高变低时,再次触发中断,读取时间值t2,然后将外部中断设置为上升沿触发中断,两次时间值之差t=t2-t1即为脉冲的宽度。这种方法除了多占用ATmega16的一个外部中断源外,读取的时间值精度还容易受到中断响应时间的影响,造成测量距离误差增大。ATmega16具有一路输入捕获功能,配合内部的定时器/计数器T/C1,可以非常方便和精确地测出一个脉冲从上升沿到下降沿间的时间。方法是先将T/C1设置为输入捕获模式、上升沿捕获,并开启全局中断;当发射探头发射的超声波信号遇到障碍物后返回,被接收探头接收时,ATmega16的PD6(ICP1)引脚由低电平变高电平,触发第一次输入捕获,将T/C1的TCNT1中的计数值自动写入输入捕获寄存器ICR1,在程序中将ICR1的值保存在变量t1中,然后将T/C1设置为下降沿捕获;当接收到的信号下降沿到来时,再一次触发输入捕获,将ICR1的值保存在变量t2中,然后将TCNT1中的值清0,并将T/C1设置为上升沿捕获。假设ATmega16所使用的晶振为8 MHz,采用1/8分频,则两次捕获发生的时间之差t=t2-t1(μs)即为发射超声波信号至接收到回波信号所经过的时闻。定时器/计数器T/C1捕获中断程序如下:
e.JPG

手机电池相关文章:手机电池修复




评论


相关推荐

技术专区

关闭