大学单片机接口技术(C51版)-张道德-课件PPT
收藏
资源目录
压缩包内文档预览:(预览前20页/共30页)
编号:21836282
类型:共享资源
大小:16.08MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
单片机
接口
技术
c51
张道德
课件
ppt
- 资源描述:
-
大学单片机接口技术(C51版)-张道德-课件PPT,大学,单片机,接口,技术,c51,张道德,课件,ppt
- 内容简介:
-
单片机接口技术(C51版),第九章 数据采集编程,内容概述,本章主要介绍单片机系统数据采集的方法及软硬件设计。 教学目标 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 概述,D/A转换器(Digital to Analog Converter)是一种能把数字量转换成模拟量的电子器件。 A/D转换器(Analog to Digital Converter)则相反,它能把模拟量转换成相应数字量。,9.2 D/A转换器DAC0832,9.2.1 D/A转换器的性能指标 DAC性能指标颇多,主要有以下四个: 分辨率(Resolution):D/A转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。一个n位的DAC所能分辨的最小电压增量定义为满量程值的2-n倍。 例如:满量程为10V的8位DAC芯片的分辨率为10V2-8=39mV;一个同样量程的16位DAC的分辨率高达10V2-16=153V 。 转换精度(Conversion Accuracy):指满量程时DAC的实际模拟输出值和理论值的接近程度。对T型电阻网络的DAC,其转换精度和参考电压VREF、电阻值和电子开关的误差有关。 例如:满量程时理论输出值为10V,实际输出值是在9.99V10.01V之间,其转换精度为10mV 。通常,DAC的转换精度为分辨率之半,即为LSB/2。LSB是分辨率,是指最低一位数字量变化引起幅度的变化量。,9.2.1 D/A转换器的性能指标,偏移量误差(Offset Error):指输入数字量为零时,输出模拟量对零的偏移值。这种误差通常可以通过DAC的外接VREF和电位计加以调整。 线性度(Linearity):DAC的实际转换特性曲线和理想直线之间的最大偏移差。通常,线性度不应超出 LSB。 除上述指标外,转换速度(Conversion Rate)和温度灵敏度(Temperature Sensitivity)也是DAC的重要技术参数。,9.2.2 DAC0832引脚及内部结构,1)DAC0832内部结构 2)引脚功能,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.4 DAC0832应用实例,1)直通方式 2)单缓冲方式,例9-2-1 DAC0832用作波形发生器,按上页的图接线,分别写出产生锯齿波和方波的程序。 解:在图9-2-5中,运算放大器OA输出端VOUT直接反馈到RFB,故这种接线产生的模拟输出电压是单极性的。 源程序如下: #pragma db oe sb #include #include #define DAC0832 XBYTE0x7fff /* 定义DAC0832端口地址 */ #define uchar unsigned char void delay(uchar t) /* 延时函数 */ while(t-); ,源程序,void saw(void) /* 锯齿波发生函数 */ uchar i; for (i=0;i255;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,ADC0809是一种逐次逼近型A/D转换器。 转换一开始SAR向DAC置MSB(逻辑“1”),并通过比较器,将DAC的模拟输出(1/2满量程)与模拟输入信号比较。若DAC输出小于模拟输入,则MSB保留。若DAC的输出大于模拟输入,则MSB丢弃(逻辑“0”),然后SAR继续向DAC置入次高位,将它保留还是丢弃,取决于DAC输出与模拟输入的比较结果。这种试探过程一直进行到LSB为止,此时转换即告完成,数据由输出线送出。,四位逐次逼近型A/D转换时序,10.3.2 ADC0809应用实例,ADC0809与单片机接口时序,ADC0809时序图,例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 绝对地址访问,利用C51的绝对地址访问实现例9-3-1的数据采集功能。 C51编译器提供一组预定义宏,该宏文件为“absacc.h”,利用它可以方便地实现对任何内存空间的直接操作。 采用这种方法将上题改写为如下程序:,#include #include /* 包含绝对地址操作预定义头文件 */ #define ADC 0xfef0 /* 定义ADC0809端口地址 */ #define ADCdata 0x0000 /* 定义数据缓冲器地址 */ unsigned char i;,C51源程序,void main() i=8; /* ADC0809有8个模拟输入通道 */ EA=1; EX1=1;IT1=1; /* 开中断 */ XBYTEADC=i; /* 启动ADC0809 */ while(i); /* 等待8个通道A/D转换完毕 */ void int1() interrupt 2 unsigned char tmp; tmp=XBYTEADC; /* 读取A/D转换结果 */ i-; XBYTEADCdata+i=tmp; /* 结果值存储到数据缓冲器 */ XBYTEADC=i; /* 启动下一个模拟输入通道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转换器TLC0832,TLC0832是美国TI公司推出的8 位串行A/D转换器,体积小,引脚少,与微处理器接口电路简单,已取得广泛应用。 9.4.1 主要技术特点 8位分辨率 易于和微处理器接口或独立使用 满比例尺工作或用5v基准电压 可单通道或差分输入选择 单5V供电,输入范围05V 输入和输出与TTL和CMOS兼容 在FCLOCK=250Hz时,转换时间为32us 非线性调整误差 1 LSB TLC0832有2个输入通道。,9.4.2 TLC0832工作原理,TLC0832使用采样数据比较器的结构,用逐次逼近流程,转换差分模拟输入信号。要转换的输入电压连到一个输入端,相对于地(单端输入)或另一输入端(差分输入)。TLC0832的输入端可以分配为正极()或负极(),当连到分配为正端的输入电压低于分配为负端的输入电压时,转换结果为全0。,TLC0832的工作时序,图9-4-2 TLC0832时序图,TLC0832多路控制器逻辑表,9.4.3 应用实例,例9-4-1 图9-4-3是某温度数据采集系统的电路原理图,采用热敏电阻作为温度传感器,使用TLC0832的通道0采集温度数据。,C51源程序,关于TLC0832数据采集部分源程序如下,readadc()函数返回A/D转换结果。 / TLC0832数据采集程序 #include #include #include #define uchar unsigned char #define uint unsigned int sbit adcdo=P14; sbit adccs=P12; sbit adcclk=P13; sbit adcdi=P10; void delay1(uchar x); uchar readadc(void); void adcck(void);,C51源程序,void delay1(uchar x) /*延时函数*/ uchar i; for(i=0;ix;i+); void adcck(void) /*时钟信号函数*/ adcclk=1; delay1(2); adcclk=0; delay1(2); ,C51源程序,uchar readadc(void) uchar i; char ch0=0; adccs=0; /* 片选信号为0 */ adcck(); adcdi=1; /* 启动A/D
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。