新型微控制器AduC812的P1口的应用

发布者:清新心情最新更新时间:2010-11-19 关键字:AduC812  端口  ADC 手机看文章 扫描二维码
随时随地手机看文章

  1 AduC812的通用数据端口

  AduC812是一种新型的高度集成的高精度12位数据采集系统。在其片内,不仅包含了可重新编程的非易失性闪速/电擦除程序存储器的高性能8位(与8051兼容)MCU,还包含了高性能的自校准多通道(8个输入通道)ADC,两个12位DAC。AduC812微控制器内核与8051指令集兼容,具有9个中断源(2个优先级)。片内还集成了8K字节的闪速/电擦除程序存储器、640字节的闪速/电擦除数据存储器以及256字节RAM。

  AduC812共有52个管脚,使用4个通用数据端口P0~P3与外部器件进行数据交换。每一个I/O口都有自己不同的驱动执行电路。除端口1之外都是8位双向端口。端口1的操作是AduC812特有的,表1说明了P1口可复用的管脚功能。

  表1 P1口管脚说明

  

P1口管脚说明 www.elecfans.com


 

  所有端口均包含位锁存器和输入缓冲器,I/D双向端口还包含了输出驱动器。由于P1口没有输出驱动器,所以P1口只能是输入端口,只能被配置为数字输入或模拟输入,不能用于输出,如图1所示。AduC812的P1口通常用于模拟输入;当不用于模拟输入时,可将0写至端口值,这样就被设置为数字输入方式。

  

 

  2 P1口的各种功能与应用

  P1口的主要功能是ADC的模拟输入,另外还可用于一些控制输入、定时器2和计数器2的数字输入以及SPI从属选择输入等。

  2.1 模/数转换输入

  AduC812中的ADC转换块包含了8通道、12位、单电源A/D转换器。此模块为用户提供了多通道多路转换器、跟踪/保持、片内基准、校准特性。此模块内的所有部件都能方便地通过3个寄存器SFR接口来设置。

  A/D转换器由基于电容DAC的常规逐次逼近转换器组成。转换器接收的模拟输入范围为0至+VREF。片内提供高精度、低漂移并经工厂校准的2.5V基准电压。内部基准可经外部VREF引脚过驱动。外部基准在2.3V至AVDD的范围内。

  AduC812装有工厂编程的校准系数,它在上电时自动下载到ADC,以确保最佳的ADC性能。ADC核包括内部失调和增益校准寄存器,所提供的软件校准子程序可允许用户在需要时重写工厂编程的校准系数,以便使用户目标系统中端点误差的影响为最小。

  来自片内温度传感器的电压输出正比于绝对温度,它也可向前端ADC多路转换器(实际上是第9个ADC通道输入)传送。

  2.1.1 ADC转移函数

  ADC的模拟输入范围是0V至VREF。在此范围内,设计的代码跳变发生在连续的整数LSB值的中间(即LSB,LSB,LSB,……FS-LSB)。当VREF=2.5V时,输出码是直接的二进制数,1LSB=FS/4096或2.5V/4096=0.61mV。在0至VREF范围内理想的输入/输出转移特性如图2所示。

  

