导航:首页 > 操作系统 > stc单片机adc匹配阻抗

stc单片机adc匹配阻抗

发布时间:2022-09-10 19:52:03

A. 配置stc15系列单片机内置ADC,输入引脚未接信号,通电后模拟输入引脚不

配置stc15系列单片机内置ADC,输入引脚未接信号,通电后模拟输入引脚不为零,硬件部分ADC引脚不应该有上拉电阻(或者有其他连接),如果电路正确 那 肯定是 ADC配置 有错误,应该配置成 开漏。

B. 一般单片机信号采集作AD转换的话,采集的是什么信号电流还是电压为什么还有为什么需要放大

肯定采集电压信号了,因为ADC的核心是电压比较器。
如果被采集的信号很弱,比如最大幅度低于参考电压的10%,那就需要适当放大来减少误差了。
如果输入电压大于参考电压,那肯定要分压。输入阻抗无穷大这样是最好的,这样采集的误差最小,当然一般ADC的输入阻抗都不算大(10KΩ级别),所以一般用电压跟随器进行阻抗匹配,间接增大ADC的输入阻抗。

C. ADC采样电路怎么做到输入阻抗大于1M

ADC采样电路,如果是要求差分输入,就需要在ADC前面放差分运放,输入阻抗到1M肯定可以做到。如果不要求差分输入,ADC芯片本身的输入阻抗到不了1M,或者到了但是会因为其他原因降低,可以考虑用一个运放(如射随器)在ADC输入作为隔离,运放本身的输入阻抗是没问题的,肯定大于1M,配置成同相放大就没问题。

D. STC12C5A60S2,这样的单片机,AD的输入阻抗大概是多大

AD的输入阻抗, IO设置为开漏,理论上为无穷大。

E. 求STC12C5204单片机AD功能如何使用,例如,用其中一个I/O做为AD采样一个2V左右的电压,并通过数码管显示

//本程序主要演示了
//1、12864液晶的编程与使用,包括显示定位、4位整数、显示浮点数等
//2、STC12C5A32S2单片机的ADC 采样功能(以第0、1通道为例)
//
//注:本示例仅仅演示如何进行ADC 和显示,每ADC 一次就显示一次,实际应用时,
//应多次ADC 并进行相应处理,比如取平均值后,才能得到比较稳定的AD 值
//广西民族大学物电学院李映超2010.5.26
/* 板子的硬件连接
1、1602液晶显示模块的连接:RS:P2.4、EN:P2.5、数据口: P0
2、蜂鸣器:P2.3 低电平有效(发出声音)
3、继电器:P2.2 低电平有效(继电器吸合、两输出脚短路)
4、18B20数据输出脚(DQ):P2.1
5、红外遥控输出脚:P2.0
6、直流电压精密可调电阻输出:P1.0 可通过跳线帽断开
7、光敏电阻:P1.1 可通过跳线帽断开
8、按键:均通过二极管连接到P3.2(外部中断0口),低电平有效,下降沿触发
K0:P3.3、K1:P3.4、K2:P3.5、K3:
P3.6、K4:P3.7
9、24C02连接:
SDA:P2.7 (上拉有发光二极管,低电平亮)
SCL:P2.6 (上拉有发光二极管,低电平亮)
*/
#include <reg52.h>
#include<intrins.h>
#include<lcd12864s.h>
#define uint unsigned int
#define uchar unsigned char
sbit light=P2^7;//定义工作指示灯与单片机的连接脚

//---------与STC12C5A32S2单片机ADC 相关的寄存器声明------------------
sfr P1ASF =0x9d; //P1口模数转换功能控制寄存器
sfr ADC_CONTR =0xbc; //AD 转换控制寄存器
sfr ADC_RES =0xbd; //AD 转换结果寄存器高
sfr ADC_RESL =0xbe; //AD 转换结果寄存器低
sfr AURX1 =0xa2; //AD 转换结果存储方式控制位
//------------------------------------------------------------------
//P1ASF 寄存器:8位,对应P1口8根口线,用于指定哪根口线用作ADC 功能
//哪个口用作ADC 就应置相应的位为“1”,注意:不能位寻址
//------------------------------------------------------------------
#define ADC_POWER 0x80 //ADC 电源开
#define ADC_SPEED 0x60 //设为90个时钟周期ADC 一次
#define ADC_START 0x08 //ADC 启动控制位设为开
#define ADC_FLAG 0x10 //ADC 结束标志位
/*
ADC_CTRL 寄存器:
ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_STAR CHS2 CHS1 CHS0
1 2 3 4 5 6 7 8
第1 位: =1 打开ADC 电源;=0 关闭ADC 电源; ADC 前要一定要打开
第2-3位: =1 1 90个时钟周期ADC 一次; =1 0 180个时钟周期ADC 一次;
=0 1 360个时钟周期ADC 一次; =0 0 540个时钟周期ADC 一次;
第4位: ADC 结束标志位,每次ADC 结束时自动=1,需要用软件清零才可以进行下一次ADC
第5位: ADC 启动控制位,置“1”则ADC 转换开始,转换结束后为0
第6-7-8位:ADC 通道选择000-->P1.0 ........111-->P1.7
*/
//-------------------------------------------------------------
void ADC_int(uchar n) //第n 通道ADC 初始化函数
{
n&=0x07; //确保n=0----7通道
AURX1|=0x04; //转换结果存储格式:数据的高2位放ADC_RES,低8位放ADC_RESL
P1ASF=1<<n; //将P1.n 设为ADC 采样功能
}
//---------------------------------------------------------------

