1、通过改变检流电阻的大小实现不同档位的转换。图中保险丝可保护电流过大,二极管防止电压过大,当二极管两端电压达到导通电压,检流电阻连端电压将达到稳定,从而有效的控制输入电压的大小。方案二:电流测量原理与方案一基本相同,但在相同电流的测量上此电路比方案一电路的内组更小,由于加入了运算放大器,所以最大的输出电压不会超过电源电压(实验数据显示不会超过)并不用担心检流电阻两端电压大小。而且此方案还有一个最大的优势,它的分辨率更高,理由如下:根据ADC0832的最小分辨率x可知,此方案中测量电流的最小分辨电流i满足i*R*k=x(R为检流电阻,k为放大器放大倍数),得到i=x/(R*k)在方案一中,i=x/
2、R,由于电阻材质的问题其本身电压不能超过额定电压,在量程相同的情况下Imax*R*k=3,Imax*RR即ii.(LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。)3.电阻模块的测量原理放大电路放大器的最大放大电压为3V左右(实际放大为左右,这里取3V),则输入电压满足5*10v(1010+R).v是最小输入电压。根据上述说明可以得出各个档位测量范围。档位1(V=,v=.),R148
3、990档位2(V=, v=.),8990R1498990档位3(V=,v=.), 9899011)key=1; TR0=1; writeadd(1); switch(key) case 1: writedate(0x80+13,Uwritedate(0x80+14,5 writedate(0x80+15,vbreak; case 2: writedate(0x80+12,) ;writedate(0x80+13,3 writedate(0x80+14, case 3: writedate(0xc0+11,Iwritedate(0xc0+12, writedate(0xc0+13, writed
4、ate(0xc0+14,mwritedate(0xc0+15,A case 4:8 case 5: writedate(0xc0+10,writedate(0xc0+11, writedate(0xc0+12,writedate(0xc0+13, case 6:Rwritedate(0xc0+14,9 writedate(0xc0+15,K case 7: case 8: case 9:C=uwritedate(0x80+15,F case 10:writedate(0x80+12,n case 11:writedate(0x80+10,ewritedate(0x80+11,ro date=k
5、ey; date1=key-2; delay(50); while(key_boat=0&trange) trange-; key_boat=1; unsigned char AAD_read() /电流测量端数据接收函数unsigned char dat,i,test=0,adval=0; AAD_CLK=0;/ AAD_D1=1; _nop_(); AAD_CS=0; AAD_CLK=1; / AAD_D1=0; for(i=0;i8;i+) _nop_(); advaltest|=0x80;if(adval=test)dat=test;AAD_CS=1;AAD_D0=1;AAD_D1=1
6、;AAD_CLK=1;return dat;unsigned char AVD_read() /电压测量端ADC0832数据接收函数 AVD_CLK=0; AVD_D1=1; AVD_CS=0; AVD_CLK=1; AVD_D1=0; if(AVD_D0)AVD_CS=1;AVD_D0=1;AVD_D1=1;AVD_CLK=1;显示函数void delay(unsigned char i)unsigned char j=100;while(i0)j=100;while(j-);i-;void writeadd(unsigned char add) /写入指令check();E=0;RS=0;
7、RW=0;delay(1);LCD=add;E=1; void check() RS=0;RW=1; delay(1); E=1; while(LCD&0x80); E=0; void writedate(unsigned char add,unsigned char date) /写入地址和数据writeadd(add);RS=1; LCD=date; void init() writeadd(0xc); writeadd(0x3c);显示函数头文件#ifndef LCD_H#define LCD_H #include #include#define LCD P0sbit RS=P26;sbit RW=P25;sbit E=P27;void delay(unsigned char i);void writeadd(unsigned char add); void writedate(unsigned char add,unsigned char date); void check(); void init(); #endif
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1