毕业设计病房呼叫系统管理资料Word下载.docx
《毕业设计病房呼叫系统管理资料Word下载.docx》由会员分享,可在线阅读,更多相关《毕业设计病房呼叫系统管理资料Word下载.docx(26页珍藏版)》请在冰点文库上搜索。
在设计时,我们应将软硬件有机地结合起来,使得系统能够正确的及时的反应病人的呼叫并使服务台能够回应。
具体是设计一个可容6张床位的病房呼叫系统。
要求每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮,此时护士值班室内的呼叫系统板上显示该患者的床位号,并振铃。
当护士按下“响应”键时,结束当前呼叫。
2单片机介绍
AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
单片机引脚介绍
AT89C51可以说是最常用的51单片机了,下图介绍AT89C51的引脚图资料。
如图所示。
(1)RESET一般接2个元件:
①接10K电阻到地,②接10μ电容到电源。
(2)-EA/VPP一般情况下接高电平(这时使用MCU内部RAM/ROM)。
(3)ALE/PROG一般情况下空着(这时使用MCU内部RAM/ROM)。
(4)-PSEN一般情况下空着(当使用MCU内部RAM/ROM时)。
(5)P0内部没有上拉电阻,。
(6)XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz,晶振的频率可以在1MHz-24MHz内选择,电容取20PF左右。
(7)VDD:
电源+5V。
引脚功能说明:
Vcc:
电源电压
GND:
接地
P0口:
P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),Flash编程和程序校验期间,Pl接收低8位地址。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL),在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/0口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTALl:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端
单片机复位电路介绍
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:
上电复位和开关复位。
复位后的状态:
a、复位后PC值为0000H,表明复位后的程序从0000H开始执行。
b、SP值为07H,表明堆栈底部在07H,一般需要重新设置SP值。
c、P0~P3口值为FFH。
P0~P3口用作输入口时,必须先写入“1”。
单片机在复位后,已使P0~P3口每一端线为“1”,为这些端线用作输入口做好了准备。
WDT溢出将使该引脚输出高电平,所以本设计采用手动复位电路:
如图所示
时钟电路的介绍
采用时钟方式时,在XTAL1和XTAL2之间接入石英晶体振荡器(晶振)即可使内部振荡器起振,产生单片机工作所需的时钟脉冲。
MCS-51单片机时钟脉冲也可以由外部产生,但芯片的制造工艺不同,外部时钟源的输入方式有所不同。
对于HMOS型芯片,外部振荡信号接至XIAL2引脚,XTAL1接地,XTAL2引脚对电源接入上拉电阻。
而CHMOS型芯片,外部振荡信号接至XTAL1,XTAL2悬空。
单片机的开发软件介绍
单片机的开发软件介绍单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部份组合在一起。
运行Keil软件需Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
3总体电路设计
在本系统中,采用单片机AT89C51为核心的系统主要包括2个部分:
数据采集和数据的输出,数据的输出用来进行呼叫,编码使用单片机完成,数据采集负责接收分机发来的信号,并进行解码、显示该患者的床位号,并响铃,主机上设有键盘可以取消当前呼叫。
其实现结构框图如图所示
3.1总电路图:
发送电路设计
电路图设计
发送电路程序设计
#include<
>
#defineucharunsignedchar
#defineuintunsignedint
sbitP16=P1^6;
sbitbaojing=P3^6;
sbitd1=P0^0;
sbitd2=P0^1;
sbitd3=P0^2;
sbitd4=P0^3;
sbitd5=P0^4;
sbitd6=P0^5;
sbitP36=P3^6;
uinttemp,num,num1,a,b,num2;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voidbaojin();
voiddelay(uintz)
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voidmain()
TMOD=0x20;
//设置定时器1为工作方式2
TH1=0xe6;
TL1=0xe6;
TR1=1;
PCON=0x00;
SCON=0x40;
EA=1;
ES=1;
P1=0xff;
P2=0x00;
a=0;
b=0;
REN=1;
while(a==0)
{
temp=P1;
temp=temp&
0xff;
if(temp!
=0xff)
{
delay(10);
temp=P1;
temp=temp&
if(temp!
{
ES=0;
temp=P1;
temp=temp&
switch(temp)
{
case0xfe:
num=11;
break;
case0xfd:
num=12;
case0xfb:
num=13;
case0xf7:
num=14;
case0xef:
num=15;
case0xdf:
num=16;
}
while(P1!
=0xff);
delay(10);
SBUF=num;
while(TI!
=1);
TI=0;
num=num%10;
P2=table[num];
switch(num)
case1:
d1=0;
case2:
d2=0;
case3:
d3=0;
case4:
d4=0;
case5:
d5=0;
case6:
d6=0;
}
ES=1;
}
}
if(b!
=0)
switch(b)
{
case1:
d1=1;
break;
case2:
d2=1;
case3:
d3=1;
case4:
d4=1;
case5:
d5=1;
case6:
d6=1;
P2=0;
b=0;
baojin();
}
}
voidser()interrupt4
RI=0;
b=SBUF;
voidbaojin()
uchari;
for(i=100;
i>
i--)
{
baojing=1;
delay(5);
baojing=0;
}
接收电路设计
程序设计
sbitP32=P3^2;
sbitk1=P2^2;
sbitk2=P2^3;
sbitqd=P2^4;
sbitP37=P3^7;
uinta,n,i,j;
intflage,num,num1,num2;
intpq[7][7]={{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}};
voidmain()
P1=0;
P0=0;
EX0=1;
TCON=0x00;
SM0=0;
SM1=1;
flage=0;
while
(1)
if(flage==0)
while((RI!
=1)&
&
(flage==0));
RI=0;
num=SBUF;
num1=num/10;
num2=num%10;
P1=table[num1];
P0=table[num2];
pq[num1][num2]=num;
else
flage=0;
SBUF=num2;
while(TI!
TI=0;
}
voidwaio()interrupt0
flage=1;
while(P32==0)
if(k1==0)
{
if(k1==0)
{
while(k1==0);
delay(10);
for(i=36;
{
num2++;
if(num2==7)
{
num2=1;
num1++;
if(num1==7)
num1=1;
}
if(pq[num1][num2]>
0)
P1=table[num1];
P0=table[num2];
break;
}
}
if(k2==0)
if(k2==0)
while(k2==0);
num2--;
if(num2==0)
num2=6;
num1--;
if(num1==0)
num1=6;
{
P1=table[num1];
P0=table[num2];
break;
}
}
if(qd==0)
if(qd==0)
{
while(qd==0);
delay(10);
pq[num1][num2]=0;
P1=0;
P0=0;
报警电路
主机在接受到呼叫后,进行报警告知值班人员。
,做报警信号,要求1kHz信号响100ms,再500Hz信号响200ms,交替进行。
这里使用音频放大器LM386,它的工作电压为4~12V,输出功率最大可达1W,输入阻抗50kHz。
结束语
通过对病区的数据采集,实现医院医疗人员值班室和病人房之间的通信