null单片机接口技术(C51版)单片机接口技术(C51版)第九章 数据采集编程内容概述内容概述
本章主要介绍单片机系统数据采集的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
及软硬件设计。
教学目标
1.了解D/A及A/D的转换在单片机系统的作用和意义。
2. 理解D/A转换器的分辩率、转换精度、线性度等主要性能指标的含义,了解DAC0832的内部结构,掌握DAC0832的单极性输出、双极性输出以及直通、单缓冲、双缓冲等工作方式,能设计相关的接口电路并编写相应的C51源程序。
3.理解逐次逼近型A/D转换器的工作原理,理解ADC0809的引脚工作时序,能设计ADC0809与单片机的接口电路,能对查询、中断、延时三种工作方式的ADC0809编写相应的C51程序。
4.了解串行输入输出A/D转换器TLC0832的结构及工作原理,能设计该芯片的应用电路,并根据芯片的时序图编写TLC0832读、写数据的C51源程序。9.1 概述9.1 概述D/A转换器(Digital to Analog Converter)是一种能把数字量转换成模拟量的电子器件。
A/D转换器(Analog to Digital Converter)则相反,它能把模拟量转换成相应数字量。
9.2 D/A转换器DAC0832 9.2 D/A转换器DAC0832 9.2.1 D/A转换器的性能指标
DAC性能指标颇多,主要有以下四个:
分辨率(Resolution):D/A转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。一个n位的DAC所能分辨的最小电压增量定义为满量程值的2-n倍。
例如:满量程为10V的8位DAC芯片的分辨率为10V×2-8=39mV;一个同样量程的16位DAC的分辨率高达10V×2-16=153µV 。
转换精度(Conversion Accuracy):指满量程时DAC的实际模拟输出值和理论值的接近程度。对T型电阻网络的DAC,其转换精度和参考电压VREF、电阻值和电子开关的误差有关。
例如:满量程时理论输出值为10V,实际输出值是在9.99V—10.01V之间,其转换精度为±10mV 。通常,DAC的转换精度为分辨率之半,即为LSB/2。LSB是分辨率,是指最低一位数字量变化引起幅度的变化量。9.2.1 D/A转换器的性能指标9.2.1 D/A转换器的性能指标偏移量误差(Offset Error):指输入数字量为零时,输出模拟量对零的偏移值。这种误差通常可以通过DAC的外接VREF和电位计加以调整。
线性度(Linearity):DAC的实际转换特性曲线和理想直线之间的最大偏移差。通常,线性度不应超出 ±LSB。
除上述指标外,转换速度(Conversion Rate)和温度灵敏度(Temperature Sensitivity)也是DAC的重要技术参数。9.2.2 DAC0832引脚及内部结构9.2.2 DAC0832引脚及内部结构1)DAC0832内部结构
2)引脚功能
9.2.3 DAC0832的应用9.2.3 DAC0832的应用9.2.3.1 DAC用作单极性电压输出
VREF/256为一常数。
显然,Vout和B成正比关系。输入数字量B为0时,Vout也为0,输入数字量为256时,Vout为负的最大值,输出电压为负的单极性。9.2.3.2 DAC0832用作双极性电压输出9.2.3.2 DAC0832用作双极性电压输出接线方法
由 得出 9.2.4 DAC0832应用实例9.2.4 DAC0832应用实例1)直通方式
2)单缓冲方式 例9-2-1 DAC0832用作波形发生器例9-2-1 DAC0832用作波形发生器 按上页的图接线,分别写出产生锯齿波和方波的程序。
解:在图9-2-5中,运算放大器OA输出端VOUT直接反馈到RFB,故这种接线产生的模拟输出电压是单极性的。
源程序如下:
#pragma db oe sb
#include
#include
#define DAC0832 XBYTE[0x7fff]
/* 定义DAC0832端口地址 */
#define uchar unsigned char
void delay(uchar t) { /* 延时函数 */
while(t--);
} 源程序源程序void saw(void) { /* 锯齿波发生函数 */
uchar i;
for (i=0;i<255;i++) {
DAC0832=i;
}
}
void square(void) { /* 方波发生函数 */
DAC0832=0x00;
delay(0x10);
DAC0832=0xff;
delay(0x10);
}源程序源程序void main(void) {
uchar i,j;
i=j=0xff;
while(i--) {
saw(); /* 产生一段锯齿波 */
}
while(j--) {
square(); /* 产生一段方波 */
}
}
9.3 A/D转换器ADC0809 9.3 A/D转换器ADC0809 ADC0809是一种逐次逼近型A/D转换器。
转换一开始SAR向DAC置MSB(逻辑“1”),并通过比较器,将DAC的模拟输出(1/2满量程)与模拟输入信号比较。若DAC输出小于模拟输入,则MSB保留。若DAC的输出大于模拟输入,则MSB丢弃(逻辑“0”),然后SAR继续向DAC置入次高位,将它保留还是丢弃,取决于DAC输出与模拟输入的比较结果。这种试探过程一直进行到LSB为止,此时转换即告完成,数据由输出线送出。 四位逐次逼近型A/D转换时序 四位逐次逼近型A/D转换时序 10.3.2 ADC0809应用实例 10.3.2 ADC0809应用实例ADC0809与单片机接口时序ADC0809时序图 ADC0809时序图 例9-3-1例9-3-1 在一控制系统中,巡回
检测
工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训
一遍8路模拟量输入。
解:ADC0809通道0端口地址为FEF0H。采用中断方式依次读取8个通道的数据,分别存到外部RAM的0000H-0007H单元。
程序中定义了两个指针变量* ADC及* ADCdata,分别指向ADC0809接口地址(0xfef0)和外部RAM单元地址。
源程序如下:
#include
unsigned char xdata * ADC;
/* 定义ADC0809端口指针 */
unsigned char xdata * ADCdata;
/* 定义ADC0809数据缓冲器指针 */
unsigned char i;源程序源程序 void main() {
ADC=0xfef0; ADCdata=0x0000;
/* 定义端口地址和数据缓冲器地址 */
i=8; /* ADC0809有8个模拟输入通道 */
EA=1; EX1=1;IT1=1; /* 开中断 */
*ADC=i; /* 启动ADC0809 */
while(i); /* 等待8个通道A/D转换完毕 */
}
void int1() interrupt 2 {
unsigned char tmp;
tmp=*ADC; /* 读取A/D转换结果 */
*ADCdata=tmp; /* 结果值存储到数据缓冲器 */
ADCdata++; /* 数据缓冲器指针地址加1 */
i--;
*ADC=i; /* 启动下一个模拟输入通道A/D转换 */
}例9-3-2 绝对地址访问例9-3-2 绝对地址访问 利用C51的绝对地址访问实现例9-3-1的数据采集功能。
C51编译器提供一组预定义宏,该宏文件为“absacc.h”,利用它可以方便地实现对任何内存空间的直接操作。
采用这种方法将上题改写为如下程序:
#include
#include /* 包含绝对地址操作预定义头文件 */
#define ADC 0xfef0 /* 定义ADC0809端口地址 */
#define ADCdata 0x0000 /* 定义数据缓冲器地址 */
unsigned char i;C51源程序C51源程序 void main() {
i=8; /* ADC0809有8个模拟输入通道 */
EA=1; EX1=1;IT1=1; /* 开中断 */
XBYTE[ADC]=i; /* 启动ADC0809 */
while(i); /* 等待8个通道A/D转换完毕 */
}
void int1() interrupt 2
{
unsigned char tmp;
tmp=XBYTE[ADC]; /* 读取A/D转换结果 */
i--;
XBYTE[ADCdata+i]=tmp; /* 结果值存储到数据缓冲器 */
XBYTE[ADC]=i; /* 启动下一个模拟输入通道A/D转换 */
}9.3.3 A/D接口设计要点9.3.3 A/D接口设计要点选择合适的系统采样速度
减小A/D转换的孔径误差
合理选用A/D转换器
选择A/D转换芯片应遵循下述原则:
1)根据传感器接口通道的总误差,选择A/D转换器精度及分辩率。
2)根据信号对象变化率及转换精度要求,确定A/D 转换速度,以保证系统的实时性要求。
3)根据环境条件选择A/D转换芯片的一些环境参数要求,如工作温度,功耗,可靠性等级等性能。
4)根据计算机接口特性,考虑如何选择A/D转换器的输出状态。
5)另外还要考虑成本、资源、是否流行芯片等因素。9.4 8位A/D转换器TLC08329.4 8位A/D转换器TLC0832 TLC0832是美国TI公司推出的8 位串行A/D转换器,体积小,引脚少,与微处理器接口电路简单,已取得广泛应用。
9.4.1 主要技术特点
8位分辨率
易于和微处理器接口或独立使用
满比例尺工作或用5v基准电压
可单通道或差分输入选择
单5V供电,输入范围0~5V
输入和输出与TTL和CMOS兼容
在FCLOCK=250Hz时,转换时间为32us
非线性调整误差 ±1 LSB
TLC0832有2个输入通道。9.4.2 TLC0832工作原理9.4.2 TLC0832工作原理 TLC0832使用采样-数据-比较器的结构,用逐次逼近流程,转换差分模拟输入信号。要转换的输入电压连到一个输入端,相对于地(单端输入)或另一输入端(差分输入)。TLC0832的输入端可以分配为正极(+)或负极(-),当连到分配为正端的输入电压低于分配为负端的输入电压时,转换结果为全0。 TLC0832的工作时序TLC0832的工作时序TLC0832多路控制器逻辑
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
TLC0832多路控制器逻辑表9.4.3 应用实例9.4.3 应用实例例9-4-1 图9-4-3是某温度数据采集系统的电路原理图,采用热敏电阻作为温度传感器,使用TLC0832的通道0采集温度数据。C51源程序C51源程序 关于TLC0832数据采集部分源程序如下,readadc()函数返回A/D转换结果。
// TLC0832数据采集程序
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit adcdo=P1^4;
sbit adccs=P1^2;
sbit adcclk=P1^3;
sbit adcdi=P1^0;
void delay1(uchar x);
uchar readadc(void);
void adcck(void);C51源程序C51源程序void delay1(uchar x) /*延时函数*/
{
uchar i;
for(i=0;i
本文档为【第九章__数据采集编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。