病房呼叫系统设计报告
武汉轻工大学
电子系统设计
基于单片机的病房呼叫系统论文
学院 电气与电子工程学院
专业
班级 英才
1301 学生姓名
学号 1304080059(林枫)
1304080051(樊谦)
目录
摘要 ................................................................................................................................ 3 前 言 .............................................................................................................................. 4 1
系统整体设计 .......................................................................................................... 4 功能与方案确定 . .................................................................................................................. 4 功能要求 . .......................................................................................................................... 4 方案论证 . .......................................................................................................................... 4 总体结构框图 . .................................................................................................................. 5 2
系统硬件设计 .......................................................................................................... 5 硬件构成示意图 . ................................................................................ 错误!未定义书签。 单片机简介 . .......................................................................................................................... 6 主要单元模块介绍 . .............................................................................................................. 6 控制器AT89C51 ............................................................................................................... 6 显示电路设计 . .................................................................................................................. 6 报警电路设计 . .................................................................................................................. 7 控制电路设计 . .................................................................................................................. 7 系统软件设计 ................................................................................................................. 7 系统主程序流程图 . .............................................................................................................. 7 显示程序流程图 . ................................................................................ 错误!未定义书签。 键盘扫描流程图 . ................................................................................ 错误!未定义书签。 系统调试与结果 . ........................................................................................................... 10 软件调试 . ............................................................................................................................ 10 结 论 ............................................................................................................................ 10 参考文献 . ...................................................................................................................... 11 附 录 ............................................................................................................................ 11 附录一 整体电路图 . .......................................................................................................... 11 附录二 程序 . ...................................................................................................................... 12
摘要
协助医院
宝贵时间
系统是基于51系列的单片机设计的病床呼叫系统。该系统以A T89C51单片机为核心辅以矩阵键盘、LED 显示电路和部分简单模拟和数字电路组成的能够实现病人和医护人员之间信息的传递。每个病人要呼叫可以
在该设计中每个病房都
供一个成本低、效率高、操作方便和易于安装维护的快捷系统。
AT89C51
LED
前 言
越多的人们
信息化建设中的一个重要着眼点。
升档次和服务质
间。
病床呼叫系统是一种应用于医院病房、
养老院等地方用来联系沟通医护人员直接影响到病员的安危历来受到各大医院的普遍重视。它要求及时、准确可靠、简便可行、利于推广。目前市场上存在着许多种型号不一功能各异的医院病房呼叫系统主要为两大类有线式和无线式。
无线式病房呼叫系统不存在铺设线路的问式的适合较小的医院病房使用具有成本低易于操作、安装和维护而且具有可靠稳定对其他医疗设备不会产生干扰的特点但受到布线较多影响美观故不适宜较大的医院。病床呼叫管理系统便于病员快捷的呼叫护士缩短人工呼叫的时间。当今病房呼叫系统正在逐步地向智能化发展它可以和录像机一起使用当病人按下开关时在护士值班室的大屏幕能够观察病人的需要。并且可以配备对讲机等设备能够使病员及时快捷地与医护人员进行沟通。
1 系统整体设计 1.1
1.1.1
功能要求
功能与方案确定
一,任一病房共8张呼叫医护值班室马上能响应并显示。二,显示病房床号。三,若有多个病床呼叫就循环显示。四,处理完毕后可以清除记录。
1.1.2
方案论证
使用8051单片微机外加作地址锁存用的一块8三态锁存器74LS373芯片和一块EPROM 芯片可构成一个完整的最小微机电路, 以此为基础在智能装置中若
m 行n 8255
或8279之类的并行1/0P3.0(RXD)和P3:1(TXD)经多块串——串转换电路74LS164和74LS165 IC
芯片实现接示电路接口由P1口和P2P2口和P3口组成。在完成显示
P1P2口的高6位(P2.7-P2.2)锁
存待显示字符的位选码。
8051P2.7-P2.2P3口的P3.7-P3.4承担缓冲功能。利用P2 .7-P2.2输出数据代码的做法是通过改变程序计数器高6位数值来实现的。
用80518051单片微机外加作地址锁存用的两块8三态锁存器74LS373芯片可构成一个完整的最小微机电
m 行n 列矩
I/O芯片而由8051自身I/O。
3 输入部分
键盘输入 按键控制器 AT89C51输出部分 LED 显示 功能, 即用P0口的八个端口作为LED 的段选, 用P1口和P2口的做键盘电路的接口。
件电路
I/O
I/O
1.1.3
总体结构框图
框架模块功能描述
一. 输入部分包括按键输入按键输入相当于一个外界的干扰信号用于向单片
机传输命令或数据。 二
. 调节。
三微处理器采用常见的AT89C51
单片机为控制核心通过软件编程对实时采集的
四输出部分包括LED 显示电路将从键盘上输入的信号显示出来给人以直观的印象。
五系统过程的综述键盘按钮输入信号AT89C51单片机收到信号后进行处理通过输出系统将信号显示在LED 屏上此时还可以通过按键进行中断调节显示会发生相应变化实际情况出发人们易于操作。
2 系统硬件设计
2.1 硬件结构
电路外围电路主要由按键,蜂鸣器组成。其中按键部分的9个独立按键用来检测8个床位及强制清除状态。蜂鸣器用来做为病人呼叫后的报警装置。
2.2 单片机简介
Single ChipMicrocomputer, 又称为微控器
Microcontroller UnitEmbedded Controller。它是将计算机的基
CPU 、ROM 、
RAM 、并行I/O、串行I/O、定时器/计数器、
中断控制、系统时钟及系统总线等。展。
单片机有着体积小、功耗低、功能强、性能价格比高、易于推广应用等显得到日益广泛的应用。
2.3 主要单元模块介绍
2.3.1
控制器STC89C52
STC89C52是美国ATMEL 公司生产的低电压, 高性能
CMOS8
内含4k bytes 的可反复擦写的只读程序存储器(PEROM)和128 bytes 的随机存取数据存储器(RAM)
ATMEL
容标准MCS-51指令系统, 片内置通用8位中央处理器(CPU)和Flash 存储单元功能强大STC89C52单片机可为您提供许多高性价比的应用场合可灵活应用于各种控制领域。
2.3.2
显示电路设计
LED 显示原理
LED 即发光二极管它是一种由某种半导体材料制成的PN 结由于掺杂浓度很
-
LED
LED 的正向工作
电压降一般在1.2-2.6V
5mA-20mA [12]。LED 很适合于脉冲工作状态在
20%左右。
LED 显示器有单个、七段和点阵式几种类型。本设计将使用七段LED 显示器。
LED 显示
七段LED 显示器由数个LED 组成一个阵列并封装与一个标准外壳中。为适用于不同的驱动电路有共阴极和共阳极两种结构如图所示。用七段LED 显示器可组成0-9数字和多种字母为了适应各种装置的需要这种显示中还有一个小数点所以实际共有八段。图2-8 LED显示器的两种结构为了显示某个数或字符就要点亮对应的段这就需要译码。译码有硬件和软件之分硬件译码的优点是计算机时间的开销比较小但硬件开支大。与硬件电路相比软件译码显示电路省去了硬件译码器本设计采用软件译码的方式。按照显示方式七段LED 系统又有静态显示和动态显示之分。这次设计采用的是静态显示利用74LS373和显示器组成了显示系
统。在每一次显示输出后能够保持不变仅在待显示数字需要改变时才更新锁存内容。
2.3.3
报警电路设计
片机
P3.7
嘀”声作为呼叫提示。
2.3.4
控制电路设计
控制按键接
p3.3
按下“响应按钮”通过编程令单片机执行中断程序。
3 系统软件设计
3.1 系统主要构思
程序主要由3大模块构成。分别为中断模块,按键检测模块,数码管显示及蜂鸣器报警模块。
中断模块采用了定时器0和定时器1,定时器0定时周期较短,其主要负责数码管的实时显示。定时器1定时时间较长,主要负责病人呼叫后的数码管闪烁及当前显示哪位病人号码。
按键检测模块则是通过9个独立按键分别检测8个病人和1个强制清零按钮的状态。
数码管显示模块则是实时显示当前电路状态,即所呼叫的病人编号。
3.2 系统主程序流程图
3.3 TIM0中断流程
3.4 TIM1中断流程
4 系统调试与结果
统调试包含控制系统的硬件联调、
软件联调、系统仿真、
仿真烧录和现场安装调
个系统的设计工作
§4.1 硬件调试
4.1 软件调试
调试的主要任务是排查错误。 通过在KEIL_C
组成一个完整的程序。
5 结 论
至此本设计的主要内容已经完成。本章是在对前面完成的工作进行总结的基础上提出今后进一步工作的建议和设想。选择这个课题难点为病人都按开关时在
数码显示器能循环显示病床这也就是考验我们对所学知识有比较透彻的了解和生巨大变化传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机因其极高的性价比得到广泛的应用与发展从而加快了智能仪器的发展在做毕业设计的过程中虽然碰到了不少的困难但是在老师的指导以及自己的努力下终于取得了一定成果。 一、 主要工作及结论 1、熟悉
AT89C51 2 3 二、 存在的问题
1、电子电路的设计中对各种影响因素的考虑不够完全。 2
3
这些都为我今后的学习和工作留下了积极的影响。 黑龙江八一农垦大学
6 参考文献
谭浩强.MCS-51单片机应用教程. 荣.MCS-51单片机及实用教程. 康华光. 电子技术基础.
李伯成. 单片机及嵌入式系统. 肖金球. 单片机原理与接口技术.
出版社,200457~62 [2] 张振
,2000231~236
,200017~23
,2005337~346 ,2004153~159
7 附 录
附录一 整体电路图
附录二 程序
#include
#include "public_head.h" #include "key_inspection.h" #include "digital_display.h"
int key_status[8]; //定义数组用来存放病人按键状态 int count, count_1, display_flag, buzzer_flag; int display_none; //数码管熄灭标志 int _flash; //数码管闪烁标志 /** * 定时器初始化
* 定时器0 定时周期 3ms 用于动态数码管扫描 * 定时器1 定时周期 50ms 用于蜂鸣器响 */
void Init_Tim(void) {
TMOD = 0x11; TH0 = TIM0_H; TL0 = TIM0_L; ET0 = SET;
TH1 = TIM1_H; TL1 = TIM1_L; ET1 = SET;
EA = SET; TR0 = SET; } /**
* 主函数 */
void main(void) {
int i;
for(i = 0; i
P0 = 0xFF; Init_Tim();
count = 0; //计数数码管数字变化 count_1 = 0; //计数数码管闪烁 display_flag = RESET; all_clear = RESET;
buzzer_flag = RESET; booming = 0; _flash = 0; custom = 0; while(1) { key_inspection(); if(buzzer_flag == SET) { TR1 = SET; } } } /** * T0定时器中断 */
void Timer0_(void) interrupt 1 {
TR0 = RESET; TH0 = TIM0_H; TL0 = TIM0_L; // test_point = 0; display(); TR0 = SET; } /** * T1定时器中断 */
void Timer1_(void) interrupt 3 {
TH1 = TIM1_H; TL1 = TIM1_L; count++; _flash++; }
/*******按键部分*********/
//检测是否开始报警//用于数码管计数 //数码管当前显示计数
#include "reg52.h"
#include "public_head.h"
int custom; //当前病人号 /** * 简易延迟程序 * 大约8ms */
void delay_ms(void) {
int i,j;
for(i = 5; i > 0; i--) { for(j = 110; j > 0; j--); } } /**
* 按键检测程序 */
void key_inspection(void) {
int i,k;
key = 0xFF; if(key != 0xff) { delay_ms(); if(key != 0xff) { buzzer_flag = SET; for(i=0x80, k = 7; i > 0; i >>= 1, k--) { if((key & i) == RESET) { if(custom >= 8) { custom = 0; } key_status[custom++] = k; } } while(key != 0xff); } }
all_clear = SET;
if(all_clear == RESET) { delay_ms(); if(all_clear == RESET) { P0 = 0x00; buzzer_flag = RESET; TR1 = RESET; booming = RESET; custom = 0; for(i = 0; i
/* 数码管显示部分 */ #include "reg52.h"
#include "digital_display.h" #include "key_inspection.h" #include "public_head.h"
unsigned char code _tube[8] = {0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f}; /** * 数码管显示 & 蜂鸣器报警 */
void display(void) {
if(buzzer_flag == RESET) { dig_tube = 0x00; } else { if(_flash
//demo
else { dig_tube = 0x00; booming = RESET; if(_flash > 40) { if( key_status[++display_flag] == '\0') { display_flag = 0; }
} }
}
} _flash = 0;