在0至VREF范围内理想的输入/输出转移特性

  2.1.2 SFR至ADC块的接口

  AduC812中ADC的工作完全由3个SFR控制,它们分别是ADCCON1、ADCCON2和ADCCON3。

  2.1.2.1 ADCCON1--ADC控制SFR#1

  ADCCON1寄存器控制转换和采集时间、硬件转换模式以及掉电模式。详述如下:

  SFR地址: FFH

  SFR上电缺省值: 20H

  位可寻址: 无

  ADCCON1 SFR位的说明如表2所示。

  MD1 MD0 CK1 CK0 AQ1 AQ0 T2C EXC

  2.1.2.2 ADCCON2--ADC控制SFR#2

  ADCCON2寄存器控制ADC通道选择和转换模式。详述如下:

  SFR地址: D8H

  SFR上电缺省值: 00H

  位可寻址: 是

  ADCCON2 SFR位说明如表3所示。

  ADCI DMA CCONV SCONV CS3 CS2 CS1 CS0

  2.1.2.3 ADCCON3--ADC控制SFR#3

  ADCCON3寄存器中只有一位有效,它给出ADC忙状态的指示。详述如下:

  SFR地址: F5H

  SFR上电缺省值: 00H

  位可寻址: 无

  ADCCON3 SFR位的说明如表4所示。

  BUSY RSVD RSVD RSVD RSVD RSVD RSVD RSVD

  2.1.3 ADC工作模式

  通过设置ADCCON1和ADCCON2两个寄存器,可使ADC处于三种不同的工作模式:一种是单步转换模式,一种是连续转换模式,还有一种是DMA工作模式。用软件或通过把转换信号加至外部引脚23(CONVST)可以启动单步或连续转换模式,同时还可设置定时器2的溢出位,用作ADC转换起始触发脉冲输入。

  DMA工作模式与其他两种工作模式有显著不同,若配置ADC工作在DMA工作模式,则ADC块将进行连续转换并把采样值捕获到外部RAM空间,而不需要来自MCU核的任何干预,这种自动捕获功能可以扩展到16M字节的外部数据存储器空间。值得注意的是,若工作于DMA工作模式,将要求用户在中断服务子程序中用5us的时间完成中断服务、读ADC结果并为进一步的后续处理存储结果,否则下一次ADC采样可能会丢失。这一限制条件是由于AduC812已把片内ADC设计成能运行在每5us采样一次的最高速度(即200kHz采样速率)。因此,在要求其他中断速率的应用中,不能使用ADC DMA工作模式。

  现以我们研制的家用心电图机为例,说明ADC的使用方法与功能实现。在该心电图机中,ADC0用于心电信号的模拟输入,将2.5V参考电压接至VREF,由于人体心电信号在0.5mV~4mV,典型值在1mV左右,需经过500倍的放大,落在ADC输入电压0~2.5V范围之内。因此,心电信号经过LM324放大、滤波后输入ADC0,进行A/D转换,得到数字量以进行显示、存储、发送、打印等功能。在这里,A/D转换后的12位数字量,最小可分辨的信号是0.6mV。对于最小的心电信号0.5mV,经放大后为0.25V,对于最大的心电信号4mV,经放大后为2V,均在ADC的输入范围之内。

  心电图机使用电池作为电源,当电池电压不足时需要提醒用户更新电池。电源电压为+5V,所以不能直接接至ADC的输入端。电源电压要经过分压电路进行分压,使分压的电压在ADC的输入范围之内。ADC1用于电源电压分压后的模拟输入,进而监测电源电压的变化,当电源电压低于一定值时蜂鸣器报警,同时液晶显示提醒用户更换电池。若电源电压低于4.5V时报警,则分压后为1.5V,当ADC1的输入低于1.5V(0999H)时则启动报警系统。

  下面是利用ADC0采集心电信号的部分程序,ADC首先要初始化,即送适当的控制字,根据前面介绍的ADC的SFR,选择适当的SFR值。

  由于ADC0作为心电信号的模拟输入,选择ADCCON1可使ADC正常工作,ADC时钟分频比为2。由于LM324输出阻抗远远小于8kΩ,所以选择ADC采集时钟1,得到ADCCON1=50H。选择通道0,可利用ADCCON2的默认值00H。

  由于ADC1作为电源监测的模拟输入,选择ADCCON1可使ADC正常工作,ADC时钟分频比为2。由于电源阻抗远远小于8kΩ,所以选择ADC采集时钟1,得到ADCCON1=50H。选择通道1,ADCCON2=01H。

  在下面程序中,堆栈设置在60H,利用定时器0中断后执行采样程序,选取采样频率为200Hz,因而定时器0的定时值为TL0=3CH,TH0=F6H。由于启动单个转换周期完成一次A/D转换需要16×2+1=33个AduC812主时钟,程序中一次延时循环为2个主时钟,因而在采样程序中利用R0=16作为单个转换周期,延时36个主时钟,以完成一次采样后的A/D转换。ADCDATAL为A/D转换低8位,ADCDATAH为A/D转换高4位;R1、R2用于存放12位A/D转换结果,设置00H位作为采样结束标志位。

  

