基于单片机的病床呼叫系统设计Word文档下载推荐.docx
《基于单片机的病床呼叫系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的病床呼叫系统设计Word文档下载推荐.docx(26页珍藏版)》请在冰点文库上搜索。
结束语 20
附录 21
附录一:
PROTEL原理图 21
附录二:
PCB电路图 22
附录三:
实物图 23
附录四:
C语言源程序 24
1.绪论
1.1课题设计的背景及意义
信息时期医院的管理多数都已经从传统落后的人工服务模式,向电子化、智能化、网络化的科技管理模式方向迅速发展。
“病床呼叫系统”可实现对医院病室病房的智能化把控,也可促成呼救、信息保存、显示等等功能。
病人住院的时候,会在任何可能出现问题的时间需要医护人员去诊断或者护理。
临床的呼叫是传送病人即时消息非常重要的措施,病人向值班医师或护士提出紧急呼叫的时候,病床呼叫系统充当工具的作用,若想要将患者的请求即时地传送给医护人员,并且被医院监控中心记下完整准确的信息,同时也是提高医院和病护的重要组成部分[1]。
本次设计是以AT89C51为中心的病人呼叫系统,通过采集病区数据的信息,采用LCD1602显示屏显示蜂鸣器并进行报警的呼叫设计。
可以落实医院医护人员和病人病房之间的呼叫联系,有使用便捷、操作起来简单等优点。
病床呼叫系统可以应用于养老院、医疗机构、医院的病房等地方,也可以用来联通医护人员和病人,同时是提高医院的医疗水平必需设备之一。
病床的呼叫系统的好坏会直接影响到病员的生命财产安全,历来受到各种大医院的广泛重视。
它要求必须得简便可行、准确可靠、并且利于推广。
病床呼叫系统利于病人快速地呼叫护士,大大缩短了人工的呼叫时间。
现在病房呼叫系统正逐步地向高度智能化发展,它也可以和摄像机在一起使用,每当病人按开关,护士值班室的大屏幕上能够即时地观察了解病人的需要。
并可以配对讲机等通讯设备,能使病人快捷及时地与医务人员进行沟通交流。
有了病床呼叫系统,医院对病人的护理工作变得愈加方便全面,不再烦恼于未能及时发现突发病况而一发不可收拾。
总的来说,51系列单片机设计的病床呼叫系统能可靠、准确、及时地促成病房呼叫管制,有良好的前景应用[2]。
1.2设计要求及预期目标
最近几年来伴随着人们生活水平的不断提高,大家对医疗机构水平的要求也在不断地提高,尤其是在某些突发情况下病员请求值班医护人员进行及时的诊断或者护理,这一过程对提升医院管理服务质量就会显得尤为重要,在这同时也会很大程度上提高医院应对突然发升的事件的能力。
所以,一种全新型的临床呼叫仪器一跃成为最近几年来的研究热门之
26
一。
呼叫系统直接关系到病人的生命安全,受到各大医院广泛关注。
它要求及时,准确,可靠,简单可行,有利于促进电力线载波通信技术的应用,单片机多机通信和计算机监控和管理技术设计,振铃,呼叫排队,的病床呼叫系统录音等功能,满足医院管理和医院护理。
设计要求:
以单芯片微型计算机监控的设计为目标,设计一个(模拟)病床呼叫控制器。
可以监视多个床,床做出及时的声音报警和显示病床数称为准确,使医护人员可以及时、准确地向医院的患者,给予及时的救援和医疗。
预期目标:
病人按确认键,通过单片机控制处理,护士值班室报警,同时,1602液晶会显示相应的床号,当护士按下停止响应按键,液晶显示器由定时器控制显示”Iknow”。
当有多个病人呼叫时同时响应,对应于每个床床数显示,同时报警。
通过对上述设计任务的分析,可以细分为以下几个部分,最终的调试也是将以下部分为依据:
① 当有病人按下按键时,液晶显示器上显示病人的病房号,病床号;
②在护士按下清零键后,液晶显示器上内容恢复到初始状态;
③若在护士按下清零键前有多个病人按键,则液晶显示器上将循环显示各个病人的信息,直到护士按下清零键后,液晶显示器上内容恢复到初始状态。
1.3设计可行性
在医院的正常运行中,医疗设备起到一个重要的角色的作用,病房呼叫系统是其中的一个。
作为每一个床的基本配置,它可以使病人打电话更方便,更简化了医务人员的工作。
目前市场上有很多种不同的病房呼叫系统功能的不同,主要分为两类:
有线和无线。
无线病房呼叫系统线路铺设不存在问题,但可靠性差,和无线电波会干扰其他医疗设备。
本设计的电缆类型,适合中小型医院使用,具有成本低,操作简单,安装和维护,而且具有稳定可靠的特点,不会受到其他医疗设备的干扰;
但由接线较多,影响美观,不宜大医院。
我们利用AT89S51芯片设计了一套简单可行,系统性能稳定,对该系统的测试完全可以满足医院的需要。
1.4设计方案及步骤
根据设计要求,基于C51单片机为核心的病床呼叫系统有6个独立按键,每个按键对应不同的床。
在没有病人呼叫时屏幕显示初始化界面;
当病人床边按下相应的按钮,产生
一个中断信号。
单片机接收到中断信号的中断服务程序呼叫识别号码后,显示病床床位数,通过LCD1602显示床位号,蜂鸣器报警信号;
通过阅读屏幕上提示,护士可以快速准确地了解到病人的需求,并作出相应的准备和处理,处理完成按“清除”按钮,可以删除通话记录,等待下次呼叫,同时液晶屏幕上再次显示“HAPPYEVERYDAY”。
其结构图如下:
液晶显示
键盘
单片机
蜂鸣器报
警
图1.1病床呼叫系统结构图
1.4.1键盘采集方案选择
键盘的工作方式应该根据实际应用系统中CPU的工作状况而选定选取的规则是既能保证CPU可以及时响应6个按键操作而又不需要占用过多CPU工作的时间。
通常来说键盘工作的方式有三种即编程扫描、定时扫描和中断扫描。
1编程扫描工作方式
编程扫描工作方式指的是利用CPU进行完成其他工程的空闲时间调取键盘扫描子程序来检测按键状态反应键盘输入。
执行按键功能得程序时CPU不会再享有按键输入需求一直到CPU再次扫描键盘为终止。
2定时扫描工作方式
定时扫描工作方式指的是每间隔一小段时间对按键扫描一次,它利用单片机的内部定时器产生固定时间如20ms的定时,定时时间到了产生定时器就会溢出中断。
CPU在中断服务程序中键盘进行扫描并在有键按下时识别出该键并保存键号然后在中断服务程序或主程序中执行该键的功能程序
3中断扫描工作方式
中断扫描工作方式就是当有按键被按下时,电路产生中断信号,单片机收到中断信号
后就执行对应的中断服务子程序响应该按键,处理完后CPU又开始循环等待下一次按键按下。
当采用两个键盘扫描方式,无论是否有键按下CPU定时扫描键盘和单片机应用系统往往需要工作不是键盘输入。
CPU通常是空的,浪费了很多时间扫描。
CPU不扫描键盘并按一个按钮与相应的电路产生一个中断请求,该CPU响应中断执行,键盘扫描子程序和确定按键号[3]。
所以本设计中利用中断扫描工作方式采集键盘信息。
1.4.2设计芯片的选择
C51单片机:
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的CPU、RAM、ROM、多路I/O口和中断系统、定时器/计数器等功能集成到一块芯片上的一个小系统,通过编写程序下载到单片机的程序存储器以实现不同的功能[4]。
液晶显示器LCD1602:
相对于数码管、LED二极管点阵等,液晶显示具有可以实现汉字的显示,硬件电路连接比较简单等优点。
2.系统硬件设计
2.1系统原理框图
根据病床呼叫系统要求初步绘制出系统原理框图如图2-1所示。
应答按键
按键电路
声音报警
图2-1系统原理框图
2.2芯片简介
。
STC89C51是一种低耗、高功能CMOS8位微型控制器,具有8K 字节存在于系统,可以编程的Flash存储器。
在单个的芯片上,具有灵活的8位CPU和在系统可以编程Flash,使得以STC89C51为许多嵌入式控制系统提供高灵巧、高超有效解决问题的方案。
有以下几个标准的功能:
8kFlash,512RAM,32位I/O口线,内置4KBEEPROM,三个16位定时器/计数器,一个6向量2级中断的结构。
除此之外STC89X51可降至0Hz非动态逻辑操控,支持两种软件可以选省电方式。
空闲模式下,CPU会停止工作,准许RAM、计数器/定时器、中断会继续工作。
在漏电受到保护下,RAM中的内容就会被保存,另外振荡器被冻结,单片机停止一切工作状态,一直会持续到下一个信号产生中断或者硬件复位。
最高
运作频率35Mhz,6T/12T可选
[5]
图2-2STC89C51单片机引脚图
STC89C51是机内有ROM/EPROM单元的单片机,所以,这类芯片组成的最小系统最为简单﹑可靠。
用51单片机组成最小应用的系统时,只需要将单片机外接上时钟电路和复位
电路就行,结构如下图2-3所示,由于受到集成度的限制下,最小应用系统被迫只能用作一些较小型的控制单元。
时钟电路
I/O
口
复位电路
图2-3单片机最小系统原理框图
(1)时钟电路
STC89C51单片机的时钟信号一般会由两种工作方式产生:
一种是内部时钟工作方式,第二种是外部时钟工作方式。
内部时钟工作方式如下图2-4所示。
在STC89C51单片机内部有一个晶振电路,只需把石英晶体(简称晶振)接在单片机的XTAL1(18)和XTAL2(19)引脚外面,就会自然构成自激式振荡器而且会在单片机的内部产生时钟脉冲信号。
图中电容C1和C2的作用就是用来稳定频率并且快速起振,电容在5~30pF之间,典型的值为30pF。
晶振CYS振荡的频率范围是在1.2~12MHz之间选择,典型的值为12MHz和6MHz。
图2-4STC89C51内部时钟电路
(2)复位电路
STC89C51单片机RST引脚在引入高电平时,保持2个机器周期就会使单片机的内部进行复位操作。
复位电路一般采用上电和按钮复位方式。
最单一的上电自动复位电路中,上电自动复位通过外部的复位电路电容充放电来实现。
只要Vcc上升的时间不超过1ms,就会实现自动上电复位。
除上电复位以外,有的时候还需要我们按键手动去复位。
本设计的就是按键手动复位。
按键手动复位具有电平工作方式和脉冲工作方式两种。
其中的电平复位是通过RST(9)端与电源Vcc接通实现的。
按键手动复位见图2-5。
时钟频率用11.0592MHZ时C取10uF,R取10kΩ。
图2-5STC89C51复位电路
(3)STC89C51中断技术概述
中断技术主要用于实时监测和控制要求,单片机的中断源服务请求及时响应,并做出快速反应、及时处理。
这是由中断系统芯片的实现。
当中断请求发出中断请求时,如果中断请求是允许的,单片机暂停当前正在执行的主程序,中断服务程序,中断服务请求。
中断服务程序处理完中断服务请求,然后回到原来的地方暂停程序(断点),继续执行被中断的程序。
图2-6中断响应与处理。
序程主
中断
响应中断
序程务服断中
返回主程序
图2-6中断响应和处理过程
如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。
采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。
2.3硬件模块设计
由图2-1系统原理框图可知,整个系统分为五个模块:
按键电路模块、液晶显示模块、声音报警模块、按键应答模块。
下面将简单的介绍各个模块设计方案。
2.3.1按键电路模块
在单片机应用系统中,通常一个人-机对话功能。
它包含的状态干预,系统数据输入应用系统报告运行状态和运行结果。
键盘已经成为一种必要的手段,人-机连接,你需要配置
适当的键盘输入装置。
键盘的工作原理,一个键盘,可以看作是一个常开开关电路各关键,当功能的键或按下的键,当你设置的数量,可以在一个封闭的状态。
对于一组键或键盘,通过用单片机实现的关键接口电路连接,为了方便单片机的开关状态通知。
和单片机用于查询或中断方式来检查有没有输入键,该键被按下,并通过功能键转移指令传送到执行此程序,然后返回到原始执行状态。
独立的关键是指直接使用I/O口线组成的单一关键电路。
每个按钮将出现在单独的行上的I/O端口,我/每个工作状态输出端口线不会影响其它I/O口线的工作状态[6]。
2.3.2液晶显示模块
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块,一般1602字符型液晶显示器实物如下图:
2.3.3声音报警模块
图2-71602实物图
该设计设有声音报警模块,当出现病人呼叫医务人员时,蜂鸣器则会报警提示,一直持续到护士按下应答按键,才会停止报警,控制引脚一般接在P3.4引脚上,同时利用三极管做开关电路起到保护单片机的作用,还可以放大电流,当三极管的基极为高电平时,
发射极截止,为低电平时,发射极导通[7]。
报警模块如图2-8所示。
VCC
P34
R4
Q1
8550
1k
蜂鸣器
图2-8声音报警模块
2.3.4应答电路
本设计中四个床位使用一个应答按钮,接在P3.3引脚上,当有病人按下按钮,报警开始时,按下应答按钮,即可停止报警,应答模块图如图2-14所示
VCC
R5
10k
S1
P33
图2-9应答电路
3.系统软件设计
在单片机软件开发过程中,编程要合理利用各种中断机制。
本系统拿控制算法来说,会有实时性的要求,任务复杂,并且人机交互的操作还通常会进行动态地改变应用程序运行的模式,尤其是在人机界面又需要占用CPU的许多时间,与此同时而又不允许遗漏重要的数据。
同时还需要随时随地的准备向上位机去发送数据。
因此,需要学会综合地采用消息机制和状态转移的方法来统一解决好CPU的安排。
在中断服务的程序中,向主程序消
息队列中加入相应的消息,来达成将中断服务的程序中处理部分分开的目的。
本系统有两个重要中断:
上位机的中断和键盘的中断。
中断服务程序返回到主程序中后,主程序只会处理循环消息,并为消息处理的对象发送所需要的信息,当收到主程序发送来的消息后,信息响应函数得到控制权,做好相应处理后会将控制权还给主程序进行继续消息循环处理。
用户的请求仅仅是向信息队列中添入相应消息。
主程序还要查询信息队列就是时间,根据时间的区别,调用相应消息的处理函数,在本系统中,时间会表现为一个变量,通过在给该变量赋不同值来反馈不同的消息。
对于中断触发的信息,因为消息的处理函数已经结束了中断的处理过程,故系统对消息的处理不会再像中断的服务程序那般样,在时间上会有十分严格的要求;
于此同时,在信息处理过程中,用户仍然可以通过键中断来与系统进行沟通[8]。
3.1主函数程序设计
一个完整的程序中只有一个main函数,首先调用初始化函数进行初始化,然后判断并调用显示子程序使液晶1602显示、蜂鸣器鸣响报警。
程序流程如图3-1所示:
开始
调用初始化子程序
液晶显示欢迎语
判断是否有床位报警
否
是
蜂鸣器报警液晶显示床号
应答按键是否按下
关闭报警器液晶显示知晓
结束
图3-1主程序流程图
3.2中断程序设计
矩阵键盘的中断程序主要是对按键的扫描以实现对按键的键号识别,同时对键号对应的病房,病床号以及按键的时间进行存储。
主函数通过调用存储的数据便可实现病房信息
的循环显示。
其设计流程图如图4.2所示。
需要说明的是,在此中断程序中抖动的识别可以通过延时一段时间后再对D及CLEAR
进入中端
定时器赋初值
数据脚状态改变
将床号赋给变量
读取床号并增加1
送新行显示数据
消隐
切换显示数据
发送新床号
显示数据
的高低电平进行判断来实现,若延时后仍然有低电平则不是抖动而是真的有按键按下。
矩阵键盘的中断程序设计如下
图3-2中断程序
3.3显示模块设计
显示程序描述
(1)按下键总数显示子程序描述(图4.12按键总数显示程序流程图)
把按键数存储单总元(COUNTER)的值经过BCD调整后十位和个位分别送(7AH()7BH),调用显示子程序显示按键总数。
循环显示病床号子程序描述(图4.13按键循环显示子程序)
首先需要判断的是标志位是否为0,如果为0,就表示对应存储单元里没有值存入,则会再次检测下一个存储单元的标志位是否为0,直到检测到为1为止.如果为1,则会把值存入(BED_BOUNTER)中,紧接着进行BCD调整为十进制,把十位和个位分别送入
(BEDCODE_1)和(BEDCODE_2中,然后调用显示子程序,循环显示病床号。
计算键值子程序
初始化
键标志为0?
(COUNTER)+1
INTFLAG
410个单元扫描完?
调BCD调子程序
调显示子程序
图3-3显示函数流程图
4.系统的调试与结果
系统调试工作是系统开发过程中必不可少的一个过程,一个完整的控制系统调试包含控制系统的硬件联调、软件联调、系统仿真、仿真烧录和现场安装调试等几个环节。
在系统设计组装完成后,首先是进行实验室条件下的系统硬件调试,调试成功后,有了硬件的保证,就容易发现软件的漏洞,进而促进改进和完善。
所有的调试通过后,要进行现场运行并能持续一定的时间,待其中未发现故障后,方可验收合格,才算完成了整个系统的设计工作[9]。
4.1调试界面显示
下面是我们通过Proteus软件编程,使对应的软件仿真模块变成可视化的控制界面:
图4-1-1系统初始化界面 图4-1-2按下4键后界面
图4-1-3按下1234键后显示界面 图4-1-4按下确认键后显示界面实物图片如下:
初始化界面;
图4-1-5初始化界面
按下4键后界面
图4-1-6按下4键后界面
按下1234键后显示界面
图5-1-7按下1234键后显示界面
按下确认键后显示界面
图4-1-8按下确认键后显示界面
4.2结果分析
首先启动电源,显示屏会显示HappyEveryDay字样,在按下4号键时,屏幕显示病床(即4号病床呼叫);
界面上部分表示有一个病床按下,在起始位置显示;
如果现在不
按清零键,再按下1,2,3号键时,按键号同时显示,可以看出该系统具有多数字共存功能,
以至于不会忽略之前按下的按键;
图4.8反映了控制电路的可行性,按确认键后屏幕显示Iknow,医护人员去病人房间。
综上所述,本系统实现了主要功能:
显示病床号,亮报警提醒值班人员,若有多个病床同时呼叫,则同时显示病床号,确保性息不丢失,待值班人员处理呼叫信息。
通过PROTEUS软件仿真,能达到上述结论,满足课题目目的,达到要求。
结束语
至此,本设计的主要内容已经完成。
本章是在对前面完成的工作进行总结的基础上,提出今后进一步工作的建议和设想。
选择这个课题之后,我明白要解决的难点:
病人都按开关时,在数码显示器能循环显示病床,这也就是考验我们对所学知识有比较透彻的了解和我们的耐心。
接下来每天奔波在宿舍、餐厅三点一线的生活,虽然有点累,但很充实,在这之中还去请教老师和同学,他们耐心的教导让我更加坚定了对该课题的研究,另外还有很多老师的帮助。
在设计的过程中遇到了很多问题,可以说得是困难重重,在遇到各种各样问题的同时,会发现了自己的不足之处,如对以前所学过的知识理解得不够深刻,掌握得不够牢固。
比如说Protel软件应用的不够熟练、Proteus仿真知识及操作、对单片机汇编语言掌握得不好。
不过通过这次设计之后,也学到了很多知识,更重要的是一定把以前所学过的知识重新温故,学好用好,学以致用。
最后在百般努力下,这次设计终于完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于实现了设计的要求。
这一次设计给我的总体感觉很好,因为我学到了很多的东西。
只要自己能够找好的学习方法,在过程中不断的努力。
那么学到的东西肯定会有很多,我相信我是能够做好的。
附 录
Protel原理图
PCB电路图
实物图
C语言源程序
#include<
reg52.h>
//头文件
#defineucunsignedchar#defineuiunsignedint
sbitRS=P1^4;
sbitRW=P1^5;
sbitE=P1^6;
//1602引脚定义
sbitD0