请教stc自带ad的51单片机的使用方法

作者&投稿:茅梵 (若有异议请与网页底部的电邮联系)
STC89C51单片机怎么使用内部AD转换~

STC官网上有例子的,大概有以下几个过程:
ADC_CONTR=ADC_CONTR|0X80;//10000000开启转换电源

Delay1ms(1);//延时,等待内部电源稳定
//P1M0=P1M0|0X07;//设置p1.0 P1.1和 p1.3所在通道为开/漏模式
//P1M1=P1M1|0X07;
ADC_CONTR=0xe0;//11100000开启P1.0通道开始转换
Delay25us(10);//延时一端时间,使输入电压达到稳定
ADC_DATA =0x00;//清A/D转换结果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08;//ADC_START=1,开始转换
while(!(ADC_CONTR&0x10));//0001,0000 等待A/D转换结束
temp1=ADC_DATA;//读取转换结果
temp1=ADC_LOW2;
最终转换结果是10位的 :advalue= temp1*4+temp2

用STC的51单片机自带有AD转换肯定更方便,因为是单片机内部集成,没有外围器件,只需要一根信号线,而且AD转换是10位的,精度更高,缺点就是占用单片机资源较多
用PCF8591T AD芯片,还需要搭建外围检测电路,而且IIC两条线与单片机相连,因为有IIC协议,占用单片机资源也不少,AD转换是8位,精度较低
综合对比,用STC的51单片机自带有AD转换更好一些,PCF8591T AD芯片是针对像AT89C51这样内部没有AD转换的单片机使用的

STC单项片机说明文档里有例子
下面是我的采集程序,采三次,求平均值:
void adchange()//AD采集程序,采集3路
{
uchar temp7,temp8,temp9,temp10,temp11,temp12;
uint tempa,tempb,tempc,tempd;
ADC_CONTR=ADC_CONTR|0X80; //10000000 开启转换电源

Delay1ms(1); //延时,等待内部电源稳定
//P1M0=P1M0|0X07; //设置p1.0 P1.1和 p1.3所在通道为开/漏模式
//P1M1=P1M1|0X07;
ADC_CONTR=0xe0; //11100000 开启P1.0通道开始转换
Delay25us(10); //延时一端时间,使输入电压达到稳定
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,开始转换
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D转换结束
temp7=ADC_DATA; //读取转换结果
temp8=ADC_LOW2;
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
ADC_CONTR=ADC_CONTR&0xe7; //将ADC_FLAG软件清零
Delay25us(1);
ADC_CONTR |= 0x08; //ADC_START=1,开始转换
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D转换结束
temp9=ADC_DATA; //读取转换结果
temp10=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //将ADC_FLAG软件清零
Delay25us(1);
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,开始转换
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D转换结束
temp11=ADC_DATA; //读取转换结果
temp12=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //将ADC_FLAG软件清零
Delay25us(1);
ADC_DATA =0x00; //清A/D转换结果寄存器
ADC_LOW2 =0x00;
tempa=(temp7*4+temp8);//真烦人,但必须这么算,一次算会出错
tempb=(temp9*4+temp10);
tempc=(temp11*4+temp12);
tempd=tempa+tempb+tempc;
temp1=(tempd+1)/3;

。。。。。。其它两路略

//P1M0=P1M0&0X00; //设置P1口为普通I/O模式,以便用P1口显示数据。
//P1M1=P1M1&0X00;

}


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

基于STC15系列单片机的ADC键盘编写方法
软件部分搭建编程环境。 打开Keil,本例以Keil4为例,添加STC15系列头文件,写出函数基本框架。查找单片机的数据手册,找到相关的寄存器,并写在系统初始化函数里。 初始化主要包括74HC595的上电消隐、AD转换相关寄存器的开启和配置等。用查询方式检测键盘的按动情况,在中断函数中进行键值判断。以便在每一次A...