程序

 

  2.2按键控制

  当不需要使用AduC812的ADC的全部8个通道时,剩余的ADC输入可用作数字输入端。例如,我们将P1口中的几位用于按键控制的输入端口,此时要先将0写至端口值。需要注意的是,AduC812的P1口用作按键时是高电平有效,在没有按键输入时,P1口应保持低电平,因此在用作按键的P1口应加下拉电阻(即P1.3~P1.7在没有输入时为低电平),阻值一般为几千欧。在前面的例子中,按键分别连接到P1.3~P1.7,它们通过2kΩ的下拉电阻接至地;插座的第6脚接高电平VCC,用于触发按键。当有键按下时,P1.3~P1.7中的相应位接至高电平VCC,这样就给出了按键信息。通过上面的程序就可以进行判断并执行相应的按键功能,并且采用防抖方法来提高可靠性,具体程序如下:

  2.3 定时器和计数器的数字输入
 
  AduC812具有3个16位的定时器/计数器,即定时器0、定时器1和定时器2。定时器/计数器硬件已包含在片内,用以减轻用软件实现定时器/计数器功能时,处理期内核固有的负担。每一个定时器/计数器包含两个8位寄存器THx和TLx(x=0、1、2)。所有3个定时器/计数器均可配置成定时器或事件计数器。
 
  在定时器功能中,每个机器周期TLx寄存器增量。因此可以把它看作对机器周期计数。在计数器功能中,TLx寄存器根据其对应的外部输入引脚T0、T1或T0上的1至0的跳变增量。
 
  在P1口中,T2是定时器2数字输入,输入至定时器/计数器2。当被使能时,对应于T2输入的1至0的跳变,计数器2增量。T2EX是数字输入,计数器2 Capture/reload捕获/重载(触发并用作计数器2 Up/Down上/下)控制输入。在ADCCON1.1中,T2C设置定时器2转换位,可把定时器2的溢出位用作ADC转换起始触发脉冲输入。
 
  由于AduC812与8051有兼容的内核,因而AduC812定时器2的原理与功能可简单地概括如下:
 
  AduC812中的定时器/计数器2是一个具有16位自动重装载或捕获能力的定时器/计数器,T2CON是它的专用控制寄存器,如图3所示。
  
AduC812中的定时器/计数器
 
  在定时器和计数器工作方式下,都可以通过T2CON中的控制位CP/2来选择捕获能力或重载能力。TH2和TL2内容的捕获或自动重载是通过一对捕获/重载寄存器RCAP2H和RCAP2L实现的。当CP/RL2=0时,选择自动重装载功能,即把RCAP2H和RCAP2L的数据自动转入TH2和TL2;当C/RL2=1时,选择捕获功能,数据传送方向恰与上述方向相反。
 
  捕获或重载发生于下面两种情况:
 
  (1)定时器2的寄存器TH2和TL2溢出时,若CP/RL2=0,则打开重装载的三态缓冲器,把RCAP2H和RCAP2L的数据自动转入TH2和TL2中,同时溢出标志位置1,申请中断。
 
  (2)当EXEN2=1且T2EX端的信号有负跳变时,CP/RL2是0还是1,将发生捕获操作或重载操作,同时标志位EXF2置1,申请中断。例如,利用定时器2测量周期如图4所示。
  
