戚锦拓 五邑大学毕业论文(8)

来源:网络收集 时间:2025-08-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

五邑大学本科毕业设计

附录1 总程序

#include #include

#define uchar unsigned char #define uint unsigned int //录音和放音键IO口定义:

sbit p_r =P0^0;//录音放音切换接口 sbit key2=P1^7;//放音键控制接口

sbit key1=P1^6;//录音键控制口 //液晶控制端口定义

#define LCD_data P2 //LCD数据口 #define R_data P0 //站名数据接收口 sbit LCD_RS = P0^5; //寄存器选择输入 sbit LCD_RW = P0^6; //液晶读/写控制 sbit LCD_EN = P0^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 LED1 =P3^6; //录音指示灯

//***************函数声明************************************************

void DelayUs(uint us); //微妙延时程序 void DelayMs(uint Ms);//毫秒延时程序

void init_t0();//定时器0初始化函数

void setkey_treat(void);//录音键处理程序 void upkey_treat(void);//播放键处理程序

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位数据

第 31页

五邑大学本科毕业设计

void isd_setplay(uchar adl,uchar adh); //放音传输数据函数 void isd_play(); //放音指令函数

//***************液晶函数声明******************************************** void lcd_wcmd(uchar cmd); //液晶指令函数 void lcd_wdat(uchar dat); //液晶数据函数 void lcd_init(); //液晶初始化函数 void init(); //计时器初始化函数 void keyscan(); //按键扫描函数 void lcd_pos(uchar X,uchar Y); //液晶坐标函数 void lcd_ctrl(); //LCD液晶函数 void rece_data(); //接收数据函数

//**************程序中的一些常量定义****************** uint time_total,st_add,end_add=0;

uint adds[5]={170,320,470,620,770};//5段语音的起始地址暂存

uchar t_1ms,t0_crycle,count=0,count_old,count_flag=5,flag1,flag2=1,flag3,flag4; uchar second_count=170,msecond_count=0;

//second_count为芯片录音的起始地址,起始地址本来是A0,也就是160, //我们从170开始录音

//****************液晶变量定义****************************************** uchar r_old; //前一次接收端口数据 uchar num=0; //当前液晶显示状态 uchar num_old; //上一次液晶显示状态 uchar key1_flag=0; //按键1标记 uchar key2_flag=0; //按键2标记 uchar rec_flag =0; //录音界面标志

//****************液晶显示数据*******************************************

uchar code DIS10[][16] = {{\欢迎乘坐~~~~\五邑华侨广场到了\梁启超故居到了\开平碉楼到了\录音界面~~~~\录音界面~~~~\录音界面~~~~\

uchar code DIS20[][16] = {{\五邑大学观光车\

uchar code DIS30[][16] = {{\祝同学们旅途愉快\祝旅客们旅途愉快\祝旅客们旅途愉快\祝旅客们旅途愉快\请按下按键录音\录音进行中......\测试放音中%uchar code DIS40[][16] = {{\五邑大学观光团\侨乡山水风情画!\侨乡山水风情画!\侨乡山水风情画!\等候录音...\

/*===================================================================

第 32页

五邑大学本科毕业设计

========

==**************************主程序*****************************************== =============================================================================*/ void main(void) {

LED1=0;//灭录音指示灯 flag2=1; //否为录音好后的第一次放音标记 flag3=0; //录音键和放音键互锁标记 INT=1; //ISD4004溢出标记 time_total=0;//录音地址从170开始,对应的单片机开始计时的时间就是340*0.1秒 adds[0]=170; count=1;

init_t0();//定时器初始化 lcd_ctrl(); //液晶初始化

while(1) { keyscan(); if(num_old!=num) //判断接收到的信息跟前一次是否相同,相同则不进入液晶显示。 报。

lcd_ctrl();

if(key2_flag==1) //判断接收到的信息跟前一次是否相同,相同则不进入语音播 { key2_flag=0; upkey_treat();//放音键处理 }

if( key1_flag==1)

{ key1_flag=0; setkey_treat();//录音键处理 } } }

//******************************************* //录音键处理程序

第 33页

五邑大学本科毕业设计

//从指定地址开始录音的程序就是在这段里面

void setkey_treat(void) {

DelayUs(1);

if(flag3==0)//录音键和放音键互锁,录音好后,禁止再次录音。如果要再次录音,那就要复位单片机,重新开始录音 { flag1=1;//录音完毕标记设定

if(count==0)//判断是否为上电或复位以来第一次按录音键 {

st_add=170; } else { st_add=adds[count];//每段语音的起始地址暂时 }//每段语言间隔50个地址

if(count>=5)//判断语音段数时候超过5段 //本程序只录音5段

{//如果超过5段,则覆盖之前的语音,从新开始录音 count=0; st_add=170; time_total=0; }

isd_powerup(); //key2键按下,ISD上电并延迟50ms isd_stopwrdn(); isd_powerup();

LED1=1;//录音指示灯亮,表示录音模式

isd_setrec(st_add&0x00ff,st_add>>8); //从指定的地址 if(INT==1)// 判定芯片有没有溢出 {

isd_rec(); //发送录音指令 }

TR0=1;//开计时器

while(time_total<=200);//等待本次录音结束 time_total=0; flag1=0; //20s录音结束标志

第 34页

五邑大学本科毕业设计

TR0=0;//录音结束后停止计时

isd_stop(); //发送4004停止命令

LED1=0; //录音完毕,LED熄灭 count++;//录音段数自加

count_flag=count;//录音段数寄存 flag2=1; } }

//================================================= //放音机处理程序

//从指定地址开始放本段语音就是这段程序 void upkey_treat(void) { uchar ovflog; DelayUs(1); if(flag2==1)//判断是否为录音好后的第一次放音 { count=0;//从第0段开始播放 }

isd_powerup(); //key2键按下,ISD上电并延迟50ms isd_stopwrdn(); isd_powerup();

st_add=adds[count];//送当前语音的起始地址 isd_setplay(st_add&0x00ff,st_add>>8); //发送setplay指令,从指定地址开始放音 isd_play(); //发送放音指令 DelayUs(20); while(INT==1); //等待放音完毕的EOM中断信号 isd_stop(); //放音完毕,发送stop指令 flag2=0; flag3=1;

if(count>=count_flag)//如果播放到最后一段后还按加键,则从第一段重新播放 {

count=0; } }

/*===========================================*/

第 35页

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库戚锦拓 五邑大学毕业论文(8)在线全文阅读。

戚锦拓 五邑大学毕业论文(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/507772.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219