51单片机输出电压随输入电压变化,如何实现

核心提示用51实现是可以实现,不过麻烦一点,这个过程设计到AD/DA转化,整个过程分2步。第一步AD转换,选择带AD转换的单片机,比如STC12C5201AD等或者使用普通单片机加ADC0804。此时可以把外部输入的电压转化为数字信号。第二步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);

}

原理很明确,过程很复杂;只要坚持住,一定会成功!

关于51单片机输入/输出口电压和电流以及加驱动电路的问题

理论上任何单片机都可以实现,在单片机的输出端输出PWM(脉冲调宽)波,再加简单的阻容低通滤波器,就可以实现电压的连续调节。控制频率的方法不能调节电压,因为不论频率多高,其高低半波都是对称的,平均电压不变。至于你说的LED灯和无刷风扇的控制,先说LED灯,其亮度是靠调节电流实现的,严格说来调节电压不起作用,但现在市售的LED灯带都是简单的用一个电阻串联在LED灯上替代电流源,所以在要求不高的情况下可以用控制输出的引脚加电阻的方法实现粗略的LED灯亮度控制。不过请注意两点:1 单个LED灯的工作电压是35V,所以单片机必须选择5V电压的,输出只能带一个LED灯(灯带是每3个串联在一起的);2 单个LED灯的工作电流是35mA,所以单片机的输出能力要满足,否则要加电流扩展电路。再说无刷风扇,是直流的还是交流的?如果是交流的,可以用控制频率的方法来控制转速,不过要加电容进行隔直,而且这时风扇获得的电压是单片机输出电压的一半,所以必要时要加电压扩展电路;如果是直流的,可以用电压来控制转速,但因为风扇是感性负载,必须串联场效应管来隔离单片机和风扇,以防止感应电压击穿单片机。

单片机控制输出电压

作为输出端口:P0可吸收可输出电流,多大不是很清楚,驱动LED没问题,驱动NPN、PNP三极管都没有问题。

P1P2P3只能吸收电流,不能输出电流(如第一种说法中提的“这个电流比较小”,而第二种说法里的“驱动NPN三极管也没有问题”就需要实验证明一下了,因为这个电流实在太小了),如特别需要,可外接上拉电阻。

输出电流指得是输出1时带负载,吸收电流指得是输出0时带负载。

另外不同厂家的51单片机具体参数可能不同,不同型号的也不同。

我说的指的是ATMEL的AT89S51,至于Intel的MCS51早停产了,估计要找也不到了。

第三种说法:输入指的是端口做输入端口,比如P01做输入,你会给它一个电压,它根据你给的电压是大于24V还是小于04V来判断你给的是1还是0信号。而输出指的是你将P01口作为输出口时:输出1,P01引脚的电压接近于这个单片机的电源电压,输出0,P01电压接近于0V。

这可先要从你要求的转换速率和精度上的要求来定,可有多种方案,第一种最简的用自带A/D和PWM的单片机(现稍好一点的都有了,主看你熟悉那个系列厂家的产品),用AD测出你这电压(有的机型可能要你把这信号再放大一点)再用PWM输出(外线路最好用滤波方式处理一下)这种方案还可把本不太线性的进行矫正,如要考虑成本并在速度和精度要求不高时,就可用只要有比较器的单片机就行了,输入用积分方式测量,输出用电阻权码,这可就要你有比好的电子动手能力,真只这一点要求又有好的电子动手能力了不如就只搞一个好的电压放大器就是最省方式

 
友情链接
鄂ICP备19019357号-22