数字化语音存储与回放系统(8)

2019-05-18 20:51

边,还不如把基本的技术记在心里。不要被一些专用词汇所迷惑,最根本的是先了解最基础的知识。掌握单片机的应用开发,入门并不难,难的是长期坚持和不遗余力的学习和实践。

致 谢

在课题完成之际,我首先要向指导老师杨录老师表示深深的感谢。在课题制作期间,我经历了不知从何下手的无助和设计过程中遇到的各种技术困难,都是靠杨老师在百忙之中抽出时间来对我悉心指导,为我们提出了各方面的指导意见,为我们提供各方面的重要资料以及元器件,他是我学习工作进程中的中坚力量。同时也要感谢老师给了我一次锻炼的机会,当然也给了我一次成功的机会。

附录

附录一 系统程序代码

/****************************************************************** //总体电路设计采用总线控制方式

//对外围器件的访问统一采用地址编码方式 //2011-02-18

******************************************************************/ #include #include #include #include //包含绝对地址定义的头文件

#define ADC XBYTE[0x7FF0] //ADC 0通道地址 #define ADC_CTRL 0xFD //ADC 控制信号 #define DAC XBYTE[0x6FFF] //DAC 地址

#define DAC_CTRL 0xFC //DAC 控制信号

//RAM地址范围为 0x8000~0xffff (共4页) //ADC的地址范围为 0x7ff0~0x7ff7 (共8个通道) //DAC的地址范围为 0x6fff (只要低2位为 ff 即可) static unsigned int RAM_address; //RAM 地址变量,起始地址0x8000 unsigned char count,m,n=1,key = 0xff;

//显示字符编码

unsigned char code zifu[]={0x7e, /*0*/ 0x30, /*1*/ 0x6d, /*2*/ 0x79, /*3*/ 0x33, /*4*/

36

0x5b, /*5*/ 0x5f, /*6*/ 0x70, /*7*/ 0x7f, /*8*/ 0x7b, /*9*/ 0x0e, /*L*/ 0x47, /*F*/

0x00, /*无显示*/ };

//ZLG7289接口定义

sbit ZLG7289CS = P1^5; //片选信号,低电平有效 sbit ZLG7289CLK = P1^6; //时钟信号,上升沿有效 sbit ZLG7289DIO = P1^7; //数据信号,双向

sbit ZLG7289INT = P3^2; //键盘中断请求信号,低电平(负边沿)有效

sbit ADCEOC = P3^3;

void delay_us(unsigned char n) //执行一次约为14us { for(;n--;n>0) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } }

//************************************************************************ //短延时

void nNop(unsigned char i) { for(;i>0;i--) ; } //长延时

void LDelay(unsigned int i) { unsigned int j; for(;i>0;i--) { for(j=1000;j>0;j--);} }

//************************************************************************

37

//函数功能:ZLG7289复位指令 #define ZLG7289_Reset() ZLG7289_Instruc(0xa4)

//***********************************************************************

//函数:SPI_WriteOneByte() //功能:向SPI总线写数据

//说明:写入的数据长度为1字节

void SPI_WriteOneByte(unsigned char Wdata) { unsigned char i; for(i=0;i<8;i++) { ZLG7289DIO = (bit)(Wdata&0x80); ZLG7289CLK = 1; Wdata <<= 1; nNop(1); ZLG7289CLK = 0; nNop(1); } }

//函数:SPI_ReadOneByte() //功能:从SPI总线读数据 //说明:返回1字节数据

unsigned char SPI_ReadOneByte() { unsigned char i,temp;

ZLG7289DIO = 1; //将I/O切换到输入状态 for(i=0;i<8;i++) { ZLG7289CLK = 1; nNop(5); temp <<= 1; if(ZLG7289DIO) temp++; ZLG7289CLK = 0; nNop(5); } return temp; }

//函数:ZLG7289_Instruc()

38

//功能:执行ZLG7289纯指令 //说明:指令长度为1字节

void ZLG7289_Instruc(unsigned char Instruc) { unsigned char i; i = IE; IE &= 0xfa; //禁止外部中断;

ZLG7289CS = 0; nNop(5); SPI_WriteOneByte(Instruc); ZLG7289CS = 1; nNop(5); IE = i;

}

//函数:ZLG7289_Instruc_Data //功能:执行ZLG7289带数据指令

//说明:指令长度以及数据长度均为1字节

void ZLG7289_Instruc_Data(unsigned char Instruc,unsigned char Data) { unsigned char i; i = IE; IE &= 0xfa; ZLG7289CS = 0; nNop(5); SPI_WriteOneByte(Instruc); nNop(5); SPI_WriteOneByte(Data); ZLG7289CS = 1; nNop(5); IE = i; }

//函数:ZLG7289_ReadKey()

//功能:执行ZLG7289读键盘指令 //说明:返回1字节的按键号 // 按键号的范围为:0 ~ 63(即0x0 ~ 0x3f) // 若没有按按键被按下了,返回255(即0xff) unsigned char ZLG7289_ReadKey() { unsigned char Key; ZLG7289CS = 0;

39

nNop(10);

SPI_WriteOneByte(0x15); nNop(5);

Key = SPI_ReadOneByte(); nNop(1);

ZLG7289CS = 1; nNop(5); return Key;

}

//函数:ZLG7289_Download //功能:下载数据

//说明:将要显示的数据下载到ZLG7289内,并译码显示 //参数:数码管编号x,要显示的数据dat

void ZLG7289_Download(unsigned char x,unsigned char dat) { x |= 0x90; //以自己编码的方式进行译码 1001 0xxx ZLG7289_Instruc_Data(x,dat);

}

//ZLG7289初始化函数 void ZLG7289_Init() { LDelay(20); //延时一定时间,以使系统电源稳定 //ZLG7289 I/O 口初始化 ZLG7289CS = 1; ZLG7289CLK = 0; ZLG7289DIO = 1; ZLG7289INT = 1; }

//********************普通录音函数************************* void Record() { unsigned char temp,page,page_ctrl; unsigned int i; for(page=0;page<4;page++) //分4页存储 { switch(page) { case 0:page_ctrl=0xF8;break;//RAM 第一页控制信号 case 1:page_ctrl=0xF9;break;//RAM 第二页控制信号 case 2:page_ctrl=0xFA;break;//RAM 第三页控制信号 case 3:page_ctrl=0xFB;break;//RAM 第四页控制信号

40


数字化语音存储与回放系统(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:儿童诗评课稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: