您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 2012_国信长天_ct107d单片机设计与开发项目模拟试题及参考程序_小区自动售水机
利用运放设计输入为4mA和20mA输出0V–5V输入4mA时,调节1Rp使Vo1=1.25V,调节2Rp时Vo2=0V输入20mA时,调节1Rp使Vo1=6.25V,调节2Rp使Vo2=5V即可LM324组成的4-20mA输入/5V输出的I/V转换电路下面是这个电路网上介绍的资料:增加这级运算放大器可以起到对零点的处理会变得更加方便,无需耗用单片机的内部资源,尤其单片机是采用A/D接口来接受这种零点信号不为零电压的输入时,可以保证A/D转换位数的资源能够全部应用于有用信号上。以4~20mA例,图B中的RA0是电流取样电阻,其值的大小主要受传感变送器供电电压的制约,当前级采用24V供电时,RA0经常会使用500Ω的阻值,对应20mA的时候,转换电压为10V,如果仅仅需要最大转换电压为5V,可以取RA0=250Ω,这时候,传感变送器的供电只要12V就够用了。因为即使传送距离达到1000米,RA0最多也就几百Ω而已。同时,线路输入与主电路的隔离作用,尤其是主电路为单片机系统的时候,这个隔离级还可以起到保护单片机系统的作用。图2采用的是廉价运放LM324,其对零点的处理是在反相输入端上加入一个调整电压,其大小恰好为输入4mA时在RAO上的压降。有了运算放大器,还使得RAO的取值可以更加小,因为这时信号电压不够大的部分可以通过配置运放的放大倍数来补足。这样,就可以真正把4~20mA电流转换成为0~5V电压了。使用运算放大器也会带来一些麻烦,尤其在注重低成本的时候,选择的运放往往是最最廉价的,运放的失调与漂移,以及因为运放的供电与单片机电路供电的稳定性,电源电压是否可以保证足够稳定,运放的输入阻抗是否对信号有分流影响,以及运放是否在整个信号范围内放大特性平坦,如此等等,造成这种廉价电路的实际效果不如人意。而最大的不如人意之处还是在零点抵消电路上,随着信号电流的变化,运放的反相端的电压总是会与零点调整电压发生矛盾,就是这个零点电压也在随着运放输出的变化而变化,只不过由于有了信号有用电压的存在,而在结果中不容易区分而已。这种现象最容易造成非线性加大。虽然可以在单片机里采用软件校正来纠正,但是,就具体措施而言,这样做需要增加编程人员不少的工作量,而且需要多点采集数据来应对。百度答题,4-20mA转1-10V问题连接地址:无需计算公式免费赠送,如需推导公式“黄金”百两悬赏100分参考程序#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedint#definesomenop{_nop_();_nop_();_nop_();_nop_();_nop_();}ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharcodesmg_we[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};ucharcodesmg_du1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x7f};//有小数点的段选sbitSDA=P2^1;sbitSCL=P2^0;sbits7=P3^0;sbits6=P3^1;uchartflag,dspflag,qian,bai,shi,ge,qian1,bai1,shi1,ge1,num,temp,bb;uintt,aa,date;voiddelayms(uintx){uchart;while(x--)for(t=0;t120;t++);}voidkeyscan(){if(s7==0){delayms(10);if(s7==0){P0=0x10;P2=0xa0;P2=0;TR0=1;num=1;t=0;while(!s7);}}if(s6==0){delayms(10);if(s6==0){date=t/2;TR0=0;P0=0;P2=0xa0;P2=0;num=2;TR0=1;while(!s6);}}}voiddisplay(ucharwe,uchardu){P0=0xFF;//消影子P2|=0xE0;P2&=0x1F;P0=smg_du[du];P2|=0xE0;P2&=0x1F;P0=smg_we[we];P2|=0xC0;P2&=0x3F;}/////////////////////////////////////////////////////////////////voidiic_start(void){SDA=1;_nop_();SCL=1;somenop;SDA=0;somenop;SCL=0;}voidiic_stop(void){SDA=0;_nop_();SCL=1;somenop;SDA=1;}voidack(){unsignedchari;SCL=1;somenop;while((SDA==1)&&(i200))i++;SCL=0;}voidiic_sendbyte(unsignedcharbyt){unsignedchari;for(i=0;i8;i++){if(byt&0x80)SDA=1;elseSDA=0;somenop;SCL=1;byt=1;somenop;SCL=0;}ack();}unsignedchariic_recbyte(void){unsignedcharda;unsignedchari;for(i=0;i8;i++){SCL=1;somenop;da=1;if(SDA)da|=0x01;SCL=0;somenop;}returnda;}unsignedcharadc_pcf8591(void){unsignedchartemp;iic_start();iic_sendbyte(0x91);temp=iic_recbyte();iic_stop();returntemp;}voidinit_pcf8591(void){iic_start();iic_sendbyte(0x90);iic_sendbyte(0x01);iic_stop();delayms(10);}////////////////////////////////////////////////////////////////voidmain(){P0=0xff;P2=0x80;P2=0;P0=0;P2=0xa0;P2=0;//关蜂鸣器TMOD=0x22;TH0=0x06;TL0=0x06;TH1=0x06;TL1=0x06;ET0=1;EA=1;ET1=1;TR1=1;init_pcf8591();while(1){keyscan();if(t==10000){TR0=0;P0=0;P2=0xa0;P2=0;num=3;//超出标志TR0=1;}}}voidisr_t0(void)interrupt1//数码管显示{tflag++;aa++;if(aa==400)//10mst++{aa=0;t++;if(t==10000){P0=0;P2=0xa0;P2=0;}qian=t/1000;bai=t%1000/100;shi=t%100/10;ge=t%10;}if(num==1)//计时标志{if(tflag==4)//1ms动态显示{tflag=0;dspflag++;if(dspflag==7)dspflag=0;if(dspflag==0){P0=0xFF;P2|=0xE0;P2&=0x1F;P0=smg_du1[bai];P2|=0xE0;P2&=0x1F;P0=smg_we[5];P2|=0xC0;P2&=0x3F;}if(dspflag==1)display(6,shi);if(dspflag==2)display(7,ge);if(dspflag==3)display(4,qian);if(dspflag==4){P0=0xFF;P2|=0xE0;P2&=0x1F;P0=smg_du1[0];P2|=0xE0;P2&=0x1F;P0=smg_we[1];P2|=0xC0;P2&=0x3F;}if(dspflag==5)display(2,5);if(dspflag==6)display(3,0);}}if(num==2)//算费标志{if(tflag==4)//1ms{tflag=0;dspflag++;if(dspflag==7){dspflag=0;qian1=date/1000;bai1=date%1000/100;shi1=date%100/10;ge1=date%10;}if(dspflag==0){P0=0xFF;P2|=0xE0;P2&=0x1F;P0=smg_du1[bai1];P2|=0xE0;P2&=0x1F;P0=smg_we[5];P2|=0xC0;P2&=0x3F;}if(dspflag==1)display(6,shi1);if(dspflag==2)display(7,ge1);if(dspflag==3)display(4,qian1);if(dspflag==4){P0=0xFF;P2|=0xE0;P2&=0x1F;P0=smg_du1[0];P2|=0xE0;P2&=0x1F;P0=smg_we[1];P2|=0xC0;P2&=0x3F;}if(dspflag==5)display(2,5);if(dspflag==6)display(3,0);}}if(num==3){if(tflag==4)//100ms{tflag=0;dspflag++;if(dspflag==7){dspflag=0;}if(dspflag==0){P0=0xFF;P2|=0xE0;P2&=0x1F;P0=smg_du1[9];P2|=0xE0;P2&=0x1F;P0=smg_we[5];P2|=0xC0;P2&=0x3F;}if(dspflag==1)display(6,9);if(dspflag==2)display(7,9);if(dspflag==3)display(4,4);if(dspflag==4){P0=0xFF;P2|=0xE0;P2&=0x1F;P0=smg_du1[0];P2|=0xE0;P2&=0x1F;P0=smg_we[1];P2|=0xC0;P2&=0x3F;}if(dspflag==5)display(2,5);if(dspflag==6)display(3,0);}}}voidT1_timer()interrupt3//LEDPCF8591{bb++;if(bb==8){bb=0;temp=adc_pcf8591();if(temp64){P0=0xfe;P2=0x80;P2=0;}if(temp64){P0=0xff;P2=0x80;P2=0;}}}
本文标题:2012_国信长天_ct107d单片机设计与开发项目模拟试题及参考程序_小区自动售水机
链接地址:https://www.777doc.com/doc-3025548 .html