东北大学秦皇岛分校 课程
(论文) 第 4 页
东北大学秦皇岛分校自动化
系
自动控制系统课程设计
基于单片机仿真的智能病床呼叫系统设计
专业名称
自动化
班级学号
5080211
学生姓名
陈韬
指导教师
蔡凌
设计时间
2011.6.27~2011.7.8
目录
一、绪论…………………………………………………………………………....2
1.1 课题概述:………………………………………………………………..2
1.2 智能病床呼叫系统发展概况:…………………………………………..2
1.3 课题研究的目的和意义:………………………………………………..2
二、系统设计:……………………………………………………………………..3
2.1 设计任务:………………………………………………………………..3
2.2 系统设计思路:…………………………………………………………..3
2.3 系统设计框图:…………………………………………………………..3
2.4 系统硬件设计:…………………………………………………………..4
2.5 系统软件设计:…………………………………………………………..7
2.6 系统主要部分演示:……………………………………………………..8
三、课程总结:……………………………………………………………………8
参考文献:…………………………………………………………………………9
附录一、 系统仿真图:…………………………………………………………..9
附录二 、程序:…………………………………………………………………10
基于单片机仿真的智能病床呼叫系统设计
【摘要】 病床呼叫系统以AT89C52单片机为核心,结合按键,LED灯指示,蜂鸣器,以及液晶屏显示,来实现病床呼叫端和医护响应端的功能设计。从而可以建立合理、高效、安全的服务系统,可以有效地减轻护理工作人员的劳动强度,同时又保障病人的安全。
【关键词】 AT89C52 液晶屏显示 按键 蜂鸣器 响应按钮
一、绪论
1.1课题概述:
在这个瞬息万变,竞争激烈的时代,选择一个优越的工具往往能提升企业在这个市场上的竞争力。尤其医院的竞争越来越激烈,商业医院的生存是第一位,提升档次和服务质量迫在眉睫,陪护问题一直是医患矛盾的主体,也是长期困扰卫生系统服务质量的大问题,使用病房呼叫系统,方便病人更快找到医生,以节约病人的宝贵时间。
病房呼叫系统是一种应用于医院病房、养老院等地方,用来联系沟通医护人员和病员的专用呼叫系统,是提高医院护理水平的必备设备。以前当病人需要服务时就不得不亲自到值班室去叫。安装该呼叫系统后,在病人与护士之间架起一座及时沟通的桥梁,可在减少护理人员的同时,保证病人随时能够得到服务,让每个病人及时得到最佳护理。
病房呼叫系统的优劣直接关系到病员的安危,历来受到各大医院的普遍重视。它要求及时、准确可靠、简便可行、利于推广。利用单片机的通讯功能,设计出具有振铃、显示房号等功能的多功能病床呼叫系统,满足了医院的病房管理和护理的要求。
1.2智能病床呼叫系统发展概况:
呼叫系统发展到今天,从应用层面可以说已经进入到商业化运营阶段。国内许多的呼叫中心其服务模式,已经从单纯的客户服务向服务与经营的混合型模式转变。这首先是呼叫市场需求的结果,也是呼叫技术及管理发展的必然结果。信息时代的医院管理已经从传统的人管模式,向智能化,电子化,信息化,网络化得高科技管理模式的方向迅速发展,“病房呼叫系统”可实现医院病房的智能化管理,可实现呼叫,报警,信息储存,显示等功能。为医院和患者都带来方便。
在中国,约在 30,000 个医院中仅 30 %的医院拥有自己的信息管理系统;拥有前端电话接入系统的医院就更少了。
目前市场上存在着许多种型号不一功能各异的医院病房呼叫系统,主要为两大类:有线式和无线式。传统的有线式病房呼叫系统往往采用集中式结构,电源线、数据通信线、语音通信线分开传输,具有铺设线路较多、成本高、安装调试困难、实时性差、故障率较高等缺点。无线式病房呼叫系统可靠性差,而且无线电波会干扰其它医疗仪器设备,目前大多数医院不采用无线呼叫系统。
1.3课题研究的目的和意义:
智能病床呼叫是传送病床信息的重要手段,病床呼叫系统可将病人的请求快递传送给值班医生和护士。呼叫系统的优劣直接关系到病人的安危,历来受到各大医院的普遍重视。它要求及时、准确、可靠、简便可行、利于推广。单片机多机通信和计算机监控管理技术的具有呼叫、振铃、显示 等功能的病床呼叫系统,基本满足了医院的病房护理要求。
本课题基于单片机的医院病床呼叫系统设计,系统维护简单,工作应用简单。因此,本课题是非常有意义的。
二、系统设计
2.1、设计任务:
1 、编写程序,完成病床号的显示、呼叫灯的显示。
例如:1号病床呼叫时,对应1号床头的呼叫灯亮,同时在呼叫中心的控制台处,对应医好床的呼叫灯亮。
2、完成某段时间内对应病床呼叫次数的显示;
3、当呼叫中心医护人员听到呼叫后,按呼叫响应停止按钮,呼叫等熄灭、同时病人对应病床呼叫次数显示清零。
2.2、系统设计思路
充分设计利用AT89C52的40个引脚,节省其他硬件的使用,可以满足7个病床的功能需求。所以据此设计如下:
(1)7个病床的7个呼叫按钮 ,控制响应的led灯点亮,同时响应的次数累计 ;
(2)病床按一次,对应的蜂鸣器响一次。为防止被错误按下,按钮按下一定时间后才累计次数,累计次数最多累计9次,超过9次,一直显示9次
(3)7个护士中心的呼叫对应病床号的按钮控制相应的led灯灭,同时对应病床号的呼叫次数清零。
2.3、系统设计框图:
2.4、系统硬件设计:
系统硬件分为四个模块:
1、主单片机AT89C52部分,主控制芯片。
2、病床呼叫模块医护响应LED灯,作为病床呼叫端。
3、响应按钮模块LCD,为医护响应端。
4、液晶屏显示模块,显示呼叫床位以及呼叫次数,更方便医护管理。
(1) 主单片机AT89C52部分:单片机晶振:12MHZ, AT89C52(12T)
电源:VCC=5v, 接地 GND及复位电路。如下图:
(2) 病床呼叫模块:包括病人呼叫按钮,呼叫蜂鸣器部分,呼叫LED部分。该模块都使用P1.0~P1.6口。如下图:
(3)医护响应LED灯、响应按钮模块:
LED响应红灯接口:P30,P31,P32,P33,P34,P35,P36。
响应按钮接口:P17,P27,P37,P23,P24,P25,P26口。
如下图:
(4)LCD液晶屏显示模块:数据口 P0.0~P0.7 ;
设计中用LCD1602时序RS:P2.0, RW:P2.1, E:P2.0病人呼叫次数统计:如下图:
2.5、系统软件设计:
根据上述硬件及框图设计,设计出软件流程图,如下:
2.6、系统主要部分工作演示:
图二、在没有病人呼叫时 led灯全灭(左:病床led、右:呼叫中心led)
图三、1号床位呼叫2次时 1号床led灯亮(左:病床led、右:呼叫中心led)
图四、呼叫中心按下1床响应按钮时 led灯全灭(左:病床led、右:呼叫中心led)
三、课设总结:
本次课程设计,我们团队通过前期资料收集、资料整理,并结合本次课程设计的任务目标,做了比较全面的
,最后在提出的几个
中,结合我们目前自身的知识储备选择了用AT89C52作为主控制芯片,同时摒弃了数码管的显示而选择了功耗低的LCD液晶显示,同时又能减少外部硬件电路复杂度。
通过在对AT89C52的外部可用I/O口的分析后得出,在不增加外围的扩展电路下,最多能控制7张病床。 并以此为基础设计了本次的系统控制方案。
在本次课程设计中,按照先将程序模块化的思路,分别对系统的LCD显示部分进行了编程和程序调试、对病床呼叫按钮及病床LED显示部分进行了编程和程序调试、对呼叫中心按钮及呼叫中心LED显示部分进行编程和程序调试。最后将几个模块结合起来在一个程序中综合运用,并最终实现其功能。
在程序最后一个模块综合运用的时候出现了单个功能部分可以正常工作,但是不同功能模块相互之间却不能联系起来的情况。在经过了团队成员一起对程序逐步分析,每一条语句的检验之后,最终解决了问题,达到了本次设计任务中的功能。
通过这次课程设计,我深切的感受到,单片机在生活实际中的重要作用,同时也学习到了在对系统进行设计时,需要一步一步的对功能进行分解,将程序模块化,最后将不同模块组合起来的优势。
同时感谢指导老师的悉心指导和帮助。
参考文献:
【1】杜洋. 爱上单片机. 北京:人民邮电出版社.2010.4.1
【2】陈海宴.51单片机原理及应用——基于Keil与Proteus. 北京:北京航空航天大学出版社.2010.7
【3】马淑华、王凤文、张美金.单片机原理与接口技术.北京:北京邮电大学出版社.2007
【4】张淑清.单片微型计算机接口技术及其应用.北京:国防工业出版社,2001.
附录一、系统仿真图:
附录二、程序:
/*************************************************************************
程序:病床智能呼叫系统
功能:1、7个病床的7个呼叫按钮 ,控制响应的led灯点亮,同时响应的次数累计 ;
病床按一次,对应的蜂鸣器响一次。为防止被错误按下,按钮按下一定时间后才累计次数,累计次数最多累计9次
2、7个病床对应的呼叫响应 按钮 控制响应的led灯灭,同时响应的次数累计清零
作者:陈韬、杨路生、张瑞姣、马姗
时间:20110701
说明: 在这个系统中,单片机的40个引脚基本全部用上了(当然有几个有特殊功能没有用上),
可以说是在不用外部扩展的情况下51单片机的极限了
1.病床呼叫按钮 :P1.0~P1.6口 共7个引脚
2.护士呼叫响应按钮:P17,P27,P37,P23,P24,P25,P26
共7个引脚
3.呼叫按钮响应红灯:P30,P31,P32,P33,P34,P35,P36 共7个引脚
4.病人呼叫次数统计:: 数据口 P0.0~P0.7 ;时序RS:P2.0, RW:P2.1, E:P2.0(液晶模块1602 /LM016L他们的内部控制芯片都是HD44780) 共11个引脚
5.晶振:12MHZ, AT89C52(12T)
共2个引脚
6.电源:VCC 接地 GND
共2个引脚*************************************************************************/
#include
#include
sbit P10= P1^0;
sbit P11= P1^1;
sbit P12= P1^2;
sbit P13= P1^3;
sbit P14= P1^4;
sbit P15= P1^5;
sbit P16= P1^6;
sbit P17= P1^7;
sbit P20= P2^0;
sbit P21= P2^1;
sbit P22= P2^2;
sbit P23= P2^3;
sbit P24= P2^4;
sbit P25= P2^5;
sbit P26= P2^6;
sbit P27= P2^7;
sbit P30= P3^0
;
sbit P31= P3^1;
sbit P32= P3^2;
sbit P33= P3^3;
sbit P34= P3^4;
sbit P35= P3^5;
sbit P36= P3^6;
sbit P37= P3^7;
sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚
sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚
sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚
sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚
unsigned char temp10,temp11,temp12,temp13,temp14,temp15,temp16; //设置全局变量
分别表示1~7床呼叫次数
unsigned char code Tab[11]= {"0123456789"};
unsigned char code string1[ ]= {"1:"};
unsigned char code string2[ ]= {"2:"};
unsigned char code string3[ ]= {"3:"};
unsigned char code string4[ ]= {"4:"};
unsigned char code string5[ ]= {"5:"};
unsigned char code string6[ ]= {"6:"};
unsigned char code string7[ ]= {"7:"};
/************************************************************
以下程序为 按键模块 病人按键部分 护士按键部分
************************************************************/
void Delayus(unsigned char m)
{
while (m--!=0)
{
_nop_();
//1us
}
}
/*************************************************
病人呼叫1~7 床位led亮,对应床位呼叫次数累计
****************************************************/
unsigned char Hujiaoled1(void ) //病人呼叫led1亮,呼叫次数累计
{
//
unsigned char temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0;
if(P10==0)
{ P30=0;
if(temp10<=9)
//小于9次就累计
{
temp10++;
}
else if(temp10>=9)
{
temp10=9 ;//最高统计9次
}
}
return (temp10);
}
/****************************************/
unsigned char Hujiaoled2(void ) //病人呼叫led2亮,呼叫次数累计
{
//
unsigned char temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0;
if(P11==0)
{ P31=0;
if(temp11<=9)
//小于9次就累计
{
temp11++;
}
else if(temp11>=9)
{
temp11=9 ;//最高统计9次
}
}
return (temp11);
}
/****************************************/
unsigned char Hujiaoled3(void ) //病人呼叫led3亮,呼叫次数累计
{
//
unsigned char temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0;
if(P12==0)
{ P32=0;
if(temp12<=9)
//小于9次就累计
{
temp12++;
}
else if(temp12>=9)
{
temp12=9 ;//最高统计9次
}
}
return (temp12);
}
/****************************************/
unsigned char Hujiaoled4(void ) //病人呼叫led亮,呼叫次数累计
{
//
unsigned char temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0;
if(P13==0)
{ P33=0;
if(temp13<=9)
//小于9次就累计
{
temp13++;
}
else if(temp13>=9)
{
temp13=9 ;//最高统计9次
}
}
return (temp13);
}
/****************************************/
unsigned char Hujiaoled5(void ) //病人呼叫led亮,呼叫次数累计
{
//
unsigned char temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0;
if(P14==0)
{ P34=0;
if(temp14<=9)
//小于9次就累计
{
temp14++;
}
else if(temp14>=9)
{
temp14=9 ;//最高统计9次
}
}
return (temp14);
}
/****************************************/
unsigned char Hujiaoled6(void ) //病人呼叫led亮,呼叫次数累计
{
//
unsigned char temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0;
if(P15==0)
{ P35=0;
if(temp15<=9)
//小于9次就累计
{
temp15++;
}
else if(temp15>=9)
{
temp15=9 ;//最高统计9次
}
}
return (temp15);
}
/****************************************/
unsigned char Hujiaoled7(void ) //病人呼叫led亮,呼叫次数累计
{
//
unsigned char temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0;
if(P16==0)
{ P36=0;
if(temp16<=9)
//小于9次就累计
{
temp16++;
}
else if(temp16>=9)
{
temp16=9 ;//最高统计9次
}
}
return (temp16);
}
/****************************************/
//
病人呼叫床位led亮,对应床位呼叫次数累计总模块
/****************************************/
HujiaoledAll()
{
Hujiaoled1();
Hujiaoled2();
Hujiaoled3();
Hujiaoled4();
Hujiaoled5();
Hujiaoled6();
Hujiaoled7();
}
/**************************************************/
//1~7床呼叫响应 护士站
/**************************************************/
unsigned char Xiangying1()
//1床
{
if(P17==0)
{
P30=1;
temp10=0;
}
return (temp10);
}
/**************************************************/
unsigned char Xiangying2()
{
if(P27==0)
{
P31=1;
temp11=0;
}
return (temp11);
}
/**************************************************/
unsigned char Xiangying3()
{
if(P37==0)
{
P32=1;
temp12=0;
}
return (temp12);
}
/**************************************************/
unsigned char Xiangying4()
{
if(P23==0)
{
P33=1;
temp13=0;
}
return (temp13);
}
/**************************************************/
unsigned char Xiangying5()
{
if(P24==0)
{
P34=1;
temp14=0;
}
return (temp14);
}
/**************************************************/
unsigned char Xiangying6()
{
if(P25==0)
{
P35=1;
temp15=0;
}
return (temp15);
}
/**************************************************/
unsigned char Xiangying7()
{
if(P26==0)
{
P36=1;
temp16=0;
}
return (temp16);
}
/**********************************************************/
//呼叫响应总模块1~7床led灭,响应计数器清零
/************************************************************/
void XiangyingAll()
{
Xiangying1();
Xiangying2();
Xiangying3();
Xiangying4();
Xiangying5();
Xiangying6();
Xiangying7();
}
/******************************************************************************
以下程序为 液晶模块
******************************************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++) ;
}
/*****************************************************
函数功能:延时若干毫秒 入口参数:n
***************************************************/
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i标准ASCII码)写入液晶模块
入口参数:y(为字符常量)
***************************************************/
void WriteData(unsigned char y)
{
while(BusyTest()==1);
RS=1; //RS为高电平,RW为低电平时,可以写入数据
RW=0;
E=0; //E置低电平(写指令时,,
// 就是让E从0到1发生正跳变,所以应先置"0"
P0=y; //将数据送入P0口,即将数据写入液晶模块
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=1; //E置高电平
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:对LCD的显示模式进行初始化设置
***************************************************/
void LcdInt(void)
{
delay(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间
Write_com(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口
delay(5); //延时5ms
Write_com(0x38);
delay(5);
Write_com(0x38); //3次写 设置模式
delay(5);
Write_com(0x0F); //显示模式设置:显示开,有光标,光标闪烁
delay(5);
Write_com(0x06); //显示模式设置:光标右移,字符不移
delay(5);
Write_com(0x01); //清屏幕指令,将以前的显示内容清除
delay(5);
}
/***************************************************************************
床位号显示1~7
*****************************************************************************/
void Display_1()
//床位1
{
unsigned char i;
WriteAddress(0x00); // 设置显示位置为第一行的第0个字 1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
i = 0;
while(string1[i] != '\0') //'\0'是数组结束标志
{
// 显示字符
1:
WriteData(string1[i]);
i++;
delay(100);
}
}
/************************************************/
void Display_2()
//床位2
{
unsigned char i;
WriteAddress(0x04); // 设置显示位置为第一行的第4个字 1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
i = 0;
while(string2[i] != '\0') //'\0'是数组结束标志
{
// 显示字符
2:
WriteData(string2[i]);
i++;
delay(100);
}
}
/*************************************************/
void Display_3()
//床位3
{
unsigned char i;
WriteAddress(0x08); // 设置显示位置为第一行的第8个字
1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
i = 0;
while(string3[i] != '\0') //'\0'是数组结束标志
{
// 显示字符
1:
WriteData(string3[i]);
i++;
delay(100);
}
}
/*************************************************/
void Display_4()
//床位4
{
unsigned char i;
WriteAddress(0x0c); // 设置显示位置为第一行的第12个字 1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
i = 0;
while(string4[i] != '\0') //'\0'是数组结束标志
{
// 显示字符
1:
WriteData(string4[i]);
i++;
delay(100);
}
}
/*************************************************/
void Display_5()
//床位5
{
unsigned char i;
WriteAddress(0x40); // 设置显示位置为第2行的第0个字
1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
i = 0;
while(string5[i] != '\0') //'\0'是数组结束标志
{
// 显示字符
1:
WriteData(string5[i]);
i++;
delay(100);
}
}
/*************************************************/
void Display_6()
//床位6
{
unsigned char i;
WriteAddress(0x44); // 设置显示位置为第2行的第4个字
1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
i = 0;
while(string6[i] != '\0') //'\0'是数组结束标志
{
// 显示字符
1:
WriteData(string6[i]);
i++;
delay(100);
}
}
/*************************************************/
void Display_7()
//床位7
{
unsigned char i;
WriteAddress(0x48); // 设置显示位置为第2行的第8个字
1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
i = 0;
while(string7[i] != '\0') //'\0'是数组结束标志
{
// 显示字符
1:
WriteData(string7[i]);
i++;
delay(100);
}
}
/***************************************************************************
床位号1~7呼叫累计次数显示
*****************************************************************************/
void Display_shu1(unsigned char x )
//统计的第一个床呼叫次数,即P10的按键次数
{
WriteAddress(0x02); // 设置显示位置为第1行的第2个字
,1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
WriteData(Tab[x]);
delay(100);
}
/*****************************************************************************************/
void Display_shu2(unsigned char x )
//统计的第一个床呼叫次数,即P10的按键次数
{
WriteAddress(0x06); // 设置显示位置为第1行的第2个字
,1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
WriteData(Tab[x]);
delay(100);
}
/*****************************************************************************************/
void Display_shu3(unsigned char x )
//统计的第一个床呼叫次数,即P10的按键次数
{
WriteAddress(0x0a); // 设置显示位置为第1行的第2个字
,1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
WriteData(Tab[x]);
delay(100);
}
/*****************************************************************************************/
void Display_shu4(unsigned char x )
//统计的第一个床呼叫次数,即P10的按键次数
{
WriteAddress(0x0e); // 设置显示位置为第1行的第2个字
,1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
WriteData(Tab[x]);
delay(100);
}
/*****************************************************************************************/
void Display_shu5(unsigned char x )
//统计的第一个床呼叫次数,即P10的按键次数
{
WriteAddress(0x42); // 设置显示位置为第1行的第2个字
,1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
WriteData(Tab[x]);
delay(100);
}
/*****************************************************************************************/
void Display_shu6(unsigned char x )
//统计的第一个床呼叫次数,即P10的按键次数
{
WriteAddress(0x46); // 设置显示位置为第1行的第2个字
,1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
WriteData(Tab[x]);
delay(100);
}
/*****************************************************************************************/
void Display_shu7(unsigned char x )
//统计的第一个床呼叫次数,即P10的按键次数
{
WriteAddress(0x4a); // 设置显示位置为第1行的第2个字
,1行有16个字 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
delay(5);
WriteData(Tab[x]);
delay(100);
}
/************************************************************************
病床床位号显示总程序
************************************************************************/
DisplayAll(void) //显示床位号程序
{
LcdInt(); //调用LCD初始化函数
delay(10);
Write_com(0x01);//清显示:清屏幕指令
delay(5);
Display_1()
;
//第一张床
Display_2()
;
//第2张床
Display_3()
;
//第3张床
Display_4()
;
//第4张床
Display_5();
//第5张床
Display_6();
//第6张床
Display_7();
//第7张床
}
/************************************************************************
病床床位号呼叫次数累计显示总程序
************************************************************************/
void Display_shuAll( temp10,temp11,temp12,temp13,temp14,temp15,temp16)
{
//unsigned char temp10,temp11,temp12,temp13,temp14,temp15,temp16;
Display_shu1(temp10);
//病床1,P10呼叫次数累计显示
Display_shu2(temp11);
//病床2,P11呼叫次数累计显示
Display_shu3(temp12);
//病床3,P12呼叫次数累计显示
Display_shu4(temp13);
//病床4,P13呼叫次数累计显示
Display_shu5(temp14);
//病床5,P14呼叫次数累计显示
Display_shu6(temp15);
//病床6,P15呼叫次数累计显示
Display_shu7(temp16);
//病床7,P16呼叫次数累计显示
}
/**********************************************************************/
void main()
{
LcdInt(); //调用LCD初始化函数
delay(10);
DisplayAll( );//显示床位号
while(1)
{
HujiaoledAll() ;
//病人呼叫led亮,呼叫次数累计 总模块
Delayus(1000);
//给硬件一点反应时间
XiangyingAll();