C8051F单片机中的ADC注意事项

最新更新时间:2012-03-28来源: 互联网关键字: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注意事项

上一篇:机器人常用的单片机使用经验
下一篇:温室智能控制器硬件单片机设计方案

推荐阅读最新更新时间:2023-10-12 20:38

51单片机C编程(九、8X8点阵显示)
//-------------------8X8点阵显示程序---------------------- //-------------------2009年4月23日------------------------ 显示 0 从右向左移动,proteus仿真电路如下: #include reg51.h #define uchar unsigned char #define HANG P1 //P1口为每一列中的位选 #define LIE P0 //P0为列选 void delay(uchar); void main() { int i=0; w
[单片机]
单片机全自动洗衣机程序
一、设计任务与要求 利用51单片机模拟全自动智能洗衣机。 按键功能要求 通过“K1”键步进改变“标准]经济、单独、排水”四种方式,执行相应的程序。对应指示灯亮。 通过“K2”键步进改变“强洗、弱洗”两种方式,执行相应的程序,对应指示灯亮。 通过“K3”键控制洗衣机运行、暂停和解除报警功能。 方式功能选择要求 一般洗衣机的步骤为:洗涤,漂洗,脱水,当处于某种状态时,对应的指示灯以0.7S周期闪烁,当洗衣机在洗涤过程中,洗涤指示灯闪烁。可以通过方式选择设定具体的运行过程。 标准方式:进水— 洗涤 — 排水 — 进水 — 漂洗 — 排水 — 进水 — 漂洗— 排水 — 脱水。 经济方式:进水 — 洗涤 — 排水
[单片机]
<font color='red'>单片机</font>全自动洗衣机程序
基于单片机设计的发动机测量方法
1 引言 在航空发动机中,对振动的监控具有重要的作用,它可以有效的分析发动机的工作情况,同时振动值也是发动机性能评定的重要标准之一,而如何正确测量发动机的振动参数,如振动的速度,位移和加速度也就成为了一个重要的研究内容。本文即从此方向入手,进行一种方法的论述与实现。 2 测量原理分析 由于发动机振动速度传感器输出的频率信号与发动机振动速度成正比,可采用频率测量法,即通过测量发动机传感器的输出频率来得到相应的振动速度。同时,由发动机振动形成机理和实践经验可知,传感器的输出频率中混杂有高频和低频噪声信号,为了提高测量精度,必须将其过滤掉,因此首先对得到的振动速度信号进行放大和高、通滤波处理。振动的速度、位移和
[单片机]
引用 IAR + Proteus7.6仿真MSP430单片机的设置方法
WIND 的 IAR + Proteus7.6仿真MSP430单片机的设置方法 Proteus7.6增加了MSP430系列单片机,iar embedded workbench 和Proteus7.6联调可完成对MSP430的软件仿真,步骤如下。 1. 设置IAR软件,生产XX.HEX文件 (1) 在IAR建立MSP430工程及X.C文件,并编写X.C代码,界面如下图, (2) 设置IAR软件以生成X.HEX文件 点击软件页面中的Project,在下拉菜单中选择Opintion....,打开如下界面, (3) 在左边选择Linker选项,在右边选择Output,按
[单片机]
引用 IAR + Proteus7.6仿真MSP430<font color='red'>单片机</font>的设置方法
华虹半导体与晟矽微电宣布基于95nm OTP的首颗MCU开发成功
电子网消息,全球领先的200mm纯晶圆代工厂——华虹半导体有限公司与上海晟矽微电子股份有限公司今日联合宣布,基于95纳米单绝缘栅一次性编程MCU(95纳米CE 5V OTP MCU)工艺平台开发的首颗微控制器(Microcontroller Unit, MCU)(产品型号MC30P6230)已成功验证,即将导入量产。 物联网生态多点开花,对低功耗的要求也愈发严苛,华虹半导体顺时而造,推出绿色低功耗95纳米CE 5V OTP MCU工艺平台。该工艺平台是专为物联网MCU应用量身打造的最佳晶圆代工解决方案之一,更是华虹半导体物联网布局中重要的一步棋,扩展了其嵌入式存储器工艺平台组合,为公司在智能家居、物联网等领域的深入发展提供了强
[半导体设计/制造]
51单片机使用printf函数带参数打印不正常的解决办法
本人在调试STC8A8K64S4单片机时遇到一个很奇葩的问题,使用printf函数打印一个带参数的调试信息时出现异常,具体表现定义了8位的变量使用%X格式打印出的值却变成了16位,且赋值为0后任然打印出16位的随即数值。由于之前使用stm32单片机一直使用printf打印没有出现过类似情况,因此没有怀疑是函数问题而是怀疑是否为单片机某处寄存器设置错误。在看了很久手册之后没发现问题,最后自己写了一个带参数打印的函数发现数值没有错误。由于项目匆忙未继续深入探究原因,只能初步断定在51单片机使用printf函数带参数打印时数值不正常。 当然使用printf带参数打印调试是非常方便的,因此我尝试使用sprintf先将参数装到一个buf
[单片机]
C51单片机定时器T0,T1的常用基本设置
有时候带手机不方便,可以又想知道时间,这时候可以用蜂鸣器做一个音频的时间提醒器,每60秒发一声提醒 提醒器计时可以使用单片机的定时器T0、T1来做,计时的定时器用T1来做,工作在方式2(8位自动装载),系统运行提示的定时器用T0来做,工作在方式1(16位定时) 代码如下 #include reg52.h #define uint unsigned int #define uchar unsigned char #define time_set0 5000//设置定时器0的计时长度 #define th0 (65536-time_set0)/256//计算定时器高8位装入值 #define tl0 (65
[单片机]
51单片机的四种工作模式怎么去设置
学51单片机需要专门把C语言学透吗 大家是不是看了很多网上的视频或者文章,他们的建议是不是教你拿一本C语言书看几个月,当真正开始给单片机编程时你会发现单片机编程语言只用到了c语言的百分之十都不到,浪费了自己的青春,消磨了对电子方面的兴趣!真正学习单片机需要一定的动手能力,不误人子弟的教程,理论和实践相结合的教学模式并没有刚开始教大家一堆C语言知识。 所以建议从一块开发板和教程开始学起,起初的知识对C语言的要求很低。之后发现自己的C语言功底不足以使你的程序如鱼得水的时候再回头认认真真学习C语言。 51单片机的四种工作模式怎么去设置,既然它有四种工作模式,像定时计数器一样,要想使用定时计数器它也有四种工作方式,那必然的要有
[单片机]
51<font color='red'>单片机</font>的四种工作模式怎么去设置
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved