51单片机控制ISD1420实现选段播放功能的实现_第1页
51单片机控制ISD1420实现选段播放功能的实现_第2页
51单片机控制ISD1420实现选段播放功能的实现_第3页
51单片机控制ISD1420实现选段播放功能的实现_第4页
51单片机控制ISD1420实现选段播放功能的实现_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、51单片机控制ISD1420实现选段播放功能的实现(C程序电路图)发布:hnrain| 查看:157次资料编写与整理:AVR 猎手 benladn911 出处:AVR猎手的地盘 http:在2006年时候记得我在做ISD1420的播放控制,当时在选段播放上遇到 了问题,当时网络上也没有详细描述具体的控制方法,也在咱们坛子里问过。折腾了很久,后来还是实现出来了。但资料后来没有实际应用到产品上, 今天翻看资料的时候发现了,拿出来给同样碰到问题的朋友做为参考。以前写的C程序比较菜,注释比较多。(现在写的程序注释也很多:)电 路图简单画了下,大家都看得懂:附上KEIL完整工程:1420_code.ra

2、r程序原文:* 功能:使用STC2052单片机控制ISD1420语音芯片的播放1、顺序连续分段放音2、选段播放(播放任意段)3、所有的播放控制都是通过接收串口的命令来执行编写:benladn911 AVR 猎手日期:2006-6-28 创建2008-2-21添加注释和完善nclude<STC12C2052.H>#i nclude<intrins.h>#i nclude<stdio.h>#i nclude<string.h> 硬件端口的定义#definePOW P3_7此引脚为单片机控制一个三极管给ISD1420供电#definePL P3_5 接

3、 ISD1420 的 PLAYL#definePE P3_4接 ISD1420 的 PLAYE#defineREC P3_3 接 ISD1420 的 REC#defineREC_LED P3_2/ISD1420 的 REC LED操作模式的定义#define model 0xC8 /循环放音操作,按一下PE键可循环放音,按PL 键停止;或按PL键放音,松开即停止#define mode2 OxDO/按顺序连续分段录放音,每段语音长度不限#define mode3 OxCO /地址指针复位,开始录放第一段#define mode4 OxDl /按PE键可快速选段放音/OxCl /也为地址指针复位

4、unsigned char RX_index=O;/bit FLAG_rev = O;/unsigned char PC_COMMAND;unsigned char RX_BUFFER1O;/串行接收缓存void ionit(void);void serial_out(unsigned char d);void delaySms(void);void delay(unsigned int x);void nop(unsigned char i);void palyfunsigned char i);选择播放当前段操作void main(void)ionit();delay(1000);seri

5、al_out(Oxaa); 发送到PC机,看看PC端是否收到正确数据serial_out(0x55);serial_out(0x33);POW = 0;/开启电源/Pl = mode4;/Pl = 0X00;while(1)/端口初始化void io_init(void)PlMO = 0x00; /设置 STC 的 10 为标准 5110 模式PlMl = 0x00;P3M0 = 0x00;P3Ml = 0x00;P1 = OXFF;P3 = OXFF;/串行口初始化/TMOD:serail mode 1, 8-bit UART, enable ucvr TMOD = 0x20;timer 1

6、, mode 2, 8bit reloadTH1 = Oxf3;/12MHz, 2400 bpsTL1 = Oxf3;/IE | = 0x90;/Enable Serial InterruptTRI = 1;/ timer 1 ru nES=1;EA=1;/串行数据发送,查询模式void serial_out(unsigned char d)ES=O;SBUF=d;while (TI=0);TI=0;ES=1;/串行xx接收void receive() interrupt 4if(RI)RI = 0;ES = O;PC_COMMAND = SBUF;/RX_BUFFERRX_index = P

7、C_COMMAND;保存数据到数组里面RX_index+;switch(PC_COMMAND)case OxaO:serial_out(OxaO);Pl = mode2;按顺序连续分段录放音,每段语音长度不限OxDO连续寻址,A4PE = O;nop(10);PE = 1;P1 = OXFF;break;case OxbO:serial_out(OxbO);Pl = mode3; 地址指针复位OxCOnop(10);P1 = OXFF;break;case OxcO:选段播放控制serial_out(OxcO);Pl = OxDl; 第二步:快速选段放音P1 0 = 0;nop(10);Pl

8、0=1;nop(10);PE = O;nop(10);PE = 1;break;case OxdO:serial_out(OxdO); 播放任意段的组合paly;paly;paly;paly;paly;paly;paly;paly;paly;break;case 0x30:serial_out(0x30);此操作循环放音操作,按一下PE键可循环放音,按PL键停止;或按PL键放音,松开即停止此操作没什么用Pl = model;PE = O;nop(10);PE = 1;/ break; default:break;ES = 1;选段播放,i的值就是要播放的当前段void palyfunsigne

9、d char i)i-;Pl = mode3;第一步:地址指针复位 OxCOA7-A0: 1100 00 (A2、A5在应用中可直接接地)nop(10);/Pl = OXFF;delay(30);/必要的延时if(i>0)Pl = OxDl; 第二步:快速选段放音 OxDl A7-A0: 1101 0001 (A2、A5在应用中可直接接地)do Pl_0 = 0;给A0低电平脉冲nop(10);Pl 0=1;nop(10);PE = O;nop(10);PE = 1;delay(50);/这个延时是非常必要的!i-;while(i!=0);delay(30);/必要的延时P1 = mode2;第三步:播放当前11/10段 OxDOA7-A0: 11O1OO (A2、A5在应用中可直接接地)PE = O;nop(10);PE = 1;/Pl = OXFF;while(REC_LED=l);/ 等待播放while(REC_LED=O);/等待播放结束/软件延时函数/50ms延时void delay5ms(void)unsigned char TempCyc = 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论