简易病床呼叫系统
- 格式:doc
- 大小:616.80 KB
- 文档页数:7
简易病床呼叫系统
一、系统介绍
本简易病床呼叫系统的功能是:启动系统后,数码管显示0。当有一个病人呼叫时,数码管显示相应病房号,同时蜂鸣器响起;当有两个病人同时呼叫时,数码管显示优先级高的,同时蜂鸣器响起;当有一个病房呼叫后另一个病房呼叫,若后呼叫的病房优先级低,则数码管显示不变,若后呼叫的病房优先级高,则数码管显示后呼叫的,两种情况下蜂鸣器都会叫,只是在有别的病房呼叫时有一点变音。在本系统中,设病房1到4优先级递减。
本简易病床呼叫系统基于AT89C51单片机,振荡电路的晶振采用12MHz,由控制核心AT89C51单片机、电源电路、振荡电路、复位电路、病房选择和七段数码管等部分组成,系统框图如下:
图1 系统框图
本系统利用了单片机AT89C51内部时钟信号,外接晶振和电容进行微调频率,用单片机的I/O口对数码管进行静态驱动,在此基础上,增加了复位电路和选择电路。通过选择电路可以确定几号病房呼叫,用复位电路进行清零。
二、电路图
电路设计完成后,通过Proteus进行仿真,仿真电路如下图2。
AT89C51
单片机 振荡电路
复位电路 数码管显示电路
选择电路 电源电路
图2 系统仿真电路
本系统选择电路利用四个按键开关模拟病房1--4呼叫,分别连接到单片机的P3^0、P3^1、P3^2、P3^3,按下开关说明相应的病房呼叫。单片机的P0口外接排阻和数码管,复位电路和蜂鸣器分别与P3^4和P1^7相连。
系统通电后,仿真电路结果如下图3:
图3 通电后系统仿真电路
按下第一个开关,模拟1号病房呼叫,仿真结果如下图4:
图4 1号病房呼叫仿真结果
若同时按下第一个开关和第二个开关,则数码管只显示“1”,仿真如下图5:
图5 1号和2号同时呼叫
三、系统程序流程图
本系统程序流程图如下:
四、系统程序
#include
#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 sound();
void delay();
void ring();
有一个病房呼工作
判断优先级
有病房再次呼叫 显示病房号并响铃 有多个病房呼叫 开始 void main()
{
while(1)
{
P3=0xff;
reset=0;
beep=0;
flag1=0;
choice();
sound();
clean();
}
}
void choice()//确定病房
{ while(reset!=1&&flag1==0)
{
if(key1==0)
{
delay();
if(key1==0)
{P0=0X86;flag1=1;}
}
else if(key2==0)
{
delay();
if(key2==0&&key1!=0)
{P0=0Xdb;flag1=1;}
}
else if(key3==0)
{
delay();
if(key3==0&&key1!=0&&key2!=0)
{P0=0Xcf; flag1=1;}
}
else if(key4==0)
{
delay();
if(key4==0&&key1!=0&&key2!=0&&key3!=0)
{P0=0Xe6; flag1=1;}
}
}
}
void clean() //reset为高的时候复位
{
if(reset==1)
{
beep=0;
P0=0x3f;
}
}
void sound()
{
while(!reset)
{
ring();
}
}
void ring()
{
for(i=0;reset==0;i++)//喇叭发声的时间循环
{
delay();
beep=!beep;
if(key1==0||key2==0||key3==0)//多个病房呼叫的处理,判断优先级
{
if( P0==0X86)
P0=0X86;
else if(P0==0Xdb&&key1==0)
P0=0X86;
else if(P0==0Xcf&&key1==0)
P0=0X86;
else if(P0==0Xcf&&key1==1&&key2==0)
P0=0Xdb;
else if(P0==0Xe6&&key1==0)
P0=0X86;
else if(P0==0Xe6&&key1==1&&key2==0)
P0=0Xdb;
else if(P0==0Xe6&&key1==1&&key2==1&&key3==0)
P0=0Xcf; }
}
}
void delay() //延迟函数,防抖动
{
for(i=300;i>0;i--);
}
五、总结
本简易病床呼叫系统通过四个按键开关闭合模拟四个病房呼叫,数量有限,与实际情况存在较大差距,医院病房数量多。此外,本系统设置了病房呼叫的优先级,如1号病房优先级最高,然后依次递减,若有多个病房同时呼叫,本系统只显示优先级最高的病房,与实际情况不同,这个功能限于本系统电路和程序简单,并不能很好地实现智能化,但本系统可以通过扩展外设电路和优化程序来更好地实现智能化。