当前位置:文档之家› AD转换实验报告

AD转换实验报告

8292924809基于单片机的AD转换电路专业:班级:学号:组员:指导老师:年月日目录键入章标题(第 1 级) (1)键入章标题(第2 级) (2)键入章标题(第3 级) (3)键入章标题(第 1 级) (4)键入章标题(第2 级) (5)键入章标题(第3 级) (6)引言A/D转换是指将模拟信号转换为数字信号,这在信号处理、信号传输等领域具有重要的意义。

常用的A/D转换电路有专用A/D集成电路、单片机ADC模块,前者精度高、电路复杂,后者成本低、设计简单。

基于单片机的A/D转换电路在实际电路中获得了广泛的应用。

一般的A/D转换过程是通过采样、保持、量化和编码4个步骤完成的,这些步骤往往是合并进行的。

当A/D转换结束时,ADC输出一个转换结束信号数据。

CPU可由多种方法读取转换结果:a查询方式;b中断方式;c DMA方式。

通道8为A/D转换器,ADC0809是带有8为A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输出,共用A/D转换器进行转换。

三台输出锁存器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

一个实际系统中需用传感器把各种物理参数测量出来,并转换为电信号,在经过A/D转换器,传送给计算机;微型计算机加工后,通过D/A转换器去控制各种参数量。

一、实验方案的选择与分析1.1复位电路方案单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。

51的RST引脚是复位信号的输入端。

复位电平是高电平有效持续时间要有24个时钟周期以上。

本系统中单片机时钟频率为6MHz则复位脉冲至少应为4us。

方案一:上电复位电路上电瞬间,RST端的的电位与Vcc相同,随着电容的逐步充电,充电电流减小,RST电位逐渐下降。

上电复位所需的最短时间是振荡器建立时间加上二个机器周期,在这段时间里,振荡建立时间不超过10ms。

如图2所示;方案二:外部复位电路按下开关时,电源通过电阻对外接电容进行充电,使RES端为高电平,复位按钮松开后,电容通过下拉电阻放电,逐渐使RET端恢复低电平。

如图3所示;方案三:上电外部复位电路典型的上电外部复位电路是既具有上电复位又具有外部复位电路,上电瞬间,C与Rx构成充电电路,RST引脚出现正脉冲,只要RST保持足够的高电平,就能使单片机复位。

如图4所示;方案分析与选择:在以上3种复位电路中,上电复位电路结构简单、所用元器件较少、成本较低,在小型电路中比较常用,并且能自动复位,操作简单,很符合本电路的要求;而外部复位电路和上电外部复位电路,虽然能完成本机要求,但所用原件较多,电路较为复杂,不符合人性化要求,且需手动处理。

因此,在本次试验中选择上电复位电路。

1.2振荡源方案在MCS-51内部有一个用于构成振荡器的高增益反相放大器。

引脚XTAL1(19)、XTAL2(18)分别是此放大器的输入端和输出端方案一:内部方式与作为反馈元件的片外晶体或陶瓷谐振器一起组成一个自激振荡器。

方案二:外部方式外部振荡器信号的接法与芯片类型有关。

CMOS工艺的MCU其XTAL1端接外部时钟信号,XTAL2端可悬空。

HMOS工艺的MCU则XTAL2端接外部时钟信号,XTAL1端须接地。

方案分析与选择:无论是内部振荡还是外部振荡都能满足本电路对振荡源的要求,内部振荡和外部振荡相比较而言,内部振荡的完成更容易和操作,并且用简单的器件就可以实现振荡要求,可以使电路外部更人性化。

所以本次试验选择内部振荡方式。

1.3显示与键盘方案对系统发出命令和输出显示测量结果,主要是由键盘和7段3位共阳极数码管组成。

(1)译码方法用单片机驱动7段3位共阳极数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。

方案一:硬件译码硬件译码就是显示的段码完全由硬件完成,CPU只要送出标准的BCD码即可,硬件接线有一定标准。

方案二:软件译码软件译码是用软件来完成硬件的功能,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。

方案的分析与选择:译码方式比较简单,软件与硬件的方式差别不大,但现在的主流方式是软件译码,而且软件译码接线比较灵活,处理简单,因此本电路选择的是软件译码。

(2)显示方式在该单片机系统中,使用7段共阳极数码管构成3位数字显示器,段选线控制显示的数字,位选线控制显示位的亮或暗。

方案一:静态显示静态显示,显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不用再管,直到下一次显示数据需要更新时再传送一次数据。

方案二:动态显示动态显示需要CPU时刻对显示器件进行数据刷新,显示数据会有闪烁感,占用的CPU时间多。

方案的分析与选择:这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。

所以,本次实验采用的是动态显示。

二、系统的硬件设计2.1 ADC0809内部功能及引脚介绍ADC0809八位逐次逼近式A/D转换器是一种单片CMOS器件,包括8位模拟转换器、8通道转换开关和与微处理器兼容的控制逻辑。

8路转换开关能直接连通8个单端模拟信号中的任何一个。

其内部结构如图8所示。

ADC0809没有内部时钟,必须由外部提供,其范围为10~1280kHz。

典型时钟频率为640kHz。

