gao=0; 锁存数据; di=0; j=P1;
k=P0; 读取端口计数值; write_com(0x80); 动态显示时须先清屏; a=(j*256+k+cc*256*256-(ff*50)*q/2)*0.5*0.0006328;位移 4 测量辩向程序
在微位移的实际测量过程中,由于需要或外界振动等干扰,可能会使被测物体产生正、反两个方向的位移,在这种情况下若只采用单一的测量程序将会带来测量误差。因此,必须对被测物体位移方向进行判断并作出相应数据处理。系统通过定时器1中断判断测量信号的频率与参考信号的频率大小。如果频率低于参考信号表示被测物相反移动了,则系统应相应作出数据处理。
………
s=P1; 读取中断此时得数据高八位; t=P0; 读取低八位; w=cc; 读取进位值; gao=1; di=1; delay(2); gao=0; di=0;
u=P1; 延时2ms后再次读取计数值; v=P0;
if(((u*256+v+cc*256*256-s*256-t-w*256*256)-q)<0) 判断是否反向; bx=1; 定义一个变量值返回; 通过系统软件实现辩向测量大大减小了硬件电路的复杂性。 5 LCD显示程序
单片机采集数据处理将计数值还原为位移量之后须将位移值通过LCD显示。单片机操作LCD时须根据一定的时序,图为16ⅹ2LCD写操作时序图。在显示数
据之前,须初始化设置LCD的工作模式,显示光标,数据指针以及清屏等。
lcden=0; 开始使能置低;
write_com(0x38); 设置16X2显示,5X7点阵,8位数据接口; write_com(0x0e); 开显示,显示光标,光标不闪烁; write_com(0x06); 写数据后地址自动加一,整屏不移动; write_com(0x01); 清屏;
write_com(0x80); 设置地址指针为0;
LCD时序图
在显示数据时,因为系统设定精确度为10um ,须保留小数点后5位,暂定系统的测量范围小于100m,则显示时须根据不同数据范围控制小数点的显示位置。即当数据小于10时,小数点在第二位显示;当数据大于10小于100时小数点在第三位显示。
a=a*100000; a为位移值,将a值扩大10万倍方便计数各数据位值 b=((long int)a)/100000; 确定个位值;
c=((long int)a)0000/10000; 确定小数点后第一位值; d=((long int)a)000/1000; 确定小数点后第二位值; e=((long int)a)00/100; 确定小数点后第三位值; f=((long int)a)0/10; 确定小数点后第四位值; g=((long int)a); 确定小数点后第五位值; write_dataa(b+48); 显示第一位; write_data('.'); 显示小数点;
write_data(c+48); 显示第三位; write_data(d+48); 显示第四位; write_data(e+48); 显示第五位; write_data(f+48); 显示第六位; write_data(g+48); 显示第七位;
在显示数据时,因为LCD包括计算机信息交互都是以ASCII码显示的,查阅ASCII码表实际数字和显示数字之间相差48,所以写数据时须在值上加上48。
仿真调试与分析
1 前置放大调试
仿真时用1.5MHZ,500uA电流代替PIN光电二极管输出电流,设置参数(详见系统硬件前置放大部分)时须考虑到微弱信号的漂移和噪声影响较大故前置放大不宜过大。通过前置放大电路的放大和I-V转换,输出如图电压波形。 输出的电压峰峰值为47.442mv,波形正常无失真。
前置放大输出波形
2滤波电路调试
选择C1=C2=C3=C4=20pf。取R1=5k理论截至频率Fc=
*
=
,R2=15k
*
,R3=51k=0.92M
,R5=4.7k
。
考虑后续放大整形设置增益为A=(60/40)×(60/40)=9/4
调试时取输入波形电压为30mv,下降3dB时的波形电压峰峰值应为30×2×9/4×0.707=95.445mv,调试输入波形的频率直到此电压值得截至频率为:
Fc=0.776M满足系统高通滤波要求。
高通滤波截至频率
截至频率时输出波形
3主放大电路和整形电路调试
整形前波形
因为整形74LS14的阀值电压是1.6V,所以考虑主放大电路的增益设置为200倍,此时AD8045在信号通带内,放大输出信号为7.008V满足整形输入。如图5.4为信号整形前,图5.5为信号整形后方波。
整形后波形
4 单片机AT89S52及LCD液晶显示仿真调试
Keil对系统编程,程序初始化设置LCD显示光标但不闪烁,显示地址自动加一且整屏显示不移动;测量未开始时LCD不显示,测量开始时实时显示测量位移,精确小数点后五位即分辨率为10um。Keil调试生成HEX文件, 将该文件