比如我需要送给DAC的数值控制比例放大电路控制恒流源输出为2.5A的电流,同时送给LCD显示的电流也必须是2.5A,经运算2.5A/0.002442=1023.75。因此我必须送数为1023或者1024.我想用此四个按键做四个功能:一个加键,一个减键,一个设置键,一个左移键.而如果我此时可能输入显示出来的是2.7A,应该怎样做修改使它变为2.5A.否则,不作修改送数给DAC就可能使恒流电路损坏激光二极管. 也许我现在输入是2.458A的电流,这样操作起左移键和加,减键来是不是好麻烦! 同时在输入显示正确的情况下,我还比必寻找一个按键(确认键)送数给DAC? 只有在正确显示电流数值的情况下,才允许送数值给DAC.否则,不能送数. 我的显示电流子程序如下:(参照电脑圈圈提供的例程)
void chain(unsigned long Atemp) { unsigned char i; serial_buff_I[4]=10; //小数点 for(i=1;i<8;i++) { if(i==4)continue; //跳过小数点的位置 if(Atemp!=0) { serial_buff_I[8-i]=Atemp%10; Atemp/=10; } else { serial_buff_I[8-i]=0; } } if(serial_buff_I[1]==0) { serial_buff_I[1]=12; //空格 if(serial_buff_I[2]==0); { serial_buff_I[2]=12; //空格 } } }
void display_I() //反馈电流显示函数 { //unsigned int It; float Iow; unsigned char i; //It=read7896(); //delay(60); //Iow=c*AD_Loop_PickVol_IPER;//AD采集数值 Iow=100*AD_Loop_PickVol_IPER;//AD采集数值//模拟电流 if(Iow>=1) { chain(Iow*1e3); draw_bmp(104,1,8,num[12]);//显示" " draw_bmp(112,1,8,ELAPHT[2]);//显示"A" } else if(Iow>=1e-3) { chain(Iow*1e6); //将前面的3位结果放到后面 serial_buff_I[7]=serial_buff_I[3]; serial_buff_I[6]=serial_buff_I[2]; serial_buff_I[5]=serial_buff_I[1]; //前面4位改为空格 for(i=1;i<5;i++)serial_buff_I=12; draw_bmp(104,1,8,ELAPHT[11]);//显示"m" draw_bmp(112,1,8,ELAPHT[2]);//显示"A" } else { chain(0); for(i=1;i<7;i++)serial_buff_I=12; draw_bmp(104,1,8,ELAPHT[11]);//显示"m" draw_bmp(112,1,8,ELAPHT[2]);//显示"A" } //显示读数 for(i = 1; i <8; i++) { draw_bmp(32+i*8,1,8,num[serial_buff_I]]); } draw_bmp(0,1,8,ELAPHT[1]);//显示"I" draw_bmp(8,1,8,num[15]);//显示":" } |