1. 51单片机AD转换不稳定
单片机一般的ADC是没有问题的,
我觉得很有可能是下述原因之一:
1.是不是电平有跳动的不稳定,比如输入电平抖动(干扰导致),你只是肉眼没看出来而已,所以认为它是稳定的。这个解决方法如果输入是稳定电压(直流),那就在电压之间加上个电容就完事了。
2.是不是输入电压的范围超了?如果是范围超了,加个分压电路,然后在单片机程序里面再按比例的增加就行了。
2. 51单片机c语言,ADC模数转换的问题
对于这个,要这么看:
假设中断A是优先级高的中断,中断B是优先级低的中断
如果在正常执行的过程中,发生中断A,那么,中断A执行完成后,会返回正常程序;
如果在正常执行过程中,发生中断B,又在中断B处理过程中发生中断A,那么,中断A执行完成后,一定要返回的是中断B,这是由硬件决定的,不是软件决定的,所以,软件没有任何指令可以让中断A执行完成后直接跳过还没有执行完的中断B而直接回到主程序,因为这是硬件决定的,软件做不到,即便你在高级中断A中关闭了中断B,但是因为你原来的中断B还没有执行完,所以,仍然要把没执行完的部分执行下去,才能返回到正常程序.
对于ARM系列的可以,对于51来说,是不行的,因为51软件指令不允许修改PC寄存器的值
3. 51单片机adc模块的功能是
ADC模块当然是实现模数转换。
4. 怎样用51单片机的四个带ADC的I/O口来检测四个电容触摸按键的触摸
怎样用51单片机的四个带ADC的I/O口来检测四个电容触摸按键的触摸10分
相关说明: 只用I/O口,不要再额外加振荡电路电路。现在使用的是STC12c2052ad单片机
at的51本身就不带ad
是无需外加电路,需要用到其pwm,还有电容
触摸处理看一下杜洋的触摸电子琴就差不多了,网站上面有开源
5. 为什么51单片机中的ADC转换。没有输入电压。他也一直变动
只要启动转换了就会有AD转换的结果,你没加AD电压,那么输出有值,说明电源电压的地不太干净,或者你的AD电路有写问题。
6. 51单片机连电位器一定要adc吗
一定。51单片机连电位器需要adc的,因为作AD用必须一个接电源一个接地,两个电阻中间即VREF接单片机引脚或接一个1K的电阻再接单片机引脚。
7. 51单片机 C语言ADC程序怎么写
typedef unsigned char BYTE;
typedef unsigned int WORD;
#include "reg51.h"
#include "intrins.h"
/*Declare SFR associated with the ADC */
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60
//延时
void Delay(WORD n)
{
WORD x;
while (n--)
{
x = 5000;
while (x--);
}
}
//初始AD寄存器
void InitADC()
{
P1ASF = 0xff;
ADC_RES = 0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}
//AD转换
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;
return ADC_RES;
}
void main()
{ BYTE temp;
P2M1=0; P2M0=0x03; //P2.0和P2.1强推挽
InitADC();
while (1)
{
temp=GetADCResult(0);//转换P1.0
if(temp>1)
P2|=0x03; //P1.0有电压 P2.0和P2.1输出高
else
P2&=0xFC; //P1.0无电压 P2.0和P2.1输出低
}
}
8. 51单片机的adc接口在哪
端口引脚P3.4至P3.7处。
51单片机的P1是输入端口,P0是输出端口。ADC的控制信号(INTR、WR、RD和CS)分别在端口引脚P3.4至P3.7处可用。
51单片机是对兼容英特尔8051指令系统的单片机的统称。
9. 51单片机ad采样可以采集什么
51单片机有很多型号,普通的51单片机是没有ADC的,需要外接ADC芯片,一般是ADC0832等等,网上很多,利用51单片机驱动AD芯片进行采样就可以实现AD采集,利用定时器设置好采样率就OK了,为了得到较高精度,你将除数乘以100,再除被除数。所以最好定义为int型。内存中肯定以十六进制形式(二进制)存储的。
10. 用51单片机的ADC采集信号,定义通道#define Channel0 0x02后,Channel0的值在函数调用时发生改变为什么
什么芯片?是不是有扩展rom ram ,有扩展的话,你要在keil里选上使用扩展的rom ram