辜渝傧

13037102709

027-87870986

教学实训

您当前的位置:首页 > 教学资源 > 实训方案 >

无线传感网络实训|实验4.1 语音播放实验

发布者:唯众    布时间:2020-12-01 14:00:48    点击量:

1.实验目的

1)、通过实验掌握CC2530芯片串口编程,带你一步步走进嵌入式大门
2)、掌握语音播放电路原理
3)、连接语音转换芯片的功能

2.实验设备

硬件:PC机1台、ZIGBEE节点板1套(底板、核心板、仿真器、USB 线)、语音播放模块1个、喇叭或者音箱1个
软件:2000/XP/win7 系统,IAR 8.10 集成开发环境

3.实验相关电路图

语音播放实验

4.实验相关寄存器

5.源码分析

#include <ioCC2530.h>
#include <string.h>
#include <stdio.h>
 
#include "UART.h"
#include "OLED.h"
 
#define KEY                P2_0             //定义KEY为P20口
 
 
void clock_setup(void)
{
       CLKCONCMD &= ~0x40;           //设置系统时钟源为32MHZ晶振
    while(CLKCONSTA & 0x40);    //等待晶振稳定
    CLKCONCMD &= ~0x47;         //设置系统主时钟频率为32MHZ
}
void init_sensor_io(void)
{
       //1.设置IO为普通IO
       P0SEL  |= 0xC0;
       P1SEL  |= 0x07;
      
       //2.设置编码口为输入
       P0DIR &= ~0xC0;
       P1DIR &= ~0x07;
}
 
uchar get_sensor_id(void)
{            
       volatile uchar temp = P0_6<<4|P0_7<<3|P1_0<<2|P1_1<<1|P1_2;    
       return temp;
}
 
void InitKey(void)
{
       P2DIR &= ~0x01;                                                  //P20定义为输入
       KEY = 1;
}
 
uchar CheckKey(void)
{
       if(KEY == 0)
       {
              Delay_ms(10);
              if(KEY == 0)
              {
                     KEY = 1;
                     return 1;
              }
       }
       return 0;
}
 
void yuyin_trform(uint8 *HZdata)
{
       unsigned  char Frame_Info[100];
       unsigned  int  HZ_Length; 
       HZ_Length =strlen((char*)HZdata);
       Frame_Info[0] = 0xFD ;
       Frame_Info[1] = 0x00 ;
       Frame_Info[2] = HZ_Length+4;
       Frame_Info[3] = 0x01 ;
       Frame_Info[4] = 0x01;
       Frame_Info[HZ_Length+5] = 0x0D;
       Frame_Info[HZ_Length+6] = 0x0A;
       memcpy(&Frame_Info[5], HZdata, HZ_Length);
       UartSendBytes(Frame_Info,7+HZ_Length);
}
 
void main(void)

       uchar temp8;
    uchar buf[16];
       clock_setup();                         //系统时钟设置,精确延时必须要设置
    Delay_ms(1000);          //让设备稳定
      
       port_init();
       initial_lcd(); 
      
       InitUart();
      
       clear_screen();                                                            //清屏
       disp_string_8x16_16x16(1,1,"武汉唯众智创科技");       //显示字符串,括号里的参数分别为(PAGE,列,字符串指针)
       disp_string_8x16_16x16(3,1,"----实验3.1-----");
       Delay_ms(1000);
      
    while(1)
    {                
              temp8 = get_sensor_id();
              if(temp8 != 15){                              
                     disp_string_8x16_16x16(1,1,"请插语音播放模块");
                     disp_string_8x16_16x16(3,1,"----实验3.1-----");
                     Delay_ms(1000);
                     continue;
              }
              if(CheckKey()>0){
                     clear_screen();   
                     sprintf(buf,"编号:%d",temp8);
                     disp_string_8x16_16x16(1,1,buf);       
                     disp_string_8x16_16x16(3,1,"正在播放...");
                     yuyin_trform("[m53][f1]欢迎使用[p100]唯众智创[p100]物联网综合实验箱");
                     Delay_ms(5000);
                     disp_string_8x16_16x16(3,1,"播放结束,请按键!");
              }     
    }
}

6.实验现象

       按下节点板上的按键,则语音播放“欢迎使用武汉唯众智创综合实验箱”。OLED第一行显示“编号:15”,第二行显示“播放结束,请按键!”,如图:

语音播放实验


上一篇:无线传感网络|第四章 功能模块实验

下一篇:无线传感网络实训|实验4.2 语音识别实验