利用定时器2测量周期
 
  通过下面程序的运行,定时器2的TL2、TH2定时值就是周期T的值。
  
程序
  2.4 SPI串口选择输入
 
  AduC812提供了三种串行I/O端口:UART接口、I2C兼容的串行接口和串行外设接口(SPI)。其中,SPI接口是工业标准的同步串行接口,是一种全双工、三线通讯的接口,它允许MCU与各种外围设备以串行方式(8位数据同时同步地被发送和接收)进行通信。主时钟可以编程为不同的状态,既可编程为四种不同主波特率中的任一种,又可对时钟的极性和相位进行编程。SPI也可用于那些需要比微控制器上的并行I/O端口更多输入端或输出端的场合,因而提供了一种只需使用最少的微控制器引脚的扩展I/O功能的最简单办法。
 
  SPI系统通过使用4条线与多种标准外围器件直接接口:串行时钟线SCLOCK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(其中SS在PI口中)。
 
  由于AduC812中的SPI串口有主模式和从模式两种工作模式,因此系统可配置为主(Master)操作或从(Slave)操作。在用户系统中,AduC812既可作为主MCU,也可作为从MCU。在主模式下,伴随每一位数据的发送/接收发送一次时钟,此时AduC812作为主机控制数据向从外围器件传送。而在从模式下,每一位数据都是在接收到时钟信号之后才发送/接收,SPI总线可在软件的控制下构成各种简单或复杂的系统。例如:1个主MCU和几个从MCU;几个从MCU相互连接构成多主机系统(分布式系统);1个主MCU和1个或几个从I/O设备。在大多数应用场合中,使用1个MCU作为主机,控制数据向1个或多个从外围器件传送。从器件只能在主机发命令下才能接收或向主机传送数据。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。
 
  SS作为从单片机的SPI输入端,是AduC812特有的功能,通过SS将主单片机中的数据传送到从单片机,从而实现主单片机对从单片机的信息传送。

  AduC812的P1口兼容了MCS51系列单片机的功能,而且又有着自己独特的多种其它可实现的功能。这样,在一片单片机上利用P1口可以实现尽可能多的功能。

关键字:AduC812  端口  ADC 引用地址:新型微控制器AduC812的P1口的应用

上一篇:基于单片机的数字电位器的设计
下一篇:基于ADuC7026实现功率放大器监控的参考设计

推荐阅读最新更新时间:2024-03-16 12:31

ADC0804测试程序
/************************************************ 功能:ADC0804测试程序 使用:需加裁其他二个.c文件包括 LED.c AD.c 效果:转换后电压值包括一位整数位和两位小数位 时间:2011年1月7日 ************************************************/ #include reg51.h #include intrins.h #define uint unsigned int #define uchar unsigned char extern void AD(); extern void LED3_d
[单片机]
PIC18系列单片机I/O端口操作寄存器及应用
试验芯片:Microchip PIC 18F4550 集成开发环境:MPLAB IDE v8.53 编译器:Microchip C18 PIC18系列单片机是美国微芯公司(Microchip)8位单片机系列中的高档系列,其任一I/O引脚允许的最大灌电流或最大拉电流达25mA,可以直接驱动LED和继电器。PORTA、PORTB 和PORTE 的最大灌电流或最大拉电流总和为200mA,PORTC和PORTD的最大灌电流或最大拉电流总和为200mA,PORTF和PORTG的最大灌电流或最大拉电流总和为100mA(注:PIC18F4550没有这两个端口)。 单片机和外设的交互都是通过I/O端口进行,每个I/O端口均有三个操作寄存器:
[单片机]
PIC18系列单片机I/O<font color='red'>端口</font>操作寄存器及应用
STM32的ADC实测
  测试芯片:STM32F103R8T6 (双AD)   编译平台:IAR5.40   测试概述:使用片内振荡器时钟HSI,双ADC同步采样,ADC1采用DMA1存放,ADC2采用直接读取。        每读取十个采样值计数一次,定时一秒钟,通过串口将采样次数送出,测试ADC采样速率。 一、主频设为:56MHz   使用HSI,STM32F103最高频率可达72MHz,主频在56MHz时AD速率最大。   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_14);   // 8 2 14 = 56MHz 二、ADC工作频率:14MHz   RCC_ADCCLKConfig(RC
