辽宁工程技术大学毕业设计(论文)
4.2.1主模块
主模块是核心,它主要是管理各子模块,以及对数据缓冲区以及串口部分的初始 化。本设计的初始化部分包括以下功能;
①串口初始化,串口使用工作方式1,波特率通过定时器T1溢出率设为1200bit/s,容许接收,系统使用的晶振频率为11.0592MHz,必将定时器1的初值设为248(OE8)。串行口数据的发送和接收都是通过中断方式完成的,因此还需要设置串行口的中断方式。(没有完)。
②外部中断0设置。系统中,当有液滴滴下时,会产生一个数字脉冲,就会在单片机系统中产生一个外部中断O,系统在该中断计数时,需要开启外部中断O,并将其模式设置为电平触发模式,以及用于计数的R4寄存器的请O。
③定时中断O设置。这就要把定时/计数器O设置在定时的功能。
4.2.2液滴计数模块
在这个模块中主要利用单片机的边缘检测功能对前面由光电传感器采集经A/D转换器转换过来的数字信号进行负边缘检测,当有液滴滴下时,光电传感器都会检测到液滴信号,再形成一个不规则的低电平脉冲,这个脉冲信号通过A/D转换成数字信号输入到单片机的工INTO中,利用单片机的边缘检测功能对液滴信号进行边缘检测计数,当没有液滴时就为高电平不能形成检测信号,因此,也就不能形成计数中断。这样,只要对由工INTO传来的中断个数计数就相当于对液滴的滴数计数。在这个模块中它只是涉及到一个寄存器R4(它主要是用于计数)和一个外部中断O所以程序比较简单。当有一个外部中断时就对R4进行加1,这样就实现了对液滴的计数,虽然R4的最大值只有255,但是在通信程序中我们设计了每隔4S进行一个循环,在现实输液的过程中在4S的时间间隔内液滴的滴数是不可能达到255滴,所以用一个8位的寄存器对液滴计数完全是可行的。同样每和上位机通信一次我们就把寄存器R4清O,因此就不用担心R4会溢出的问题。
23
贾鑫:基于单片机的输液监控系统设计
外部中断INTO入口
图4-2 液滴计数模块流程图 Fig.4-2 Drip count module flow chart
保护现场 R4+1; F0=0; 恢复现场 4.2.3查询液滴有无及液滴过慢时的报警模块程序设计
查询液滴有无及液滴过慢时的报警模块程序设计主要是通过4S定时中断来实现的。在前面我们知道当有液滴时,是通过程序对由INTO所传过来的信号边缘进行检测计数的,在程序中我们是利用对R4加1来实现对液滴计数。因此,只要在4S内有液滴滴下R4中的值就一定会改变,在正常的输液情况下在4S的时间内R4的值是一定会改变的。因此,就通过判断4S内R4的值是否变化,来判断在这4S的时间间隔中是否有液滴滴下,当R4的值有变化时就说明4S内有液滴滴下;当判断出R4的值没有任何变化就说明4S内没有液滴滴下,给报警标志位置1,并把单片机的P1.4脚置1,使它们驱动发光二极管和蜂鸣器进行声光报警。其程序流程在本设计中出出现以下情况下时进行报警:
①当输液成功完成时,这时最后一滴液体以后没有液滴滴下时这时相当于两滴液体的间隔为无穷大,即远远大于4S的定时,这时R4的值就不会变化,也就报警;
②输液因意外情况而发生中断,这时中断前的一滴液滴后也没有液滴滴下它就和第一种情况的当输液成功完成时相同,这时R4的值也就不会变化,报警。输液过慢,即两液滴之间的时间间隔超过四秒钟,这时R4的值也就不会变化,也报警。
24
辽宁工程技术大学毕业设计(论文)
当出现以上几种情况时单片机的PI.3端输出高电平,蜂鸣器进入工作状态开始鸣叫,提醒病人液滴己输完或有意外发生。其他情况下,也就是两液滴滴下的时间间隔小于4秒时为正常工作,单片机的Pl.3端输出为低电平,在蜂鸣器的两端均为低电平,没有电势差,蜂鸣器截止。
中断入口
4S定时中断来 N 否?
Y 重置初值
R4值是否变化? N
Y
图4-3报警模块流程图 Fig.4-3 The alarm module flow chart
设置声光报警 4.2.4通信程序模块程序设计
要实现输液的远程监控,上下位机之间必须有通信模块。在下位机的模块程序中通信程序的设计是程序设计中的重点。在设计通信程序时,必须设置串行通信口的通信参数和通信协议的约定
[11]
。
对于通信模块的程序设计,大致分为分为两大部分。第一部分是串行通信口的参数设置。对于主从机之间的通信我们采用串行通信來实现,因为串行通信的硬件实现上比较简
25
贾鑫:基于单片机的输液监控系统设计
单。串行通信是指通信的发送方和接收方之间的数据信息的传输是在单根数据线上,以每次一个二进制的0、1为最小单位进行传输。串行通信的传输速度要比并行通信慢的多,但是串行通信可以简化通信线路。串行通信有同步通信和异步通信两种方式。为实现串行通信并保证数据的正确传输,要求通信双方遵循某种约定的规程。异步通信协议特点是通信双方以一帧作为数据传输单位。每一帧从起始位开始、后跟 数据位(位长度可选)、奇偶位(奇偶检验可选),停止位。一帧的传输经过大致有以下几个步骤:无传输通信线路上处于逻辑“1”状态,或称传号,表明线路无数据传输。
(1)起始传输发送方在任何时刻将通信线路上的逻辑T状态拉至逻辑“0”状态,发出一个空号,表明发送方要开始传输数据。接收方在接收到空号后,开始与发送方同步,并希望收到随后的数据。
(2)数据传输起始位跟着要发送或接收的一串位序列,即表示一个字符代码。数据位传输规定最低位在前,最高位在后。数据位的确定是根据实际需求以获得最佳传输速度。
(3)奇偶传输数据位之后是可选择的奇偶位发送或接收。奇偶位的逻辑状态取决于奇偶校验的类型。必须保证在同一次传输过程中,每帧选择的奇偶校验类型是一致
(4)停止传输奇偶位之后是发送或接收的停止位,其逻辑状态恒为1,位时间可在1、1.5或2位选择,且必须保证在每帧传输其间均为相同。
发送方在发送完1帧后,可连续发送下1帧,也可随机发送下1帧。在这两种情况当接收方收到传号后,双方取得同步。通信双方除遵循相同的数 据传输帧格式外,为确保传输数据的正确性,双方还要具有相同的数据传输率: 每秒传输的二进制位数,其倒数即为波特率Rate)。波特率是衡量数据传输 速率的指标。设数据传输的速率是150字符/秒,每个字符为8位,则其传输的波特率是:8位/字符xl50字符/秒= 1200波特。
第二部分是通信协议的约定。在串行口通信的硬件设计完后,通信双方必须约定通信协议。协议一方面规定了通信波特率、数据位数、停止位数及奇偶校验的方式等通信的基本参数,另一方面还需规定双方传输数据的格式,以及传输数据时控制数据流的方式。因为无论什么接口标准,均只负责解释传输线 上的数据值,而不解释传输的各数据值本身及
26
辽宁工程技术大学毕业设计(论文)
其组合在一起时的含义。因此通信双方必须在通信前规定这些数据的含义,即规定表征数据含义的数据格式。
本设计计中主从机之间采用总线进行通信。总线节点的软件设计主要包括三大部分:节点初始化、报文发送和报文接收。在下位机主程序流程图中串行口初始化在主模块完成,使本机处于通讯状态。定时/计数器l用作波特率发生器,定时/计数器0用作超时处理的定时器。初始化后,打开串行口中断等待串行口中断产生。在通信程序中将串行口设置为模式1工作方式并由定时器1采用方式2定时,波特率设置为120Obit/s,然后启动定时器1,开放串行口中断,为最高优先级。选用11.O59MHZ晶并将其优先权设置模块流程图如图4-4所示。
中断入口
判断R4是否为10 N
Y 向主机发送数据 N 判断是否发送完?
Y 恢复现场
中断返回 图4-4通信模块流程图
Fig.4-4 Communication module flow chart
保护现场 [12]
。其通信
4.3 小结
本章首先介绍了基于AT89C52输液远程监控系统下位机的总的软件程序流程图及各
模块分布。具体介绍每个模块的设计思路和程序流程图。最后重点介绍通信模块程序设计。
27