跪求会C8051F020单片机的,要用C语言写出测量电压,就是AD转换的程序

跪求会C8051F020单片机的,要用C语言写出测量电压,就是AD转换的程序,第1张

void Timer3_Init()

{

TMR3CN = 0x02;

TMR3R = -44236; //定时2ms

TMR3 = 0xffff;

EIE2 &= ~0x01;

TMR3CN |= 0x04;

}

void ADC0_Init(void)

{

AMX0SL=0x00; //选择通道0

AMX0CF=0x00; //选择AIN0和AIN1为独立输入

REF0CN=0x03; //选择外部的电压为基准电压

ADC0CF=(SYSCLK/2500000)<<3;//时钟为 ,增益为1

ADC0CN=0x84;//ADC0使能且为ADCBUSY的开启方式

EIE2|=0x02;//开启ADC0的中断

}

void ADC0_ISR() interrupt 15

{

static unsigned int_dec=INT_DEC;

static long accumulator=0L;

AD0INT = 0; // 清 ADC 中断标志位

accumulator += ADC0; // 累加ADC采样数据

int_dec--; // 指针减1

if (int_dec == 0) // 累加完了吗?

{

int_dec = INT_DEC; // 指针复位

result = accumulator >> 8;

accumulator = 0L; // 累加和变量清0

t=1;

}

}ADC0转换,定时器3开启的方式

新建规则冲突。ad是一款程序接程序的软件,如果中间出现一个错误就会发生相同网络联合起来报错的情况,出现这种情况一般都是新建规则冲突导致的,我们只需要把规则文件名改为IPN为后缀即可解决相同网络联合起来报错的问题。

8位AD,最大255;

uchar num;

num=AD_receive();//把AD采集回来的数据保存

write_com(0x80);//1602从0x80开始显示数据

write_data(num/100+0x30); //显示字符百位,后面以此类推

write_data(num%100/10+0x30);//十位数

write_data(num%10+0x30);//个位数

至于1602的驱动程序,网上多得是,找找就有了

一般不应该是采集卡的问题。AD采集只是运放输出端和地之间的电势。不接任何通道,数值本来就不定。另外,如果你其他的通道接有信号,旁边的通道即使什么都不接,其值也受接了信号的通道的影响。我采集的是波形信号,试了一下,什么都不接的通道在接了信号的通道影响下,能够输出与接了信号的通道振幅大小相当的相似波形。

P1ASF是选择哪个口模拟AD转换功能,(1<<ADC_CH0)(ADC_CH0相当于0)故P1ASF第0位被置1,选择P10为模拟通道。

第二个是对ADC_CONTR寄存器进行了设置,(1 << 7)将第八位置1,(1 << 5)将第六位置1,ADC_CONTR = ADC_360T | ADC_ON 将ADC_CONTR寄存器第六位和第八位置1,具体功能就是开启AD转换,选择转换速度。

如有不对请指正!

以上就是关于跪求会C8051F020单片机的,要用C语言写出测量电压,就是AD转换的程序全部的内容,包括:跪求会C8051F020单片机的,要用C语言写出测量电压,就是AD转换的程序、ad为什么相同网络联合起来报错、求教:怎样将AD转换的二进制数据转换成十进制,用LCD1602显示单片机C语言程序不知道怎么写...谢谢~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9658417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存