- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机医院病房呼叫的系统设计
PAGE
PAGE 11
单片机报告
2010-05-08
整体设计
临床求助呼叫(监护)是传送临床信息的重要手段,病房呼叫系统是病人请求值班医生或护士进行诊断和护理的紧急呼叫工具,可将病人的请求快速传送给值班医生或护士,并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病室护理水平的必备设备之一。呼叫系统的优劣直接关系到病员的安危,历来受到各大医院的普遍重视。它要求及时、准确、可靠、简便可行。
本呼叫系统基于Ateml89C51单片机,振荡电路的晶振采用12MHz,由控制核心AT89S52单片机、电源电路、振荡电路、复位电路、数码管解码芯片、病房选择和七段数码管等部分组成,系统框图如下:
选择电路
电源电路
AT89S51
单片机
复位电路
振荡电路
解码
芯片
数字显示电路
二.硬件设计
2.1 电路原理图
工作原理为:电源电路为单片机以及其他模块提供5V电源。晶振模块为单片机提供时钟标准,使系统各部分能协调工作。复位电路模块为单片机系统提供复位功能。单片机作为主控制器,根据输入信号对系统进行相应的控制。病房一共为四个,从1号病房到4号病房病人的情况由重到轻,即1号病房的优先级最高,4号病房的优先级最低。所以,当有两个病房一起呼叫时,优先级高的病房号显示;当低优先级的病房呼叫完毕后高优先级的病房呼叫,系统显示的号码改变;当优先级高的病房呼叫完毕后工作人员未复位的情况下,低优先级的病房呼叫无效。另外,当有病房呼叫时蜂鸣器响直至复位。此次设计的电路图如下:
(2.2 元器件列表
元件名称型号数量/个用途单片机AT89S521控制核心排阻4.7KΩ1晶振12MHz1
晶振电路电容22pF2电解电容10uF/10V1复位电路
病房按钮按键5电阻10KΩ5电源5V/0.5A1电源电路数码管1位共阳2解码芯片74LS472BCD解码蜂呜器1电解电容1复位电路电容1041复位电路二极管1复位电路发光二极管1电源显示开关1电源开关2.3 仿真图:
未通电:
通电:
低优先级病房先呼叫:(蜂鸣器响)
高优先级病房后呼叫:(蜂鸣器响)
呼叫有效
高优先级病房先呼叫:(蜂鸣器响)
低优先级病房后呼叫:(蜂鸣器响)
呼叫无效
当有两个病房同时呼叫时
1号3号病房同时呼叫显示1 号
三.软件设计
3.1 功能介绍
启动系统后,数码管显示0。当有一个病人呼叫时,数码管显示相应病房号,同时蜂鸣器响起;当有两个病人同时呼叫时,数码管显示优先级高的,同时蜂鸣器响起;当有一个病房呼叫后另一个病房呼叫,若后呼叫的病房优先级低,则数码管显示不变,若后呼叫的病房优先级高,则数码管显示后呼叫的,两种情况下蜂鸣器都会叫,只是在有别的病房呼叫时有一点变音。
3.2 程序流程图
程序流程图如下:
开始
工作
有一个病房呼叫
有多个病房呼叫
判断优先级
显示病房号并响铃
开始
有病房再次呼叫
判断优先级
显示病房号并响铃
3.3程序源代码:
#include reg51.h
#define uchar unsigned char
sbit key4=P3^0;//定义按键位置
sbit key3=P3^1;
sbit key2=P3^2;
sbit key1=P3^3;
sbit reset=P3^4;//复位
sbit BEEP=P1^7;//定义蜂鸣器端口
uchar flag1,i;
void choice();
void clean();
void delay();
void de();
void ring();
void main()
{
while(1)
{
P3=0xff;
reset=0;
BEEP=0;
flag1=0;
choice();
delay();
clean();
}
}
void choice()//确定病人
{ while(reset!=1flag==0)
{
if(key1==0)
{
de();
if(key1==0)
{P0=0X86;flag=1;}
}
else if(key2==0)
文档评论(0)