基于51单片机的液位检测系统
有一小延时。由此可以往8255的PC0~PC3口依次输出1000、0100、0010、0001、 1000等一系列的信号,每一个高电平保持8ms,输出时间间隔为1ms,即可满足控制需要。同理,也可以控制电机反转,只是输出信号的顺序相反。于是在寄存器中的初始控制字可设为00010001B(即11H),电机每走一步,则对此寄存器的内容向左(正转)或向右(反转)循环移一位,然后取出此寄存器的内容并输出,就可以完成对电机的控制。
3、单片机实时处理及控制
针对本课题而言,硬件电路应该尽量的简单,部分能用软件实现电路尽可能的不用硬件电路,以此来达到产品的小型化、价格低、性能可靠的目的。在选择单片机时也应充分考虑其便利和实用,8031 单片机最大缺点是需要外接EPROM,电路复杂,而且EPROM还是用紫外线进行擦除的,使用起来很不方便。在经过广泛的比较之后,确定采用ATMEL 公司的AT89C52 FLASH单片机。它不仅具有8031单片机的一切功能,还有许多功能是8031所没有的。其内部带有8KB可多次擦写的FLASH内部程序存储器,可用电擦除,十分方便。
AT89C52 单片机主要有以下一些特点:(1)、与MCS-51产品兼容;(2)、具有8KB可改写的FLASH内部程序存储器,可进行1000次擦/写操作;(3)、全静态操作:0Hz到24MHz;(4)、三级程序存储器加密;(5)、256字节内部RAM;(6)、32条可编程I/O线;(7)、3个16 位定时/计数器;(8)、8个中断源;(9)、可编程串行口;(10)、低功耗空闲和掉电方式。
单片机实时处理及控制部分的主要功能是接收来自红外光电传感器转换过的电信号,同时接收输入电路送来的状态信息,经过判断计算后,一方面发出控制指令,控制电机的运转,进行液位的检测与跟踪;另一方面送出所需要的数据,进行数据的显示和状态指示。因此,这一部分是本系统的关键部分,它的性能的好坏直接关系到整个系统的性能好坏。具体硬件电路是以AT89C52单片机为核心,通过扩展并口8255来实现的,其电路如图3所示。
图3单片机实时处理与控制电路
由图3 可以看出,键入电路与AT89C52的P1口相连,接收所键入的状态信息并送单片机。液位信号直接送P3.0口,在自动跟踪时,单片机对P3.0口不断地查询,一有信号就进行判断处理。液滴信号与P3.2口(即INT0中断引脚)相连,由于液滴的检测是随时的,因此需要用中断来控制,当液滴信号一来中断便响应,记录下液滴数。上、下限位信号分别接P3.4、P3.5口,在运行中,一但出现了上、下限位信号时,说明已超出了预定的运行范围,单片机收到信号后,发出控制指令,停止电机的转动。其它一些如显示、电机驱动等控制信号的发出由总线分时送8255,完成预定的任务。
8255 的片选信号/CS及口地址选择线A0和A1分别由AT89C52的P2.7和P0.0、P0.1经地址锁存后提供,故8255的A口、B口、C口及控制口地址分别为7FFCH、7FFDH、7FFEH和7FFFH。8255的D0~D7分别与AT89C52的P0.0~P0.7相连,其/RD、/WR与 AT89C52的/RD、/WR一一对应相接。
三、 软件设计
系统软件是整个系统的重要组成部分,只有在它的指挥控制下硬件电路才能进行工作,完成相应的功能,而且部分硬件电路的缺陷还可以通过软件编程加以弥补。根据系统的功能要求,软件是用MCS-96汇编语言,采用模块化结构,由主程序、自动检测跟踪子程序、校准子程序、显示子程序等组成。在本系统中,高精度测量的实现在很大程度上是由软件来保证的。
主程序包括系统参数初始化和循环工作过程,是本系统中软件部分的核心。它主要完成的任务是:首先,对单片机状态参量和程序自定义的状态参量进行系统初始化;其次,对各子程序进行管理和控制,安排相应的指令,提供子程序的入口数据,以达到完成系统功能的目的。
液位自动检测跟踪子程序的功能是控制液位跟踪器以底液液面为起始位置,连续地跟踪液面的变化,并换算出实际的液体体积值,实时地进行显示。其执行步骤是:首先,红外光电传感器自动检测到液位,并设此液位为跟踪的底液面,显示为“0”。然后,进入实时跟踪状态,只要液位有变化(上升),检测器便会自动跟踪,实时显示所跟液体的体积,直到液位不再变化为止。
校准子程序是在每次更换量筒时进行的,目的是找出量筒内液体的体积与电机的步进数之间的对应关系,然后送给单片机,进行体积计算时就有了新的标准,以此来提高测量精度。
四、结束语
采用AT89C52单片机实现的液位检测系统在标准100ml玻璃量筒中,液位变化范围在0-200mm时,能达到0.1ml的分辨率。实践证明,本液位检测系统性能价格比高、控制方式可靠,其设计思路和方法
- 基于AT89C52的非分散红外测油仪的研制(11-28)
- AT89C52单片机+AT24C02+1602构成的密码锁(11-25)
- 基于AT89C52单片机的交通灯C语言程序(11-22)
- 基于USB总线的式LCD图文显示系统设计(05-30)
- 基于AT89C52与ARINC429航空总线接口设计(05-28)
- 一款基于Proteus的自动取款机设计与仿真(03-19)