|
- /*********************************************************************************
- * 【作 者】: 深圳迈优科技有限公司
- * 【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
|
评分
-
查看全部评分
|