查看: 2842|回复: 0
打印 上一主题 下一主题

超声波测距播报系统

[复制链接]
跳转到指定楼层
沙发
发表于 2017-10-23 20:43:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liliuyang 于 2017-10-24 21:47 编辑

超声波测距播报系统

                                                                 江西理工大学因仑班

    该项目为超声波测距语言播报,其主要为:使用超声波进行测距,在四位数码管中进行显示,然后在得到信号后,进行语言播报。其主要结构如下图所示:

这个项目是对语言合成芯片的一次尝试地运用,在这之后,还可以将这个语言合成模块扩展到电梯,小车倒车系统等一些需要进行人机交互的项目之中。


一、HC-SR04超声波测距模块HC-SR04超声波测距可提供2cm-400cm的非接触式测距功能。采用 IO 口 TRIG 触发测距,给最少 10us 的高电平信号。模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;若有信号返回,则会通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。


二、TM1637四位数码管TM1637是一种带键盘接口的LDE驱动控制专用电路,内部集成有MCU数字接口、数据锁存器、LED高压驱动、键盘扫描等电路。微处理器的数据通过两线总线接口和 TM1637 通信,在输入数据时当 CLK 是高电平时,DIO 上的信号必须保持不变;只有 CLK 上的时钟信号为低电平时,DIO 上的信号才能改变。数据输入的开始条件是 CLK为高电平时,DIO 由高变低;结束条件是 CLK 为高时,DIO 由低电平变为高电平。TM1637 的数据传输带有应答信号 ACK,当传输数据正确时,会在第八个时钟的下降沿,芯片内部会产生一个应答信号 ACK 将 DIO 管脚拉低,在第九个时钟结束之后释放 DIO 口线。

  1. /********************************************
  2. 函数名称:I2CStart()
  3. 入口参数:void
  4. 返回参数:void
  5. 函数功能:发送I2C起始信号
  6. *********************************************/
  7. void I2CStart(void)
  8. {
  9.                 clk = 1;
  10.                 dio = 1;
  11.                 Delay_us(2);
  12.                 dio = 0;
  13. }
  14. /********************************************
  15. 函数名称:I2Cask()
  16. 入口参数:void
  17. 返回参数:void
  18. 函数功能:发送I2C应答信号
  19. *********************************************/
  20. void I2Cask(void)
  21. {
  22.                 clk = 0;
  23.                 Delay_us(5);
  24.                 while(dio); //等待应答信号
  25.                 clk = 1;
  26.                 Delay_us(2);
  27.                 clk=0;
  28. }
  29. /********************************************
  30. 函数名称:I2CStop()
  31. 入口参数:void
  32. 返回参数:void
  33. 函数功能:发送I2C停止信号
  34. *********************************************/
  35. void I2CStop(void)
  36. {
  37.                 clk = 0;
  38.                 Delay_us(2);
  39.                 dio = 0;
  40.                 Delay_us(2);
  41.                 clk = 1;
  42.                 Delay_us(2);
  43.                 dio = 1;
  44. }
  45. /********************************************
复制代码
CLK下降沿后由DIO输入的第一个字节作为一条指令。经过译码,取最高B7、B6两位比特位以区别不同的指令。
B7
B6
指令

0
1
数据命令设置
1
0
显示控制命令设置
1
1
地址命令设置
如果在指令或数据传输时发送STOP命令,串行通讯被初始化,并且正在传送的指令或数据无效(之前传送的指令或数据保持有效)


三、XFS5352CE模块XFS5152CE 是一款高集成度的语音合成芯片,可实现中文、英文语音合成;并集成了语音编码、解码功能,可支持用户进行录音和播放;除此之外,还创新性地集成了轻量级的语音识别功能,支持 30 个命令词的识别,并且支持用户的命令词定制需求。XFS5152CE 芯片支持 UART 接口、I2C 接口、SPI 接口三种通讯方式,可通过 UART 接口、I2C 或 SPI 接口接收上位机发送的命令和数据,允许发送数据的最大长度为 4k 字节。在该设计中,我们使用的是UART通信方式,其设定为1位起始位,8位数据位,1位停止位。上位机发送给 XFS5152CE 芯片的所有语音合成命令都需要用“帧”的方式进行封装后传输。帧结构由帧头标志、数据区长度和数据区三部分组成。数据区是由命令字和命令参数组成的,上位机使用命令字来实现语音合成芯片的各种功能。

  1. void XFS_FrameInfo(uint8_t *HZdata)
  2. {
  3. /****************需要发送的文本**********************************/
  4.      unsigned  char xdata Frame_Info[50]; //定义的文本长度
  5.      unsigned  int  HZ_Length;  
  6.      unsigned  int i=0;
  7.      HZ_Length =strlen(HZdata);                         //需要发送文本的长度
  8.                   
  9. /*****************帧固定配置信息**************************************/           
  10.                  Frame_Info[0] = 0xFD ;                         //构造帧头FD
  11.                  Frame_Info[1] = 0x00 ;                         //构造数据区长度的高字节
  12.                  Frame_Info[2] = HZ_Length+2;                 //构造数据区长度的低字节
  13.                  Frame_Info[3] = 0x01 ;                         //构造命令字:合成播放命令                          Frame_Info[4] = 0x01;       //文本编码格式:GBK  
  14. /*******************发送帧信息***************************************/                  
  15.      memcpy(&Frame_Info[5], HZdata, HZ_Length);
  16.      PrintCom(Frame_Info,5+HZ_Length); //发送帧配置
  17. }
复制代码
XFS5152CE 芯片在上电初始化成功时会向上位机发送一个字节的“初始化成功”回传,初始化不成功时不发送此回传。XFS5152CE 芯片收到一个命令帧后会判断此命令帧正确与否,如果命令帧正确返回“收到正确命令帧”回传,如果命令帧错误则返回“收到错误命令帧” 回传。
要注意的是:如前一帧文本还没有合成完,就再次发送文本到 XFS5152CE  会中断前次合成,而执行新的合成。

四、工作流程  整个系统的工作流程如下图所示,先用超声波来进行测距,然后用数码管来进行显示,最后用按键来控制语音模块来进行语言播报功能。

演示视频地址:https://www.bilibili.com/video/av15685150/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表