课程设计论文基于51单片机的病房呼叫系统软件.docx
- 文档编号:29758656
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:12
- 大小:83.72KB
课程设计论文基于51单片机的病房呼叫系统软件.docx
《课程设计论文基于51单片机的病房呼叫系统软件.docx》由会员分享,可在线阅读,更多相关《课程设计论文基于51单片机的病房呼叫系统软件.docx(12页珍藏版)》请在冰豆网上搜索。
课程设计论文基于51单片机的病房呼叫系统软件
基于51单片机的病房呼叫系统(软件)
段露露
摘要:
病房呼叫系统是一种常见的、必备的医疗设备。
传统的病房呼叫系统[10]由单片机、蜂鸣器、数码管以及矩阵键盘构成,这种病房呼叫器存在多方面的缺陷:
(1)传统的病房呼叫系统,病人按键后值班室有相应显示而病房里没有反馈信息,使得对于患者及家属而言,并不知道医护人员是否得知消息;
(2)它只用一个数码管显示,当多人同时按键时,数码管只能显示最先按键的病房号,后面的号码依次排队。
针对上述缺陷本设计开展的工作包括:
(1)增加了医护人员获得病人呼叫后的反馈信息,这个反馈信息以病房中LED灯点亮的形式,反馈给病人医护人员是否得知信息,便于病人家属采取相应措施;
(2)把一个数码管显示改为多个LED灯显示,所有按键的病房对应的LED灯同时点亮。
该系统在原来的基础上实现了新的提升,大大增加了病房呼叫系统的时效性和实用性。
关键词:
病房呼叫系统;单片机;反馈;同时显示
在时代科技迅猛发展的同时,电子信息技术已经深入到我们的生活当中,身边的电子产品随处可见。
单片机[2][7]作为世界上数量最多的计算机,其在智能仪器仪表、工业控制、家用电器、计算机网络和通信领域、医用设备领域、汽车设备领域等方面的应用已十分广泛。
因此,单片机技术开发和应用水平已逐步成为衡量一个国家工业发展水平的标志之一。
病房呼叫系统[5][6]就是单片机在医用设备领域中的一个普通而重要的应用,是各个医院里的一项必须的设备。
该系统是住院患者和医护人员之间的一种既方便又快捷的沟通方式,主要通过病人按键和值班室亮灯、蜂鸣器发声达到传达信息的目的。
本设计是基于51单片机的病房呼叫系统,以AT89C52为主控核心,在LED灯、蜂鸣器以及矩阵键盘的组合下,完成了对传统病房呼叫系统缺陷的改善和进一步升级。
1系统程序设计
1.1主程序设计
流程图如图1所示,主函数[1]是一个完整的程序入口函数,即voidmain()。
该设计的主函数是4*4矩阵键盘[4][5]、LED灯显示、蜂鸣器电路、按键应答和反馈电路5个子程序组。
主要是通过对4*4矩阵键盘的初始化检测键盘是否有键值的输入,即判断是否有键按下。
通过对键盘的扫描将键值进行处理,并送缓冲区,随之LED灯变亮,蜂鸣器发声,当应答部分的有键值的输入(即护士按键响应),护士站的LED灯灭,程序结束。
同时,通过延时判断是否有应答,当无应答时则会反馈给病房,病房的LED灯点亮
图1系统功能流程图
1.2矩阵键盘程序读取
矩阵键盘如图2所示,首先需要对4*4矩阵键盘进行识别,判断键盘有无按键按下,若无键按下返回。
如果有键按下,找出具体的按键值。
键盘键值读取可分为4部分,每排为一个部分,当一排当中有一个键或多个键同时按下时,读取的键值是一样的。
图2矩阵键盘图
1.3LED灯介绍及设计
LED灯的主要部件是一快半导体的晶片[7],晶片的一端上有一个支架,一端是正极,而另一端则是负极,环氧树脂封装着整个晶片。
半导体晶片可分为两部分,一部分是N型半导体,在这边主要是电子,另一端是P型半导体,在它里面空穴占主导地位。
这两种半导体可以连形成一个“P-N结”。
当这个晶片通过电流起作用的时候,被推向P区的电子就会与P区里的空穴复合,然后会放出能量,这就是LED发光的原理。
本设计采用LED灯亮灯显示。
系统共设计8个LED灯显示,分别是护士站4个,设计中的4个病房,每个病房一个。
在第一个病房一排按键中,如果有键按下,led11处于低电平,即护士站的第一个LED灯点亮;同理,当第二个病房的二排按键中有键按下,Led22处于低电平,护士站的第二个LED灯点亮;设计中的4个病房是同样的道理。
1.4蜂鸣器设计
本设计利用蜂鸣器的发声达到系统功能的实现,蜂鸣器选用5V电磁式有源蜂鸣器,由于蜂鸣器的工作电流一般比较大,以至于单片机的I/O口是无法直接驱动的,所以要利用三极管开关电路来驱动。
本处选用的是8550三极管,它是一个PNP型的三极管。
基极串联一个1K的电阻连接到单片机的I/O口时。
当I/O口输出低电平时,三极管导通,蜂鸣器鸣叫;当I/O口输出高电平时,三极管截止,蜂鸣器停止鸣叫。
2程序
2.1源程序
/**********************************************************
单片机中断头文件
单片机AT89C52
实现功能:
单片机中断的控制控制
********************************************************/
#ifndef_INTERRUPT_H_
#define_INTERRUPT_H_
#include
#defineucharunsignedchar
#defineuintunsignedint
/**********************引脚定义************************/
sbitled1=P1^7;//LED灯
sbitled2=P1^6;
sbitled3=P1^5;
sbitled4=P1^4;
sbitled11=P2^7;
sbitled22=P2^5;
sbitled33=P2^3;
sbitled44=P2^1;
sbitled=P1^0;//工作指示灯
/**********************变量定义************************/
uintT0_num,T1_num;
/********************************************************
函数名称:
voidT0_init()
函数作用:
定时器0初始化函数
参数说明:
********************************************************/
voidT0_init()
{
EA=1;//开总中断
ET0=1;//定时器T0中断允许
TMOD=0x11;//使用定时器T0、T1的模式1
TH0=(65536-50000)/256;//定时器T0的高8位赋初值
TL0=(65536-50000)%256;//定时器T0的高8位赋初值
TR0=0;//关闭定时器
ET1=1;//定时器T0中断允许
TH1=(65536-50000)/256;//定时器T0的高8位赋初值
TL1=(65536-50000)%256;//定时器T0的高8位赋初值
TR1=0;//关闭定时器
}
/********************************************************
函数名称:
voidT0_interrupt(void)interrupt1using0
函数作用:
定时器0中断处理函数
参数说明:
********************************************************/
voidT0_interrupt(void)interrupt1using0
{
TH0=(65536-50000)/256;//定时器T0的高8位重新赋初值
TL0=(65536-50000)%256;//定时器T0的高8位重新赋初值
T0_num++;
if(T0_num==600)
{
T0_num=0;
T1_num=0;//打开按键旁边的灯
if(led11==0)
led1=0;
if(led22==0)
led2=0;
if(led33==0)
led3=0;
if(led44==0)
led4=0;
TR1=1;//开启10定时
TR0=0;
}
}
/********************************************************
函数名称:
voidT1_interrupt(void)interrupt3
函数作用:
定时器1中断处理函数
参数说明:
********************************************************/
voidT1_interrupt(void)interrupt3
{
TH1=(65536-50000)/256;//定时器T0的高8位重新赋初值
TL1=(65536-50000)%256;//定时器T0的高8位重新赋初值
T1_num++;
if(T1_num==200)
{
T1_num=0;
P1=0xff;
led=0;
TR1=0;
TR0=0;
}
}
#endif
#include
#include
sbitkey=P2^0;//护士键
sbitkey1=P3^7;//按键
sbitkey2=P3^6;
sbitkey3=P3^5;
sbitkey4=P3^4;
sbitbuzz=P0^4;//蜂鸣器
/******************************************************
函数名称:
voidmain()
函数作用:
主函数
******************************************************/
voidmain()
{
led=0;
T0_init();
while
(1)
{
if(P3!
=0xff)//检测键盘
{
while(P3!
=0xff)//检测按键离开
{
if(key1==0)//第一排
{
led11=0;
TR0=1;
buzz=0;
}
if(key2==0)//第二排
{
led22=0;
TR0=1;
buzz=0;
}
if(key3==0)//第三排
{
led33=0;
TR0=1;
buzz=0;
}
if(key4==0)//第四排
{
led44=0;
TR0=1;
buzz=0;
}
}
}
if(key==0)//护士按键
{
buzz=1;//清除LED灯和蜂鸣器,定时器
led1=1;
led2=1;
led3=1;
led4=1;
led11=1;
led22=1;
led33=1;
led44=1;
TR0=0;
TR1=0;
T0_num=0;
T1_num=0;
}
}
}
3程序调试及实现
3.1软件开发环境
此设计的编程[8]实现由KeilμVision4进行。
KeilC51是由美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。
其C语言在结构性、可读性、可维护性、功能上都相较于汇编语言有明显的优势,便于学习和使用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
3.2系统软件调试
本课题的程序使用Keil软件进行编写和调试[8],检查程序准确无误后将编写好的程序生成.hex文件,下载到单片机中,下载使用的下载器为PL2303。
通过观察整个系统运行的状态,看其是否达到本课题的设计目标,然后进行反复修改、调试程序,以此得到一个最终确定的程序。
4结束语
本次课题的设计是基于单片机的病房呼叫系统[6][7]的改进,新增的同时显示功能和反馈功能使得病房呼叫系统这项设备在原来的基础之上得到改善。
其中
(1)反馈功能避免了病人按键后,并不知道医护人员是否得知消息,只能等候。
改进后的病房呼叫系统,当患者按键信息到达值班室,医护人员按下“应答”键,并及时为患者提供服务。
假若值班室无人,“应答”键没有按下,则相应的患者房间里对应的LED灯点亮,方便患者家属采取相应措施。
(2)同时显示功能避免了传统病房呼叫系统多人按键,必须按照按键时间先后顺序排队显示的烦恼。
本课题改进的按键显示为一个病房对应一个LED灯,不同病房的多人按键可以同时显示,重症病房的前两排按键对应前面的两个LED灯,便于医护人员同时为需要帮助的患者服务。
改进之后的病房呼叫系统[4-10]将更适用于各医院,甚至是敬老院等场所,提高医院的服务质量,降低医用设备的成本。
本次设计是在小组成员的共同合作下完成的,让我们在完成作品的同时懂得了分工与合作的重要性,制作过程使得平时课堂上的很多理论知识得了实践应用。
其中,我涉及最多的是软件部分,当然,以上文章所述都是围绕软件部分展开,本次设计使我对计算机语言、程序的设计和编写有了一定的认识和提高。
参考文献
[1]谭浩强,张基温.C语言程序设计教程[M].北京:
高等教育出版社,2011:
3-199.
[2]阎石,等.数字电子技术基础[M].北京:
高等教育出版社,1981:
2-99.
[3]李中伟,朱永涛.新型无线病房呼叫系统的设计[J].电子世界,2014:
224-224.
[4]苏家健,曹柏荣,汪志锋.单片机原理及应用技术[M].北京:
高等教育出版社,2015:
4-100.
[5]颜靖松,许建明等.基于单片机的无线病房呼叫系统设计[D].北京:
数字技术与应用,2015:
151-152.
[6]陈新岗等.基于单片机的无线病房呼叫系统设计[D].重庆:
重庆工学院学报,2008:
126-130.
[7]艾学忠,刘伟,陈北辰.单片机原理及接口技术[M].北京:
机械工业出版社,2012:
2-168.
[8]夏宇闻,等.Verilog数字系统设计教程[M].北京:
北京航空航天大学出版社,2013:
3-200.
[9]沈凯,吴清萍.基于单片机的病房呼叫系统设计[D].现代电子技术,2011:
1-3.
[10]王安,丁晓迪,常亮.基于AT89C52单片机的单片机的病房呼叫系统设计[J].硅谷,2010:
108-108.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 论文 基于 51 单片机 病房 呼叫 系统软件