51单片机与JQ8900语音播报模块

51单片机

使用的是普中51-单核-A5的板子

串口通信方式

实现功能

测试语音播报模块一线串口模式。
在上位机(电脑)端输入字符1(通过串口调试助手),语音播报模块播放相应音频。

实现功能

// An highlighted block
#include <reg52.h>
#define uchar unsigned char
sbit key1=P0^0;
sbit led1=P0^1;
sbit key2=P0^7;
typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;
char code array[11] = {"hello world"}; 
char code NextFile[] = {0xAA, 0x06, 0x00, 0xB0};
char code Path[] = {0xAA, 0x08, 0x10, 0x02, 0x2F, 0xB9, 0xE3, 0xB8, 0xE6, 0x2A, 0x2F, 0xD0, 0xA1, 0xC3, 0xD7, 0x2A, 0x4D, 0x50, 0x33, 0x8B, }; // flash   /1???*/D??×*MP3
unsigned char flag = 0; //标志位
/*初始化串口函数*/
void init_uart()
{
	TMOD = 0x20; //设定定时器工作方式2 8位初值自动重装定时/计数器
	SCON = 0x50; //10位异步收发器(8位数据) 打开串口接收允许
	TH1 = 0xF3; //4800波特率
	TL1 = 0xF3;
	PCON = 0x80; //波特率增倍
	TR1 = 1; //打开定时器1
	EA = 1;  //打开中断总开关
	ES = 1; //允许串行口中断
}

void Delay1us ( int T )
{
    T = T - 70;
    do
    {
        ;
    }
    while ( T-- );
}

sbit  sda=P1^0; /*ò???′??ú·¢?íòy??  */
void SendData ( u8 addr )
{
    u8 i;

    EA = 0;/*·¢?íê±1?μ??D??£?·à?1?D??ó°?ìê±Dò  */

    sda = 1;/*?aê?à-??  */
    Delay1us ( 1000 );
    sda = 0;/*?aê?òyμ???*/
    Delay1us ( 2200 );/*′?′|?óê±×?éùòa′óóú2ms£?′?2?êy?óê±?a310ms  */

    for ( i = 0; i < 8; i++ ) /*×ü128??êy?Y  */
    {
        sda = 1;
        if ( addr & 0x01 ) /*3:1±íê?êy?Y??1,??????ó?á?????3?±íê?  */
        {
            Delay1us ( 500 );
            sda = 0;
            Delay1us ( 210 );
        }
        else              /*1£o3±íê?êy?Y??0 ,??????ó?á?????3?±íê?  */
        {
            Delay1us ( 210 );
            sda = 0;
            Delay1us ( 500 );
        }
        addr >>= 1;
    }
    sda = 1;
    EA = 1;
}

void send_data(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;	  //这里有TI 置 0了 不需要在串口中断再次写 否则会冲突
}
/*主函数入口*/
void main()
{	
	unsigned char i;
	init_uart();
	while(1)
	{	 		 
		 if(flag == 1) 
        {
			for(i=0;i<11;i++)	//我这里就是发送 hello world   
				{
					send_data(array[i]);		
				}  flag=0;
		led1=0;
			key1=1;
			SendData(0x0a) ;  //播报
			SendData(0x02);
			SendData(0x0b); 
			Delay1us (500 );
			led1=1;
				  
        }  
		 if ( key2== 0 )
        {
			led1=0;
			key1=1;
			SendData(0x0a) ;	  //设置音量
			SendData(0x00);
			SendData(0x04); 
			SendData(0x0C);
			Delay1us (500 );
			led1=1;
        }
	}
}

/*串口中断服务函数*/
void uart_dispose() interrupt 4
{
	unsigned char dat; //存放数据

    if(RI == 1) //如果有数据来
    {
		dat = SBUF;//接收数据
		switch(dat)
		{
			case '1':
				flag = 1;
				break;	
						
			default:
				flag = 0;
				break;
		}
		RI = 0; //软件置0
    }
 	/*发送字节函数那里已经有TI置0 这里不加。*/
}

接线图实物

在这里插入图片描述

模块管脚

注:设定单片机P1^0口为一线串口控制口。

引用\[1\]:由上图可知SV-5W语音播报模块本身带有5W的功放芯片,可以直接接入一个5W以内的小喇叭。模块板载的USB口只能用于音频文件的传输,不能用于模块供电。还需要一直TF卡,把音频文件存入到TF卡里面,注意音频文件的命名格式以5位数字命名,少的以0补全,例如:音频文件初始名称为“123.MP3”,需要改成“00123.MP3”。\[1\] DY-SV5W是一款智能语音模块,集成IO分段触发,UART串口控制,ONE_line单总线串口控制,标准 MP3 等 7 种工作模式;板载 5W D 类功放,可直接驱动 4Ω,3~5W 喇叭;支持 MP3,WAV 解码格式,最大支持 32G TF 卡存储,可通过 USB 数据线连接电脑更新 TF 卡存储音频文件。\[3\] 以上两个引用提供了关于SV-5W语音播报模块的一些基本信息。 问题: c51单片机语音播报模块 回答: 如果你想使用c51单片机实现语音播报功能,可以选择DY-SV5W语音播报模块。该模块集成了IO分段触发、UART串口控制和ONE_line单总线串口控制等多种工作模式,可以通过c51单片机的IO口或串口与模块进行通信,实现语音播报功能。模块板载的5W功放芯片可以直接驱动小喇叭,而音频文件则需要存储在TF卡中,并按照特定的命名格式进行命名。通过连接USB数据线,你可以将音频文件从电脑传输到TF卡中。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [51单总线控制SV-5W语音播报模块](https://blog.csdn.net/qq_42250136/article/details/127948253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [51单片机TTS温度湿度语音播报系统 DHT11 LCD1602](https://blog.csdn.net/LS840233684/article/details/127154715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值