C8051F单片机中的ADC注意事项

发布者:喜从中来最新更新时间:2014-01-27 来源: dqjsw关键字:C8051F  单片机  ADC 手机看文章 扫描二维码
随时随地手机看文章

  F020的片内有1个1.2V、15×10-6/℃的带隙电压基准发生器和1个两倍增益的输出缓冲器。2.4V的基准电压(VREF)可通过外引脚分别接入ADC0、ADC1和DAC中。VREF对外带载能力为200μA(建议在驱动外部负载时,对地接1个负载电阻)。ADC使用偏置时,必须将参考源控制寄存器REFxCN中的位1置于"1";如置于"0",则关闭内部偏压,此时可通过VREF引脚(引脚12)使用外部基准电压,外部基准电压必须小于VAV±0.3V(还要大于1V)。不用ADC,也不用DAC时,可将REFxCN的位0置"0",使缓冲放大器处于省电方式(输出为高阻态)。

  设置REF0CN的位4为"0"时,ADC0用VREF偏置,为"1"时,用DAC0输出偏置;设置为REF0CN的位3为"0"时,ADC1用VREF偏置,为"1"时,用AV+偏置。

  在F020的ADC电路中,输入多路选择开关AMUX后面都带有1个可用编程设置增益的内部放大器(PGA)。当各模拟通道之间输入的电压信号范围差距较大时,或需要放大一个具有较大直流偏移的信号时(在差分输入方式,DAC可用于提供直流偏移)显得尤为有用。设置的方式是配置ADCxCF中的位2~0(000对应PGA的增益为1;001对应为2;010对应4;011对应为8;10x对应为16、11x对应为0.5)。这里的增益对温度传感器信号也起作用。当增益为1时,VTEMP=0.002 86(V/℃)(TEMPC)℃+0.776V。

  ADC的数据与控制

  对应单端输入,ADC结果数据字格式为:0V--0000,VREF--0FFF或FFF0。

  对应差分输入,ADC结果数据字格式为2的补码:VREF--07FF,0--0000,-VREF--F800或8000。

  将ADCxCN的位0置"0"可使结果右对齐;置"1"可使结果左对齐。当差分输入时,右对齐产生的多余高位是符号扩展位。

  C8051F系列单片机内还设有数据相关窗口中断发生器或称可编程窗口检测器,也叫ADC上(下)数据寄存器ADC0G(L)TH(L),用后台方式监视一个关键电压。当转换数据位于规定的窗口之内(或之外)时,向控制器申请转换结束中断。要求在窗口之内中断时,上限寄存器LT装入高位窗口数,下限寄存器GT装入低位窗口数;若要求在窗口之外中断时,则在下限寄存器GT中装入高位窗口数,在上限寄存器LT中装入下限窗口数。

  复位时,ADC部分的状态为:内部电压基准缓冲器关闭、内部偏压关闭、内部传感器关闭、ADC禁止、转换结果数据寄存器右对齐、12位的端口均为单端输入、端口指向AIN0、SAR转换时钟为33个系统时钟、内部放大器增益为1、下限数据寄存器为FFFFH、上限数据寄存器为0000H。

  综合F020中与ADC相关的各要素,要想正确应用ADC功能,应按下列顺序编程:设置参考电压>设置允许ADC>设置跟踪(启动)方式>设定数据对齐>配置通道>选择通道>设置转换时钟和增益>设定窗口检测上、下限>启动转换。操作SFR的顺序(以12位为例)为:REF0CN>ADC0CN>AMX0CF>AMUX0SL>ADC0CF>ADC0GTH>ADC0GTL>ADC0LTH>ADC0LTL>ADC0CN或其它启动方式。 C8051F020(简称F020)是美国德州Cygnal 公司推出的一种混合信号SOC型8位单片机。它属于C8051F系列中的F02X子系列。其性能价格比在目前应用领域极具竞争力。F020具有8路12位A/D转换(简称ADC)接口和8路8位在线可编程(ISP)的ADC电路,片上的特殊功能寄存器(简称SFR)有15个与ADC的控制相关,它们是:

  AMUX0SL-AMUX0通道选择寄存器,复位值为00000000;

  AMX0CF-AMUX0配置寄存器,复位值为00000000;

  ADC0CF-ADC0配置寄存器,复位值为11111000;

  ADC0CN-ADC0控制寄存器,复位值为00000000;

  ADC0H-ADC0数据字MSB寄存器,复位值为00000000;

  ADC0L-ADC0数据字LSB寄存器,复位值为00000000;

  ADC0GTH-ADC0下限数据高字节寄存器,复位值为11111111;

  ADC0GTL-ADC0下限数据低字节寄存器,复位值为11111111;

  ADC0LTH-ADC0上限数据高字节寄存器,复位值为00000000;

  ADC0LTL-ADC0上限数据低字节寄存器,复位值为00000000;

  AMX1SL-AMUX1通道选择寄存器,复位值为00000000;

  ADC1CN-ADC1控制寄存器,复位值为00000000;

  ADC1CF-ADC1配置寄存器,复位值为11111000;

  ADC1-ADC1数据字寄存器,复位值为00000000;

  REF0CN-基准电压控制寄存器,复位值为00000000;

  ADC是混合信号控制器的重要功能,如欲在应用编程中得心应手,就必须对其相关的要素有较清晰的整体认识。

  1) ADC的精度与通道

  F020采用TQFP100封装,芯片引脚有8个(引脚18-25)专用于模拟输入,是8路12位ADC的输入端。每路12位的转换精度都是其自身的±1LSB(最低位)。实际上,对应12位逐次逼近寄存器型(SAR)ADC只有1个,在它与各输入端之间有1个具有9 通道输入的多路选择开关(可配置模拟多路开关AMUX)。AMUX的第9通道连接温度传感器。在F020是中,12位ADC称为ADC0,另有8路8位在系统可编程(ISP)的ADC电路称为ADC1。其8个外接引脚与P1口复用,片内结构与ADC0相近,只是转换的位数为8位,转换精度为8位的±1LSB。

  ADC0端口的每一对均可用编程设置成分别地单端输入或差分输入。差分输入时的端口配对为0-1、2-3、4-5、6-7,此设置由通道选择寄存器AMUX0SL的低4位和通道配置寄存器AMUX0CF的低4位确定。在AMX0CF中,位3~0各对应2个引脚通道。位值=0,表示是独立的单端输入(复位值均为单端输入);位值=1,表示是差分输入对。对应AMX0CF选差分输入时,AMUX0SL中只有在选双数(含0)通道时才有效(注:AMUX0SL低4位为1xxx时,不论AMX0CF低4位为何值,均选温度传感器)。

  将REF0CN的位3置"1"时,允许使用温度传感器;置 "0"时,温度传感器的输出为高阻态。温度传感器的值可用于修正参数的非线性或记录、调整与温度相关的数据。

  2) ADC的速率与启动

  C8051F系列单片机中ADC的速率都是可用编程设置的,但最少要用16个系统时钟。一般在转换之前还自动加上3个系统时钟的跟踪/保持捕获时间(>1.5μs)。设置F020内ADC速率的方法是通过配置寄存器ADCxCF(x为0或1)的位7~3来进行的,其复位值为11111(位7~3=SYSCLK/CLKSAR-1)。

  一般在启动ADC之前都要处于跟踪方式,控制寄存器ADCxCN的位6如果为"0",则一直处于跟踪方式(此时启动4种启动方式都可比跟踪启动快3个系统时钟);如为"1",则有4种跟踪启动方式可选择,即对ADCxCN中的位3~2赋值;00为向ADBUSY写1时跟踪(软件命令);01为定时器3溢出跟踪;10为CNVSTR上升沿跟踪(外部信号);11为定时器2溢出跟踪。

  复位时,ADCxCN的位7为0,处于关断状态。每次转换结束时,ADCxCN的位5为"1",位4(忙标志)的下降沿触发结束中断,也可用软件查询这些状态位。