uint ADC_GET(unsigned char n) //第n 通道ADC 采样函数
{
unsigned int adc_data;
n&=0x07; //确保n=0----7通道
ADC_RES=0; //清零
ADC_RESL=0; //清零
ADC_CONTR=0; //清零,以便重构
ADC_CONTR|=(ADC_POWER|ADC_SPEED|n|ADC_START); //打开AD 转换电源,设定转换速度、设定通道号、AD 转换开始
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); //延时4个时钟周期左右
while(!(ADC_CONTR&ADC_FLAG)); //等待转换结束=0x10 ADC_FLAG 位=1
adc_data=(ADC_RES&0x03)*256+ADC_RESL; //转换结果计算,取高位结果存储器的低2位+ 低位结果存储器
ADC_CONTR&=~ADC_FLAG;//清零转换结束标志位(ADC_FLAG 位=0)
return adc_data; //返回ADC 的值(0----1023)
}

void lcd_4_char(unsigned int data_4_char) //在1602LCD 上显示一个4位的整数
{
unsigned char lcd_table[4];
lcd_table[0]=data_4_char/1000; //获得千位的数字
lcd_table[1]=data_4_char%1000/100; //获得百位的数字
lcd_table[2]=data_4_char%100/10; //获得十位的数字
lcd_table[3]=data_4_char%10; //获得个位的数字
Lcd_WriteData(lcd_table[0]+0x30); //显示千位
Lcd_WriteData(lcd_table[1]+0x30); //显示百位
Lcd_WriteData(lcd_table[2]+0x30); //显示十位
Lcd_WriteData(lcd_table[3]+0x30); //显示个位
}

void main()

{ unsigned int ad_0,ad_1;
ad_0=0;
ad_1=0;
Lcd_Init(); //12864液晶模块初始化
light=0;delayms(1000);light=1; //灯闪一下,表示上电准备工作
ADC_int(0); //ADC 通道0初始化
ADC_int(1); //ADC 通道1初始化
while(1)
{

ad_0=ADC_GET(0);//第0通道进行ADC 采样
ad_1=ADC_GET(1);
hanzi_disp(0,1,"单片机转换");
hanzi_disp(1,0,"通道0:");
lcd_4_char(ad_0);
//while(1){;};
//delay_ms(30000);
hanzi_disp(2,0,"通道1:");
lcd_4_char(ad_1);
hanzi_disp(3,1,"--------");
//delayms(1000); //适当延时后再进行下一循环

}
}

F. 关于STC单片机ADC功能的问题:在一个工程中,如果只使用一路ADC转换,正

使用ADC应该要先初始化寄存器吧,你要先初始化第一个在读,然后初始化第二个在读,不能一次初始化一堆

G. stc12c5a60s2这款单片机的ad功能,测5v电压的话理论上十位ad可以达到1/1024精度,问一下如何编程实现呢

请贴出你全部程序,看看你的变量定义都是什么型
主要是你变量定义的问题,定义成float就有小数了,int型就不行了,自动省略了小数,那就误差大了
你先用float计算,然后最后结果取int型进行四舍五入会好些,不然误差太大,
adc_data=(ADC_RES&0x03)*256+ADC_RESL
0x03就是00000011将ADC_RES&0x03就是将ADC_RES与0x03 ,这样就是取ADC_RES低二位,作为10位ad的高两位,乘256转成10进制,然后加上低八位ADC_RESL,就是实际采集数据转化的10ad值

H. STC15F2K60S2单片机ADC读取共地的3.3V电路中的电压

把ADC电压输入脚,设置成高阻输入就行了,也必须设置成高阻输入的。如下图,画红圈项。

是不能串联二极管的,反向串联3.3V加不到AD脚,正向串,3.3V 电压要降0.7V,所以,不论怎么都不能串联二极管的,这个想法太离谱了 。

I. 请教,STM32的ADC输入阻抗问题

加了一个0.1uF的电容,然后用239.5采样周期,可以基本上得到期望的电压。
有个问题要注意,如果这个AD要在这个直流信号和其它变化较快的信号进行切换,测其它变化较快的信号会不太准。

J. 单片机如何用adc求电阻值

你的电阻的电路图具体是什么。你可以通过单片机给adc0832送相应的数据,数值可以在0-255范围内,如果你用的集成电阻器的话,可以通过这个数值不同范围选择不同的电阻。

阅读全文

与stc单片机adc匹配阻抗相关的资料

热点内容
天干地支年份算法 浏览:796
程序员打造的视频 浏览:6
java和php通信 浏览:679
为什么黑程序员 浏览:162
程序员男生 浏览:455
戴尔文件夹内文件怎么置顶 浏览:582
云服务器6m网速 浏览:722
vivo手机中国联通服务器地址 浏览:862
工程总控编译失败 浏览:706
燕赵红枫app如何下载 浏览:867
php查杀软件 浏览:878
教育管理学pdf 浏览:547
服务器均衡怎么使用 浏览:626
linux中jps 浏览:954
单片机实验感想 浏览:561
程序员级别数学算法逻辑 浏览:900
2k21公园怎么换服务器 浏览:724
php释放数据库连接 浏览:722
php网页抓取工具 浏览:726
android设置对齐方式 浏览:23