- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于51单片机控制的isd4004语音模块引脚电平触发发音程序n1bd0p3l
#include reg52.h
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
//录音和放音键IO口定义:
sbit AN=P2^6;//放音键控制接口
sbit set_key=P2^7;//录音键控制口
// ISD4004控制口定义:
sbit SS =P1^0; //4004片选
sbit MOSI=P1^1; //4004数据输入
sbit MISO=P1^2; //4004数据输出
sbit SCLK=P1^3; //ISD4004时钟
sbit INT =P1^4; //4004中断
sbit STOP=P3^4; //4004复位
sbit LED1 =P1^6; //录音指示灯
//===============================LCD1602接口定义=====================
/*注意,P2.2到P2.4需要接上拉电阻
---------------------------------------------------
=============================================================*/
#define LCM_Data P0 //LCD1602数据接口
sbit LCM_RW = P2^3; //读写控制输入端,LCD1602的第五脚
sbit LCM_RS = P2^4; //寄存器选择输入端,LCD1602的第四脚
sbit LCM_E = P2^2; //使能信号输入端,LCD1602的第6脚
//***************函数声明************************************************
void WriteDataLCM(uchar WDLCM);//LCD模块写数据
void WriteCommandLCM(uchar WCLCM,BuysC); //LCD模块写指令
uchar ReadStatusLCM(void);//读LCD模块的忙标
void DisplayOneChar(uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置显示一个字符
void LCMInit(void);
void DelayUs(uint us); //微妙延时程序
void DelayMs(uint Ms);//毫秒延时程序
void init_t0();//定时器0初始化函数
void setkey_treat(void);//录音键处理程序
void upkey_treat(void);//播放键处理程序
void display();//显示处理程序
void isd_setrec(uchar adl,uchar adh);//发送setrec指令
void isd_rec();//发送rec指令
void isd_stop();//stop指令(停止当前操作)
void isd_powerup();//发送上电指令
void isd_stopwrdn();//发送掉电指令
void isd_send(uchar isdx);//spi串行发送子程序,8位数据
void isd_setplay(uchar adl,uchar adh);
void isd_play();
//程序中的一些常量定义
uint time_total,st_add,end_add=0;
uint adds[25];//25段语音的起始地址暂存
uint adde[25];//25段语音的结束地址暂时
uchar t0_crycle,count,count_flag,flag2,flag3,flag4;
uchar second_count=170,msecond_count=0;
//second_count为芯片录音的起始地址,起始地址本来是A0,也就是160,
//我们从170开始录音吧。
#define Busy 0x80 //用于检测LCM状态字中的Busy标识
/*===========================================================================
主程序
====================================
文档评论(0)