第四章 系统软件设计和实现
图4-6 编译界面
(5)在源文件目录下,可以看到编译生成的HEX文件,将HEX文件写入单片机中,就可以进行仿真和调试,如图4-7所示。
图4-7 仿真和调试界面
4.2 软件设计
在本系统中主要有两大主要模块:液面检测报警模块,滴速检测控制模块。下面主要介绍这两大模块的程序设计:
- 36 -
第四章 系统软件设计和实现
(一)液面检测报警模块
系统对液面位置进行检测,当检测到液面低于警戒线时,检测电路在INT0口输入高电平,触发中断。单片机根据中断在P2.0输出低电平,触发声光报警电路发出声光报警。下面是液面检测报警流程图:
开始 系统初始化 启动全局中断 启动外部中断0 有键按下? N 液面异常? N 中断复位? 结束 图4-8 液面检测流程图
按键处理 Y 产生中断 Y P2.0=低电平 - 37 -
第四章 系统软件设计和实现
图4-9 液面检测程序调试结果
液面检测报警程序调试如上,可以烧入系统进行操作。 (二)滴速检测控制模块
系统对滴速进行检测并计数,计五秒内液滴个数显示,并与键盘输入的滴速进行比较,如大于预定滴速,则利用步进电机进行减速,反之加速。
滴速的检测在本质上说就是利用单片机对光电收发二极管产生的脉冲信号进行频率计数。频率的定义是1s内信号的变化次数。测量频率的方法主要有两种:计数法和计时法。
1.计数法
计数法是将被测信号通过一个闸门信号加到计数器中并计数的方法,如果闸门的持续时间为T,而计数器得到的一个数值为M1,则被测频率f=M1/T.改变闸门持续时间T就可以改变频率的测量范围。
2.计时法
计时法也可以叫做测周期法,这种方法是用被检测的信号来控制闸门的开关,而将标准的脉冲信号通过闸门加到计数器中,闸门在外信号的一个周期内打开,计数器得到的数值就是外脉冲信号的周期,然后求得周期的倒数就得到外脉冲信号的频率了。
- 38 -
第四章 系统软件设计和实现
首先把被测信号通过二分频,得到一个高电平时间,也就是一个T型方波信号,然后用一个固定周期的高频方波信号作为计数脉冲,在一个周期内对T1信号进行计数。如下图4-10。
被测信号f
信号二分频
高频信号f1
图4-10 计数方式
根据本系统的设计要求,首先要确定该系统的频率测量方法,由上述频率测量原理与方法的讨论可知,用计数法获得计数结果,在闸门信号为一秒时,不需要进行任何换算,计数器所计数据就是信号频率。而用计时法所测的信号周期数据,还需要求倒数运算才能得到信号频率,而求倒数运算对于中小型数字集成电路来说很难实现;故本系统采用计数法进行滴速的测量。
设计中,选用定时器T0进行定时,T1作为计数器。由于没滴液体在经过光电感应探测器时都会引起一次单片机T0口的电平变化,即产生一个下降沿,所以液滴产生的下降沿目的就可认为是所滴下的液滴数。滴速的采集程序可分为两部分:即定时程序和计数程序。
- 39 -
第四章 系统软件设计和实现
开始 滴速检测 调动态扫描显示子程序显示实际滴速 保存实际滴速 实际>预定 Y N Y 实际<预定 N 步进电机正转 步进电机反转 显示滴速 返回 图4-11 滴速检测控制流程图
- 40 -