GBS6502-UART串行控制模块
GBS6502-UART串行控制模块
型号:GB-069 V1.0
一、实物图
二、接线图
三、基本参数
供电电压:DC4.2-5.5V。
UART参数:TTL,9600,N81
按键功能:5个标准按键,播放/暂停、上一曲、下一曲、音量加、音量减
板载内存:8M Byte (可以更换16M)
板载功放:2W(使用8欧姆喇叭)
音频输出:双声道立体声音频输出,可以外接耳机或功放
接口类型:双排14*2.54mm排针
使用温度:-20--75
尺寸:36*21*14mm
四、使用说明
1、声音文件下载
当需要重新更换声音时,只需要使用一根USB线将本模块和电脑相连接。连接后点击“我的电脑”可以看到新增一个“可移动磁盘”。
点击“可移动磁盘”,就可以打卡本模块的内存磁盘。
打开磁盘之后,就可以按照上图规定,存放自己的文件。
2、UART控制说明
1,串口配置
本模块的串口为TTL电平,可以和电脑或任意单片机相连接来控制模块。
在手册最后附有单片机控制程序,此处介绍使用“串口调试精灵”控制模块。
首先,需要准备一条串口线(TTL电平),将电脑和模块通过串口线连接,并给模块供电。
然后打开“串口调试精灵”,选择对应的串口,将波特率设置为9600,接收数据和发送数据选择为“16进制显示”,然后点击“打开串口”,可以发送相应的指令对模块进行控制了。
最后介绍一下本模块的串口指令
特别注意:发送的指令要发送两遍。
功能指令返回码指令说明
查询当前播放曲
目
B0 00 00 01--27 0F 当前文件名是哪个就返回哪个
查询当前音量B1 00 00---08
查询当前状态B2 00 01 正在播放
02 暂停
03 停止无声音
查询存储器的总
音乐文件数量
B3 00 00 01--27 0F 总文件数是多少就返回相应的数字
播放一个文件,必须是2个字节00 01--27 0F 无有相应的文件,则进行播放,不设置返回
码。
不论语音是停止状态还是在播放状态,只
要接收到合格的语音播放指令,则马上响
应新的指令。
EE 无此文件名,则返回
停止A0 00 不论声音有播放中还是已经是停止状态,
都一律马上停止播放。
暂停A1 00 无当语音正在播放的时候,实现暂停;
当语音是暂停的状态,则转为播放。
EE 当语音是停止状态,则此指令无效。
上一曲A3 00 无总能依据文件名称大小来进行上一曲播
放;
能进行首尾循环播放;
如果只有一个文件,则在当前文件循环。
EE 内部没有语音文件、或者说没有符合规定
命名的文件。
下一曲A4 00 无参考上一曲。
EE
音量调节A5 00--A5 1E 无MP3芯片内部音量是32级的,
A5 00 是静音
A5 1E 是最大音量
当有记忆器24C02时,上电后以记忆芯片
存储的音量值为准;如果无24C02,上电
后则是默认音量最大值。
E A2 01 单曲播放一次就停止模式(上电默认此模
式,如果24C02有记忆就按照24C02的记
忆来操作。)
发一次指令,语音播放一次就停止。
A2 02 单曲循环模式
举例:进入该模式后,发00 02指令,则
0002.mp3 文件会一直进行单曲循环播
放。直到接收到新的有效指令。
A2 03 顺序循环播放模式
一个声音播放完之后,会按照下一曲的功
能顺序播放下去。直到最后一首,又循环
回第一首。
A2 04 随机播放模式。
进入此模式后,语音段,随机播放播放,
一段接一段的播放,不会停止。除非接收
到新的有效指令。
乱码任意的EE 收到不合格的码,无法识别的。则返回EE
3、按键控制说明
五、容量与音质的解释
很多人会奇怪一个问题:一个4M大小容量的存储器,如何能装11个、甚至是30个MP3文件?下面,我们做出解释及办法如下:
MP3文件容量大小,主要描述参数是:码率。
请下载一个【千千静听】软件来查看MP3文件的码率大小。
选中一个MP3文件,点击右键,然后点击【转换格式】,出现下图:
请再点击【配置】,出现下图:
在恒定码率处,点击下拉框,你会发现一个MP3文件,可以有多种码率可供选择,
码率越高,音质越好,但是文件容量会越大。
码率越低,音质越差,但是文件容量会越小。
容量大小与音质是成反比的。
所以,在这个模块中,板上自带是小容量存储器,所以必须得修改一下MP3的码率,要降低一些,才能将进此存储器。
下表是容量、码率、以及对应的时间长短表格,供参考:
时间单位:秒。
容量
4M 8M 16M
码率
16Kbps 2022 4045 8090
24Kbps 1309 2618 5300
32Kbps 906 1812 3624
64Kbps 477 955 1910
96Kbps 325 651 1302
128Kbps 246 493 986
以上表格时间值,可能会有5%误差,请注意具体实际应用。
六、参考程序
#include "reg51.h"
//单片机STC89C51(2),晶振11.0592MHz
//功能,每一个声音,播放前3秒。
void Delay_Ms(unsigned int Ms)
{
unsigned char Mms;
while(Ms--)
for(Mms=0;Mms<112;Mms++);//延时一毫秒左右
}
/******************************************************************** * 名称 : UART_Init()
* 功能 : 串口初始化,晶振11.0592,波特率9600
* 变量 : 无
* 返回值 : 无
********************************************************************/ void UART_Init(void)
{
TMOD = 0x20; //定时器模式选择
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
ES = 1; //开串口中断
EA = 1; //开总中断
}
/******************************************************************** * 名称 : PSend_Hex()
* 功能 : 发送字符串函数,可控制发送长度
* 变量 : 无
* 返回值 : 无
********************************************************************/ void Send_Hex(unsigned char *p,unsigned char num)
{
while(num--) //剩余发送的字符数
{
SBUF = *p; //将要发送的数据赋给串口缓冲寄存器
while(!TI);//等待发送结束
TI = 0; //软件清零
p++; //指针加一
}
}
void Play_Num(unsigned int Num) //播放指定曲目
{
unsigned char Table[4];
Table[0] = Num/256;
Table[1] = Num%256;
Table[2] = Num/256;
Table[3] = Num%256;
Send_Hex(Table,4);
}
void main(void)
{
unsigned int Music_Num=1;
UART_Init();
while(1)
{
Play_Num(Music_Num);//播放Music_Num段
Music_Num++;//Music_Num加1
Delay_Ms(3000);
}
}