关键字:C8051F  单片机  ADC 引用地址:C8051F单片机中的ADC注意事项

上一篇:基于AT89C51的IC卡智能水表设计
下一篇:单片机应用系统的抗干扰的解决方案

推荐阅读最新更新时间:2024-03-16 13:34

8051单片机C语言基础
单片机产生于19世纪70年代,80年代人们开始使用C语言作为单片机的开发语言,在1985年许多公司都推出51系列单片机的C语言编辑器,我们把面向51单片机的C语言简称为C51。目前C51软件中最为流行的就是Keil C。 一、C语言编程与汇编语言编程相比的优势 编程调试灵活方便。因为它是一门高级语言,高级语言的特点就是编程方式灵活,同时,当前所有的单片机都有相应的C语言级别的仿真调试系统,使得它的调试十分方便。 生成的代码编译效率高。尤其是用于较为复杂的单片机系统,用C语言开发更具明显优势,当前较好的C语言编辑系统的编译效率已经基本达到中高级程序人员的开发水平。 完全模块化。C语言的基本构成单位是函数,其本身就是模块化的开发方
[单片机]
32段CMOSLCD驱动器AY0438及其与单片机的接口设计Interfacingto32-SegmentCMOSLCDDriverandMCU
       摘要:AY0438是Microchip公司生产的32段CMOS LCD驱动器,它结构简单,使用方便。可在单片机的控制下直接驱动 LCD显示模块。文中介绍了AY0438的引脚功能和电气参数。给出了AY0438在PIC16C71单片机的控制下驱动LCD 显示模块的实际应用电路及程序。     关键词:LCD显示;驱动器;单片机;接口;AY0438     1. 概述     AY0438是Microchip公司生产的一种完整的MCOS显示驱动器,可在单片机或微处理器的控制下直接驱动 LCD显示模块。它结构简单,使用方便。特别是在驱动32段LCD显示器方面,更能显示出它的
