8位数模转换器ADC0809实验报告.docx
- 文档编号:26538247
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:24
- 大小:3MB
8位数模转换器ADC0809实验报告.docx
《8位数模转换器ADC0809实验报告.docx》由会员分享,可在线阅读,更多相关《8位数模转换器ADC0809实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
8位数模转换器ADC0809实验报告
单片机原理与接口技术
课程设计说明书
8位数模转换器ADC0809项目设计
专业
电气工程及其自动化
学生姓名
林雯雯
班级
D电气122
学号
1220601220
指导教师
周云龙
完成日期
2015年12月12日
一理论部分
1课题要求与内容
8位数模转换器ADC0809实验
(1)、设计一个0-5V可调的直流模拟电压信号
(2)、扩展2位静态显示的数码管
(3)、扩展1片ADC0809芯片
(4)、数码管显示模拟电压转换后的数字量值(16进制数显示)
2系统方案设计
系统框图如下:
3系统硬件的设计
1、AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
引脚排列如图所示:
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
特性概述:
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
2、ADC0809
A/D转换器大致分为三类,一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐步逼近式A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用ADC0809属于第二类。
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
目前仅在单片机初学应用设计中较为常见。
引脚排列如图所示:
ADC0809引脚排列
各引脚功能:
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路。
ALE:
地址锁存允许信号,输入端,产生一个正脉冲以锁存地址。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入端,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHz。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
主要特性:
(1)8路输入通道,8位A/D转换器,即分辨率为8位。
(2)具有转换起停控制端。
(3)转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。
(4)单个+5V电源供电。
(5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
(6)工作温度范围为-40~+85摄氏度。
(7)低功耗,约15mW。
3、晶振电路
本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和2个电容即可,如下图所示。
晶振电路
电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路。
参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了22pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。
4、模拟输入电路
通过可变电阻一端接电源+5v,一端接地GND,通过改变电阻的阻值,从而改变所测电压值,实现电压的模拟信号输入。
如下图所示:
模拟输入电路
5、数码管显示电路
8段数码管属于LED发光器件的一种。
LED发光器件一般常用的有两类:
数码管和点阵。
8段数码管又称为8字型数码管,分为8段:
A、B、C、D、E、F、G、P。
其中P为小数点。
数码管常用的有10根管脚,每一段有一根管脚,另外两根管脚为一个数码管的公共端,两根之间相互连通。
用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态显示。
首先介绍静态显示方法。
静态显示就是显示驱动电路具有输出锁存功能,单片机将所有要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的显示数据。
静态显示的数据稳定,占用的CPU时间少。
静态显示中,每一个显示器都要占用单独的具有锁存功能的I/O接口,该接口用于笔划段字型代码。
这样单片机只要把要显示的字形代码发送到接口电路,该字段就可以显示发送的字形。
要显示新的数据时,单片机再发送新的字形码。
另一种方法是动态扫描显示。
动态扫描方法是用其接口电路把所有显示器的8个笔画段a-h同名端连在一起,而每一个显示器的公共极COM各自独立的受I/O线控制。
CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM段,而这一段是由I/O控制的,由单片机决定何时显示哪一位了。
动态扫描用分时的方法轮流控制各个显示器的COM端,使各个显示器轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余晖效应,给人的印象就是一组稳定的显示数据。
数码管与AT89C51的连接图如下:
数码管连接图
4系统软件设计
程序流程图:
二实践部分
1系统硬件原理
ADC0809工作原理:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。
例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。
可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。
因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。
首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上。
硬件原理图如下:
数据总线,供单片机接受。
Proteus原理图
2系统硬件调试中出现的问题及解决措施
数码管显示的数字出现问题,后来检查发现公共线上的标管脚的时候标错了。
3系统软件
3.1软件设计
1、首先我们需要在电脑上安装Keil软件,安装好后双击它的快捷方式打开这个软件。
2、打开软件后,会出现这个页面,这时候就需要我们点击窗口上面的project,然后点击Newuvisionproject新建一个工程文件,在里面需要我们选择芯片,51单片机我们是选择的Atmel里面的AT89c51。
3、选择好芯片后,我们需要保存文件,接着就是写程序了,我们新建一个空白文档,这个是点File下面那个按钮。
4、在Text中编写自己的程序,我们需要把51单片机的头文件添加上去,这个是#include
5、接下来检查程序有无问题,如果没有问题,我们可以编译,链接,调试了,这个需要我们生成Hex文件,这样才能放到protues软件中仿真。
6、如果程序在编译过程中出现问题,这就说明我们的程序有问题,我们可以去点它的错误提示找到错误语句的位置,然后再去修改。
3.2软件调试中出现的问题及解决措施
编完程序后发现程序中有逻辑错误,通过检查发现是共阳极数码管程序编写错误。
三、实验指导
1、实验目的
(1)、熟练掌握proteus、keil软件的使用。
(2)、通过设计了解数模转换器的工作原理。
(3)、学会team work团队合。
(4)、培养学生综合分析问题、发现问题和解决问题的能力。
2、实验设备
(1)、USB通讯线
(2)、实验模块
1、AD转换模块
A/D转换的过程是模拟信号依次通过取样、保持和量化、编码几个过程后转换为数字格式。
a)取样与保持
一般取样与保持过程是同时完成的,取样-保持电路的原理图如图16所示,由输入放大器A1、输出放大器A2、保持电容CH和电子开关S组成,要求 AV1 * AV2 = 1。
原理是:
当开关S闭合时,电路处于取样阶段,电容器充电,由于 AV1 * AV2 = 1,所以输出等于输入;当开关S断开时,由于A2输入阻抗较大而且开关理想,可认为CH没有放电回路,输出电压保持不变。
取样-保持电路
取样-保持以均匀间隔对模拟信号进行抽样,并且在每个抽样运算后在足够的时间内保持抽样值恒定,以保证输出值可以被 A/D 转换器精确转换。
b)量化与编码
量化的方法,一般有舍尾取整法和四舍五入法,过程是先取顶量化单位Δ,量化单位取值越小,量化误差的绝对值就越小,具体过程在这里就不做介绍了。
将量化后的结果用二进制码表示叫做编码。
2、LED显示模块
共阳极:
位选为高电平(即1)选中数码管,
各段选为低电平(即0接地时)选中各数码段, 由0到f的编码为:
uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};
共阴极:
位选为低电平(即0)选中数码管,
各段选为高电平(即1接+5V时)选中各数码段,
uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}。
8位LED数码管有共阴和共阳之分。
通常在用到多片LED数码管的时候,都会提到“段选”和“位选”。
其中,公共端即为位选线,而其它端子称为段选线。
(3)、计算机
计算机一台并且安装了proteus和keil软件。
(4)、实验用到的辅材、工具等
万用表一个、实验工具一套、电烙铁、焊锡丝等。
3、实验要求
(1)、用Proteus仿真软件画出实验电路图。
(2)、用keil开发软件编写C语言程序。
(3)、将元器件焊接在多功能板上。
(4)、连接好实验模块,完成数模转换的功能。
(5)、完成单片机实验说明书。
4、实验原理
模数转换原理:
试验中,我们选用ADC0809作为模数转换的芯片,其为逐次逼近式AD转换式芯片,其工作时需要一个稳定的时钟输入,根据查找资料,得到ADC0809的时钟频率在10khz~1200khz,我们选择典型值640khz。
课题要求测量电压范围是0到5V,又ADC0809的要求:
Vref+<=Vcc,Vref->=GND,故我们取Vref+=+5V,Vref-=0V。
由于ADC0809有8个输入通道可供选择,我们选择IN6通道,直接使ADC0809的A接地,B、C接高电平可以了,在当ADC0809启动时ALE引脚电平正跳变时变可以锁存A、B、C上的地址信息。
ADC0809可以将从IN6得到的模拟数据转换为相应的二进制数,由于ADC0809输出为8位的二进制数,转换时将0到5V分为255等分,所以我们可以得到转换公式为x/255*5化简为:
x/51,x为得到的模拟数据量,也就是直接得到的电压量。
在AD转换完成后,ADC0809将在EOC引脚上产生一个8倍于自身时钟周期的正脉冲,以此来作为转换结束的标志。
然后当OE引脚上产生高电平时,ADC0809将允许转换完的二进制数据输出。
数据处理原理:
由ADC0809的转换原理可以知道我们从其得到数据还只是二进制数据,我们还需要进一步处理来的到x的十进制数,并且对其进行精度处理,也就是课题要求的的精确到小数点后两位,在这里我们用51单片机对数据进行处理。
我们处理数据的思路是:
首先将得到的二进制数直接除以十进制数51,然后取整为x的整数部分,然后就是将得到的余数乘以10,然后再除以51,再取整为x的十分位,最后将得到的余数除以5得到x的百分位。
5、实验内容
利用51单片机ADC0809设计一个0-5V之间可调的直流电压信号,并且用两位静态共阴极数码管来显示,其中数码管显示的数字为16位模拟信号。
最后编写C程序并联合软件进行演示。
调节滑动变阻器的阻值便可以改变电压表的读数,电压表的读数可以从0V变化到5V,数码管显示可以从0.0变化到F.F。
数码管显示图如下:
电压表显示如下:
6、参考程序清单
6.1涉及到的程序
(1)共阴极数码管的显示程序
(2)系统中断程序
(3)采样通道的选择程序
6.2C51程序
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdp=P0^7;
ucharcodeLEDData[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
};
sbitOE=P3^0;
sbitEOC=P3^1;
sbitST=P3^2;
sbitCLK=P3^3;
voidDelayMS(uintms)
{
uchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
voidDisplay_Result(uintd)
{
P2=0x80;
P0=LEDData[d%16];
DelayMS(5);
P2=0x40;
P0=LEDData[d/16];
dp=0;
DelayMS(5);
}
voidmain()
{
TMOD=0x02;
TH0=0x14;
TL0=0x14;
IE=0x82;
TR0=1;
P3=0x1f;
while
(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
Display_Result(P1);
OE=0;
}
}
voidTimer0_INT()interrupt1
{
CLK=!
CLK;
}
7、问题
(1)C程序编写完,运行查出错误
(2)生成hex文件之后联合原理图,数码管显示不出数字
(3)多功能板焊接完,调试出现问题
四、结束语
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对proteus软件的使用不是很熟练,对单片机语言的编程掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了。
实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。
果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。
五、参考文献
[1]李忠国.单片机应用技能实训[M].北京:
人民邮电出版社,2006.
[2]先锋工作室.单片机程序设计实例[M].北京:
清华大学出版社,2003.
[3]张毅刚.单片机原理及接口技术[M].哈尔滨:
哈尔滨工业大学出版社,1990.
[4]何立民.单片机应用技术大全[M].北京:
北京航空航天大学出版社,1994.
[5]楼然苗.单片机课程设计指导[M].北京:
北京航空航天大学出版社,2007.
[6]丁元杰.单片微机原理及应用(第3版)[M].北京:
机械工业出版社,2006.
六、附录(原理图、仿真图、元件清单、实物图等)
附录1
元件清单
元件名称规格数量图号
电位器1K1个RV1
色环电阻10K1个R1
排阻RESPACK-81个RP1
瓷片电容22pf2个C1、C2
电解电容10uf(50v)1个C3
晶振12MHZ1个X1
芯片ADC08091个U3
芯片AT89C511个U1
LED数码管共阴极1个
注:
多功能板一块、焊锡丝若干、细铁丝。
附录2
仿真图
附录3
实物图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数模转换器 ADC0809 实验 报告