资源描述
.里仁学院课程设计说明书设计题目:基于单片机智能输液系统的设计 系 别:电气工程系 年级专业:生物医学工程12-1学 号: 121203041015 学生姓名: 周欢 指导教师: 郑成博 教师职称: 副教授 里仁学院课程设计任务书课程名称:基于单片机的智能输液系统设计基层教学单位:电气工程系 指导教师:郑成博学号121203041015学生姓名周欢班级生物医学工程12-1设计题目自动送料机传动装置(圆柱齿轮一级减速器)SLZ-1设计技术参数设计参数:1.工作电压:220V 2.报警容量10ML 3.无线传输距离1000次)ISP Flash ROM4.5-5.5V工作电压32个双向I/O口256x8bit内部RAM256x8bit内部RAM256x8bit内部RAM全双工UART串行中断口线时钟频率0-33MHz 2个外部中断源2个外部中断源2个外部中断源中断唤醒省电模式3级加密位灵活的ISP字节和分页编程看门狗(WDT)电路双数据寄存器指针软件设置空闲和省电功能以下图5为引脚图:图5 AT89S52的引脚图因为内置软件看门狗便宜和易于推广,可免除外部看门狗芯片,以降低成本,而且也容易掌握,和工业的80C51指令和引脚兼容,片上Flash允许程序存储器在系统可编程也灵活方便,故而选择AT89S52作为下位机的微处理器。VCC:电源GND:地P0口:P0端口是8位双向的漏极开路的I/O口。当作输出口用时,每位可以驱动8个TTL型的逻辑电平。当我们对P0口写入“1”时,此引脚就用作高阻抗输入来使用。在访问外部程序和数据存储器的时候,P0端口会作为低8位的地址/数据来使用。在这种情况下,P0端口就具有内部的上拉电阻了。在我们用flash进行编程时,P0端口会接收发送到的指令字节;在校验程序的时候,会输出指令字节的。我们知道在程序校验时,需要合适的外部上拉电阻。P1口:P1端口是双向的有内置的上拉电阻8位I/O口,P1口上的输出端的缓冲器可以同时驱动四个TTL型的逻辑电平进行工作。当我们对P1口写入“1”的时候,其内部的上拉电阻就会拉高端口,该端口就可以当作输入口来使用了。当作为输入使用时,在内部电阻作用下外部被放低的引脚,将会输出IIL型电流。此外,P1.0会作为计数器/定时器 2的外部计数的输入端口,P1.2会作为计数器/计时器2触发的输入端口。当我们对flash校验和编程的时候,P1端口会接到低8位的地址字节。P1引脚第二功能如表2所示:表2 P1引脚的第二功能P1.0T2用作定时器/计数器T2的外部的计数输入端口和时钟的输出端口P1.1T2EX用作定时器/计数器T2的重载/捕捉触发的信号与方向控制P1.5MOSI系统编程时用P1.6MISO系统编程时用P1.7SCK系统编程时用P2口:P2端口是双向的具有内部的上拉电阻的8位的I/O 端口,P2口上的输出缓冲器可以驱动四个TTL型的逻辑电平。当我们对P2端口写入“1”的时候,其内部的上拉电阻就会把端口拉高,此时就当作输入口来使用了。当该端口被当作输入口来使用时,在外部被拉低的引脚在内部电阻的作用下,将输出IIL型电流。在访问外部的程序存储器时,P2端口会送出高8位的地址,用16位地址读取外部数据存储器时也是这样。此时,P2端口会使用很强内部上拉来发送“1”。在使用8位的地址来访问外部数据存储器的时候,P2端口会输出P2锁存器中的内容。当在用flash编程和校验的时候,P2端口会依据接收到的高8位地址字节和控制信号来工作。P3口:P3是双向的具有内部的上拉电阻的8位的I/O 端口,P3上的输出缓冲器可以驱动四个TTL型的逻辑电平工作。当我们对P3口写入“1”的时候,其内部的上拉电阻就会把端口拉高,该端口就可以当作输入口来使用。当其当作输入口使用时,在外部被拉低的引脚在内部电阻的作用下,将会输出IIL型电流。P3端口也可以作为AT89S52的特殊功能来使用。另外,在我们进行flash编程验的时候,P3端口也会接收控制信号。图6为最小系统图:图6 AT89S52最小系统电路图3.2键盘设计根据要求需要两个按钮,具体电路如下:图7 键盘电路图键盘由一组按一定规则来排列的按键所组成的。实际上,一个按键就是一个起作用的开关元件。通俗来说,键盘就是一组按规则来排列的开关。我们知道按键按其结构原理来分成两类,一类为触点式的开关按键14,比如机械式的开关、导电橡胶式的开关等;一类为无触点的开关按键,比如电气式的按键,磁感应的按键等。就其特点而言,前者的造价低廉,后者的寿命较长。因此在微机系统里最常用的是触点式的开关按键,本文设计的系统也不例外。按照接口原理,键盘可以分为编码式键盘和非编码式键盘两大类。这两种键盘的区别之处是识别键符以及给出键码的方法。编码式键盘主要通过硬件实现了对键的识别,非编码式键盘是由软件控制实现了键盘定义和识别功能。全编码式键盘可以通过硬件逻辑来提供与键相对应的编码,另外还具有去除抖动与多、窜键保护的电路,这类键盘的使用较方便,但是需要的硬件较多,价格也较贵,一般的以单片机为核心的应用系统就很少采用。非编码式键盘只是简单提供了行列矩阵,其它的工作都是由软件来完成。其经济性强,广泛地应用在单片机的系统中15,本文所设计的系统便是如此。本文所设计的系统使用了机械式触点按键开关,其功能是将机械触点的通断转变成电气方面逻辑关系。就是说,它可以提供标准TTL逻辑的电平,以便可以同通用数字系统逻辑电平互容。机械式的按键在按下或者放开时,在机械弹性的作用下,通常会伴随一定时间内触点的机械抖动,而后触点才可以稳定下来。开关机械特性会直接影响抖动时间,一般是5 -10ms。按键的通断状态由触点在其抖动期间内检测出来,这样可能会导致出现判断错误。即按键在一次按完或者放开期间被误解为多次的操作,此种情况是绝对不允许发生的。为了避免触点机械抖动产生检测误判,就必须采取除抖动的措施,可以从硬、软件两个方面进行考虑。当键数少时,可以采用硬件除抖,当检测到了该键被释放后,在去按另外的按键。本文的键盘的控制程序具备以下的功能:(1)检测是否有按键按下,并且采取相应的硬件或者软件措施,来消除按键的机械触点产生的抖动的影响。(2)具有固定可靠逻辑方面的处理方法。而每一次只对一个按键进行处理,在此期间对于何种按键操作对此系统都不会产生影响,并且无论每次的按键时间是多长,系统只完成一次按键操作的程序功能。(3)准确无误地输出按键的值(或者键号),来达到跳转指令的要求。本文的系统因其所使用的按键比较少,所以采用了两个按钮的键盘。列线应分别连接在按键开关两端,行线要由上拉的电阻接在+5V 上。当按键未按下时,行线会处在高电平的状态下;当按键按下时,行线和列线将会导通,此时,行线的电平将会由与此线相连接的列线的电平来决定。这就是来识别按键是否按下的关键。按键是否按下均影响该键所在行、列线的电平,各按键间都会相互影响,因此,必须将行线、列线信号配合起来适当地处理,才能确定闭合键的位置。3.3数码显示电路按照相关的规定,输液时液速的正常范围应该是每分钟30到150滴,所以本系统的数码管选择了三位, LED显示模块使用了74HC164驱动共阴数码管。74HC164是8位的边沿触发式的移位寄存器,它是串行的输入数据,然后再并行的输出。这样数据便可通过两输入端(DSA或DSB)之一进行串行输入,任一个输入端都可以用作高电平的使能端,来控制另一个输入端输入数据。从单片机的串口输出的信号首先要送到最左边的移位寄存器(74HC164),因为移位脉冲的作用,数据便向右移,以此完成显示。采用串行显示,与并行显示相比,串行显示占用接口少,更加适用于本系统,数码显示的电路如图所示。显示电路的功能是显示电压与滴速,开机显示了电压的电量,医务人员会根据实际情况决定是否应需要插入电源,保证输液过程的正常工作。当有液滴滴下时,就开始显示:一方面可以方便护士在给病人输液时调节药液滴速,这样就防止了只凭经验来调速,造成调速不准的医疗隐患;另一方面方便了护士巡房,使医疗服务更加的准确、高效。以下图8为显示电路图:图8 数码管显示电路3.4声光报警电路声光报警用于以下的两种情况中:一是输液瓶中的液体快要滴完时,应及时地通知护士,让她尽快地拔针,避免造成血液的回流现象,产生危害病的人体健康事故。二是输液的过程中,如果病人保持一个固定的动作,很快就会感觉到手麻,在稍微的移动了一下,液滴的速度就可能发生过快或者过慢的现象,但是液速很快会恢复正常情况,这是不可避免的,这也属正常的情况,不必发出报警,尽量的减少了医务人员的工作量,若持续时间超过30秒,就可能是发生了血管的堵塞现象,或者是针头松掉了,这时应该及时地报警,提醒护士进行相应地处理8。.如果是重病患者,根据需要也可以屏蔽蜂鸣器,只要发光二极管不断闪动就可以了。本设计采用的蜂鸣器由直流电压来供电,分为有源和无源两种。有源的蜂鸣器要直接接到5V的电源就可以连续地发声,而无源的蜂鸣器则与电磁扬声器相似,要接到音频输出的电路中才可以发声9,因此本文设计的系统选用了有源的蜂鸣器。蜂鸣器需要较大的工作电流,单片机的输入/输出端口不能驱动其工作,一般需要采用三极管或者是其他的放大器件放大电流后才行。另外,一般的蜂鸣器在接通的时候发出的声音较单一,可能导致病人产生反感的情绪,进而造成了身体上的不适,所以本设计采用了定时器中断程序使得蜂鸣器发出了有节奏感的滴滴声,并且还增加了一个发光的二极管,伴随有节奏感的好听声音,发光的二极管会不断地闪动起来,医务人员就可以及时地进行处理。以下图9为报警电路图:图9 声光报警电路3.5液滴检测电路液滴检测电路是本次设计的重中之重,如果滴速计算的不准,将会带来很多不必要的麻烦,输液时间计算也会有所出入,报警不准容易造成护士的手忙脚乱,失去了智能监控的作用。信号采集处理电路如下图所示,若测试时检测到液滴的电压差信号过小,可在比较器前加上一级差动放大电路增大检测的可靠性。由信号采集电路原理图可以看出,当药瓶内的液体液面处于光路的上面时(或者液滴滴下切断了光路),红外发射的二极Send1射出的光就不能被红外接收的二极管Receive1所接收,从而Receive1就截止了,晶体管也就截止了,OP07的输出端是高电平了;当药瓶内的液体液面慢慢下降到光路的附近时(或者没有了液滴滴下时),红外发射的二极管Send1所射出的光就能被红外接收的二极管Receive1所接收,从而Receive1就导通了,晶体管也导通了,OP07的输出端就是低电平了,此时的单片机就产生了外部中断,驱动相应的电路来发出相应的报警信号,然后通知医务人员来采取紧急措施,从而达到了采集数据以及控制报警的目的。图10 液滴检测电路3.6液位监测单元与速度检测单元一样,本文也提出两种可以实现的方法,即有、无损探测。本文考虑到了系统医用卫生的标准,输液吊瓶中要应尽量地避免有异物的进入,于是就选用了红外无损的探测方案11。通常情况下,吊瓶壁的厚度与外直径都要比滴斗要大的多,但当我们增大红外的发射功率之后,经过有水与无水储液瓶所接到的信号不同仍在30-40mV 之间,这说明了红外的无损的探测方式对超越限值报警的电路而言是行得通的12。因为本文的越限报警的电路只是需要工作在液体下降至红外的发射接收的通路高度之下,所以本文的传感器单元所接收的信号无需经过滤波环节,只是需要放大工作即可,出于信号的传输损耗越小的考虑,本文将初级放大单元的电路和传感器单元一起设计安装在了储液瓶的旁边。然后在设定一个门限电平,使接收信号高于门限电平时给单片机送入一个信号,产生警报,即构成了越限报警电路13,其系统框图及电路图分别如下图11和图12所示:图11 单元框图图12 液位检测电路图3.7电源电路的设计电源在电路设计中是非常重要的,电压太大,就会导致电流过大,容易减少元器件的寿命,甚至会烧坏单片机的芯片,造成不可估算的损失,本系统需要产生的电平包括:5V电压:单片机控制芯片,红外对管,步进电机,报警电路。因此在本设计中采用单电源方案,单电源方案的优点是系统简单、工作可靠。在设计中我们采用所有元件的适中电压+5V,它通过变压器先把生活中常用的交流电变换成+5V的电压,再用稳压器把它稳定在5V。电路图如下图所示:IC采用集成稳压器7805,C1、C2分别为输入端和输出端滤波电容,RL为负载电阻。当输出电较大时,7805应配上散热板。以下图13为电源电路图:图13 电源电路4软件设计要想保证整个输液监控系统设计能够正常的工作,硬、软件设计都是不可以忽视的组成部分。没有了硬件,软件就是一堆乱码,没有了软件,硬件就是空壳了,所以即使硬件设计比较完整,但是如果没有了软件应用部分,本文所设计的系统还是不可以工作的。所以只有将合乎设计的要求的嵌入式的软件控制程序下载至相应的硬件电路板之上,系统的各个部分才能够正常运行,完成预期。4.1主控模块设计主控模块作为软件系统的核心,在工作的时候首先要对数据缓冲区和串口部分进行初始化,然后协调各个子模块进行工作。本次设计的初始化主要包含以下两方面,一是对于串口要进行必要的初始化工作,让其在方式1下工作,而波特率则是由定时器T1的溢出率设定,设定为1200bit/s,并让其工作在允许接收状态下。单片机的外围电路里使用了频率是11.0592MHz 的晶振,需要设定定时器1的初始值248(OE8)。串口数据的通信过程里的发送和接收必须要通过中断来进行实现,因此必须要设置串口中断方式;二是对于外部的中断0的设置,在输液的监控系统的过程中,当有液滴滴下的时候,液滴的检测电路会捕捉所产生电信号的来源,再发出1个数字的脉冲信号,送到单片机的内部使其产生了1个外部的中断0。本系统在中断计数的时候,应该启动外部中断0,并且将其设定在电平的触发模式中,及用于计数的R4寄存器内部清零17。4.2点滴速度的测量模块设计点滴速度存在两种测量方式。一是:以点滴每次间隙为单位,记录出一次点滴所用时间,用60来除以点滴的间隔单位的时间就可以得到点滴数/每分钟。此方法用除法操作,如果点滴速度比较快,测量误差也较大。而测量所得到点滴的单位时间误差会被 60 秒的时间单位所放大。但此方法用在点滴速度的修正上,可以适时的测得点滴速度的变化量,其适用于调整滴速的场合。二是:用单位时间来记录出点滴数。利用乘法计算来算出滴速,此法存在一定弊端,如果单位时间里的点滴数目不是整数,就容易存在测量的误差。但若是在滴速恒定情况下,可以采取在许多单位时间里取均值,从而求出单位时间的平均点滴数,这样就可以达到比较高的精度18.在本次设计中,将采用将两者结合起来的方法进行测量。以点滴为单位,同时对于多个点滴来测量,计算出滴速。如图是实现原理。 中断计数 A B 中断计数图14 脉冲电路图定时器 T 0的定时时间是200us,当系统检测到有脉冲信号发出时,程序就开始进行相应的中断处理,将计数器里存储的内容读出来,然后将计数器进行清零,作为了记录脉冲信号的初始值,将其计为COUNT=0,当定时器的时间到达了 200us时,程序中断就会检测输入的信号是否是有脉冲信号,同时将计数器进行加1的操作,即计COUNT=1,另外设置计数器COUNT=1所记录的检测到的脉冲信号的个数,设置计数器COUNT=1存储单元为10,这样就可循环存储脉冲的个数。我们可以在定时器COUNT=1中取出5个相临脉冲的信号点(可以设定起始的脉冲点为 x,其相对应于计数器COUNT数值为n1,那么第五脉冲点就为x+5,其相对应于计数器COUNT数值为n 2),这时就计算出了经过五个脉冲点的时间是:t = (n2 - n1)200us,从而就得到了相临的脉冲信号时间间隔平均值是:T=t/5,也就得到了点滴速度是:v=60s/T=1500/(n2-n1)19。经过以上的分析与计算,就得到了点滴速度的测量程序图。开始定时200us设置计数器COUNT=0设置计数器COUNT1=0定时结束退出中断否是COUNT加1检测到脉冲信号否是COUNT1加1.图15 点滴速度的框架图4.3显示报警模块的设计查询液滴过慢或有没有液滴落下时及时的报警模块程序设计主要是依靠 4s 定时中断程序来实现。根据以上的分析,在输液进程中滴下的液滴的数量最主要是利用程序对INT0传送来的信号边缘进行检测计数,并且在程序中使用R4计数器加1来实现对液滴的计数。因此,只要在4s内有液滴滴下时R4中的值就一定会改变,正常的输液在4s的时间内R4的值是一定会变化的。因此,就可以通过判断4s内R4的值是否发生变化,来判断在这4s的时间间隔中是不是有液滴滴下,当R4的值有变化时就说4s内有液滴滴下;当判断出R4的值没有任何变化时就说明4s内没有液滴滴下,给报警标志位置1,让它们分别驱动蜂鸣器和发光二极管进行声光报警。在本次设计中若出现以下情况下时就会进行报警:当输液正常完成时,这时最后一滴液体以后就没有液滴滴下了,这就相当于两滴液体的间隔时间为无穷大,即远远大于4s的定时,这时R4的值就不会发生变化,就开始报警;输液因意外情况而发生中断的,这时当中断前的某一液滴滴下后,再就没有其他液滴滴下了,其与第一种现象是相同的,这时R4的值也不会变化,也发出报警信号;输液太慢时,两液滴滴下的时间间隔超过了四秒,这时R4的值也不会变化,也报警。当出现了以上情况时,本系统的单片机的T0端口就输出了高电平,这时蜂鸣器就会进入到工作的状态而开始鸣叫,提醒病人液滴已经输完或者有意外发生。其他情况下,也就是两液滴滴下的时间间隔小于4s时就为正常工作,单片机TO脚就输出低电平,蜂鸣器停止。流程图如下图16所示:开始开始无线模块初始化状态灯显示有液滴滴下有数据发送NN接收数据YY显示发送数据液滴是否结束结束N声光报警Y结束图16 显示声光报警框架图声光报警是系统设计不可或缺的部分,为了不影响病人情绪,报警时我们采用有节奏的报警声音,主要有软件部分来设定,当液滴不再下落超过5S时开始报警报警。附录附录整体电路图附录程序滴速控制程序ORG 0000HRESET: AJMP MAIN ORG 000BH AJMP IT1P ORG 0100HMAIN: MOV SP,#60H MOV TMOD,#01H ACALL PT1M0HERE: AJMP HEREPT1M0: MOV TL1,#0CH MOV TH1,#0FEH SETB ET1 SETB EA SETB TR1 RETIT1P: MOV TL1,#0CH MOV TH1,#0FEH CPL P1.0 RETI查询方式的参考程序如下: MOV TMOD,#01HLOOP: MOV TH1,#0FEH MOV TL1,#0CH SETB TR1LOOP1: JNB TF1,LOOP1 CLR TR1 CPL P1.0 SJMP LOOP显示子程序:DIR SETB P2.2 MOV R7,#08H MOV R0,#7FHDL0 MOV A,R0 ADD, A,#0DH MOVC A,A+PC MOV SBUF,ADL1: JNB TI,DL1 CLR TI DEC R0 DJNZ R7,DL0 CLR P2.2 RET SEGTAB: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,90H DB 88H,83H,0C6H,0A1H,86H DB 8FH,0BFH,8CH,0FFH,0FFH键盘子程序:KEYI: MOV A,#00H MOV SBUF,AKL0: JNB TI,KL0 CLR TIKL1: JNB P2.0,PK1 JB P2.1, KL1PK1: ACALL DL10 JNB P2.0,PK2 JB P2.1,KL2PK2: MOV R7,#08H MOV R6,#0FEH MOV R3,#00H MOV A,R6KL5: MOV SBUF,AKL2: JNB TI,KL2 CLR TI JNB P2.0,PKONE JB P2.1,NEXT MOV R4,#08H AJMP PK3PKONE: MOV R4,#00HPK3: MOV SBUF,#00HKL3: JNB TI,KL3 CLR TIKL4: JNB P2.0,KL4 JNB P2.1 MOV A,R4 ADD A,R3 RETNEXT: MOV A,R6 RL A MOV R6,A INC R3 DJNE R7,KL5 AJMP KEYIDL10: MOV R7,#0AHDL: MOV R6,#0FFHDL6: DJNZ R6,DL6 DJNZ R7,DL RET蜂鸣报警程序:SOUND: SETB T0 MOV R4,#64HLOOP: MOV R3,#0F9HLOOP1: DJNZ R3,LOOP1 DJNZ R4,LOOP CLR T0 RET 参考文献.1 于向英.新型弹簧输液报警器的研制与应用J.护理学杂志,2003,18(8):6092 伶望舒等.输液瓶液位测量及报警装置J.中国现代教育装备,2010,(7):33-343 胡汉才.单片机原理及其接口技术M.北京:清华大学出版社,2006,3:1-12 4 曹海建 庞英.静脉输液制动控制装置的设计J.青岛大学学报(工程技术版)2004.65 张永东 班旭东.输液速度自动测控系统的设计与实现J.自动化与仪器仪表 2005(3):6 崎艳芳.输液速度自动调节系统的设计J.卫生职业教育 2008(16):151-1537 许宜申,朱欣华 基于 VC+6.0 的 PC 机与单片机之间的串行通信.J结语值此论文完成之际,谨向那些曾教导我的师长、帮助我的同学,表达我诚挚的谢意!短短几年的大学时光就要过去了,我感受颇深。大学教会了我自主学习的能力,同时这也与老师的教诲是分不开的。在此论文的写作过程中,老师严谨的治学态度、一丝不苟的工作作风和丰富的理论、实践经验深深地影响了我,使我在以后的学习与工作里受益终生。在此老师表示深深地感谢!我也要感谢亲爱的同学们,在我有了困难的时候是你们给予了我帮助,当我处在意志薄弱的时期给予我鼓励。彼此友爱,互帮互助的和谐气氛给予了我无尽的温暖,让我重燃了克服困难的信心。任何困难都不是阻挡我们的问题,问题是我们有没有勇气去面对!
展开阅读全文