找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 773|回复: 2
收起左侧

CHV030语音芯片驱动代码,自己写,测试好用

[复制链接]
ID:216265 发表于 2023-6-7 14:48 | 显示全部楼层 |阅读模式
          1686120356396.png

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

复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1064915 发表于 2023-6-8 08:26 | 显示全部楼层
给个电路原理图
回复

使用道具 举报

ID:272158 发表于 2023-6-9 10:04 | 显示全部楼层
有完整的图纸和程序文件吗????那个厂家的芯片????
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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