51单片机输出电压随输入电压变化,如何实现
用51单片机测量一个随时波动的电压,当电压波动的时候,51输出另一个值。输出的电压随输入的电压变化而变化,被测量的电压波动范围为:1V-1.7V,要求对应输出的为:0.3...
用51单片机测量一个随时波动的电压,当电压波动的时候,51输出另一个值。输出的电压随输入的电压变化而变化,被测量的电压波动范围为:1V-1.7V,要求对应输出的为:0.35V-0V
怎么实现啊 展开
怎么实现啊 展开
5个回答
展开全部
以下是单片机实践团为您解答:
1、对于问题解决应该采取最简单有效的方法,说一下我的观点:对于大部分网友采用AD配合DA来实现,个人觉得是多此一举。如果是保留采用AD来采集的话,我们大可以使用定时器控制输出频率可变的方波至外界电阻上(PWM实现DA输出的方法,这里采用定时器模拟PWM输出)实现可变的电压输出。
2、问题很直白,我们这样来看,1.7-1=0.7 0.7/2=0.35
不知道您有没有使用过AT89C2051这个片子,比较早的一款51片子,看一下他的P1.0和P1.1的用法,内部集成模拟比较器(可配合程序实现你需要的)
3、这样的功能也可以直接使用模拟电路来实现,说下思路:做一个1.7V的基准电压,通过一个减法器也就是基准电压-被测电压。减法器输出接增益为0.5的放大电路即可实现转换。
4、对于你的信号不知道您需要用来做什么,考虑现实中的细节选取最好的方案。
5、常在线,Hi我。祝您成功
1、对于问题解决应该采取最简单有效的方法,说一下我的观点:对于大部分网友采用AD配合DA来实现,个人觉得是多此一举。如果是保留采用AD来采集的话,我们大可以使用定时器控制输出频率可变的方波至外界电阻上(PWM实现DA输出的方法,这里采用定时器模拟PWM输出)实现可变的电压输出。
2、问题很直白,我们这样来看,1.7-1=0.7 0.7/2=0.35
不知道您有没有使用过AT89C2051这个片子,比较早的一款51片子,看一下他的P1.0和P1.1的用法,内部集成模拟比较器(可配合程序实现你需要的)
3、这样的功能也可以直接使用模拟电路来实现,说下思路:做一个1.7V的基准电压,通过一个减法器也就是基准电压-被测电压。减法器输出接增益为0.5的放大电路即可实现转换。
4、对于你的信号不知道您需要用来做什么,考虑现实中的细节选取最好的方案。
5、常在线,Hi我。祝您成功
展开全部
硬件部分别人已经说的很清楚了,我就重点说明下软件部分吧。
由于输入的电压范围与输出的电压范围不一样,所以要用到量程转换。
即让1V输入对应的输出为0v,当输入为1.7v的时候对应的输出为0.35v
设输入电压为x,则对应的输出电压 y=(x - 1)*0.35/(1.7-1)
最简单的硬件电路莫过于用一个内部带AD和DA的单片机了,AD输入引脚接信号输入端,DA端口输出的信号用示波器即可以观察到。
程序流程为:初始化AD和DA,进入主循环后,先启动AD采样,并等待AD采样完成标志置位,然后立即将采样结果送入DA寄存器。
由于输入的电压范围与输出的电压范围不一样,所以要用到量程转换。
即让1V输入对应的输出为0v,当输入为1.7v的时候对应的输出为0.35v
设输入电压为x,则对应的输出电压 y=(x - 1)*0.35/(1.7-1)
最简单的硬件电路莫过于用一个内部带AD和DA的单片机了,AD输入引脚接信号输入端,DA端口输出的信号用示波器即可以观察到。
程序流程为:初始化AD和DA,进入主循环后,先启动AD采样,并等待AD采样完成标志置位,然后立即将采样结果送入DA寄存器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用51实现是可以实现,不过麻烦一点,这个过程设计到AD/DA转化,整个过程分2步。
第一步AD转换,选择带AD转换的单片机,比如STC12C5201AD等或者使用普通单片机加ADC0804。此时可以把外部输入的
电压转化为数字信号。
第二步DA转换,使用单片机加DAC0832可以把数字信号转换为电流,在再外面路加一个运放,就可以把电流转换为电
压。
给你一段自己改写的STC12C5201AD转换的一部分子程序,其他程序可以参考51单片机C语言教程,上面介绍的很详细。
希望对你有帮助。
程序:
uint get_AD_result()
{
uchar AD_FLAG=0;
P1ASF=0x80;
ADC_CONTR=0xE7;
delay(1);
ADC_CONTR|=0x08;
AD_FLAG=0;
while(AD_FLAG==0)
{
AD_FLAG=(ADC_CONTR&0x10);
}
ADC_CONTR&=0xF7;
return(ADC_RES);
}
原理很明确,过程很复杂;只要坚持住,一定会成功!
第一步AD转换,选择带AD转换的单片机,比如STC12C5201AD等或者使用普通单片机加ADC0804。此时可以把外部输入的
电压转化为数字信号。
第二步DA转换,使用单片机加DAC0832可以把数字信号转换为电流,在再外面路加一个运放,就可以把电流转换为电
压。
给你一段自己改写的STC12C5201AD转换的一部分子程序,其他程序可以参考51单片机C语言教程,上面介绍的很详细。
希望对你有帮助。
程序:
uint get_AD_result()
{
uchar AD_FLAG=0;
P1ASF=0x80;
ADC_CONTR=0xE7;
delay(1);
ADC_CONTR|=0x08;
AD_FLAG=0;
while(AD_FLAG==0)
{
AD_FLAG=(ADC_CONTR&0x10);
}
ADC_CONTR&=0xF7;
return(ADC_RES);
}
原理很明确,过程很复杂;只要坚持住,一定会成功!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有现成的AD/DA接口呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ADC8032+51单片机+外围电路就可以实现了,可以来找找我帮忙!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询