[编者按]在刚刚结束的“力源杯”大奖赛上,北京彭敢的参赛作品“医用安全输液监护器”被评为一等奖,该作品巧妙地应用了PIC58 BASIC单片机,具有推广价值。本刊特请作者将论文修改后刊出。
病人输液时,如果发生排空或堵塞,都是很危险的,经常需要专人进行看护。“安全输液监护器”是为防止在常规输液过程中发生排空、堵塞等事故而设计的,旨在提醒病员或护理人员及时换液,及时处理堵塞排空,使护理人员从紧张、劳累的看护劳动中解放出来,因此深受病人和医护人员的欢迎。
一、工作原理
每毫升液体的滴数是由输液器滴管的口径决定的,一般为每毫升15滴,不同厂家生产的输液器规格有所不同,但大都在包装上给予标明。通过对液滴进行计数,再通过适当运算后加以显示,即可实时监测输液进程。

1.当剩余液量不足规定值(如20ml)时,发出音响报警,提示换液。
2.当停滴超过规定时间(如20s)时,发出音响报警,表示管路堵塞或排空,应及时进行处理。
3.通过测量两滴之间的间隔时间,可计算并显示出每分钟滴数,以便快速准确地调整输液速率。
二、主要功能:
1.换液提示报警。
2.堵塞或排空报警。
3.剩余液量显示。
4.输液速率显示。
5.输液器规格设定。
三、操作说明
打开电源开关,液晶显示器显示“-500”,表示液量为500ml。如按“Up”、Down”键,则显示以10为单位递增或递减,最大为“990”,最小为“20”。每滴完1ml显示减1。
按“Next”键,显示切换为“:XXX”,表示输液速率(每分钟滴数),每滴一滴,显示变化一次,方便医护人员快速了解输液速率,及时进行调整,大大提高工作效率,对急重病人可争取抢救时间。
再按“Next”键,显示切换为“XX.X”,用于对一次性输液器的规格进行设定,数值表示每毫升滴数,可通过“Up”、“Down”键,在0.5~25之间任意调整。调整后数值自动记忆,不必每次开机都进行调整。
再按“Next”键,则显示回到“-XXX”,实时显示输液进程。在显示为其它状态时,不影响计量的正常进行。
输液过程中,显示屏“-”号随着液滴滴落而闪烁。同时蜂鸣器发出“滴”音。
当两滴之间隔大于规定时间时,显示“LOBAT:000”并发出音响报警,表示发生堵塞或排空。
当液量少于20ml时显示“LOBAT+020”并发出音响报警,提示换液。
开关置消音位置时,不发出“滴”音,但不影响报警音响。
四、电路简介
电路的核心是PIC58BS单片机,该单片机是力源单片机技术研究所经过在美国Microchip公司的PIC16C58芯片上固化BASIC解释程序而成的,采用BASIC高级语言编程,易开发,成本低。程序及部分需要保存的数据存储在电可擦除存储器93LC66上。显示部分采用低功耗、低成本、大字符的三位半液晶显示模块FRS-1200PG。另由一片40106产生液晶驱动信号及音响报警信号,压电蜂鸣器发出报警音响。三个按键完成各功能的切换与设置。
PIC58BS单片机I/O口的低4位用于液滴信号输入和按键输入,兼作显示数据输出;高4位为显示位地址。
IC4:D为液晶显示模块提供交流驱动信号,该信号还与显示模块内部的报警显示笔划LOBAT信号经IC4:F、IC4:E和D1、D2异或处理,再经滤波及IC4:A整形后控制、IC4:B,在报警时,IC4:B产生8Hz左右的方波信号,使IC4:C音频振荡器断续工作,推动压电蜂鸣器发出音响报警信号。
本“安全输液监护器”已获得国家专利,专利号:ZL94218276.6。
五、程序清单:
5
b4=500 ’液量预置5则
W5=1500 ’显示“-500”
xs: dirs=255 ’置I/O
pins=w5/1000+128 ’显示
Pins=w5//1000/100+64
pins=w5//1000//00/10+32
pinsw=5//1000//100//10+16
loop: dirs=%11110000
if pinO=1 then cgq ’有输入
w4=w4+1
button 1,1,10,0,b1,1,next ’Next键
button 2,1,10,10,b2,1,zj ’Up键
button 3,1,10,10,b2,1,jx ’Down键
if w4<950 then loop ’定时不到转
W5=10000 ’排空报警
goto xs
cgq: pins=128
b5=b5-1 ’减1滴
if b5<>0 and b4>2 then cgql
b5=b3
if b4<=2 then xs4
b4=b4-1
cgql: branch b0,(xs1,xs2,xs3)
next: b0=b0+1 ’ next状态转换
if b0<=2 then cgql
b0=0
if b3=b5 then cgql
write 0,b3 ’保存滴数值
goto cgql
zj: branch b0,(zj1,loop,zj2)
zj1: b5=1
if b4>99 then xs1
b4=b4+1 ’液量增大
goto xs1
zj2: b3=b3+5 ’滴数值加1
goto xs3
jx: branch b0,(jX1,loop,jx2)
jx1: b5=1
if b4=3 then xs4
b4=b4-1 ’液量减小
goto xs1
jx2: b3=b3-5 ’滴值值减1
goto xs3
xs1: w5=b5-1*10/b3
W5=b4-1*10+w5+1000 ’液量显示
goto xs
xs2: w5=4800/w4+2000 ’速率显示
goto xs
xs3: w5=b3+4000 ’滴数显示
goto xs
xs4 w5=11020 ’报警显示
goto xs
(彭敢)