单片机液位高度测量及控制 第4页
AT89S52主要特性如下所示:
● 与MCS-51单片机产品兼容
● 8K字节在系统可编程Flash存储器
● 1000次擦写周期
● 全静态工作:0Hz—33MHz
● 32个可编程I/O口线
● 2个16位定时器/计数器
● 6个中断源
● 全双工UART串行通道
● 低功耗空闲和掉电模式
● 掉电后中断可唤醒
● 看门狗定时器
● 双数据指针
● 灵活的ISP编程(字或字节模式)
● 4.0---5.5V电压工作范围
6.2 控制程序流程
本设计的水位高度检测系统的控制程序流程如图7所示:
图76.3 I/O口分配
AT89S52单片机具有32个可编程I/O口,即P0口、P1口、P2口和P3口。其中,P0口是一个8位漏极开路的双向I/O口,P1 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P3 口是一个具有内部上拉电阻的8 位双向I/O 口。
本设计控制系统的原理图如图8所示。P0口的8个I/O口和P2口的P2.5、P2.6和P2.7用于1602字符液晶的显示。P1.0用于步进电机的下行控制,P1.1用于步进电机的上行控制,P1.2用于步进电机的停止控制,P1.6用于传感器的传感探头,P1.7用于传感器的感应探头。P2.0用于给UCN5804芯片脉冲信号,让步进电机能够工作;P2.1用于给UCN5804芯片高与低电平信号,让步进电机能够正反转。
图86.4 控制程序
根据要求,水位高度检测系统的传感器的探头碰到水面后就可以测出水面的高度。因此,本设计的控制程序包括以下几个子程序(完整程序见附录):水位高度测量程序、1602字符液晶显示程序、步进电机转动程序、片内定时器中断服务程序、按键控制程序。
水位高度测量程序是是水位高度检测系统全部程序的主要程序,其程序如图9所示。
void cel()
{k=0;mc=1;h=0;
if(cl==1){delay(50);if(cl==1){h=0;fx=0;i=0;cm=0;a=0;EA=1;cl=0;}}; if(m==1){delay(50);h=0;fx=1;huicheng();};
if((i==5)||(d==1))
{ if(d==1){delay(20);if(d==1){d=1;EA=0;fx=1;cl=0;};};
if(d==1){delay(50);d=0;fx=1;huicheng();};
i=0;
a=195000-cm*455;d1=a/100000%10; d2=a/10000%10;
d3=a/1000%10; d4=a/100%10; d5=a/10%10;
}
}
图9
首先,单片机进行初始化,让单片机内部的各个环节进行自检一遍。然后,打开片内定时器的中断口和1602字符液晶显示的使能端,为测量工作做好服务准备。当按下启动按钮的时候,步进电机开始正方向转动,作为传感探头的金属块开始向下运动。金属块向下运动的同时,单片机通过内部的计算程序计算着步进电机转动的步数,测量出金属块向下运动的距离,液晶显示器就显示着金属块向下运动的距离。由于金属块是不断地向下运动,所以显示的距离的数值也就不断地变化着。当金属块下降到水面的位置时,即金属块刚碰到水面,由于水的导电性,由单片机发出信号通过金属块再通过水这个介质传到了作为感应探头的金属线上,再通过该金属线将信号传到单片机中。与此同时,液晶显示器就显示着此时此刻金属块向下运动的距离,通过换算,便可以得出水位的高度。当单片机通过作为感应探头的金属线接收到信号时,步进电机立即进行反方向转动,使金属块向上运动,直至碰到上行的限位开关才停止。但液晶显示器不会随着金属块的向上运动而显示其移动的距离,它一直显示着水位的高度。这就是水位高度测量程序的大概的叙述。
7 结论
1.由于本设计是测量系统,所以其测量精度一定要有所保证。
测量精度实验:
用尺子测量的一水位高度:6cm。
第一次 第二次 第三次 第四次 第五次
本设计测量的数值(cm) 5.923 5.858 5.876 5.952 5.907
其平均值为h=(5.923+5.858+5.876+5.962+5.907)/5=5.903(cm)
其误差:6-5.903=0.097(cm) =0.97(mm)
因为0.097mm<2mm,所以达到要求。
2. 本设计采用的步进电机的固有的步距角为1.8°,故步进电机走200步其输出轴就转一周。由于连接在步进电机输出轴的转轮的周长为9cm,故步进电机走一步金属块移动的距离为0.45mm。
上一页 [1] [2] [3] [4] [5] 下一页
单片机液位高度测量及控制 第4页下载如图片无法显示或论文不完整,请联系qq752018766