[单片机]
STM32的<font color='red'>ADC</font>实测
STM32系列第18篇--ADC
ADC特点: 12位逐次逼近型的模拟数字转换器 最多带3个ADC控制器 最多支持18个通道,可最多测量16个外部和2个内部信号源 支持单次和连续转换模式 通道0到通道n的自动扫描模式 自动校准 采样间隔可以按通道编程 规则通道和注入通道均有外部触发选项 转换结果支持左对齐或右对齐方式存储在16位数据寄存器 ADC转换时间:最大转换速率1us。(最大转换速度为1MHz,在ADCCLK=14M,采样周期为1.5个ADC时钟下得到。) ADC供电要求:2.4V-3.6V ADC输入范围:VREF- ≤ VIN ≤ VREF+ ADC引脚: 如下图所示: 注:只有144引脚的STM32才有PF脚。ADC引脚
[单片机]
STM32系列第18篇--<font color='red'>ADC</font>
使用MSP430F5529的ADC测量,并用OLED显示传感器输出的模拟量
导语 在所有的嵌入式应用中几乎都会用到的一个功能就是ADC模块(模数转换器)。 在这里笔者分享用CCS开发环境使用MSP430F5529中的ADC来读取灰度传感器输出的模拟量,然后读取电压并将其显示在OLED上。 效果展示 MSP430F5529有4个12位ADC通道,分别为P6.0~P6.3。ADC计算公式: ADC转化结果为0-4095,最大值为2的12次方。 此外MSP430的ADC有4个转换模式:单通道单次转化,多通道单次转化,单通道多次转化和多通道多次转化。在这里用的是多通道多次转化,毕竟要在OLED上显示多个通道的ADC值,这些值是随传感器变化的。 主函数代码 /******************接线
[单片机]
使用MSP430F5529的<font color='red'>ADC</font>测量,并用OLED显示传感器输出的模拟量
STM32 ADC转换时间
STM32F103XX的ADC的采样时钟最快14MHz,最快采样率1MHz。 ADC时钟: 这个ADC时钟是从哪来的呢。我们看下面这个STM32的时钟结构图: 我们大多使用STM32的最快PCLK2系统时钟72MHz。 ADCCLK的时钟由72MHz的6分频能瞒住14MHz以下的要求 为12MHz。 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //72M/6=12,ADC最大时间不能超过14M ADC转换时间: 有如下公式: TCONV = 采样时间+ 12.5 个周期 其中12.5个周期是采集12位AD时间是固定的,另外一个采样时间可以取下面几个参数由SMPx 寄存器控制,每个通道可以单独配置
[单片机]
STM32 <font color='red'>ADC</font>转换时间
关于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 时
[单片机]
利TI 电源解决方案加速手持终端手机设计
bq2403x - 具有动态电源路径管理、输出稳压至 6V、电池稳压 4.2V 的充电器 bqTINY III 系列器件是高度集成的锂离子线性充电器与系统电源路径管理器件,可满足空间有限的便携式应用的要求。bqTINY III 系列提供集成的 USB端口与 DC 电源(AC 适配器)、具备自动电源选择功能的电源路径管理、功率 FET 与电流传感器、高精度电流与稳压、充电状态以及充电终端,所有器件均为单片。 特性  小型 3,5 毫米 × 4,5毫米 QFN封装;  可满足采用单体锂离子或锂聚合物电池的便携式应用要求;  集成的动态电源路径管理 (DPPM) 功能允许 AC 适配器或 USB 端口同时为系统供电,并给电池充电;
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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