1、 PM66 系列语音芯片是一款智能语音产品,该系列芯片在使用方式及外部电路上基本可以和 PM50 系列兼容,与 PM50 相比,具有可存储声音秒数更长,放音音质更佳的优势。PM66 整合了录放音电路,快闪存储,ADPCM 编、解码器,功率放大器,稳压器等线路,我们已经把它包装成标准的 DIP28 和 DIP16 管脚,使用者可以很方便的将 PM66 设计整合到需要录放音的设备中,只需接上电源、喇叭、按键,PM66 就是一个独立的声音播放系统。1、功能特征: 存储时间长(404000 秒) 可独立控制多达 256 个声音段 宽范围工作电压(DC35V) 宽范围的采样频率(4k20kHz) 可按键
2、触发,也可接 MCU 控制 最小系统仅需电源、扬声器、按键即可 自由组合声音段 PWM 和 DAC 两种音频输出模式2、电气特征:工作电压: DC 35V工作电流: 60mA(PWM 输出方式、接 8 欧姆喇叭时)静态电流 2uA3、实物图片4、 PM66 语音芯片 型号:NOTE: PM66 系列不提供 PM66SS128。下表为各种型号在不同的采样频率下可存放声音的秒数对照表。5、PM66 引脚定义及实际图片:PM66SXX(DIP28)引脚定义引脚名称 引脚号 描述K1K8 411 触发输入引脚(低有效)O1O4 2421 输出引脚SPP,SPN 13,14 接喇叭两端VDD 15 电源
3、正端GND 1 电源地RESB 25 系统复位端(低有效)FCSB, FCKK, FDO, FDI 2,3,27,26 编程控制端PM66SSXX(DIP16 )引脚定义引脚名称 引脚号 描述K1,K2,K5 3,2,1 触发输入引脚(低有效)O1,O2 14,13 输出引脚SPP,SPN 5,4 接喇叭两端VDD 6,7 电源正端GND 8, 9 电源地RESB 12 系统复位端(低有效)FCSB, FCLK, FDO, FDI 10,16,11,15 编程控制端6、PM66 的典型应用电路及控制方式6.1 按键模式和两种音频输出方式PM66 系列语音芯片的按键模式中,K1K8 作为 8 个
4、触发端,每个触发端可以存储最多100 组(Group),每个组( Group)中可存储 200 个独立声音段。 K1K8 可以分别触发与其对应的声音(低有效),在烧录芯片的时候,可以设置为下降沿触发或者低电平触发等多种触发模式。K1K8 端口有内置上拉电阻,并有防抖动设计,可接按键,也可用单片机 I/O 口线直接对其操作。如下图:图 1 并行按键模式,PWM 音频输出方式接线图 设定两种音频输出 (PWM 和 DAC)第一步:在编程软件中设定音频输出模式第二步,外部电路连接A PWM 方式SPP 脚和 SPN 脚接喇叭端,直接驱动 8 欧姆 0.5W 喇叭。如上图 1NOTE:SPP 和 SP
5、N 两脚严禁接地,或串接喇叭后直接接地或正电源。B DAC 方式:(本示意图以三极管 8050 作为放大器件,用户可根据实际功率需求自行选择功放器件)SPP 脚为音频信号输出端,SPN 脚悬空。如下图 2.6.2 微控制器控制方式PM66 在微处理器控制方式下,可以独立控制多达 256 段语音。PM60 向客户提供了两种微控制器处理方式:串行地址模式和并行地址模式。(A)串行地址模式 可独立控制 256 段在串行地址模式中,K1 为地址数据输入端, K2 为同步时钟端, O1,O2 为忙信号端。地址数据在时钟上升沿锁存到 PM66 芯片内。语音段的地址为 0x00H0xFFH。外部单片机送入语
6、音段的地址码即可播放。K2 时钟频率在 25Hz5k Hz 内均可。串行地址模式下的电路连接如图 3,时序图如图 4。上图中 O1,O2 为忙信号端。在芯片放音期间,O1 脚输出高电平,O2 脚输出低电平,使用者可根据自己需要选择其中一条进行接收。如果不需要侦测放音是否完毕,则可不接。(B)并行地址模式 可独立控制 128 段在并行地址模式中,K1 为同步时钟端, K2K8 为 7 位并行地址输入端,最大可分为27128 段。O1、O2 位两种极性相反的忙信号输出,可由用户选择使用其中一条输出。作为忙信号,O1 在播放语音时为高,放音完毕拉低; O2 与其正好相反。并行地址模式,连接电路如图
7、5,时序如图 6。|(C)RESET 时序用单片机 I/O 控制 PM66 的复位时,需要注意:RESB 引脚低信号由低变高后需要延迟300ms 的时间,才能开始 PM66 的放音操作,否则不能正常复位。附:串行地址模式控制例程(采用51单片机12MHz 晶振):#include #define uchar unsigned char#define uint unsigned intsbit K1 = P27;sbit K2 = P26;sbit O1 = P25;void delay (int z)uchar x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay_1 (int c)uchar a;for(a=c;a0;a-);void sp (uchar k1_data)uchar i;K1 =0;delay(25);K1 = 1;delay(25);K2 = 0;for(i=0;i1;K2 = 0;K1 = 1;K2 = 1;void main (void)uint h;while(1)for(h =0x80;h0x90;h+) /发送从0x80地址到0x90地址的声音 K1 = 1;K2 = 1;sp(h);delay(20);while(O1 = 1);/判断忙信号delay_1(50);