南邮基于8255的8LED显示语音播放机设计_第1页
南邮基于8255的8LED显示语音播放机设计_第2页
南邮基于8255的8LED显示语音播放机设计_第3页
南邮基于8255的8LED显示语音播放机设计_第4页
南邮基于8255的8LED显示语音播放机设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

设计名称:基于8255的8显示语音播放机设计一、设计要求 实验中需要的信源,可以通过处理一段WAV文件,将其变为一段数据表进行实验。基本要求:1 将处理过的数据通过单片机进行存储(信号固化)。2 用D/A转换器回放存储的信号。3 通过模拟示波器显示回放的波形。4 在数码管或LCD上显示回放波形的参数(最大/最小幅值,波形播放时间)。发挥部分:1 在实验允许的条件下,采用更灵活的存放方法。2 多段信源管理和播放。动态显示格式:自定二、设计原理声音文件已经放在程序里面,一开始运行,首先将程序里面的声音数据转存储到SRAM里,也就是6264里,显示的话,可以显示出播放时间,和数据的最大值和最小值,最大值和最小值是自动进行切换的,1秒为间隔,从SRAM读取数据,进行DA转换就可以看出波形了。三、设计过程流程图如下:开始显示分钟显示10ms显示秒钟显示“:”显示“:”结束显示流程图开始系统初始化键盘扫描显示时间储存数据读取数据A/D转换Flag1 = = 1YNFlag2 = = 1D/A转换YN开始初始化有键按下?Key1按下?Flag1=1YKEY1按下?延时消抖Flag2=1开始D/A结束NNNYY开始A/D时间清零时间清零系统主流程图 键盘流程图对应的C语言程序如下:/*基于8255的8LED显示语音播放机设计程序*/#include#include/*宏定义*/#define uint unsigned int#define uchar unsigned char/*芯片端口地址定义*/#define COM8255 XBYTE0X7FFF /8255的命令口#define PA8255 XBYTE0X1FFF /8255的PA#define PB8255 XBYTE0X3FFF /8255的PB#define PC8255 XBYTE0X5FFF /8255的PC#define DAC0832 XBYTE0XEFFF /DAC0832口uchar dis_buf=0xc0,0x40,0xc0,0xff,0xc0,0x40,0xc0,0xc0; /数码管显示缓存,格式为MM-NN-SSuchar code du_code=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, ; /8段共阳极数码管显示码值 uchar code bit_code=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/数码管显示的位值 /*系统引脚定义*/sbit key1=P30; /key1sbit key2=P31; /key2sbit CON=P33; /74HC573的锁存端/*定义系统变量*/uchar num=0,second=0; /定义时间变量bit flag1=0,flag2=0; /定义状态标志位uchar count;uchar max=0,min=0; /定义幅值的最大值和最小值uint m_x=0xe000;uchar code music=0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00, 0x00,0x00; /两只蝴蝶 /*延时子程序*/void delayms(uchar x) /ms延时函数uchar y;for(;x0;x-)for(y=110;y0;y-) ;/*键盘扫描程序*/void keyscan()if(key1=0)/判断key1是否被按下delayms(20); /延时消抖if(key1=0)/判断key2是否被按下if(flag1=1)if(m_x0xFffe)TR0=TR0;/计时开关取反while(!key1);/等待key1松开if(key2=0)/判断key2是否被按下 delayms(20); /延时消抖if(key2=0) /判断key2是否被按下 flag1=flag1; /状态标志位取反if(flag1=1) TR0=1;else TR0=0; /计时开关num=0;second=0;max=0;min=0;m_x=0xe000;while(!key2); /等待key2松开void trans_data() if(flag2=0) dis_buf0=du_codemax/100;dis_buf1=du_codemax%100/10;dis_buf2=du_codemax%10;else dis_buf0=du_codemin/100;dis_buf1=du_codemin%100/10;dis_buf2=du_codemin%10;dis_buf4=du_codesecond/10;dis_buf5=du_codesecond%10&0x7f;dis_buf6=du_codenum/10;dis_buf7=du_codenum%10; /*系统初始化程序*/void Initial()uint i=0;for(i=0;imax)max=temp;/提取幅值最大值if(tempmin)min=temp;/提取幅值最小值keyscan(); trans_data();/*定时器0中断程序*/void timer0() interrupt 1TH0=(65536-10000)/256;TL0=(65536-10000)%256; /给定时器0装初值,定义时间精度为0.01snum+; /计数器加1if(num=100)/判断1s时间是否到num=0; /计数器清零second+; /秒加1if(second%2)flag2=1;elseflag2=0;if(second=60) /判断1分钟是否到second=0; /秒清零void timer1() interrupt 3TH1=(65536-500)/256;TL1=(65536-500)%256; /给T1装初值CON=1;PB8255

温馨提示

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

评论

0/150

提交评论