请教stc自带ad的51单片机的使用方法
STC单项片机说明文档里有例子 下面是我的采集程序,采三次,求平均值:void adchange()\/\/AD采集程序,采集3路 { uchar temp7,temp8,temp9,temp10,temp11,temp12;uint tempa,tempb,tempc,tempd;ADC_CONTR=ADC_CONTR|0X80;\/\/10000000开启转换电源 Delay1ms(1);\/\/延时,等待内部电源稳定 \/\/P1...

STC12自带的AD转换,怎么转换的?
1.将相应端口的模式设置为输入或开漏。2.打开ad开关并设置转换通道与速度。3.启动转换并等待结束。4.关闭转换并读出值。这些操作都是内部程序操作,就像写寄存器一样。但不同型号的寄存器地址不同,你得看手册。外部信号直接接到端口上,只要不超过io承受范围就行,超出时先做预处理就行 ...

怎么用STC12C5a60s2自带的AD,单片机,C程序,具体如下图所述,互帮互助...
stc12c5a60s2的datasheet有测试程序,从319页开始。主要是这几个寄存器 P1.0作为AD输入 初始值为:P1ASF=0x01;\/\/P1.0作为AD使用 ADC_CONTR=0xe0;\/\/ADC电源打开,每90个时钟转换1次,CHS选择P1.0 \/\/默认为8位模式 ADC_RES=0;\/\/清零数据寄存器 \/\/初始化结束 ADC_CONTR|=0x08;\/\/ADC_START...

请教stc自带ad的51单片机的使用方法
Delay(2); \/\/等待ADC上电稳定然后开始ADC转换?应该是先开电源,等待后再START,可能STC官方程序有问题 } \/*初始化串口*\/ void InitUart(){ SCON = 0x5a;TMOD = 0x20;TH1 = 0xfd; \/\/在11.0592MHZ晶振下,波特率为9600 TL1 = 0xfd;TR1 = 1;} \/*串口发送数据*\/ void SendData(uc...

STC的单片机内部集成AD 但是没有参考基准,参考基准是VDD ,如何确保AD的...
没有参考基准的情况下,要确保AD精度,最重要的是确保VDD的精度!最好能给VDD进行稳压,然后进CPU。计算公式:Vad = ADC_RES * VCC \/ 256;你的应该是VDD=VCC。另外,注意以下几点:1、启动A\/D 转换后,在A\/D 转换结束之前,不改变任何I\/O 口的状态,有利于高精度A\/D 转换!2、启动A\/D...

如何用stc单片机内部ad采集多路交流信号
用stc单片机内部ad采集多路交流信号,有两种办法:一、用两个AD转换芯片,两路模拟量分别接一个。用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值。二、用两个采样保持器(LF398),来暂时保存模拟量的瞬时值。两个保持器后面接模拟多路转换器,模拟多路转换器后面接一...

STC单片机IO口配置ad带转换的模式
开漏模式和高阻都可以的,不需要加上拉电阻,内部自动完成的,要注意是带ad的单片机,并且要使用的是P1口,不是随便的iO有adc功能的,12系列的要设置模式,15系列的只要指定是哪个为ad输入就可以了。

求STC12C5204单片机AD功能如何使用,例如,用其中一个I\/O做为AD采样一个...
\/\/2、STC12C5A32S2单片机的ADC 采样功能(以第0、1通道为例)\/\/ \/\/注:本示例仅仅演示如何进行ADC 和显示,每ADC 一次就显示一次,实际应用时,\/\/应多次ADC 并进行相应处理,比如取平均值后,才能得到比较稳定的AD 值 \/\/广西民族大学物电学院李映超2010.5.26 \/* 板子的硬件连接 1、1602液晶...

金乡县19874966386: 请教stc自带ad的51单片机的使用方法 -
大彦醒脾: STC单项片机说明文档里有例子 下面是我的采集程序,采三次,求平均值:void adchange()//AD采集程序,采集3路 {uchar temp7,temp8,temp9,temp10,temp11,temp12; uint tempa,tempb,tempc,tempd; ADC_CONTR=ADC_CONTR|0X80; //...

金乡县19874966386: 带有ad模块的51单片机怎么读取ad数值 -
大彦醒脾: |STC系列有多个型号的带AD的单片机,其下载软件上有各种例程可以参考,如读取ad数值 读取ADC结果BYTE GetADCResult(BYTE ch){ ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; _nop_(); //等待4个NOP _nop_(); _nop_(); _nop_(); while (!(ADC_CONTR & ADC_FLAG));//等待ADC转换完成 ADC_CONTR &= ~ADC_FLAG; //Close ADC return ADC_RES; //返回ADC结果}

金乡县19874966386: 51系列有带ad转换的单片机吗 -
大彦醒脾: STC系列有带AD的,也是51内核的单片机,下载程序比AT单片机简单

金乡县19874966386: STC的51单片机自带有AD转换,和PCF8591T AD芯片相比的话,哪个更好一些? -
大彦醒脾: 用STC的51单片机自带有AD转换肯定更方便,因为是单片机内部集成,没有外围器件,只需要一根信号线,而且AD转换是10位的,精度更高,缺点就是占用单片机资源较多 用PCF8591T AD芯片,还需要搭建外围检测电路,而且IIC两条线与单片机相连,因为有IIC协议,占用单片机资源也不少,AD转换是8位,精度较低 综合对比,用STC的51单片机自带有AD转换更好一些,PCF8591T AD芯片是针对像AT89C51这样内部没有AD转换的单片机使用的

金乡县19874966386: 输入电压值到51单片机,求内部自带的ad转换的程序,谢谢大神们 -
大彦醒脾: stc的 PDF文档有例子,以下是STC12C5410AD单片机的AD程序 void adchange()//AD采集程序 {ADC_CONTR=ADC_CONTR|0X80; //10000000 开启转换电源 Delay1ms(1); //延时,等待内部电源稳定 P1M0=P1M0|0X07; //设置p1.0 P1.1和 ...

金乡县19874966386: stc89c51自带AD转换吗?stc89c52呢?自带AD与另外用一个AD转换器件有什么区别啊? -
大彦醒脾: STC89C52是没有AD的,STC12C5Axx全带AD、STC12C52xx后缀为AD的也带,没记错的话都是10位的AD,你可以上宏晶官网http://www.mcu-memory.com/上查找相关的pdf来选型,技术支持里还有相关的例程可以参考,资料还是比较详细的!希望对你有帮助!

金乡县19874966386: 求自带AD转换的51单片机,列举一下,举例应用电路及程序举例.
大彦醒脾: 带AD的话,51都没有带的,一般是使用外置AD芯片,例如ADC0809 ;带AD的话,你可以选用Mega8,他内置AD转换模块的

金乡县19874966386: 单片机自带AD转换吗? -
大彦醒脾: 单片机 STC89C52 芯片没有自带AD,单片机有自带DA转换的很少,自带硬件PWM的倒是不少

金乡县19874966386: stc12a5616单片机内置ADC怎么使用? -
大彦醒脾: STC官网上下载说明文档,里面有例子 和STC5410是相同的 大致是设置管脚输入模式 选择转换通道 开启ADC电源 启动ADC 等待转换结束 读取转换结果

金乡县19874966386: 怎么用STC12C5a60s2自带的AD,单片机,C程序,具体如下图所述,互帮互助 -
大彦醒脾: stc12c5a60s2的datasheet有测试程序,从319页开始.主要是这几个寄存器 P1.0作为AD输入 初始值为: P1ASF=0x01;//P1.0作为AD使用 ADC_CONTR=0xe0;//ADC电源打开,每90个时钟转换1次,CHS选择P1.0 //默认为8位...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网