[电源管理]
基于单片机的教育机器人的设计
  目前许多高等教育院校采用教育机器人进行课堂教学和培养学生的创新能力。本文设计的教育机器人通过红外光电传感器阵列检测路面信息并利用模糊自整定PID算法将采集的路面信息和电机运行数据进行实时处理,实现教育机器人的智能巡航并将机器人的状态显示输出。   1 机器人的组成及工作原理   机器人由硬件和软件两部分组成。采用STC12CSA60S2单片机作为系统控制的核心部件,完成路面信息检测、直流电机控制、电机转速检测、数码管显示、蜂鸣器报警以及键盘输入等功能,硬件系统框图如图1所示。 图1 硬件系统框图   软件部分主要完成路况检测、PID电机控制、输入输出人机接口,可实现各种机器人巡航动作、智能循迹等功能。
[嵌入式]
单片机按键&串口控制步进电机正反转调速含程序和仿真
包含程序和仿真 功能:按键或串口发送字符指令,控制步进电机正转、反转、停止、加速、减速动作 仿真过程可直接通过按下电脑键盘控制 仿真原理图如下 单片机源程序如下: #include reg52.h #define uint unsigned int #define uchar unsigned char //------8拍----- uchar code zz ={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正转 uchar code fz ={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
[单片机]
<font color='red'>单片机</font>按键&串口控制步进电机正反转调速含程序和仿真
单片机红外遥控程序beta
千辛万苦,终于把这个完成了。不错不错。现在的问题就在上板子上测试了。刚才发了,发现 / * * / 居然被屏蔽了。标注只能用两个杠杠表示。为了以后更好的发布,我写程序注释的时候尽量用双斜杠。 #include reg52.h #define uchar unsigned char #define uint unsigned int uchar code table ={ 0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; //定义数字显示 sbit remote=P3^3; //定义中断源外中断3.3 int c
[单片机]
基于单片机的万年历汇编语言程序
;真正的万年历: 84 bytes 的 51 ASM ;==SUB_WNL=== 万年历 ==* Deng Miao * 2004-06-01 ***** GuangZhou ****** SJ DATA 30H ; 世纪 BCD 00 TO 99 NH DATA 31H ; 年号 BCD 00 TO 99 0000 TO 9999 年 YF DATA 32H ; 月份 BCD 01 TO 12 org 000h MOV SP, #40H MOV SJ, #21H ;2004-05 MOV NH, #01H MOV YF, #4H ACALL SUB_WNL
[单片机]
增强型51系列单片机W77E58的存储器访问
     摘要: W77E58是Winbond公司推出的新一代增强型51系列单片机,文中介绍了W77E58对存储器访问的特点,并举例给出多种有关的应用程序实例。     关键词: 单片机  存储器  程序  W77E58     增强型51系列单片机W77E58可与标准的8052兼容,它内含4个8位I/O口、3个16位计数器和全双工串行通信接口。由于W77E58对处理器内核进行了重新设计,因而其性能较之于标准的8052有了很大提高。     W77E58改进了传统处理器的时序。机器周期与时钟之比可以由软件来控制,最快时一个机器周期仅需4个时钟,最慢时一个机器周期需1024个时钟。在同样的时钟频率下,当时钟
[缓冲存储]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved