基于8255的8LED显示录音回放机设计综述.docx
- 文档编号:8890272
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:20
- 大小:655.18KB
基于8255的8LED显示录音回放机设计综述.docx
《基于8255的8LED显示录音回放机设计综述.docx》由会员分享,可在线阅读,更多相关《基于8255的8LED显示录音回放机设计综述.docx(20页珍藏版)》请在冰豆网上搜索。
基于8255的8LED显示录音回放机设计综述
通信与信息工程学院
2014/2015学年第一学期
课程设计II实验报告
模块名称51
专业通信工程
学生班级110016
学生学号
学生姓名
指导教师林建中梅霆孟田甜
设计题目
基于8255的8LED显示录音回放机设计
任务要求
1、把需要录取的信号用AD转换器采样并存储在SRAM中。
2、在一组数码管或LCD上显示采样速率和录音时间(秒),以及信号相关参数。
3、用D/A转换器回放录音信号,通过模拟示波器显示。
4、在一组数码管或LCD上显示回放的播放时间或信号强度。
发挥部分:
1、用功能键可分别设定录音和放音的采样速率。
2、多段录音管理。
3、任意组合播放。
动态显示格式:
自定
实验设备及软件
计算机、Protues以及Keil软件
同组人员学号及姓名
11001603李伊竹
参考文献
单片机实验与课程设计指导(Protues仿真版
51系列单片机李静
第一部分实验目的和要求
本课程设计是在理论课程的基础上,重点培养学生的动手能力,通过理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作,为下一部结合实际的硬件系统设计准备条件。
1、总体要求:
以下各类设计必须按照实验提供的单片机原理图(dpj.pdf文件),结合自己所选择的题目进行元器件的连接。
每组学生只能选择一个与别组不同的设计题目,按照先到先选择的规则进行选题。
在仿真设计完成的基础上,有能力的同学可以申请硬件实验板的下载并完成软、硬件结合的课程设计。
2、分类要求:
录音机类
实验中需要录取的信源,可以用单片机或者信号发生器产生。
基本要求:
1把需要录取的信号用AD转换器采样并存储在SRAM中。
2在一组数码管或LCD上显示采样速率和录音时间(秒),以及信号相关参数。
3用D/A转换器回放录音信号,通过喇叭过模拟示波器显示。
4在一组数码管或LCD上显示回放的播放时间或信号强度。
发挥部分:
1用功能键可分别设定录音和放音的采样速率。
2多段录音管理。
3任意组合播放。
动态显示格式:
自定
根据提供的参考工程,在proteus平台自己重新画出实验所需要的电气原理图,并在此基础上编写相对应的程序,实现其功能,学习proteus软件的使用,其中包括原理图器件的选取、原理图的电气连接、程序的编写编译以及运行,并能查出其错误等。
第二部分实验工具及实验器件
1.Proteus以及Keil软件的介绍
Proteus是英国Labcenter公司开发的电路及单片机系统设计与仿真软件。
Proteus可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能。
Proteus是目前唯一能对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原型时就可对系统进行调试、测试和验证。
Proteus软件大大提高了企业的产品开发效率,降低了开发风险。
由于Proteus软件逼真、真实的协同仿真功能,它也特别适合于作为配合单片机课堂教学和实验的学习工具。
Proteus软件提供了30多个元器件库、7000余种元器件。
元器件涉及电阻、电容、二极管、三极管、变压器、继电器、各种放大器、各种激励器、各种微控制器、各种门电路和各种终端等。
Proteus软件还提供有交直流电压表、逻辑分析仪、示波器、定时/计数器和信号发生器等测试信号工具用于电路测试。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
应用Keil进行软件仿真开发的主要步骤为:
编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。
Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。
工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。
首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-NewProject…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。
加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。
紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-OptionforTarget‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“CreatHexFi”;其它选项卡内容一般可取默认值。
工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。
成功编译/汇编、连接后,选择菜单Debug-Start/StopDebugSession(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。
Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-StepOver)、全速执行等多种运行方式进行程序调试。
如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-InlineAssambly…),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。
对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/RemoveBreakpoint或Debug-Breakpoints…等)。
在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
2.51单片机AT89C51
51单片机是对目前所有兼容Intel8031指令系统的单片机的统称。
该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。
51单片机是基础入门的一个单片机,还是应用最广泛的一种。
需要注意的是52系列的单片机一般不具备自编程能力。
当前常用的51系列单片机主要产品有:
*Intel的:
80C31、80C51、87C51,80C32、80C52、87C52等;
*ATMEL的:
89C51、89C52、89C2051等;
89C51单片机的内部结构为:
单一+5V电源供电;
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:
用以存放程序、一些原始数据和表格;
I/O口:
四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:
两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一对全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。
最高振荡频率为12M。
3.八进制3态非反转透明锁存器74HC573
特点:
三态总线驱动输出;置数全并行存取;缓冲控制输入;使能输入有改善抗扰度的滞后作用。
4.原理说明:
八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出
将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立的数据电平上。
输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。
这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。
特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
PINNo引脚号
SYMBOL符号
NAMEANDFUNCTION名称及功能
1
OE
3StateoutputEnableInput(ActiveLOW)3态输出使能输入(低电平)
2,3,4,5,6,7,8,9
D0toD7
DataInputs数据输入
12,13,14,15,16,17,18,19
Q0toQ7
3StateLatchOutputs3态锁存输出
11
LE
LatchEnableInput锁存使能输入
10
GND
Ground接地(0V)
20
VCC
PositiveSupplyVoltage电源电压
4.可编程并行I/O接口芯片8255A
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
特点:
(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.
(2)具有24个可编程设置的I/O口,即3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:
读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
'
A1,A0:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
当A1=0,A0=0时,PA口被选择;
当A1=0,A0=1时,PB口被选择;
当A1=1,A0=0时,PC口被选择;
当A1=1.A0=1时,控制寄存器被选择.
5.三态输出的八D透明锁存器74LS373
373的输出端O0~O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
引出端符号:
D0~D7数据输入端 OE三态允许控制端(低电平有效)LE锁存允许端O0~O7输出端
6.ADC0804
ADC0804为一只具有20引脚8位CMOS连续近似的A/D转换器
主要技术指标如下:
(1)高阻抗状态输出
(2)分辨率:
8位(0~255)(3)存取时间:
135ms(4)转换时间:
100ms(5)总误差:
-1~+1LSB(6)工作温度:
ADC0804C为0度~70度;ADC0804L为-40度~85度(7)模拟输入电压范围:
0V~5V(8)参考电压:
2.5V(9)工作电压:
5V(10)输出为三态结构。
引脚功能说明:
1.PIN1(CS):
ChipSelect,与RD、WR接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low)时会active。
2PIN2(RD):
Read。
当CS、RD皆为低位准(low)时,ADC0804会将转换后的数字讯号经由DB7~DB0输出至其它处理单元。
3.PIN3(WR):
启动转换的控制讯号。
当CS、WR皆为低位准(low)时ADC0804做清除的动作,系统重置。
当WR由0→1且CS=0时,ADC0804会开始转换信号,此时INTR设定为高位准(high)。
4.PIN4、PIN19(CLKIN、CLKR):
频率输入/输出。
频率输入可连接处理单元的讯号频率范围为100kHz至800kHz。
而频率输出频率最大值无法大于640KHz,一般可选用外部或内部来提供频率。
若在CLKR及CLKIN加上电阻及电容,则可产生ADC工作所需的时序,其频率约为:
5.PIN5(INTR):
中断请求。
转换期间为高位准(high),等到转换完毕时INTR会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据。
6.PIN6、PIN7(VIN(+)、VIN(-)):
差动模拟讯号的输入端。
输入电压VIN=VIN(+)-VIN(-),通常使用单端输入,而将VIN(-)接地。
7.PIN8(AGND):
模拟电压的接地端。
7.DAC0832
DAC0832是8分辨率的D/A转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
DAC0832的主要特性参数如下:
分辨率为8位;电流稳定时间1us;可单缓冲、双缓冲或直接数字输入;只需在满量程下调整其线性度;单一电源供电(+5V~+15V);低功耗,200mW。
DAC0832结构:
D0~D7:
8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);ILE:
数据锁存允许控制信号输入线,高电平有效;CS:
片选信号输入线(选通数据锁存器),低电平有效;WR1:
数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。
由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;XFER:
数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2:
DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。
由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:
电流输出端1,其值随DAC寄存器的内容线性变化;IOUT2:
电流输出端2,其值与IOUT1值之和为一常数;Rfb:
反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;Vcc:
电源输入端,Vcc的范围为+5V~+15V;VREF:
基准电压输入线,VREF的范围为-10V~+10V;AGND:
模拟信号地DGND:
数字信号地
DAC0832的工作方式:
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:
直通方式、单缓冲方式和双缓冲方式。
第三部分实验原理图及程序代码
1.硬件部分电路设计
本次实验设计的是一个基于8255的8LED显示录音回放机设计实验,基于8255口是指显示和键盘都由8255的I/O口控制,使用8255可编程并行口芯片,设定为工作方式0,PC口做输入,PA口做输出,使得达到控制通过按键选择在8LED上显示采样速率和录音时间(秒),以及信号相关参数。
通过方波输入信号,进行AD转换,存储相应数据在SRAM中,最后进行DA转换回放录音信号,通过喇叭过模拟示波器显示,该电路的显示部分按要求则使用型号为LM016的8LED液晶显示器,通过P0口传送数据然后由8LED显示出来。
另外,电路中还设计了两个按键,分别是采样和回放键。
完整电路图如下:
2.软件部分设计
******基于8255的8LED显示语音播放机设计程序*****/
#include
#include
/**************************宏定义**********************************/
#defineuintunsignedint
#defineucharunsignedchar
/********************芯片端口地址定义*****************************/
#defineCOM8255XBYTE[0X7FFF]//8255的命令口
#definePA8255XBYTE[0X1FFF]//8255的PA
#definePB8255XBYTE[0X3FFF]//8255的PB
#definePC8255XBYTE[0X5FFF]//8255的PC
#defineDAC0832XBYTE[0XBFFF]//DAC0832口
#defineADC0804XBYTE[0X77FF]//ADC0804口
uchardis_buf[]={0xc0,0x40,0xc0,0xff,0xc0,0x40,0xc0,0xc0};//数码管显示缓存,格式为MM-NN-SS
Ucharcodedu_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};//8段共阳极数码管显示码值
ucharcodebit_code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//数码管显示的位值
/************************系统引脚定义******************************/
sbitkey1=P3^0;//key1
sbitkey2=P3^1;//key2
sbitCON=P3^3;//74HC573的锁存端
/************************定义系统变量*****************************/
ucharnum=0,second=0,minute=0;//定义时间变量
bitflag1=0,flag2=0;//定义状态标志位
ucharcount=0;
ucharA;
/************************延时子程序*******************************/
voiddelayms(ucharx)//ms延时函数
{
uchary;
for(;x>0;x--)
for(y=110;y>0;y--);
}
/************************键盘扫描程序*****************************/
voidkeyscan()
{
if(key1==0)//判断key1是否被按下
{
delayms(20);//延时消抖
if(key1==0)//判断key2是否被按下
{
flag1=1;
TR0=~TR0;//开始/暂停计时
if(flag2==1)//判断上一个状态是否为回放状态
{
flag2=0;
num=0;
second=0;
minute=0;//时间信息清零
}
}
while(!
key1);//等待key1松开
}
if(key2==0)//判断key2是否被按下
{
delayms(20);//延时消抖
if(key2==0)//判断key2是否被按下
{flag2=1;
TR0=~TR0;//开始/暂停计时
if(flag1==1)
{
flag1=0;//采样状态标志位清零
num=0;
second=0;
minute=0;//时间信息清零
}
}
while(!
key2);//等待key2松开
}
}
vo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 8255 LED 显示 录音 回放 设计 综述