datasheet

STC12C5A60S2 AD 转换详解

2019-05-21来源: eefocus关键字:STC12C5A60S2  AD  转换

STC系列单片机中的STC89LE516AD/X2提供了8路8位精度的高速A/D转换器,位于P1口上,从而省去了片外ADC的麻烦。这8路ADC为电压输入型,可做按键扫描,电池电压检测,频谱检测等。ADC转换过程需要17个机器周期。通过对相关功能寄存器的适当配置,就可以控制其工作。下面就对相关功能寄存器进行介绍。


A/D转换寄存器总表:

(1)P1_ADC_EN:特殊功能寄存器

P1.x作为A/D转换输入通道来用允许特殊功能寄存器。相应位为“1”时,对应的P1.x口作为A/D转换使用,内部上拉电阻自动断开。

ADC_START是模拟/数字转换(ADC)启动控制位,设置为1时,开始转换。

      

ADC_FLAG是模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG=1。


(3)ADC_DATA: A/D转换结果特殊功能寄存器

模拟/数字转换结果计算公式为 结果=256×Vin/Vcc

Vin是模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。

         

内置ADC的使用例程:


STC_ADC.h:

sfr P1_ADC_EN=0x97;

sfr ADC_CONTR=0xc5;

sfr ADC_DATA=0xc6;

 

int GetAD(unsigned char channel)//channel为要取的通道号(0~7)

{

    unsigned char AD_finished=0;

    ADC_DATA=0;

    ADC_CONTR=channel;

    ADC_CONTR|=0x08;

    while(!AD_finished)

      AD_finished=(ADC_CONTR&0x10);

    ADC_CONTR&=0xF7;

    return (ADC_DATA);

}

 

void AD_Init(unsigned char ADin)// ADC 初始化,ADin为八位2进制数,分别对应AD7~0,置1代表打开此路

{

 P1=P1|ADin;//要设置为A/D转换的P1.x口,先设为高

 P1_ADC_EN=ADin; 

}

 

_main.c:

#include

#include

 

/*

-------------------------------------------------

    此程序用以说明STC单片机ADC的使用方法

-------------------------------------------------

*/

 

void delay(unsigned time)

{

 while(time--);

}

 

void main()

{

 AD_Init(0x63);//0110,0011,要设置为A/D转换的P1.x口,先设置为高

             //0110,0011,P1的P1.0,P1.1,P1.5,P1.6设置为A/D转换输入脚

                     //断开P1.0,P1.1,P1.5,P1.6内部上拉电阻

 while(1)

 {

  P2=GetAD(0);

  delay(10000);

  P2=GetAD(1);

  delay(10000);

  P2=GetAD(5);

  delay(10000);

  P2=GetAD(6);

  delay(10000);

 }

}


关键字:STC12C5A60S2  AD  转换

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/ic462392.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STC12C5A60S2单片机实现ISP自动下载
下一篇:STC12C5A60S2双串口通信

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STC12C5A60S2_PWM

#include <reg52.h>#include <intrin.h>#define uint unsigned int #define uchar unsigned charsfr CCON = 0XD8;sbit CCFO = CCON^0;sbit CCF1 = CCON^1;sbit CR = CCON^6;sbit CF = CCON^7;sfr CMOD = 0XD9;sfr CL = 0XE9;sfr CH = 0XF9;sfr CCAPM0 = 0XDA;sfr CCAP0L = 0XEA;sfr CCAP0H = 0XFA;sfr CCAMP1 = 0XDB;sfr CCAP1
发表于 2019-06-01

单片机PWM输出控制直流电机(89c51系列、stc12c5a60s2系列)

= 0; if(time < PWM) pwm = 1; else if(time >= PWM) pwm = 0; }}proteus仿真结果由仿真结果来看,所得波形还是不算很精准,实际应用过程中还会有很多误差,但是这样已经比延时函数产生pwm的结果可靠的多。【STC12C5A60S2系列单片机输出PWM】我在做循迹小车时使用的是stc12c5a60s2单片机。stc12c5a60s2单片机集成了两路可编程计数器阵列(PCA)模块,可用于软件定时器、外部脉冲的捕捉、高速输出以及脉宽调制(PWM)输出。使用stc12c5a60s2单片机的PCA模块可通过程序设定,使其工作于8位PWM模式,通过P13和P14输出
发表于 2019-05-22
单片机PWM输出控制直流电机(89c51系列、stc12c5a60s2系列)

STC12C5A60S2的PCA模块输出PWM波

,就会去改变PWM的占空比,这也就是所说的脉宽调制。要改变PWM的周期,只能改变CL的取值范围,但是CL的取值范围是不可改变的,因为CL是一个8位寄存器。所以只能是改变CL每次加1的速度(原来CL加1用0.1s,现在要改为0.05s)也就是说我们要时钟源的频率。这种方法并没有被PCA模块所用,PCA模块所改变PWM频率的方法为,时钟源选择T0的溢出率,或者是选择外部时钟晶振源。上述为个人理解,下图为手册中的流程
发表于 2019-05-22
STC12C5A60S2的PCA模块输出PWM波

增强型单片机STC12C5A60S2输出各种频率方波信号

【例7-3】 设时钟频率Fosc=18.432MHz,设计程序,从P1.0/CLKOUT2引脚输出频率为124.540KHz的时钟;从T0(P3.4)引脚输出频率为125KHz的时钟;从T1(P3.5)引脚输出频率为38.4KHz的时钟。解:使用STC12C5A60S2的可编程时钟输出功能完成所需要求。在下面的程序设计中(在此只给出C语言程序),T0、T1和独立波特率发生器BRT均工作在1T模式。程序编制如下:#include "stc12c5a.h"        //包含STC12C5A60S2的寄存器定义头文件void main(void){   
发表于 2019-05-22

STC12C5A60S2 ADC中断方式

/*------------------------------------------------------------------*//* --- STC MCU Limited ---------------------------------------------*//* --- STC12C5Axx Series MCU A/D Conversion Demo -------------------*//* --- Web: www.STCMCU.com -----------------------------------------*//* If you want to use the program or
发表于 2019-05-22

STC12C5A60S2 ADC查询方式

/*------------------------------------------------------------------*//* --- STC MCU Limited ---------------------------------------------*//* --- STC12C5Axx Series MCU A/D Conversion Demo -------------------*//* --- Web: www.STCMCU.com -----------------------------------------*//* If you want to use the program or
发表于 2019-05-22

小广播

何立民专栏

单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved