单片机比例电压变换器程序问题,可能是程序中的某种条件或逻辑导致在电压达到3.95时无法继续增加。需要查看程序代码,特别是与电压变换相关的部分,以确认问题出在哪里。
下载贤集网APP入驻自媒体
单片机比例电压变换器程序问题 电压到3.95就无法继续增加了? 要求:利用A/D和D/A实现将A/D的输入电压反向变换的功能,即A/D的输入电压从0~+5V变化时,D/A的输出电压相应的从+5V~0V变化。 控制功能:将单片机实验箱上的电位器W1产生0~5V电压输入到ADC0809的通道0,利用数字万用表测量DAC0832输出的电压,看其是否随ADC0809的输入电压反向变化。利用74HC4040将8MHz晶振产生的脉冲信号十六分频后做为ADC0809的时钟信号。 使用的主要元器件:89C51、11.0592MHz晶振、74LS373、74LS138、8MHz晶振、74HC04、74HC4040、ADC0809、DAC0832、LM741、10k电位器W1等。 结果验证:①用示波器检查ADC0809的时钟频率是否为500kHz。②旋动电位器W1产生0~+5V的电压,用数字万用表测量D/A的输出是否从+5→0V变化。③使W1的输出电压从0V开始,以0.5V为增量,测量D/A的输出电压并记录。试分析误差产生的原因。 程序如下: #include#include #define uchar unsigned char #define DAC0832 XBYTE[0x7FFF] uchar temp,i,a; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; sbit CLK=P3^7; uchar getdata=0x0000; void main(void) { ET0=1; EA=1; TMOD=0x02; TH0=246; TL0=246; TR0=1; while(1) { ST=0; ST=1; ST=0; while(EOC==0){;} OE=1; getdata=P0; OE=0; temp=getdata; P1=temp; DAC0832=P1; } } void T0X(void) interrupt 1 using 0 { CLK=~CLK; } 现在遇到的问题是电压到3.95就无法继续增加了