您的位置 首页 电路

STC系列单片机内部AD的使用

下面一个例程演示STC89LE516AD/X2系列单片机的A/D转换功能。时钟11.0592MHz,转换结果以16进制形式输出到串行口,可以用串行口调试程序观察…

下面一个例程演示STC89LE516AD/X2系列单片机的A/D转化功用。时钟11.0592MHz,转化成果以16进制方式输出到串行口,可以用串行口调试程序调查输出成果。(本代码摘自宏晶科技芯片手册,经作者调试可正常运转)。

#include

#include

//界说与ADC有关的特别功用寄存器

sfr P1_ADC_EN = 0x97; //A/D转化功用答应寄存器

sfr ADC_CONTR = 0xC5; //A/D转化操控寄存器

sfr ADC_DATA = 0xC6;//A/D转化成果寄存器

typedef unsigned char INT8U;

typedef unsigned int INT16U;

void delay(INT8U delay_time) //延时函数

{

INT8U n;

INT16U m;

for (n=0;n

{

for(m=0;m<10000;m++);

}

}

INT8U get_AD_result(INT8U channel)

{

INT8U AD_finished = 0; //存储A/D转化标志

ADC_DATA = 0;

ADC_CONTR = channel; //挑选A/D当时通道

delay(1);//使输入电压到达安稳

ADC_CONTR |= 0x08; //0000,1000令ADC_START = 1,发动A/D转化

AD_finished = 0;

while ( AD_finished == 0 ) //等候A/D转化完毕

{

AD_finished = (ADC_CONTR & 0x10); //0001,0000, ADC_FLAG ==1测验A/D转化完毕否

}

ADC_CONTR &= 0xF7; //1111,0111令ADC_START = 0,封闭A/D转化,

return (ADC_DATA); //回来A/D转化成果

}

void main()

{

P1 = P1 | 0x63; // 0110,0011,要设置为A/D转化的P1.x口,先设为高

P1_ADC_EN = 0x63; //0110,0011, P1的P1.0,P1.1,P1.5,P1.6设置为A/D转化输入脚

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

get_AD_result(0); //P1.0为A/D当时通道

get_AD_result(1); //P1.1为A/D当时通道

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/252444.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部