模拟信号输入通道.ppt
上传人:sy****28 上传时间:2024-09-10 格式:PPT 页数:38 大小:1.6MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

模拟信号输入通道.ppt

模拟信号输入通道.ppt

预览

免费试读已结束,剩余 28 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

A/D转换器及接口技术A/D转换器接口8.2A/D转换器及其与单片机接口二、双积分式ADC的转换原理三、A/D转换器的主要技术指标图示:理想特性(直线)与阶梯状特性间的最大偏差--量化误差:偏移误差:指输入为零时,输出信号不为零的值(又称零值误差)。A/D转换器接口主要性能分辨率:8位精度:小于±1LSB单+5V供电,模拟输入电压范围为0~+5V8路输入模拟开关可锁存三态输出,输出与TTL电平兼容功耗:15mW不必进行零点和满度调整转换时间:时钟640KHz时,约为100μS。(时钟频率范围:10~1280KHz)A/D转换器接口A/D转换器接口A/D转换器接口A/D转换器接口A/D转换器接口A/D转换器接口首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位,下降沿启动A/D转换。转换时EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据存入锁存器。EOC信号即可用作中断申请又可用作查询。当OE输入高电平时,输出三态门打开,转换结果(8位数字量)输出到数据总线上。ADC0809与单片机的接口查询方式A/D转换器接口课题目标课题分析硬件电路ADC0809模数转换电路软件设计ADC0809时钟脉冲的产生ADC0809时钟频率范围:10~1280KHz,典型运用为640KHz。产生时钟脉冲的方法:1、对单片机ALE引脚输出的信号进行二分频后得到。2、采用单片机定时器来完成。若单片机采用12MHz的晶振,选用定时器T1实现时钟脉冲的产生,如何编写初始化程序、定时器1的中断服务程序。sbitCLK=P2^7;voidmain(){TMOD=0X21;//T1为方式2TH1=256-2;//T1设置为2μsET1=1;//设置中断允许EA=1;TR1=1;//启动T1}voidtime1()interrupt3//定时器1中断服务程序{CLK=~CLK;//构造ADC0809的时钟程序}ADC0809数据的读取根据ADC0809的时序,可以确定ADC0809的操作步骤如下:1、初始化时,使START和OE信号全为低电平。2、将要转换的通道地址送到A、B、C端口上,在ALE上加上锁存脉冲。3、在START端给出一个至少有100ns宽的正脉冲信号。4、是否转换完毕根据EOC信号来判断。如果EOC为低电平,表示还在转换过程中;如果EOC变为高电平,表示转换完毕。5、使OE为高电平,转换的数据就输出给单片机了。当数据传送完毕后,将OE置为低电平,使ADC0809输出高阻态,让出数据线。unsignedcharADC0809(){//通过ADC0809读入数据,并通过函数返回unsignedchard;ADDC=0;//使ADC0809选择IN0ADDB=0;ADDA=0;START=1;//启动ADC0809,开始A/D转换START=0;while(EOC==0);//等待转换结束,EOC变为高电平OE=1;//允许ADC0809输出d=data_point;//读入数据OE=0;//关闭ADC0809输出returnd;//返回数据}数据转换程序ADC0809的基准电压使用5.12V,根据A/D转换的公式,每一个数值代表了0.02V。当输入端输入的电压时0~5V时,ADC0809输出的数据范围将是0~250。单片机接收到ADC0809输出的数据信号后,乘以0.02V才能变成对应的模拟信号的电压值。计算后得到的电压值应转换为每一位对应的数字才能通过动态显示程序在数码管上显示出来。voidcovert(unsignedcharx){charcodedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴极数码管编码表disp[0]=dispcode[x/50];//真实电压值为x乘以0.02V,整数部分相当于x除以50disp[0]=disp[0]+0x80;//显示时加上小数点x=(x%50)*2;//获得小数部分disp[1]=dispcode[x/10];//第一位小数disp[2]=dispcode[x%10];//第二位小数}#include<reg51.h>#definedata_pointP0//定义数据读入端口sbitEOC=P2^0;//定义ADC0809的控制引脚sbitADDA=P2^1;sbitADDB=P2^2;sbitADDC=P2