大学毕业设计.docx
《大学毕业设计.docx》由会员分享,可在线阅读,更多相关《大学毕业设计.docx(23页珍藏版)》请在冰豆网上搜索。
大学毕业设计
摘要
病房呼叫系统由安装在护士站的报警装置和病房床头的呼叫单元组成,是病人请求医生或护士进行诊断和护理的工具。
借助病房呼叫系统架起一座病患与医护人员之间及时沟通的桥梁,可以提高医护人员的工作效率及对病人的服务水平,进而保证病人的安全。
同时可以合理配置护理人员,降低运行成本,提高医院收益。
该系统以STC89C52单片机为控制核心,它控制呼叫检测、呼叫响应、呼叫报警、呼叫显示和数据通信。
系统设计采用主从结构。
从机实现呼叫检测功能,主机实现声光报警、LCD显示和与PC通信等功能,主、从机借助串行通信实现呼叫信息的传输。
本设计经过原理图设计、元器件焊接,布线和编程调试等过程,最后对系统进行了整体测试。
结果表明,系统各功能模块工作状态良好,整个系统设计基本上达到了预期的目标。
关键字:
病房呼叫系统;STC89C52单片机;LCD显示;声光报警;串行通信
Abstract
WardCallingSystem,consistingofthealarm-deviceinthenursestationandthecalling-deviceintheward,isanimportanttoolforpatientstoaskdoctorsornursesforhelp.Withthewardcallingsystemsettingupatimelycommunicationbridgebetweenpatientsandmedicalstaff,canimprovethestaffs’workefficiencyandservicelevelofthepatientandensurethesafetyofthepatients.Usingthewardcallingsystemcanrationalallocationofnursingpersonnelcostatthesametime,reducingtherunningcostandimprovingthehospitalprofit.
STC89C52single-chipmicrocomputeristhecontrolcoreofthesystem,whichcontrolscalltesting,callresponse,callalarm,calldisplayanddatatransmission.Thesystemusesthemaster-slavestructuredesign.Theslavehasthefunctionofcallandthehosthasthefunctionofalarm,LCDdisplay,andcommunicationwithPC,bytheserialcommunicationrealizingtheinformationtransmissionbetweentheslaveandthemaster.Afterschematicdesign,componentswelding,wiringandprogrammingdebuggingprocess,finallycarriedoutoveralltestsonthesystem.Resultsshowthatthesystem'seachfunctionmoduleworksingoodcondition,thewholesystemdesignbasicallyreachedtheexpectedgoal.
Keywords:
wardcallingsystem;STC89C52;LCDdisplay;sound-lightalarm;serialcommunication
目录
1绪论1
1.1设计背景1
1.2国内外发展状况1
1.3设计的目的和意义1
2系统总体设计3
2.1设计需要实现的功能3
2.2设计方案的选择与比较3
2.2.1键盘选择比较3
2.2.2显示器件选择比较4
2.2.3通信方式选择比较4
2.3设计原理框图4
3系统硬件设计6
3.1单片机最小系统设计6
3.1.1STC89C52简介6
3.1.2单片机的外围电路设计7
3.2键盘模块设计7
3.3LCD1602显示模块设计8
3.4报警模块设计9
3.5串行通信模块设计9
3.5.1串口通信RS-232-C9
3.5.2MAX23211
4系统软件设计12
4.1模块化编程12
4.2键盘扫描模块12
4.3LCD1602显示模块13
4.4单片机串行通信14
4.5系统程序设计15
4.5.1从机程序设计15
4.5.2主机程序设计流程15
4.6软件调试与仿真17
5实物设计与制作20
6总结22
参考文献23
致谢24
附录25
附录Ⅰ电路原理图设计25
附录Ⅱ系统程序设计26
1绪论
1.1设计背景
近年来人们对医疗服务的要求不断提高,尤其是在突发情况下病人期望及时得到医生或护士的诊断和护理。
在没有应用病房呼叫系统的情况下,病人遇到突发情况,可能得不到医护人员及时的救助,错过了最佳治疗的时间,最后小病酿成大病,重病以致无药可医,造成悲剧的发生,也加重了医、患矛盾。
病房呼叫这一环节不仅体现着对病人生命的负责,也展现了医院的服务效率,对于改善医患关系和提高医院的服务水平有重大意义。
因此,病房呼叫系统的设计开发具有重要的实用意义。
随着科技的进步,将计算机技术、通信技术、信息技术和自动化控制技术等运用在医疗服务中,病房呼叫系统可实现医院病房的智能化管理,包含产生呼叫,呼叫报警,呼叫显示,呼叫信息的储存与管理等功能,为医院和患者都带来方便。
1.2国内外发展状况
近年来随着生物医学传感器的小型化、信息处理和无线数据传输技术的发展和普及,使得无线医疗呼叫系统的研制成为热点。
各国科研机构和跨国公司竞相开展无线医疗呼叫系统及其应用研发。
其中哈佛大学的CodeBlue系统、法国CRNS研究机构的MARSIAN项目、NASA阿莫斯实验室和斯坦福大学开发的LifeGuard系统、第一军医大学的士兵生命状态远程监视机定位系统和上海大学的无线医疗监护系统具有代表性。
目前,在医疗监护领域,研究人员已经将ZigBee技术应用建立无限个人健康监护局域网,其主要通过ZigBee技术将多个人体生理信息监测装置组网。
美国学者Emiljovanovd等人实现一种用于监护的无线局域网(WBAN),该系统是基于ZigBee技术的多通道遥测系统,集成多种传感器,可以实时采集、分析各种生理数据,并且通过Internet将数据以电子病历的形式存于数据库中,可以用于术后监护或急救。
1.3设计的目的和意义
设计医院病房呼叫系统,架起一座病患与医护人员之间及时沟通的桥梁,方便病人及时呼叫医生和护士,保证病人能够及时地得到服务,切实做到对患者负责,提高病患对医院的满意度。
同时方便医院合理配置医护人员,降低运行成本,提高收益。
本设计将键盘识别、液晶显示、串行通信、报警指示等结合起来,应用项目设计的方法,体现了模块化设计的思想。
病房呼叫系统是利用单片机的控制及数据处理能力,对各种输入量进行采集,对输出量加以控制的呼叫报警系统。
它可以推广到用传感器代替键盘产生输入信号,开发各种呼叫系统。
例如:
与温度传感器结合使用的电力、电信设备的过热报警,与压力传感器结合使用的超载报警,与烟雾传感器结合起来的火灾报警等。
因此,医院病房呼叫系统的设计具有一定的实用意义。
2系统总体设计
2.1设计需要实现的功能
(1)确保特殊病房呼叫优先。
(2)从机对按键进行扫描,能准确的识别呼叫位置。
(3)单片机间实现数据传输,将呼叫信息由从机传递到主机,并产生报警。
(4)对未响应的呼叫进行排队,超过一定数目继续报警。
(5)PC记录呼叫信息及响应信息。
2.2设计方案的选择与比较
2.2.1键盘选择比较
方案一:
采用独立式键盘,每一个按键对应单片机的一个I/O引脚。
假设有8个按键接在P1口,其连接电路如图2-1所示。
图2-1独立式键盘的连接
方案二:
采用矩阵式键盘,m×n个按键只需要占用单片机m+n个I/O引脚。
以4×4矩阵式键盘为例,4×4矩阵键盘连接如图2-2所示。
图2-24×4矩阵键盘连接
采用独立式键盘每一个按键对应单片机的一个I/O引脚,布线简单,但占用单片机较多的I/O资源;而采用矩阵式键盘,布线复杂,但节约单片机的I/O资源。
而本设计使用按键的数目较多,故采用矩阵式键盘。
2.2.2显示器件选择比较
方案一:
采用数码管显示,每个数码管显示一位数据,显示多位数据,连接多个数码管,采用动态显示来显示数据。
方案二:
采用液晶显示器显示,可以同时显示多个数据。
一个数码管显示一位数据,并且只能显示特定的字符。
当显示多位数据时,需要多个数码管,利用动态显示显示数据,增加布线的难度。
而采用液晶器显示,可以显示数字,符号,英文等字符,且可以显示多个字符。
设计中需要同时显示多个字符,故采用液晶显示器。
2.2.3通信方式选择比较
方案一:
采用串行通信,在一根传输线上数据一位一位地进行传输来实现通信。
方案二:
采用并行通信,数据以字节或者字为单位在多根数据线上同时传输,即N位数据用N条数据线同时传输。
并行通信的速度快、传输效率高,但只局限于短距离通信。
串行通信使用的传输线少,并且可以借助现有的电话网、电缆、光缆等进行信息传输,因此特别适合远距离通信。
设计中选用串行通信,用较少的连线即可实现主机和从机通信和单片机与PC机的通信。
2.3设计原理框图
系统设计原理框图如图2-3所示。
图2-3系统设计原理框图
设计分为主机部分,从机部分和PC机部分。
从机检测呼叫信息,并发送呼叫信息。
主机接受呼叫信息并对此做相应的处理。
主机和从机通过RS232接口与PC连接,PC机接收从机的呼叫信息,也接收主机的响应信息。
利用PC强大的数据处理能力,以监督医护人员的服务效率和服务水平。
3系统硬件设计
本设计的硬件部分由单片机最小系统、键盘模块、LCD1602显示模块、报警模块和串行通信模块组成。
键盘模块用于产生呼叫,显示模块显示等待服务的病房号,报警模块用于产生呼叫报警和未响应呼叫超过一定数目时报警,串行通信模块实现将呼叫信息由从机传送给主机和将呼叫信息与响应信息传送给PC机。
本设计的电路原理图见附录Ⅰ。
3.1单片机最小系统设计
3.1.1STC89C52简介
设计采用的单片机是STC89C52,它是STC公司生产的一种低功耗、高性能CMOS8位微控制器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
其具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
STC89C52引脚图如3-1所示。
图3-1STC89C52的引脚图
3.1.2单片机的外围电路设计
(1)复位电路
单片机开始工作,CPU和系统中的其他部件都必须要有一个确定的初值,即复位状态。
RST引脚是单片机复位输入端,高电平有效。
设计中采用上电自动复位和手动复位相结合。
电阻R和电容C的参数为:
R1=1K,R2=10K,C1=22uf。
单片机复位电路如图3-2所示。
图3-2单片机复位电路复位
(2)时钟电路
时钟是时序的基础,STC89C52内部由一个反相放大器构成振荡器,可以由它产生时钟,时钟可以由两种方式产生内部方式和外部方式。
本系统采用内部方式,在XTAL1和XTAL2端外接石英晶体作为定时元件,内部反相放大器自激振荡,产生时钟。
电容在22pF~100pF之间选择。
晶振通常为6MHZ,12MHZ,11.0592MHZ和24MHZ。
由于本设计需要使用单片机的串口通信,故晶振选用11.0592MHZ,以降低串行通信的误码率。
单片机时钟电路图3-3所示。
图3-3单片机时钟电路
3.2键盘模块设计
本设计通过扫描按键的状态来决定是否发出呼叫,共有17个按键用于产生呼叫,1个是VIP(优先呼叫)病房呼叫按键,其余16个是普通病房呼叫按键。
VIP病房呼叫按键由于数目较少,故采用独立式键盘。
普通病房呼叫按键数目较多,采用4×4矩阵式键盘,将其接在从机的P1口,低四位作为行线,高四位作为列线,它与单片机的连接如图3-4所示。
图3-44×4矩阵式键盘与单片机的连接
3.3LCD1602显示模块设计
LCD1602是一种字符型液晶显示器,是一种专门用于显示字母、数字、符号等的点阵式液晶显示器。
LCD1602的显示容量为16×2个字符(可以显示2行,每行显示16个字符),芯片工作电压为4.5~5.5V,工作电流为2.0mA(5.0V),模块最佳工作电压是5.0V。
LCD1602具有16个引脚,其引脚说明如表3-1所示。
在LCD1602的有关设计中,7~14引脚作为数据线,通过编写程序控制LCD1602的4、5、6引脚来控制数据和指令的读写,实现LCD1602的显示功能。
LCD1602与单片机的连接如图3-5所示。
表3-1LCD1602引脚说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
图3-5LCD1602与单片机的连接图
3.4报警模块设计
本设计的报警方式采用声光报警,即当有呼叫产生是LED灯闪烁,蜂鸣器发声。
LED连主机的P2.0引脚,并串联限流电阻(R2=330,R2=1K)。
当P2.0为低电平时,LED点亮。
SPEAKER接主机的P2.2引脚,用三极管作为控制开关,P2.2高电平时三极管导通,蜂鸣器发声。
报警电路如图3-6所示。
图3-6报警电路
3.5串行通信模块设计
3.5.1串口通信RS-232-C
计算机与计算机或计算机与终端之间利用串行通信传送数据时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。
它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。
(1)接口的信号内容。
实际上RS-232-C的25条引线中有许多是很少使用的,在计算机与终端通讯中一般只使用3~9条引线。
RS-232-C最常用的9针的D型连接器。
RS-232-C引脚如表3-2所示。
(2)接口的电气特性。
在RS-232-C中任何一条信号线的电压均为负逻辑关系,即:
逻辑“1”:
﹣5~﹣15V;逻辑“0”:
﹢5~﹢15V,噪声容量为2V。
即要求接收器能识别低至﹢3V的信号作为逻辑“0”,低至﹣3V的信号作为逻辑“1”。
表3-2RS-232-C信号引脚
引脚序号
信号名称
符号
功能
2
接收数据
RXD
DTE接收串行数据
3
发送数据
TXD
DTE发送串行数据
5
信号地
GND
信号地线据
7
请求发送
RTS
请求发送信号,输出信号
8
清除传送
CTS
对RTS的响应信号
1
载波检测
DCD
数据载波检测,输入信号
4
数据终端准备好
DTR
数据终端就绪
6
数据通信就绪
DSR
数据通信准备就绪
9
振铃指示
RI
表示DCE与线路接通,出现振铃
(3)接口的物理结构。
通常插头在DCE端,插座在DTE端。
一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。
所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。
两个DB-9的连接如图3-7所示。
图3-7两个DB-9的连接图
3.5.2MAX232
由于单片机采用的是TTL电平,而串行通信采用的是EIA电平,这就需要一个电路来实现电平互转。
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用﹢5V单电源供电,可以实现TTL电平与RS-232-C电平相互转换的IC芯片。
MAX232与RS-232连接如图3-8所示。
图3-8MAX232与RS232的连接图
4系统软件设计
本系统的软件设计包含从机程序的设计,主机程序的设计和软件调试与仿真。
在具体程序设计过程中采用模块化编程,以降低程序设计的难度,增强程序的可移植性和方便调试仿真。
软件调试与仿真是通过在PC机上安装仿真软件进行的。
4.1模块化编程
软件设计采用模块化编程,把程序划分成一个个较小的、功能相关而又相对独立的模块。
它有以下优点:
各模块性对独立、功能单一、结构清晰、接口简单;控制了程序设计的复杂性;提高了元件的可靠性;缩短了开发周期;避免了程序开发的重复劳动了;易于维护和功能扩充。
本设计的程序模块有延时程序模块,键盘扫描程序模块,液晶显示程序模块和串口通信程序模块。
各程序模块建立了相应的.c文件和.h文件,最后把相应的.c添加到工程中。
4.2键盘扫描模块
键盘扫描采用行列线反转法,其原理:
单片机通过输出端口向行线输出低电平,列线输出高电平,若有按键按下则列线不全为高电平,读入列线值;然后对行线输出高电平,列线输出低电平,读入行线值。
对获得的行线值和列线值进行或运算,形成键盘编码。
通过查找键盘码表,确定唯一的按键。
在键盘扫描程序设计时,除了以键码的识别以外,还有按键抖动问题需要解决。
有硬件去抖动和软件去抖动两种方法。
硬件方式通过按键输出端增加双稳态触发器,来实现去抖动。
软件方式是通过在检测到按键按下时,执行一段10ms左右的延时程序,再判断是否有按键闭合,来实现去抖动。
键盘扫描函数scankey.c如下:
#include“scankey.h”
#include“delay.h”
#include
ucharcodekeycode1[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};//按键编码
unsignedcharscankey()
{unsignedcharcode_h,code_l,tem,n;
P1=0x0f;
code_l=P1&0x0f;
if(code_l!
=0x0f)
{delay(10);//去抖动
if(code_l!
=0x0f)
{code_l=P1&0x0f;
P1=code_l|0xf0;
code_h=P1&0xf0;
tem=code_h|code_l;
for(n=0;n<16;n++)//查找按键号
if(tem==keycode1[n])
returnn+1;}
}return0;
}
4.3LCD1602显示模块
LCD1602显示模块程序包含数据和指令的读写和LCD的初始化,详细设计见附录Ⅱ。
LCD1602的读写操作需要按时序进行,其读操作时序图如4-1所示,写操作时序图如4-2所示。
LCD1602读写指令或数据由RS和RW的时序决定的。
表4-1是LCD1602读写指令或数据的时序表。
图4-1LCD1602读操作时序
图4-2LCD1602写操作时序
表4-1LCD1602读写操作时序表
读指令
输入
RS=L,R/W=H,E=H
输出
D0—D7=状态字
写指令
输入
RS=L,R/W=L,E=高脉冲
D0—D7=指令码
输出
无
读数据
输入
RS=H,R/W=H,E=H
输出
D0—D7=数据
写数据
输入
RS=H,R/W=L,E=高脉冲
D0—D7=数据
输出
无
LCD1602的初始化过程如下:
延时15mS,写指令38H(不检测忙信号),延时5mS,写指令38H(不检测忙信号),延时5mS。
以后每次写指令、读/写数据操作均需要检测忙信号。
写指令38H(显示模式设置),写指令01H(显示清屏),写指令06H(显示光标移动设置),写指令0CH(显示开及光标设置)。
4.4单片机串行通信
单片机串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。
51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。
串行接口工作方式由SCON中的SM0位和SM1位决定,这两位组合成00,01,10,11对应于工作方式0、1、2、3。
本设计中串口工作方式采用方式1,即8位UART,波特率可变。
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。
波特率是用来表示串行通信数据传输快慢的物理量,定义为每秒钟传送的数据位数。
波特率计算公式为:
公式中,fosc为时钟频率,SMOD决定波特率是否加倍,K为定时器T1的位数,与定时器T1的工作方式有关。
实际应用中,经常根据时钟频率和波特率来计算定时器T1的初值X。
本设计的时钟频率为11.0592MHZ,串行通信波特率为9600,故需要设置T1工作在定时方式2,初值为0xfd。
串口初始化程序模块serial_init.c如下:
#include
#include"serial_init.h"
voidserial_init()
{SCON=0X50;//串口的工作在方式1,允许串口接收数据
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;//T1为方式2,波特率9600
TR1=1;//开定时器1
TI=0;
RI=0;}//接收标志位清0
4.5系统程序设计
4.5.1从机程序设计
从机程序流程如图4-3所示,具体程序设计见附录Ⅲ。
4.5.2主机程序设计流程
主机实现呼叫信息的接收,呼叫信息的排队(调用函数callhelp()实现),响应呼叫(外部中断0实现),发送响应的病房号,显示未处理的病房号。
主程序设计流程如图4-4所示,外部中断0程序设计流程如图4-5所示,串口中断设计流程如4-6所示。
主机的具体程序设计见附录Ⅳ。
图4-4主机程序设计流程图
4.6软件调试与仿真
系统在软件设计完成后,需