8051单片机C语言开发(八).pptVIP

  • 1
  • 0
  • 约3.81千字
  • 约 25页
  • 2017-12-26 发布于河北
  • 举报
8051单片机C语言开发(八)

绝对地址访问 C51绝对地址的方法: 1. 绝对宏: 在程序中,用“#includeabsacc.h”即可使用其中定义的宏来访问绝对地址,包括: CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD 例如: #include ABSACC.H #define MOD xbyte[0x00] //指向外RAM的0000h地址 *必须包含absacc.h头文件 2. _at_关键字 直接在数据定义后加上_at_ const即可,但是注意: (1)绝对变量不能被初使化; (2)bit型函数及变量不能用_at_指定。 例如: unsigned char xdata MOD _at_ 0x6000; //指定MOD 在片外0x6000H unsigned char xdata TxMessage[13] _at_ 0x6010; //指定数组从0x6100开始 8.1 A/D转换器及其与单片机接口 8.1.1 A/D转换器的原理及主要技术指标 一、逐次逼近式ADC的转换器:将模拟量转换为数字量 二、A/D转换器的主要技术指标 2、量化误差 ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。 3、偏移误差 偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。 5、线性度 线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。 主要性能为: 分辨率为8位; 精度:ADC0809小于±1LSB(ADC0808小于±1/2LSB); 单+5V供电,模拟输入电压范围为0~+5V; 具有锁存控制的8路输入模拟开关; 可锁存三态输出,输出与TTL电平兼容; 功耗为15mW; 不必进行零点和满度调整; 转换速度取决于芯片外接的时钟频率。时钟频率范围:10~1280KHz。典型值为时钟频率640KHz,转换时间约为100μS。 一、ADC0809的内部结构及引脚功能 1、IN0~IN7,8路模拟量输入端。 2、D7~D0,8位数字量输出端。 3、ALE, 地址锁存允许信号输入端。通常向此引脚输入一个正脉冲时,可将三位地址选择信号A、B、C锁存于地址寄存器内并进行译码,选通相应的模拟输入通道。 4、START,启动A/D转换控制信号输入端。一般向此引脚输入一个正脉冲,上升沿复位内部逐次逼近寄存器,下降沿后开始A/D转换。 5、CLK,时钟信号输入端。 6、EOC,转换结束信号输出端。A/D转换期间EOC为低电平,A/D转换结束后EOC为高电平。 7、OE,输出允许控制端,控制输出锁存器的三态门。当OE为高电平时,转换结果数据出现在D7~D0引脚。当OE为低电平时,D7~D0引脚对外呈高阻状态。 8、C、B、A,8路模拟开关的地址选通信号输入端,3个输入端的信号为000~111时,接通IN0~IN7对应通道。 9、VR(+)、VR(-):分别为基准电源的正、负输入端。 二、ADC0809与单片机的接口 1、查询方式 例:对8路模拟信号采集。 #includeabsacc.h #includereg51.h #define uchar unsigned char #define IN0 XBYTE[0x7ff8] sbit ad_busy=P3^3; //EOC状态 void ad0809(uchar idata *x) { uchar i; uchar xdata *ad_adr; ad_adr=IN0; for(i=0;i8;i++) { *ad_adr=0;  //启动转换 i=i; //延时等待EOC变低 i=i; i=i; while(ad_busy==0); //查询等待转换结束 x[i]=*ad_adr; //存结果 ad_adr++; //下一通道 } } void main() { static uchar idata ad[10]; ad0809(ad); } 2、中断方式 练习:读取IN0通道的模拟量转换结果,并存储。

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档