JQ8900语音模块组合播放

news/2024/11/16 22:44:03/

实现按下按键4播报当前时间实验

本次作业实践性较强,代码其实比较简单,在JQ8900压缩包中也有相应实例 ,重点在于理解串口发送的相关知识
下面展示一些 关键函数的代码。这些代码直接使用即可,关键在于理解函数之间调用的返回结果。

/************************************************************************
功能描述:播放处理函数
入口参数: 无
返 回 值: none
其他说明: 注意数组buffer大小,别指针溢出
**************************************************************************/
void PlayHandle(void)
{char str1;uint8_t buffer[20] = {0};uint8_t DatLen = 0,Pcount = 0;uint8_t *p_temp;buffer[0] = 11;		//语音:当前时间DatLen = 1;p_temp = &buffer[1];		//指针始终指向下一位Pcount = NumMakeUp(p_temp,mint);		//当前分p_temp += Pcount;				//地址递增DatLen += Pcount;				//数据长度*p_temp++ = 12;		//语音:分DatLen++;Pcount = NumMakeUp(p_temp,secd);		//当前秒p_temp += Pcount;				//地址递增DatLen += Pcount;*p_temp++ = 13;		//语音:秒DatLen++;JQ8x00_ZuHeBoFang(buffer,DatLen);			//送入语音模块播放}
/************************************************************************
功能描述:组合播报函数
入口参数: 	*DAT:字符串指针,Len字符串长度
返 回 值: none
其他说明: 将需要播报的文件名放入数组中作为形参即可
**************************************************************************/
void  JQ8x00_ZuHeBoFang(uint8_t *DATA,uint8_t Len)
{uint8_t CRC_data=0,i = 3;uint8_t Buffer[ZH_MAX] ={0xaa,0x1b};Buffer[2] = Len*2;			//计算长度CRC_data = CRC_data + 0xaa + 0x1b + Buffer[2];while(Len--){Buffer[i] = *DATA/10+0x30;			//取出十位CRC_data = CRC_data + Buffer[i];i++;Buffer[i] = *DATA%10+0x30;			//取出个位CRC_data = CRC_data + Buffer[i];i++;DATA++;}Buffer[i] = CRC_data;i++;#if JQ8x00_BusyCheckwhile(JQ8x00_BUSY_Read);				//忙检测#endifJQ8x00_UART(Buffer,i);
}
/************************************************************************
功能描述:数字组合
入口参数: 无
返 回 值: none
其他说明: *p为换成数组,dat为要组合的数据
**************************************************************************/
uint8_t NumMakeUp(uint8_t *p,uint8_t dat)
{uint8_t count = 0;if(dat == 0){*p++ = 14;			//语音:0count = 1;}if(dat <= 9)		//时{*p++ = dat;count = 1;}else if(dat <= 19){if(dat%10 == 0)			//如果是10的倍数{*p++ = dat/10;*p++ = 10;					//语音:十}else{*p++ = 10;					//语音:十*p++ = dat%10;		}count = 2;		}else if(dat <= 99){if(dat%10 == 0)			//如果是10的倍数{*p++ = dat/10;*p++ = 10;					//语音:十count = 2;}else{*p++ = dat/10;*p++ = 10;					//语音:十*p++ = dat%10;count = 3;		}				}return count;	
}

至于调用只需要在主函数中识别按键当按下按键4的时候调用处理的函数即可

if(keyValue==4){PORTF=0;PlayHandle();}

在实验中有可能会遇到很多问题,如果遇到问题也可以通过发送一个你指定的内容,进行判断是哪部分出现了问题。
例如在语音播放模块里的事例中给出的组合播放01,02号文件可通过写指定的串口指令再直接传入所需要判断对错的函数进行检查。

uint8_t Buffer[ZH_MAX]={0xAA,0x1B,0x04,0x30,0x31,0x30,0x32,0x8C};
JQ8x00_UART(Buffer,8);

http://www.ppmy.cn/news/249115.html

相关文章

Arduino Uno接JQ8900-16p语音播报模块

Arduino Uno接JQ8900-16p语音播报模块 前言 ​ 记录一个比较好用的语音播报模块JQ8900&#xff0c;这个模块成本低廉&#xff08;十几块就能买到&#xff09;&#xff0c;使用方便。 ​ 此外&#xff0c;这个模块还有以下优点&#xff1a; ​ ①搭载配套的软件可以支持文字…

常用模拟低通滤波器的设计——契比雪夫II型滤波器

常用模拟低通滤波器的设计——契比雪夫II型滤波器 切比雪夫 II 型滤波器的振幅平方函数为&#xff1a; 式中&#xff0c;为有效带通截止频率&#xff0c; 是与通带波纹有关的参量&#xff0c; 大&#xff0c;波纹大&#xff0c;&#xff1b; 为 N 阶契比雪夫多项式。 在 Matl…

零点起飞学Android——期末考试课本复习重点

目录 第一章 认识Android第二章 Android常见界面布局第三章 Android常用基本控件第四章 Android 高级控件第五章 Android菜单和对话框 第一章 认识Android 1. Android 界面设计被称为______。 答案&#xff1a;布局 2. Android中常见的布局包括______、______ 、______ 、____…

推荐一款办公室必备股票看盘工具

办公室必备&#xff1a; 1、自动隐藏&#xff0c;随意拖动&#xff0c;透明显示。 2、可自动配置显示股票代码&#xff0c;隐藏股票助手意图&#xff0c;防止被发现。 3、小窗显示&#xff0c;可以边上班边看盘。 4、实时行情的获取。 5、目标触发条件的判断&#xff0c;实…

高频炒股软件是一种什么软件?

高频炒股软件中的高频交易是指一种高速度&#xff0c;高频次的交易方式&#xff0c;通过预设的计算机算法实现&#xff0c;具有低隔夜持仓&#xff0c;高报撤单频率&#xff0c;高换手率等特点。

股票大数据分析软件V2.7

分享一个在淘宝买的《股票大数据分析软件》给大家使用&#xff0c;售价是168元的软件&#xff01; 由于有业务要出国&#xff0c;短期不会回国&#xff0c;所以分享给广大股友使用&#xff01; 软件的主要作用是进行个股数据面的分析和选股的作用&#xff0c;软件的功能有龙虎榜…

常见的股票量化交易软件主要有哪几种类型?

现在的股票量化交易越来越普遍了&#xff0c;其实简单来说股票量化交易就是程序化交易&#xff0c;通过人为设定一些条件后&#xff0c;系统来按照设定程序实现自动交易&#xff0c;最大的优势就是客观执行&#xff0c;不会受到任何人为情绪的干扰。 目前常见的股票量化交易软…