基于51系列单片机病房呼叫系统设计

基于51系列单片机病房呼叫系统设计[20200128195454]
摘要
该系统设计是基于51系列的单片机设计的病房呼叫系统。在该设计中每个病房都有一个按键,当病人有需要的时候,按下按键,此时,值班室的系统板上会显示次病人的床位号,此时,值班室的护士会看到哪个病房的病人有需要,然后护士按下响应键取消当前呼叫。
系统主要用于医院、门诊、养老院等场所。可大大降低护理成本,增强护理的及时性和有效性,而且无需布线,安装及其简便。
Abstract
The system design is based on the 51 series-chip design of ward call system. In the design of esch unit has a button, when patiens need time, press the button, at this time, duty room nurse will see what ward patients and nurses need, then press the response key on to cancel the current call.
System is mainly used in hospitals, nursing homes and other places, door rash, Can greatly reduce the cost of nursing care, to enhance the timeliness and effectivweness, and no need of wiring, easy and convwenient installation.
目录
(一)设计概述 1
(二)设计背景 1
(三)设计目的及要求 1
(四)设计理念 2
二 整体设计 2
(一)功能和方案的确定、 2
(二)框架模块功能描述 3
三 硬件设计 4
(一)硬件构成示意图 4
(二)控制部分设计 4
(三)显示电路设计 6
(四)键盘电路设计 7
四 软件设计 9
(一)程序流程图 9
(二)程序源代码 11
五 总结 16
参考文献 16
致谢词 17
附录1: 18
(一)设计概述
本设计是以AT89C51为核心的病人呼叫系统,对该系统的硬件和软件结构进行了相应的描述。通过该病区的数据采集,实现医院医疗人员值班室和病人房之间的同信呼叫联系,具有使用方便、操作简单等特点。伴随着医疗体制改革的不断深化和医疗事业的飞速发展,越来也多的人们需要迅速、方便的得到医院的各种各样的医疗服务。
这使得衡量一个医院的综合水平高低,不再仅局限于软、硬件的建设上,更要比服务。临床呼叫求助装置是传送临床信息的重要手段,关系病员安危,传统的有线呼叫系统历来受到各大医院的普遍重视。如果采用无线传输,会节约布线和改造线路的资金,为医院节约成本,并且及时、准确、可靠、简单可行,比目前的同类产品更能受到医院及病人的认可,有更强的竞争力,能大量推广。
(二)设计背景
近年来,随着人们生活水平的不断提高。人们对医疗水平的要求也不断提高,特别是突发情况下病人请求值班医生及时诊断和护理,这一环节对于提高医院的管理服务质量显得尤其重要,这同时也大大提高了医护人员应对突发事件的能力。为了提高医院管理水平,需要有新型可靠病房呼叫仪的辅助。临床求助呼叫是传送呼叫信息的重要手段,病房呼叫系统可将病人的请求快速传送给值班医生或护士,并在值班室的监控中心主机上留下准确完整的记录,是提高医院护理水平的必备设备之一。呼叫系统的优劣直接关系到病人的安危,历来受到各大医院的普遍重视。因此,本课题非常有意义。
(三)设计目的及要求
软件方面:要求界面美观,功能齐全,能写出最好最简单的控制软件。硬件方面:制定出一套及时,准确,可靠,简便可行,利用推广的硬件系统,能做成集成电路,减小体积,方便测试。系统框架设计:输入系统和显示系统是设计的两大系统,因此在开题前要对其单独进行分析,能正确的构建系统框架,这是对系统进行分析和控制的前提。控制算法的研究:采用各种不同的控制方法,实现控制要求。比较控制结果,从中选择合适的控制算法,进而进行下一步的系统仿真和实验。
(四)设计理念
1.应用MCS-51单片机设计单片机实现临床求助呼叫电路;
2.选用单片机、振荡电路的晶振和数码管作为主控制器,根据输入信号对系统进行相应的控制;
3.硬件设计部分,根据设计的任务选用合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程;
4软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试;
二 整体设计
临床求助呼叫时传送临床信息的重要手段,病房呼叫系统是病人请求值班医生或护士进行诊断和护理的紧急呼叫工具,可将病人的请求快速传送给值班或护士,并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病房护理水平的必备设备之一。呼叫系统的优劣关系到病员的安危,历来受到各大医院的普遍重视。他要求及时,准确、可靠、简便可行。
(一)功能和方案的确定、
1 病房呼叫系统功能要求
1任一病房呼叫,医护值班室马上能相应并显示病房号;
2显示病房床号;
3若有多个病房呼叫就循环显示;
4处理完毕清理记录;
5显示器不重复显示按一次以上的病床号;
2 呼叫系统方案论证
用8051自身接口实现数码管静态显示和键盘扫描。
使用8051单片微机外加作地址锁存用的四块8三态锁存器74LS373芯片和一块74LS138芯片可构成一个完整的最小微机电路。以此为基础,在智能装置中若要配置多位数码管显示器,以及m行n列矩阵键盘的话,可以不扩展I/O芯片而由8051自身I/O口,实现上述功能,即用P0口的八个端口作为LED的段选,用P2口的高三位连接一个三八译码器74LS138作为四个LED的片选。用P1口和P2口的低五位做键盘电路的接口。
3 房呼叫系统总体结构框图
本设计是基于AT89C51单片机设计的病房呼叫系统设计。
该系统是以Atmel公司的AT89C51单片机作为主控器,包括键盘输入电路,显示电路,以及晶振复位电路等来实现病房呼叫系统。
图2.1病房呼叫系统结构框图
(二)框架模块功能描述
1入部分包括按键输入,按键输入相当于一个外界的干扰信号,用于向单片机传输命令或数据。
2微处理器采用常见的AT89C51单片机为控制核心,通过软件编程,对实时采集的温度进行处理,同时也对调节电路进行驱动和控制。
3节电路部分包括晶振和复位,需要时对控制器发出中断信号,以对系统进行调节。
4输出部分包括LED显示电路,将从键盘上输入的信号显示出来,给人以直观的印象。
三 硬件设计
(一)硬件构成示意图
图3.1 硬件构成示意图
(二)控制部分设计
单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片,但是他具有一个完整的计算机所需要的大部分部件:CPU,内存,内部和外部总线系统。单片机是单片微型机的简称,故又称为微控制器MCU(Micro Control Unit)。通常有单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
1病房呼叫系统控制器AT89C51
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8为单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
主要特性:
1 与MCS-51产品指令系统完全兼容
2 4K字节可重擦写Flash闪速存储器
3 1000次擦写周期
4 全静态操作:0Hz-24MHz
5 三级加密程序存储器
6 128×8字节内部RAM
7 32个可编程I/O口线
8 2个16为字时/计数器
9 6个中断源
10 可编写串行UART通道
11 低功耗空闲和掉电模式、
AT89C51引脚如图3.2所示
图3.2 AT89C51引脚图
P0-P3:通用I/O口;
VCC:电源端,一般接5V;
GND:电源地;
XTAL1,XTAL2:外接晶体振荡器,不能超过24M;需加微调电容,一般为20pF;
RST/VPD:复位器,平时为低电平;
ALE/PROG:地址锁存允许信号端;
EA/Vpp:外部程序存储器地址允许输入端/固化编程电压输入端;
复位电路:
RST引脚是复位信号输入端,高电平有效。采用上电加按钮复位,因为本系统计考虑到该系统比较重要,所以除了采用上电复位的方式外,应该还有按钮复位备用复位方式以防止系统死机时能。如图3.3所示
图3.3 上电复位和按键复位
时钟电路:
时钟是时序的基础,AT89C51核片内由一个反相放大器构成振荡器,可以有它产生时钟,时钟可以由两种方式产生内部方式和外部方式。本系统采用内部方式,在XTAL1和XTAL2端外接石英晶体作为定时原件,内部反应放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频。如下图3.4所示
图3.4内部时钟电路
(三)显示电路设计
LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型:另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。
目前,国内的LED点阵显示屏大部分是显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容是就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏-可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在这更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。
1 8×8点阵
从结构可以看出8×8点阵共需要64个发光二极管,且每个发光二极管是放置在各行和各列的交叉点上。当对应的某一列置高电平,另一列置低电平时,则在该行和列的交叉点上相应的二极管就亮。
2 16×16点阵显示原理
从原理上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16×16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套驱动器。具体就16×16的点阵来说,把所有用一行的发光管的阳极连在一起,先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一点时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,有重新燃亮第一行,反复轮回。当这样轮回的速度足够快,由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
(四)键盘电路设计
1矩阵式键盘
最简单的键盘,每个键对应I/O端口的一位,没有什么键闭合时,各位均处于高电位。当有一个键按下时,就是对应位接地面成为地点为,而其他位仍为高电位。这样,CPU只要检测到某一位为“0”,便可判别出对应键已近按下。但是,当键盘上键较多时,引线太多,占用的I/O端口也太多。比如,一个有64个键的键盘,采用这种方法来设计时,就需要64条连线和8个8位并行端口。所以,这种简单结构只能在仅由几个键的小键盘中。通常使用的键盘结构是矩阵式的,如图4.5所示。设有M×N个键盘,那么,采用矩阵式结构以后,便只要M+N条引线就行了。比如,有8×8=64个键,那么,只要用2个并行端口和16条引线便可以完成键盘的连接。
图3.5 矩阵键盘
2键的识别
为了识别键盘上的闭合键,通常采用两种方法,一种称为行扫描法,另一种称为行反转法。
(1) 行扫描法的原理:
行扫描法识别和键的原理如下:先使第0行接地,其余行为高电平,然后看第0行是否有键闭合,这是通过检查列线电位来实现的,即在第0行接地是,看是否有条列线变成低电平。如果有某列线变成低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行上没有见键被按下。此后再将第1行接地,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便在扫描中途退出,而将输入值进行移位,从而确定闭合键所在的列线位置。根据行线位置和列线位置便能再扫描法来确定具体位置。将行线和一个并行接口相接,CPU每次使并行输出接口的某一位为0,便相当于将某一行线接地,而其他位为1,则相当于事其行线处于高电平。为了检查列线上的点位,将列线和一个并行输入输出口相接,CPU只要读取输入输出口中的数据,就可以设法判别出第几号键被按下。
从上面的原理中知道,程控扫描法是有程序控制键扫描的方法。程控扫描的任务是:
1首先判断是否有键按下。其方法是使所有的行输出均为低电平,然后从端口A读入列值。如果没有键按下,则读入的列值为FFH;如果有键按下,则读入的列值不为FFH。
2去除键抖动。若有键按下,则延时5-10ms,再一次判断有无键按下,如果此时仍有键按下,则认为键盘上有一个键与稳定闭合期。
3若有键闭合,则求出闭合键的键值,求键值的方法是对键盘逐行扫描。
(2) 行反转法的原理。
行反转法也是识别闭合键的常用方法,他的原理如下所述。这个叙述方便,以4×4=16键的键盘为例。
图3.6 行反转法连接图
用行发转法识别闭合键时,要将行线接一个并行口,先让它工作为输出方式,将列线接到一个并行口,先让它工作在输出方式。程序是CPU通过输出端口往各行线上全部送低电平,然后读入列线的值。如果此时有某一个键被按下,则必定会使某一列线值为0,然后,程序再对两个并行端口进行方式设置,使接行线的并行端口工作在输出方式,而使接列线的并行端口工作在输出方式,并且将刚才读得的列线值从所接的并行端口输出,再读取行线的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行值和列值。
在键盘设计时,除了以键码的识别意外,还有抖动为题需要解决。
在软件方法可以很容易解决抖动问题,这就是通过延迟来等待抖动消失,这之后,再读入键码。
3病房呼叫系统控制电路设计
三个控制按键分别接p3.2,p3.3,p3.4口,当有呼叫发出时,值班室人员接收到相应信息后,可按下“响应按钮”,单片机执行中断程序。
4病房呼叫系统报警电路设计
报警电路由一个led灯与p3.1口相接,当有键按下时,有信号输入,灯亮示警,提醒值班人员有病人出现紧急情况。
四 软件设计
(一)程序流程图
1系统主程序设计流程图如图4.1所示:
图4.1 系统主程序设计的流程
主程序程序描述:
首先对各存储单元初始化,设定定时初值,接着判断清零键,看是否按下,若按下,则清零,然后继续扫描键盘,如扫描到键盘有键按下,则调用计数显示子程序,循环显示病床号时,要判断标志位是否为1,若为1,则表示已近按下,则不响应,如为0,则调用循环显示病床号子程序,循环显示病床号,接着定时一秒。最后,清除定时一秒,准备下一次的定时。
2系统显示电路流程图如图4.2和4.3所示
图4.2 按键总数显示程序流程图 图4.3 按键循环显示子程序流程图
显示程序描述
(1)按键总数显示子程序描述
把按键数存储单元(COUNTER)的值进过BCD调整后十位和个位分别送(7AH)(7BH),调用显示子程序显示按键总数。
(2)循环显示病床号码程序描述
首先判断标志位是否为0,若为0,则表示对示应的存储单元没有值存入,则再检测下一个存储单元标志位是否为0,直到检测到1。如为1,则把值存入(BED_ BOUNTER)中,接着进行BCD调整为十进制,把十位和个位分别送入(BEDCOD E_1 )和(BEDCOD E_2 )中,然后调用显示子程序,循环显示病床号。
(二)程序源代码
#include //51
#include "dianzhen.h"
#include"keyboard.h"
uchar ys=0,num=0,N=0,d=0,q=0;
void { main()
uchar j;
TMOD=0x10;
TH0=(65536-45000)/256;
TL0=(65536-45000)%256;
TR0=1;
ET0=1;
EA=1;
P3_1=0;
while(1)
{
if(P3_2==0)
{
if(N>q) q++;
while(P3_2==0);
P3_1=1;
P3_1=0;
}
if(P3_3==0)
{
if(q>0) q--;
while(P3_3==0);
P3_1=1;
delay10ms(10);
P3_1=0;
}
if(P3_4==0)
{
N--;
if(N>0)
{
for(j=q;j b[j]=b[j+1];
b[N]=0; }
Else
b[0]=0;
while(P3_4==0);
q=0;
P3_1=1;
delay10ms(10);
P3_1=0;
}
keyboard();
if(m!=key)
{ m=key;
b[N]=key;
N++;
P3_1=1;
delay10ms(10); P3_1=0;
}
}
}
void timer0() interrupt 1 using 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(d==0)
display1(N,b[num],b[q]);
ys++;
if(ys==100)
{
num++;
d=1 ;
}
else if(ys>105)
{
d=0;
ys=0;
}
if(num>N) num=0;
#include
#include
#include "zimo.h"
uchar b[10];
void delay10ms(uchar d)
{ unsigned char i,j,k;
for(k=d;k>0;k--)
{ for(i=20;i>0;i--)
F or(j=248;j>0;j--);
}
}
void display1(uchar x,uchar s,uchar p)
{
uchar i,j=0,k,m=0,n=0,w[2],y[2],z[2];
w[0]=s/10; w[1]=s%10;
y[0]=x/10; y[1]=x%10;
z[0]=p/10;z[1]=p%10;
if(s<=0|s>16)
{ for(i=0;i<16;i++,n++)
{
lie=i;
if(n==8) {m=1;j=0;}
for(k=0;k<1;k++)
{
hang0=shuzi2[y[m]][j];
hang1=shuzi2[y[m]][j+1];
hang2=shuzi2[z[m]][j];
hang3=shuzi2[z[m]][j+1];
hang0=0x00;
hang1=0x00;
hang2=0x00;
hang3=0x00;
}
j+=2;
}
j=0;
for(i=16;i<64;i++)
{
lie=i;
for(k=0;k<1;k++)
{
hang0=ziku1[j];
hang1=ziku1[j+1];
hang2=ziku2[j];
hang3=ziku2[j+1];
hang0=0x00;
hang1=0x00;
hang2=0x00;
hang3=0x00;
}
j+=2;
}
}
else { for(i=0;i<16;i++,n++)
{ lie=i;
if(n==8) {m=1;j=0;}
for(k=0;k<1;k++)
{
hang0=shuzi2[w[m]][j];
hang1=shuzi2[w[m]][j+1];
hang2=shuzi2[z[m]][j];
hang3=shuzi2[z[m]][j+1];
hang0=0x00; hang1=0x00;
hang2=0x00;
hang3=0x00;
}
j+=2;
}
j=0;
for(i=16;i<64;i++)
{
lie=i;
for(k=0;k<1;k++)
{
hang0=ziku2[j];
hang1=ziku2[j+1];
hang2=ziku2[j];
hang3=ziku2[j+1];
hang0=0x00;
hang1=0x00;
hang2=0x00;
hang3=0x00;
}
j+=2;
}
}
}
五 总结
至此,论文已近基本完成。本章写的是我对前面完成毕业论文过程中的总结和体会。
选择这个课题之后,我明白要解决的难点:病人都按开光时,在数码显示器能循环显示病床,也就是考验我们队所学知识有比较透彻的了解。在做论文时得到了同学和老师们的帮助。
想要顺利完成这个论文,首先我必须要对之前所学的单片机知识进行一个完整的复习,虽然有点累,但很充实。在设计的过程中遇到了很多的问题,可以说是困难重重,在遇到各种各样问题的同时,会发现了自己的不足之处,如果对以前所学过的知识理解的不够深刻,掌握的不够牢固等等。
最后在自己的努力下,这次论文设计终于完成了,同时也让我学到了很多东西。无论什么样的困难,只要自己能够找好学习方法,在过程中不断努力,要用心更要耐心,就一定能够做好。
最后,在各位老师和同学的身上我学得了很多实用的知识,这些人也给予了我极大的帮助,在此我表示感谢。
参考文献
1、殷庆纵、李洪群 主编 《可编程控制器原理与实践(三菱FX2N系列)》
清华大学出版社 2010.3
2、孙津平 主编 《数字电子技术》 西安电子科技大学出版社 2005.7
3、常斗南、李全利 主编《 可编程控制器原理及工程应用》 电子工业出版社 2006.7
4、李乃夫 主编《 可编程控制器原理、应用、实验》 中国轻工业出版社 2006.2
5、瞿彩萍 主编 《PLC应用技术》(三菱) 中国劳动社会保障出版社 2006
致谢词
时光飞逝,三年的大学学习生活转眼就过去了2年多,在此论文完成之际,我要向2年多来支持、帮助、关心过我的老师、同学表示衷心的感谢。特别是指导老师顾莉莉老师为我们的论文关心和忙碌。
在这1个月的毕业设计使我受益匪浅,学到了如何把基础知识应用到实践中来。我觉得毕业设计的准备一定要充分,不要急于得到结果,重要的是做设计过程中的思考与实践,另外,要多多查找相关的知识,互联网和图书馆里面都有大量与课题相关的资料。解决问题固然重要,但是发现问题和提出问题更为重要。如此才能提高解决问题的能力。
在此,谨向所有帮助的朋友表示衷心的感谢和敬意。
附录1:
附录2:
 *查看完整论文请+Q: 351916072 
关键字:
一 引言 1
附录2: 19一 引言

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jxgc/zdh/4598.html

好棒文