引脚排列及各引脚的功能,引脚排列如图9所示各引脚的功能如下:IN0~IN7:8个通道的模拟量输入端。

可输入0~5V待转换的模拟电压。

D0~D7:8位转换结果输出端。

三态输出,D7是最高位,D0是最低位。

A、B、C:通道选择端。

当CBA=000时,IN0输入;当CBA=111时,IN7输入。

ALE:地址锁存信号输入端。

该信号在上升沿处把A、B、C的状态锁存到内部的多路开关的地址锁存器中,从而选通8路模拟信号中的某一路。

START:启动转换信号输入端。

从START端输入一个正脉冲,其下降沿启动ADC0809开始转换。

脉冲宽度应不小于100~200ns。

EOC:转换结束信号输出端。

启动A/D转换时它自动变为低电平。

OE:输出允许端。

CLK:时钟输入端。

ADC0809的典型时钟频率为640kHz,转换时间约为100μs。

REF(-)、REF(+):参考电压输入端。

ADC0809的参考电压为+5V。

VCC、GND:供电电源端。

ADC0809使用+5V单一电源供电。

当ALE为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。

在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换,此期间START应保持低电平。

在START 下降沿后10us左右,转换结束信号变为低电平,EOC为低电平时,表示正在转换,为高电平时,表示转换结束。

OE为低电平时,D0~D7为高阻状态,OE为高电平时,允许转换结果输出。

2.2 键盘和显示电路(1)键盘本实验键盘采用4X4矩阵键盘组成。

如下图所示:(2)显示显示部分为4个共阳极的七段数码管,4个七段共阳极数码管的a~dp字段的引脚分别由4个OC门同相驱动器驱动。

4个共阳极7段数码管如下图所示:三、系统软件的设计及流程图3.1 A/D转换本实验采用的是查询方式进行转换,查询方式的流程图如下图所示:3.2 标度变换该单片机系统中,被测量经过A/D转换,均统一为0~255二进制码,因此要把A/D转换的数码X变换成被测量的实际数值。

四、电路图及仿真效果图本次实验的电路图如下图所示:仿真效果图如下所示:结论:单片机具有体积小,功耗低,功能强,通用性好,性价比高易组装成机电仪一体化的各种智能控制设备和仪器,仪表。

面向在线应用,能针对各类控制任务的简繁灵活配置,因而能获得最佳的费效比。

易于实现规划设计,避免不必要的二次开发过程,减少系统的研发费用,产品升级周期短。

易于多机使用主从分布式的集散控制,提高控制系统的效率。

抗干扰能力强,适应温度范围广,能在各种恶劣环境下可靠地工作。

指令精简,实用,系统设计灵活易于推广运用。

五、心得与体会自拟。

附录1:参考资料。

(1)模拟电子技术基础高等教育出版社(2)电子测量技术电子工业出版社(3)单片微型计算机应用与开发航空航天大学出版社(4)MCS-51单片机实用子程序设计哈尔滨工业大学出版社附录2:实验源程序。

#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit ST=P2^4;sbit OE=P2^5;sbit EOC=P2^6;sbit w_select1=P2^0;sbit w_select2=P2^1;sbit w_select3=P2^2;sbit w_select4=P2^3;uchar num_1=0,num_2=0,num_3=0;//uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49,0x41, 0x1f, 0x01, 0x09};uchar code table[10] = {0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};//uchar code table[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};/*************************************************************** 名称 : Delay_1ms()* 功能 : 延时子程序,延时时间为 1ms * x* 输入 : x (延时一毫秒的个数)* 输出 : 无***************************************************************/void Delay_1ms(uint x){uint h,k;//uchar k;for(h = x; h >0; h--) for(k = 20; k>0; k--);}void DA_change(uchar k){float D_value;D_value=5*k/255;num_1=D_value/1;//取个位值num_2=(D_value-num_1)*10/1;//取小数点后第一位值num_3=((D_value-num_1)*10-num_2)*10/1;//取小数点后第二位值}/********************************************************** ***** 名称: Display(uchar k)* 功能:将参数分成十位、个位分别显示* 输入: k (键盘数值)* 输出: P0口输出七段码,P2口输出位选码*********************************************************** ****/void Display(){P0 = table[num_1]&0x7f; //需显示小数点w_select3=1; Delay_1ms(1); //显示5ms个位w_select3=0; //消隐P0 = table[num_2];w_select2=1; Delay_1ms(1); //显示5ms小数点后第一位w_select2=0; //消隐P0 = table[num_3];w_select1=1; Delay_1ms(1); //显示5ms小数点后第二位}/********************************************************** ***** 名称 : Main()* 功能 : 主函数*********************************************************** ****/void main(void){uchar Key_Value = 16; //两次读出的键值uchar getdata;while(1){P2=P2&0xf0;P0=0xff;P3=0xff;ST=0;//产生启动转换的正脉冲信号ST=1;ST=0;while (EOC==0);OE=1;getdata=P0;OE=0;DA_change(getdata);Display( ); //没有按键按下,也显示电压值num_1=0,num_2=0,num_3=0;}}附录3:电路实物图自拟………….。

相关主题