四极管: SPI之语音芯片ISD4004驱动
来源:互联网 发布:易格家具淘宝代购假货 编辑:程序博客网 时间:2024/05/21 07:07
主函数:
四极管:主函数(main.c)
#include<avr/io.h>#include<ISD4004.c>#include<KEY.c>#define uchar unsigned char#define uint unsigned intvoid main(void){uchar i,l; DDRB=0XFF;DDRD=0XFF; while(1) { i=key_press(); //检测按钮是否按下 if(i) { l=key_scan(); //取出按下所得值赋给l switch(l) { case 1: TYPE(0x01,0X00);break; case 2: VOCA(0x00,0x90);break; case 3: STOP();break; } }} }ISD4004
四极管:ISD4004驱动(ISD4004.C)
/*********************************** 函数功能:ISD4004录放子程序 函数说明:四线方式,数据输出线:DATA_PORT 使用环境: 硬件: MCU: ATmega32L F_CPU = 16000000 外部:16000000 接线方法:3跟数据线:PC6-SS PC5-MOSI PC7-SCK 编译环境:WinAVR-20080610 调用文件:#include<delay_ms.h> #include<friend.h> 使用说明:录好音后直接调用VOCA()即可 作者: 杨琦 修改者: (日期: )****************************************************************/#define SS_SET() Pc6_1;//拉高SS #define SS_CRL() Pc6_0;//变低SS #define MOSI_SET() Pc5_1;#define MOSI_CRL() Pc5_0;#define SCK_4002_SET() Pc7_1;#define SCK_4002_CRL() Pc7_0;//------------------------------------------void WRITE(uchar command) //写命令{ uchar i;SCK_4002_CRL();for(i=0;i<8;i++){ if(command & 0x01) { MOSI_SET();} else{MOSI_CRL();}SCK_4002_SET(); //上升沿数据被锁存在 4002里面 command= command >> 1;SCK_4002_CRL(); //下降沿数据被移除}}void POWRUP(void) //上电{SS_CRL();WRITE(0X20);SS_SET();}void STOP(void)//停止当前操作{SS_CRL();WRITE(0xC0);SS_SET();}void SETPLAY(uint addrH,uint adrrL) //从当前地址开始放音 0{ SS_CRL(); WRITE(adrrL); WRITE(addrH); WRITE(0xE0); SS_SET();}void PLAY(void){ SS_CRL(); WRITE(0xF0); SS_SET();} void SETREC(uint addrH,uint adrrL){ SS_CRL(); WRITE(adrrL); WRITE(addrH); WRITE(0XA0); SS_SET();}void REC(void) //从当前地址开始录音{SS_CRL();WRITE(0xB0); SS_SET();}void TYPE(uint addr2,uint adrr1) // 录音{POWRUP();delay_ms(25);POWRUP();delay_ms(25);delay_ms(25);SETREC(addr2,adrr1);REC();}void VOCA(uint addr2,uint adrr1)//放音{POWRUP();delay_ms(25);SETPLAY(addr2,adrr1);PLAY();}按键四极管:按键驱动(KEY.c)#define uchar unsigned char#define uint unsigned int//******************检验按键按下函数**************//************************************************* uchar key_press(void) { uchar j; DDRB|=0x0F; PORTB|=0x0F; DDRB&=0xF0; j=PINB; j=j&0x0F; if(j==0x0F) { return 0; } else { return 1; }} //**************** 扫描函数****************** uchar key_scan(void) { uchar key; //delay_ms(10); //消抖 if(key_press()) { key = PINB; key&=0x0F; switch(key) { case 0x0E: key = 1; break; case 0X0D: key = 2; break;case 0x0B: key = 3; break;case 0x07: key = 4; break;default: key = 4; } while(key_press()); //等待按键松开的程序 }else{key=4;} return key; }....转载请注明出处。作者:四极管。广西师范大学 电子工程学院大学生科技创新基地 邮箱: yangxingbo-0311@163.com。
- 四极管: SPI之语音芯片ISD4004驱动
- ISD4004语音芯片驱动(C51源程序)
- ISD4004语音芯片资料说明及其应用实例(含程序驱动)
- SPI驱动之南瑞NRSEC3000加密芯片驱动开发总结
- 语音芯片知识:ISD语音芯片在SPI 操作中,放音指令的一般流程
- SPI驱动之SPI设备驱动程序
- SPI驱动之SPI设备驱动程序
- 芯片驱动之充电芯片2
- 芯片驱动之充电芯片1
- STM8L151 使用硬件SPI驱动VS1003B MP3解码芯片
- ZYNQ7000 芯片Linux下的SPI接口与驱动配置
- 语音芯片
- Linux SPI驱动之笔记
- mini2440移植之SPI驱动
- 嵌入式驱动之SPI接口
- 嵌入式linux之SPI驱动
- SPI驱动之UT4412BV01上SPI驱动的移植
- 65 linux spi设备驱动之spi LCD屏驱动
- sgu 326 Perspective(最大流)
- 关于Tomcat错误java.lang.NoClassDefFoundError: javax/el/ExpressionFactory的问题
- IIS6.0 + php
- C# 等待Process结束再执行主线程
- 四极管:IIC驱动之 AVR ZLG7290
- 四极管: SPI之语音芯片ISD4004驱动
- 四极管:AD/DA AVR 之 549和5615
- 转:读《编程人生》有感:如何学习一门新的语言
- 四极管:步进电机 AVR之 L298
- 飞秋通讯
- 黑客书架上出现频率最高的9部半书籍
- 深入理解计算机系统 (Computer Systems: A Programmer's Perspective)
- 图像处理之快速均值模糊(Box Blur)
- 回调设计模式