找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4537|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机的MY1690语音模块串口驱动程序

[复制链接]
跳转到指定楼层
楼主
ID:161768 发表于 2017-5-15 01:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


  1. /*********************************************************************************
  2. * 【作    者】:  深圳迈优科技有限公司
  3. * 【Q      Q】: 854544856
  4. * 【函数功能】:         基于51单片机的语音模块串口驱动程序                                               
  5. **********************************************************************************/
  6. #include<reg52.h>           //包括一个52标准内核的头文件
  7. #define uchar unsigned char     //定义一下方便后面使用
  8. #define uint  unsigned int            //定义一下方便后面使用
  9. #define ulong unsigned long            //定义一下方便后面使用               
  10. #define COMM_BAUD_RATE  9600    //串口波特率
  11. #define OSC_FREQ        11059200    //运行晶振:11.05926MHZ
  12. void Delay_Ms(int z)
  13. {
  14.         int   x=0 , y=0;
  15.         for(x=110 ; x>0 ;x--)
  16.         for(y=z; y>0;y-- );
  17. }

  18. /******************************************************************************
  19. - 功能描述: 串口1初始化
  20. - 注:             设置为9600波特率
  21. ******************************************************************************/
  22. void Serial_init(void)
  23. {
  24.         TMOD = 0x20;                // 设置 T1 为波特率发生器
  25.         SCON = 0x50;                // 0101,0000 8位数据位, 无奇偶校验               
  26.         PCON = 0x00;                //PCON=0;
  27.         TH1=256-(OSC_FREQ/COMM_BAUD_RATE/32/12);//设置为9600波特率
  28.         TL1=256-(OSC_FREQ/COMM_BAUD_RATE/32/12);
  29.     TR1     = 1;                            //定时器1打开
  30.     REN     = 1;                           //串口1接收使能
  31.     ES      = 1;                           //串口1中断使能
  32. }

  33. /*********************************************************************************
  34. * 【函 数 名】: void send_cmd(uchar dat)
  35. * 【功    能】: 串口发送数据命令                                                
  36. **********************************************************************************/
  37. void send_cmd(uchar dat)
  38. {
  39.         SBUF=dat;                         //发送指令到SBUF
  40.         while(!TI);                         //等待发送结束
  41.         TI=0;                                 //清除结束标志,以便再发送数据
  42. }
  43. /*********************************************************************************
  44. * 【函 数 名】: void send_3dat_cmd(uchar cmd,uchar dat)
  45. * 【功    能】: 除了起始和结束标志外,发三位长度的数据
  46. *send_3dat_cmd(0x11,0x12);          // 播放
  47. *send_3dat_cmd(0x12,0x11);    //暂停
  48. * send_3dat_cmd(0x13,0x10);    // 下一曲
  49. * send_3dat_cmd(0x14,0x17);   //上一曲
  50. *send_3dat_cmd(0x15,0x16);          //音量加
  51. *send_3dat_cmd(0x16,0x15);          //音量减
  52. * send_3dat_cmd(0x1A,0x19);          //快进
  53. *send_3dat_cmd(0x1B,0x18);            //快退
  54. * send_3dat_cmd(0x1C,0x1F);           //播放/暂停                                               
  55. **********************************************************************************/
  56. void send_3dat_cmd(uchar cmd,uchar jy)
  57. {
  58.         send_cmd(0x7E);                 //发送"开始命令"到SBUF
  59.         send_cmd(0x03);                 //发送"命令长度"到SBUF
  60.         send_cmd(cmd);                 //发送"命令"到SBUF
  61.         send_cmd(jy);             //  发送校验码到SBUF
  62.         send_cmd(0xEF);                 //发送"结束指令"到SBUF
  63. }
  64. /*********************************************************************************
  65. * 【函 数 名】: void send_4dat_cmd(uchar cmd,uchar cs,uchar jy )
  66. * 【功    能】: 除了起始和结束标志外,发四位长度的数据        
  67. *  send_4dat_cmd(0x32,0x00,0x36 ) ;              //设置EQ
  68. *  send_4dat_cmd(0x34,0x01,0x31 ) ;              //文件切换
  69. *  send_4dat_cmd(0x35,0x01,0x30 ) ;          //设备切换                                       
  70. **********************************************************************************/
  71.   void send_4dat_cmd(uchar cmd,uchar cs,uchar jy )
  72. {
  73.         send_cmd(0x7E);                 //发送"开始命令"到SBUF
  74.         send_cmd(0x04);                 //发送"命令长度"到SBUF
  75.         send_cmd(cmd);                 //发送"插播指令"到SBUF
  76.         send_cmd(cs);                 //        发送参数 到SBUF
  77.         send_cmd(jy);                 //  发送校验码到SBUF
  78.         send_cmd(0xEF);                 //发送"结束指令"到SBUF
  79. }
  80. /*********************************************************************************
  81. * 【函 数 名】: void send_5dat_cmd(uchar cmd,uchar cs,uchar gq,uchar jy )
  82. * 【功    能】: 除了起始和结束标志外,发四位长度的数据
  83. * send_5dat_cmd(0x43,0x00,0x03,0x45);      //插播功能
  84. * send_5dat_cmd(0x44,0x01,0x06,0x46) ;    //插播指定文件夹的歌曲播放,本指令为文件夹01的第6首歌曲                                               
  85. **********************************************************************************/
  86.   void send_5dat_cmd(uchar cmd,uchar cs,uchar gq,uchar jy )
  87. {
  88.         send_cmd(0x7E);                 //发送"开始命令"到SBUF
  89.         send_cmd(0x05);                 //发送"命令长度"到SBUF
  90.         send_cmd(cmd);                 //发送"插播指令"到SBUF
  91.         send_cmd(cs);                 //        发送参数 到SBUF       
  92.         send_cmd(gq);                 //发送第几首歌曲到SBUF
  93.         send_cmd(jy);                 //  发送校验码到SBUF
  94.         send_cmd(0xEF);                 //发送"结束指令"到SBUF
  95. }                                                                
  96.                
  97. void main()
  98. {       
  99.     while(1)
  100. {
  101.         Serial_init() ;//串口寄存器的初始化设置

  102.          send_3dat_cmd(0x11,0x12);          // 播放
  103.           Delay_Ms(3800) ;
  104. ……………………

  105. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载地址:http://www.51hei.com/bbs/dpj-84774-1.html


评分

参与人数 2黑币 +9 收起 理由
ssssssssssyyyyy + 4 很给力!
501369312 + 5 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:157057 发表于 2017-5-16 17:11 | 只看该作者
楼主多发精品。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表