标题:
基于51单片机的MY1690语音模块串口驱动程序
[打印本页]
作者:
51黑电子迷
时间:
2017-5-15 01:04
标题:
基于51单片机的MY1690语音模块串口驱动程序
/*********************************************************************************
* 【作 者】: 深圳迈优科技有限公司
* 【Q Q】: 854544856
* 【函数功能】: 基于51单片机的语音模块串口驱动程序
**********************************************************************************/
#include<reg52.h> //包括一个52标准内核的头文件
#define uchar unsigned char //定义一下方便后面使用
#define uint unsigned int //定义一下方便后面使用
#define ulong unsigned long //定义一下方便后面使用
#define COMM_BAUD_RATE 9600 //串口波特率
#define OSC_FREQ 11059200 //运行晶振:11.05926MHZ
void Delay_Ms(int z)
{
int x=0 , y=0;
for(x=110 ; x>0 ;x--)
for(y=z; y>0;y-- );
}
/******************************************************************************
- 功能描述: 串口1初始化
- 注: 设置为9600波特率
******************************************************************************/
void Serial_init(void)
{
TMOD = 0x20; // 设置 T1 为波特率发生器
SCON = 0x50; // 0101,0000 8位数据位, 无奇偶校验
PCON = 0x00; //PCON=0;
TH1=256-(OSC_FREQ/COMM_BAUD_RATE/32/12);//设置为9600波特率
TL1=256-(OSC_FREQ/COMM_BAUD_RATE/32/12);
TR1 = 1; //定时器1打开
REN = 1; //串口1接收使能
ES = 1; //串口1中断使能
}
/*********************************************************************************
* 【函 数 名】: void send_cmd(uchar dat)
* 【功 能】: 串口发送数据命令
**********************************************************************************/
void send_cmd(uchar dat)
{
SBUF=dat; //发送指令到SBUF
while(!TI); //等待发送结束
TI=0; //清除结束标志,以便再发送数据
}
/*********************************************************************************
* 【函 数 名】: void send_3dat_cmd(uchar cmd,uchar dat)
* 【功 能】: 除了起始和结束标志外,发三位长度的数据
*send_3dat_cmd(0x11,0x12); // 播放
*send_3dat_cmd(0x12,0x11); //暂停
* send_3dat_cmd(0x13,0x10); // 下一曲
* send_3dat_cmd(0x14,0x17); //上一曲
*send_3dat_cmd(0x15,0x16); //音量加
*send_3dat_cmd(0x16,0x15); //音量减
* send_3dat_cmd(0x1A,0x19); //快进
*send_3dat_cmd(0x1B,0x18); //快退
* send_3dat_cmd(0x1C,0x1F); //播放/暂停
**********************************************************************************/
void send_3dat_cmd(uchar cmd,uchar jy)
{
send_cmd(0x7E); //发送"开始命令"到SBUF
send_cmd(0x03); //发送"命令长度"到SBUF
send_cmd(cmd); //发送"命令"到SBUF
send_cmd(jy); // 发送校验码到SBUF
send_cmd(0xEF); //发送"结束指令"到SBUF
}
/*********************************************************************************
* 【函 数 名】: void send_4dat_cmd(uchar cmd,uchar cs,uchar jy )
* 【功 能】: 除了起始和结束标志外,发四位长度的数据
* send_4dat_cmd(0x32,0x00,0x36 ) ; //设置EQ
* send_4dat_cmd(0x34,0x01,0x31 ) ; //文件切换
* send_4dat_cmd(0x35,0x01,0x30 ) ; //设备切换
**********************************************************************************/
void send_4dat_cmd(uchar cmd,uchar cs,uchar jy )
{
send_cmd(0x7E); //发送"开始命令"到SBUF
send_cmd(0x04); //发送"命令长度"到SBUF
send_cmd(cmd); //发送"插播指令"到SBUF
send_cmd(cs); // 发送参数 到SBUF
send_cmd(jy); // 发送校验码到SBUF
send_cmd(0xEF); //发送"结束指令"到SBUF
}
/*********************************************************************************
* 【函 数 名】: void send_5dat_cmd(uchar cmd,uchar cs,uchar gq,uchar jy )
* 【功 能】: 除了起始和结束标志外,发四位长度的数据
* send_5dat_cmd(0x43,0x00,0x03,0x45); //插播功能
* send_5dat_cmd(0x44,0x01,0x06,0x46) ; //插播指定文件夹的歌曲播放,本指令为文件夹01的第6首歌曲
**********************************************************************************/
void send_5dat_cmd(uchar cmd,uchar cs,uchar gq,uchar jy )
{
send_cmd(0x7E); //发送"开始命令"到SBUF
send_cmd(0x05); //发送"命令长度"到SBUF
send_cmd(cmd); //发送"插播指令"到SBUF
send_cmd(cs); // 发送参数 到SBUF
send_cmd(gq); //发送第几首歌曲到SBUF
send_cmd(jy); // 发送校验码到SBUF
send_cmd(0xEF); //发送"结束指令"到SBUF
}
void main()
{
while(1)
{
Serial_init() ;//串口寄存器的初始化设置
send_3dat_cmd(0x11,0x12); // 播放
Delay_Ms(3800) ;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
下载地址:
http://www.51hei.com/bbs/dpj-84774-1.html
作者:
fefen0
时间:
2017-5-16 17:11
楼主多发精品。。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1