31-基于CAN总线的输液自动报警系统-杨隆俊
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七届“挑战杯”大学生课外学术科技作品竞赛
(复赛)
申报作品
作品名称:基于CAN总线的输液自动报警系统
院(系)名称:信息科学与技术学院
申请者姓名
(集体人员姓名):杨隆俊、丁建峰、张文成、张颖、刘方、
周刚华
指导老师:范训礼
类别:
□自然科学类学术论文
□哲学社会科学类社会调查报告和学术论文
□科技发明制作A类
科技发明制作B类
二零一四年十二月
基于CAN总线的输液自动报警系统
摘要
设计一种低功耗、无人陪护输液监控器系统来提高输液效率,降低医疗事故发生的概率。
系统将采用AT89C51单片机作为从站核心,用CAN总线连接PC 机与单片机构成优先监控系统,并且实现主机对从机的直接控制。
该系统实现了对液滴流速的监测,并动态显示相关信息。
系统将自动的完成检测、传输等一系列工作,当输液异常或输液即将结束时,液滴速度监控反映异常状况,报警信号传送至主站,主站则会通过监控软件和蜂鸣器实现声光报警,等待护士处理后消除报警信号。
该系统误判率低、抗干扰性强、体积小,性价比高,便于推广应用。
关键词:单片机 CAN总线 PC
Abstract
A design of low power consumption, no one accompanying infusion monitor system to improve the efficiency of transfusion and reduce the probability of medical negligence.
The system will use the A T89C51 single chip as the core from the station, constitute priority monitoring system using CAN bus to connect PC with single chip microcomputer, and achieve the direct control of the master to the slave. The system realizes the monitoring of the droplet velocity and dynamic display of relevant information. It will automatically complete the detection, transmission and a series of work. When the transfusion is abnormal or will be finished,the sensor outputs non-cycle signal. Liquid drop speed monitoring reflects the abnormal situation, sends out the alarm signal and transmits it to the master station. The main station will send sound and light alarm through the monitoring software and the buzzer. Then the nurse at the master station will check the infusion corresponding with the alarm before getting rid of it.The system has low misjudgment rate, strong anti-interference, small volume, high performance-to-price ratio and easy popularization and application.
Keywords: Singlechip CAN PC
目录
引言
第一章系统监控报警系统的选择与设计
1.1点滴检测方案选择
1.1.1常用的点滴检测方案比较
1.1.2红外光电感应器检测
1.1.3设计应用
1.2声光报警单元
1.3 信号整形单元
第二章系统从站功能的软硬件设计
2.1从机工作过程总览
2.1.1从机工作原理描述
2.2从机的系统设计与电路搭建
2.2.1从机主控模块设计
2.2.2液滴速度测量模块的设计
2.2.3声光报警器模块设计
2.2.4显示电路模块设计
2.2.5键盘电路模块
第三章通信电路硬件设计及工作原理
3.1数据通信总线选择
3.2 AT89C51单片机与CAN总线通讯的实现
3.2.1系统原理
3.2.2系统总体设计原理图
3.2.3 SJA1000独立CAN控制器和PCA82C250收发器 3.3CAN总线与PC机串口通讯适配器设计与实现
3.3.1PC机部分
3.3.2 AT89C51单片机部分
第四章系统主站功能设计
4.1系统欢迎界面设计
4.2监控/报警界面设计
4.3 PC机通信接口模块设计
4.3.1 MSComm控件属性及应用
4.3.2 通信协议
第五章总结分析与展望
5.1本项目的工作内容:
5.2系统的总体性能分析
附件A
引言
静脉输液是临床医学中的一个重要的治疗手段和医学监护的一项重要内容,在各个医院的医疗工作中被广泛应用。
它不仅是一种重要的给药途径,而且还是给患者补充体液、营养的重要方法。
但是在静脉输液过程中,必须有人陪护,以防鼓包回血等事故发生,尤其对术后几乎需要24小时不间断输液的患者的监护,不仅费时费力,还容易导致交叉感染,患者也得不到良好的休息,影响治疗质量和患者康复。
基于以上情况,设计实现一种智能输液监控系统,对治疗过程采用自动化监控和管理是发展的必然趋势。
国外对智能型输液装置的研究较早。
早在几年前,发达国家许多住院床位就已经配备了输液泵。
输液泵是一种多功能输液控制器,能够较为精确地控制输液速度,并实现输液阻塞、气泡混入和输液完成报警。
我国只是在一些大医院才有部分配备,且大多是国外产品。
国内对输液装置的研制起步较晚,大都在九十年代中期开始研究,市场上也有一些国产输液装置,如北京科力丰高科技发展有限责任公司的ZNB系列产品。
不过总体来说其功能也只是侧重于精确输液控制,种类较少,性能也需改进,加上不菲的价格,所以也只能是和进口输液泵争一点市场份额,未能在各级医院大面积的推广普及。
因此输液完成报警成为了人们更为关心的问题,
目前国内尚未完全解决输液时的自动监控报警问题。
因此,将嵌入式系统技术应用于输液监控装置的研究势在必行。
第一章系统监控报警系统的选择与设计
1.1点滴检测方案选择
1.1.1常用的点滴检测方案比较
方案一:脉冲对射的红外光电传感器。
红外发射管的最大工作电流是由其平均电流决定的,采用占空比小的调制信号,瞬间电流会达到很大,大大提高了信号噪声比,提高了系统的抗干扰能力。
方案二:可见光发光二极管与光敏三极管传感电路。
由于系统外界光源会对光敏二极管的工作有很大的干扰,一旦外界光亮度改变,就会影响对液滴的判断。
如采用超强亮度发光管可以减小干扰,但功率损失大。
所以此方案不可取。
方案三:不调制的红外对射传感器。
由于直接采用直流电压对发光管进行供电,考虑到平均功率的限制,工作电流不能高于元件的额定值,对投币照射有一定的困难且仍然容易受到外部广元等干扰。
故此方案也不可取。
综上,选择可调制的脉冲红外对射传感器用于液滴检测。
1.1.2红外光电感应器检测
红外光电感应器是捕捉不可见光——红外线,采用专门的红外发射管和接收管,将接收到的红外线信号转换为可以观测的电信号,从而有效测量所需数据。
红外光电传感器一般由发送器、接收器和检测电路三部分组成,光电检测元件为光敏电阻,电阻随接收到的红外线的强
弱不同而发生变化,从而影响输出端的高低电平信号。
由于红外线是不可见光,因而红外传感器可有效防止周围可见光干扰,具有灵敏度高、反应快等优点;并且因为红外探测是无接触探测,不损伤被测物体,因而不会对茂菲氏滴管内的药物产生化学影响,不改变其药效。
所以选择红外光电传感器为液滴速度检测的检测单元。
1.1.3设计应用
输液瓶中的药液量多少会影响茂菲氏滴管内药液的滴落速度,当输液瓶中药液余量较多时,茂菲氏滴管内药液滴落速度较快;当输液瓶中药液余量较少时,菲氏滴管内药液滴落速度较慢;当输液瓶中无剩余药液时,茂菲氏滴管内无药液继续滴下。
根据上述输液现象,利用红外线光电传感器检测茂菲氏滴管内液滴滴落速度。
将红外光电传感器安装在茂菲氏滴管的外侧中部,当输液管在正常工作时,液滴从茂菲氏滴管上端滴下,当液滴滴落路径中恰与红外线传输路径发生重叠(即有液滴滴下时),会对红外线的传输起到一定的“遮挡作用”,即因为药液对红外线的吸收反射作用使得接收端接受到的红外光线信号减弱,输出端输出低电平;当液滴路径与红外线纯属路径不发生重叠(即无液滴滴下时),其他因素对红外线的减弱作用可忽略不计,接收端接收到的是完整的红外光线,输出端输出高电平信号。
当输液情况正常时,输出为周期性的高低电平变换的信号,而当输液管发生阻塞亦或是输液即将结束时,端口脉冲的周期性会发生
突变。
[1]
图 1.1红外光电传感器的电路原理图
如图所示,从光传感器传输出信号电压一般为0~5mv 。
为使信号电压更加明显而易于进行后续处理,将信号电压通过运算放大器进行信号放大。
该电路采用差分信号输入,其输入阻抗高,对小信号的放大效果好,可以将信号电压放大至A/D 转换器可以识别的0~3.3V ,最后将放大的信号输出给后续电路 。
1.2声光报警单元
本设计拟使用一个蜂鸣器和一个发光二极管实现声光报警。
将蜂鸣器与发光二极管和电阻组成的电路并联起来,再将其和一个三极管一个限流电阻串联起来组成声光报警电路接入单片机。
蜂鸣器的正极接到cc V 电源,蜂鸣器的负极接到三极管1Q 的集电极C ,三极管的发射极
E 接地,基极B 经过限流电阻1R 后接入单片机管脚P 。
当P 输出高电
OUT
平时,三极管
Q导通,蜂鸣器和发光二极管电流形成回路,蜂鸣器发
1
出声音,发光二极管发光;当P输出低电平时,三极管
Q截止,没有
2
电流流过线圈和发光二极管,蜂鸣器不发声,发光二极管不发光。
因此通过程序(相关程序见附件)控制单片机的P脚可实现声光报警,当红外传感器检测不到有液滴下落时,从站单片机控制声光报警电路工作,在发出声光报警的同时向PC主站发出报警信号。
图1.2 声光报警电路
1.3 信号整形单元
本设计拟采用555定时器接成的施密特触发器实现传感器传输信号的整形。
国产双极型定时器CB555的电路结构图如下。
&&+
-C 1+-C 2&1V CC
R D V CO
TH TR υO
84
56273υC1υ
C2G 1G 2
T D
5k Ω
5k Ω
5k ΩV R1V R2Q Q
υI1
υI2D OUT 1
图 1.3.1 555定时器电路结构图
施密特触发器是一种脉冲波形整形电路,是双稳态电路。
将555定时器的TH 端(1I v )和端(2I v )连接在一起作为信号输入端,co V 端通过0.01u F 电容接地,就得到了施密特触发器。
如图:
1
23
456
7
8D
R CC
V CO V TH
TR D
GND OUT
CC
V I
V O
V 0.01uF
555
图1.3.2 施密特触发器
由于比较器1C 和2C 的参考电压不同,因而基本
RS 触发器的置0信
号(1c V =0)和置1信号(2c V =0)必然发生在输入信号I V 的不同电平。
因此,输出电压O V 由高电平变为低电平和由低电平变为高电平分别所对应的I V 值也不相同,就形成了施密特触发特性。
先看当I V 从0逐渐升高的过程:
当I v <1/3cc V 时,1c v =1,2c v =0,Q=1,故O V =OH V ; 当1/3cc V <I v <2/3cc V 时,1c v =2c v =1,故O V =OH V 保持不变;
当I v >2/3cc V 以后,1c v =0,2c v =1,Q=0,故O V =OL V 。
因此,+
T V =2/3cc V 。
其次,当I V 从高于2/3cc V 开始下降的过程:
当1/3cc V <I v <2/3cc V 时,1c v =2c v =1,故O V =OL V 不变;
当I v <1/3cc V 以后,1c v =1,2c v =0,Q=1,故O V =OH V [2]。
因此,-
T V =1/3cc V 。
因此可得施密特触发器的输入输出波形,如下图所示:
V cc
V I V O
0t
t
V cc V cc 13
23保持
保持
置0
置1保持置1 图1.3.3 波形图
由输入输出波形可看出,施密特触发器是反向输出,因此在本设计中,传感器的输出端与施密特触发器的输入端连接,施密特触发器的输出端连一个反相器作为信号整形电路的输出端。
第二章 系统从站功能的软硬件设计
2.1从机工作过程总览
传 感 器
施密特触发器
反相器
输出端
N
Y
N N Y
N
Y
2.1.1从机工作原理描述
等待输入号码
输入号码 运行主程序
扫描端口 向上位机发送号码码 端口脉冲周期是否突变
记录液滴速度 按键端口电平是否变化 声光报警器发光和报警 向上位机发送触发信息 从机进入待确认状态 是否按下确认键 等待下次工作 开机 是否确认
首先,医生给患者挂上吊瓶,待滴瓶中的液滴流速稳定后,医生打开相应病床的输液报警器。
这时报警器进入待工作状态,等待医生在等待界面输入病人吊瓶上报警器所对应的号码;当号码被确认输入后,报警器进入初始化状态。
这时,一方面报警器的主控芯片运行主程序,记录液滴速度并进行实时监控,同时在LED显示管上显示液滴速度;另一方面主控芯片对该报警器号码进行编码,通过CAN总线将信号发送给上位机(PC)。
上位机接收到CAN总线传来的信号后,开启相应病号的图标显示,并在界面上记录信息。
从机将以定时中断的方式实时扫描红外线传感器端口传输脉冲和键盘接口电平,当吊瓶的输液管发生阻塞或输液即将结束时,茂菲氏滴管中的液滴出现断流。
红外对射传感器传输脉冲周期发生突变,满足声光报警器触发条件。
从机主控芯片运行报警程序,通过0P口驱动报警器发声发光,并持续一段时间,提醒病人检查故障原因。
当发生其他异常事件时,病人也可通过按下键盘的“呼叫”按键,主动触发报警器呼叫医生。
在触发报警器的同时,从机主控芯片开启串行接口中断允许,运行中断服务程序,通过CAN总线将信号传送给上位机。
上位机接到信号发生响应后,开始报警,相应病号图标闪烁,直到医生确认得到信息,并点击“确认”后,相应报警器停止发声。
在从机声光报警器停止发声和发光后,从机停止记录液滴速度,进入待确认状态。
当医生点击“确认”后,从站主控芯片通过CAN总线发送信号,并传至上位机。
当医生回到监控室时,点击“确认故障已
排除”按钮后,上位机继续等待接受信息。
2.2从机的系统设计与电路搭建
根据从机系统所要实现的功能,为从机系统设计出系统运行框图,如图所示。
CANH RXD CANL TXD
图2.2.1 从机系统设计出系统运行框图
从机采用AT89C51作为微处理器,A T89C51是Ateml 公司出品的一种带4K 字节FLASH 存储器的低电压、高性能CMOS 8位微处理器,俗称51单片机。
该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
ATMEL 的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节
A T 8 9 C 5 1
红外线传感器电路
数码管显示电路
键盘电路
声光报警器电路
CAN 总线芯片接口
内部RAM ,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU 的工作,但允许RAM ,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位[3]。
由于医疗环境苛刻,要求报警器系统具有极高的稳定性,又考虑到从机所需要的功能并不是很复杂。
因此,采用AT89C51作为微控制器,既达到了相应的功能需求又满足了高效性、稳定性的要求。
2.2.1从机主控模块设计
从机是完成本项目功能的最重要的装置之一,而从机系统功能的稳定发挥又依赖于每一个子电路的正常工作和从机的微处理器对每一部分的协调控制。
因此,在本项目中按系统框图先对从机模块进行总体设计,然后再对每一子电路进行设计。
从机主控模块作为系统的核心,采用AT89C51作为处理器。
根据系统的原理框架,需要单片机完成扫描声光报警器经施密特触发器的整形信号、处理键盘按键程序、运行显示程序控制数码显示管正确显示、驱动声光报警器发光与发声和控制串行接口中断服务程序与CAN 芯片的稳定通信。
AT89C51有四个I/O 串行接口分别是0P 、1P 、
2P 和3P ,两个外部中断接口0INT 和1INT ,两个串行接口 RXD 和
TXD 和两个定时器/计数器0T 和1T 。
由于单片机上搭载的子电路并不
是特别多,因此并不用进行接口的扩展。
根据乘法原理,系统的复杂程度与系统的稳定程度成反比。
因此,在搭载电路时要尽量使得电路简单。
根据上述原则,在本项目中,用单片机的并行I/O接口连接数码管显示电路、键盘接口电路和声光报警器电路,用串行I/O接口连接CAN总线接口[2]。
由于每个从机是单独工作的,所以单片机采用内部振荡方式进行时序控制,其晶振频率为12z
MH。
由于单片机的每次工作都是从初始状态开始的,因此每当从机开始工作时都要进行复位。
为了系统的工作稳定和方便,单片机采用上电自动复位方式复位如图所示。
图2.2.2 上电自动复位方式复位
2.2.2液滴速度测量模块的设计
根据液体压强的原理和输液经验可知茂菲氏滴管中的液滴速变化很小,所以本项目在进行测量的时候采用数理统计学大数定理中扩大
统计范围以减小误差的方法,在单位时间内记录液滴滴下的个数,求平均值。
其计算公式为T
N
V
,由此可以近似求出液滴的速度。
但是,如果设定的单位时间过短,则会出现一整个时间段都没有一滴液滴滴下的情况;如果设定的单位时间过长,则可能在计算时间时多计算将一个周期的时间,使得实际测量值偏小。
为了解决这个问题,我们先根据初步测量设定一个初始单位时间,然后根据滴速作进一步微小调整。
确定单位时间后,可以采取多次测量求取平均值的方法求解液滴速度。
根据实验测得单位时间为4s 。
从机采用的红外对射传感收发装置测量茂菲氏滴管中液滴滴速,并在数码显示管上进行显示。
如果4s 时间内茂菲氏滴管内没有一滴药液滴下时,即可判定输液出现故障,故障信号触发声光报警器。
红外线传感器传出的脉冲信号经过运算放大器放大后,传输到施密特整形电路进行整形后,从其接口传出的信号即为TTL 脉冲信号。
由此,液滴的滴速就被转换成了不同周期的电信号了。
由于液滴流过的时候脉冲信号是一个负跳变,如图所示。
因此,本项目从机单片机采用0INT 的外部中断的方式,定时器选择0T 进行记录。
红外线传感器输出 输出
图2.2.3 脉冲信号负跳变
其电路连接如图:
波 形 整 形
0.25ms 中断一次
输出
图2.2.4 单片机与施密特触发器连接图
具体工作原理如下:
(1)单片机工作设定
在单片机中设中断允许寄存器IE 中EA=1允许中断,EX0=1允许外部0INT 中断,ET0=1允许定时器0T 中断; 设定时控制寄存器
TCON 中的IT0=1,选择为负边沿触发方式;
设定时器/计数器工作方式寄存器TMOD 中的0T 的工作方式,GATE=0定时器不受外部串行引脚影响,T C /=0选择为定时器工作,
1001==M M ,选择定时器为工作方式
1。
(2)时间设定
考虑到在输液的具体过程,因为液滴检测电路是实时显示的,所以选择的时间设定不能太长。
而且,求平均的次数也不能太少。
经过计算和考察,我们选择0.25ms 为一个时间段,记录次数为4次,则理论上就是1ms 统计一次。
0T
0INT
施 密 特 触 发 器
本项目从机采用0T 作为定时器定时为0.25ms ,根据定时器的初值计算公式可以计算0T 得出定时器初值为:
00x 02210*1212
10*25.028166
3
16
FF X =-=-=-[3]
因此,0T 的初值为TH0=FFH ,TL0=00H 。
(3)工作过程流程图
设定计数器为COUNT ,脉冲次数为i N (i=1,2,3,4)总次数为NI 和NO ;
当NO<1时表示四秒断流,这时满足声光报警器触发条件,可以触发报警器报警。
相应流程图如下:
Y N
N
Y
N
Y
Y
N
Y
N
开始 0.25ms 定时
COUNT=0,i=1,NI=0,j=0 是否有脉冲 COUNT=COUNT+1 COUNT=COUNT 定时结束 定时中断 NI=COUNT,i=i+1
i>5
输出NI j=j+4,NO=NO+NI j>16000
输出NO NO<1 跳转报警程序
2.2.3声光报警器模块设计
声光报警器是由从机单片机控制与驱动的,主要是用来在出现四秒断流的情况下,发出报警信号提醒病人的。
因此,报警的时间不需持续太久,此处设定其持续时间为10s 。
根据其电路连接形式,可知只用给报警器接口一个持续10s 的高电平就可以达到目的。
如果在4s 内NO 小于1,说明连续两滴液滴的时间间隔超过了4s ,理论上就可以判定为液体流完了,因此报警。
在电路连接上,我们用单片机的并行接口0.2P 驱动声光报警器。
还有一种情况就是,当有其他情况发生时由病人主动按下呼叫按键,这时也是由0.2P 口驱动。
如图所示:
0.2P
图2.2.5单片机驱动声光报警器图
5.2.4显示电路模块设计
在从机报警器被开机,进入正常工作模式前,必须由医生输入病人输液瓶对应的报警器号码并确认后,报警器才可以进入主程序。
报警
从 机 单
片
机 声光报警器
器要实时显示液滴速度,显示屏是必要的。
考虑到成本、系统稳定性与系统本身需实现的功能简单等情况,我们采用四个LED共阴极数码显示管作为显示器。
LED数码显示管有两种驱动方式:一种是静态驱动方式,即给每个欲点亮的数码管通以恒定的电流,其在单个或几个数码管显示时比较稳定,当有多个数码管共同显示,必然会占用很多的引脚。
因此,应用于从机单片机管脚资源紧缺的情况显然是不合理的。
另一种是采用数码管动态驱动方式,即将每个数码管的引脚并行连接,然后将数码管的公共端分开连接[4]。
只用给每个数码管的公共端和要显示的数字代码按时序输出,由于人眼的视觉暂停效应,在我们看来,整个显示屏都在显示,这也是单片机系统中常用动态驱动方法。
(1)电路原理
如图所示,从机单片机用0P和2
P口连接数码管。
其中0P口连接数
码管的
A~7A端。
1.2P.~4.2P用来连接数码管的COM端。
因此,如果要显示某个数字只用在1.2P.~4.2P口输出相应的时序代码。
DP
A B C D E F G DP
A B C D E F G
DP
A B C D E F G
DP
A B C D E F G
P2.1 p0.0
P2.2 p0.1
P2.3 p0.2
P2.4 p0.3
p0.4
p0.5
p0.6
p0.7
(2)码管显示代码设计
根据从机的系统流程图可知需要设定显示代码有开机提示号码输
入显示、液滴速度显示、报警时的等待显示、医生确认得知消息后的反馈显示。
A.开机提示码输入显示
采用Enter这个单词的EnE作为输入提示代码组为
0x12,0x18,0x12(0P)。
B液滴速度显示0~9对应的代码为0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
C.报警时的等待显示
采用HHH作为等待信息代码为0xea
D医生确认得知消息后的反馈显示
采用HOH作为消息代码为0xea,0x47,0xea
(3)液滴动态显示设计
根据输液的具体环境可知,一般情况下茂菲氏滴管中的液滴速度为x滴/s(N
x)。
因此,从液滴检测电路传输出的液滴统计值NI只可能
是0或者是1,而且在大多数情况下都是0。
因此,如果直接将这个值NI带入计算,其结果只是0和一个很小的数。
这就失去了统计液滴速度的实际意义。
所以,不能直接将NI经过计算的值送到0P口驱动数码显示管。
再者,我们采用的是数码管的动态显示驱动方式。
所以,要进行数据的循环输入,并且要进行数据的刷新,才能达到实时
显示的目的。
基于以上的考虑,我们采取下面方法来解决这个问题。
根据实际情况可知液滴在很短的时间内是没有的,也就是说液滴的流动是不连续的。
因此,我们需要统计一个较长的时间内的液滴流过的数量。
在输液的实际情况下,茂菲氏滴管中的液滴流速为1s中2~4滴。
因此,我们采用1s的时间来统计液滴数量。
因此,我们自然会想到累计1000个NI值来计算液滴流速。
然后,将计算的数值转化成二进制代码通过0P与2
P口传输驱动数码显示管。
但是,这样以来又会带来一个新的问题,就是大大加大了数据的显示延迟时间,使之延迟1s输出。
这显然不能满足实时显示的要求。
所以,就要在既满足统计要求又能是最小延迟的情况下想办法找到最好的方法。
因此,我们采用如下的方法来解决这个问题:
在数据统计过程中我们向单片机申请20个3bit的动态数据储存空间(RAM)i
SPACE(i=1,2,3,4,...20),因为每1bit空间可以储存两位二进制代码三位就可以储存0~32-1这8个数。
每一个空间用来统计50个NI的值,其值肯定也是不超过7的数,对于1s中2~4滴是完全满足的,而且还减少使用单片机极少的储存空间。
在统计时依次对NI的值进行输入,当满50后转入下一个空间,这样理论上1s就可以填满20个空间。
当填满后再填第一个空间,然后是第二次填满第二个空间... 这样就可以循环填满数据了。
在数码管进行显示时令
∑=
20
1
i SPACE
TOTAL,由于每次SPACEi每次都得到一组新的数据,则每一个0.05s TOTAL的值刷新一次,所以带入计算的值都只是前0.05s。