找回密码
 立即注册

QQ登录

只需一步,快速开始

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

SC50X0语音芯片C51单片机一线控制程序带BUSY

[复制链接]
跳转到指定楼层
楼主
ID:215710 发表于 2017-6-29 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /****************************************************
  2. ;OTP语音芯片串行一线串口模式组合语音测试程序
  3. ;主芯片:MPC82L52(1T)
  4. ;工作频率:6MHz
  5. ;适用型号:SC3010,SC3020,SC3040,SC3060,SC3080,SC5020,SC5040,SC5060,SC5080,SC5B01
  6. ;亿矽特科技:400-160-3880
  7. ****************************************************/

  8. include "REG_MPC82L52.H"
  9. #include <stdio.h>


  10. void delay_ms(unsigned int count) ;
  11. void delay_us(unsigned int count);
  12. void SC_Speech(unsigned char spdata);
  13. void SC_WBusy(void);
  14. void SC_Speechs(void);

  15. /**************端口定义*****************/
  16. sbit SC_DATA=P3^1;     //P3.1是脉冲数据脚
  17. sbit SC_BUSY=P3^2;     //P3.2是放音BUSY脚

  18. unsigned int sp[3];    //定义一个组合语音用的数组变量

  19. /*************主程序****************/
  20. main (void)
  21. {
  22.   SC_DATA=1;
  23.   sp[0]=0X00;
  24.   sp[1]=0X00;
  25.   sp[2]=0X00;
  26.   while(1)
  27.   {
  28.       
  29.         sp[0]=0X08;  
  30.         sp[1]=0X05;
  31.         sp[2]=0X09;
  32.         SC_Speechs();      //组合8,5,9地址段放音
  33.         //delay_ms(5000);    //延时放音时间5秒
  34.    }
  35. }
  36. /**************************************
  37. ;延时X毫秒
  38. ;不同的工作环境,需要调整此函数
  39. ;入口参数:count
  40. ;出口参数:无
  41. **************************************/
  42. void delay_ms(unsigned int count)     
  43. {
  44. unsigned int i,j;
  45. for(i=0;i<count;i++)
  46. {
  47.     for(j=0;j<500;j++);
  48. }
  49. }
  50. /**************************************
  51. ;延时X微秒
  52. ;不同的工作环境,需要调整此函数
  53. ;入口参数:count
  54. ;出口参数:无
  55. **************************************/
  56. void delay_us(unsigned int count)
  57. {
  58. unsigned int i,j;
  59. for(i=0;i<count;i++)
  60. {
  61.     for(j=0;j<2;j++);
  62. }
  63. }
  64. /**************************************
  65. ;控制SC30X0命令
  66. ;入口参数:data;
  67. ;出口参数:无
  68. **************************************/
  69. void SC_Speech(unsigned char spdata)
  70. {   
  71.      unsigned char i;   

  72.      SC_DATA=0;
  73.      delay_ms(6);            
  74.      for(i=0;i < 8;i++)
  75.      {  
  76.         SC_DATA = 1;
  77.         if(spdata&0x01)
  78.         {
  79.            delay_us(1500);  
  80.            SC_DATA  = 0;
  81.            delay_us(500);  
  82.         }
  83.         else
  84.         {
  85.            delay_us(500);  
  86.            SC_DATA  = 0;
  87.            delay_us(1500);  
  88.         }
  89.         spdata >>= 1;
  90.      }
  91.       SC_DATA =1;  
  92.       delay_us(200);
  93. }
  94. /**************************************
  95. ;控制地址段组合放音
  96. ;入口参数:无
  97. ;出口参数:无
  98. **************************************/
  99. void SC_Speechs(void)
  100. {   
  101.     SC_Speech(sp[0]);
  102.     SC_WBusy();      //等待BUSY信号变高
  103.     SC_Speech(sp[1]);
  104.     SC_WBusy();
  105.     SC_Speech(sp[2]);
  106.     sp[0]=0X00;
  107.     sp[1]=0X00;
  108.     sp[2]=0X00;
  109. }

  110. /**************************************
  111. ;等待BUSY信号变高;
  112. ;入口参数:无
  113. ;出口参数:无
  114. **************************************/
  115. void SC_WBusy(void)
  116. {
  117.     unsigned int times;
  118.     for(times=0;times<50;times++)        //等待超过5秒最长语音段自动退出;
  119.     {
  120.        delay_ms(100);                    //调节组合语音间隔
  121.        if(SC_BUSY==1) break;
  122.     }   

  123. }

复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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