标题: CHV030语音芯片驱动代码,自己写,测试好用 [打印本页]

作者: dcc024    时间: 2023-6-7 14:48
标题: CHV030语音芯片驱动代码,自己写,测试好用
         

8脚芯片,CHV030语音芯片驱动代码,自己写,测试好用。单线串口,STC单片机都可以驱发声音。

CHV30_drv.c
  1. #include "CHV30_drv.h"


  2. ///////////////////////////////////////////////////////////////////////////////////////////
  3. //函数名称:   CHV30_W_byte();   
  4. //函数功能:  将数据dat送出,可以是地址,也可以是数据,发完后等待应答
  5. //输入参数:  uchar dat  要写入的字节型数据或地址                                                            
  6. //////////////////////////////////////////////////////////////////////////////////////////
  7. void  CHV30_W_byte(uchar dat)
  8. {
  9.         uchar i;
  10.         CHV30_SDA=0;
  11.         DELAY_ms(6);
  12.         EA=0;
  13.         for (i=0;i<8;i++)
  14.         {               
  15.                 if (dat&0x01)
  16.                 {
  17.                         CHV30_SDA=1 ;
  18.                         DELAY_us(600);
  19.                         CHV30_SDA=0;
  20.                         DELAY_us(200);                       
  21.                 }
  22.                 else
  23.                 {
  24.                         CHV30_SDA=1 ;
  25.                         DELAY_us(200);
  26.                         CHV30_SDA=0;
  27.                         DELAY_us(600);       
  28.                 }       
  29.                 dat = dat >> 1 ;
  30.         }
  31.         CHV30_SDA=1;
  32.         while(CHV30_BUSY!=1);
  33. }       




  34. /////////////////////////////////////////////////////////////////////////////////////////////////
  35. //函数描述: 播放                          
  36. ///////////////////////////////////////////////////////////////////////////////////////////////
  37. void CHV30_S_PLAY(uchar ADD)
  38. {
  39.         CHV30_W_byte(ADD) ;
  40.         DELAY_ms(20);
  41. }

  42. /////////////////////////////////////////////////////////////////////////////////////////////////
  43. //函数描述: 组合播放命令                     
  44. ///////////////////////////////////////////////////////////////////////////////////////////////
  45. void CHV30_S_ZH(void)
  46. {
  47.         CHV30_W_byte(0xF3) ;
  48.         DELAY_ms(25);       
  49. }


  50. /////////////////////////////////////////////////////////////////////////////////////////////////
  51. //函数描述: 重复播放某一段                           
  52. ///////////////////////////////////////////////////////////////////////////////////////////////
  53. void CHV30_S_PLAY_R(uchar ADD)
  54. {
  55.         CHV30_W_byte(ADD) ;
  56.         DELAY_ms(25);
  57.         CHV30_W_byte(0xF2) ;
  58.         DELAY_ms(25);
  59. }

  60. //////////////////////////////////////////////////////////////////////////////////////////
  61. //函数描述: 5 级音量,0xE0H 为最小音量 0,0xEFH 最大音量 (上电默认)                                                      
  62. //////////////////////////////////////////////////////////////////////////////////////////
  63. void CHV30_S_VOL (uchar VOL)                       
  64. {
  65.         if(VOL>=15)
  66.         {
  67.                 VOL=15;
  68.         }
  69.         CHV30_W_byte(0xE0|VOL);    //0xE0-0xEF   
  70.         DELAY_ms(20);                  
  71. }

  72. //////////////////////////////////////////////////////////////////////////////////////////
  73. //函数描述: 关闭语音           进入超低功耗状态=1.7uA                                       
  74. //////////////////////////////////////////////////////////////////////////////////////////
  75. void CHV30_S_OFF (void)                       
  76. {
  77.         CHV30_W_byte(0xF0);                 
  78. }

  79. //////////////////////////////////////////////////////////////////////////////////////////
  80. //函数描述: 开启                                               
  81. //////////////////////////////////////////////////////////////////////////////////////////
  82. void CHV30_S_ON (void)                       
  83. {
  84.         CHV30_SDA=0;
  85.         DELAY_ms(40);               
  86. }


  87. //////////////////////////////////////////////////////////////////////////////////////////
  88. //函数描述: 停下播放                                    
  89. //////////////////////////////////////////////////////////////////////////////////////////
  90. void CHV30_S_STOP (void)                       
  91. {
  92.         CHV30_W_byte(0xFE);                 
  93. }


复制代码

CHV30_drv.h
  1. #ifndef _CHV30_DRV_
  2. #define _CHV30_DRV_

  3. #include "main.h"


  4. sbit CHV30_SDA  = P1^6;              //PIN3 PA1 SDA   
  5. sbit CHV30_BUSY = P1^7;        //PIN1 PBO BUSY

  6. ///////////////////////////////////////////////////////////////////////////////////////////
  7. ////////////CHV30发送////////////////////////////////////////////////////////////////////////
  8. ///////////////////////////////////////////////////////////////////////////////////////////

  9. extern void CHV30_W_byte(uchar dat);

  10. void CHV30_S_PLAY(uchar ADD);         //地址播放
  11. void CHV30_S_ZH(void);                 //组合命令
  12. void CHV30_S_PLAY_R(uchar ADD);      //重复播放
  13. void CHV30_S_VOL (uchar VOL);         //音量调节

  14. void CHV30_S_OFF(void);               //关闭
  15. void CHV30_S_ON(void);                //打开
  16. void CHV30_S_STOP(void);             //停止

  17. #endif

复制代码



作者: joyb    时间: 2023-6-8 08:26
给个电路原理图
作者: feixue2007    时间: 2023-6-9 10:04
有完整的图纸和程序文件吗????那个厂家的芯片????




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1