1、 电子信息工程专业课程设计任务书 题目:单片机病房呼叫系统设计 设计内容 设计一个单片机病房呼叫系统,可容64张床位的病房呼叫,每当患者需要呼叫护士时,按下按钮,此时护士值班室内的呼叫系统板上显示该患者的床位号,并振铃3秒。当护士按下“响应”键时,结束当前呼叫。 设计步骤 一、 总体方案设计 基于单片机的病房呼叫系统设计,附有复位电路,时钟电路,键盘电路等。复位电路是单片机的初始化操作,为摆脱困境,通过复位电路可以重新开始。时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。 二、硬件选型工作:对所使用的电路元件应选择型号。 三、硬件的设计和实现 1.
2、 选择所用的51单片机; 2. 设计单片机最小系统,在此基础上进行扩展; 3. 设计支持系统工作的外围电路; 四、软件设计 1. 编写系统初始化和主程序模块; 2. 画出电路流程图; 3. 编写子程序; 4. 显示程序。 五、编写课程设计说明书,绘制完整的系统电路图(A3幅面)。 课程设计说明书要求 1. 课程设计说明书应书写在学院统一印制的课程设计(论文)说明书上,书写应认真,字迹工整,论文格式参考国家正式出版的书籍和论文编排。 2. 论理正确、逻辑性强、文理通顾、层次分明、表达确切,并提出自己的见解和观点。 3. 打印不少于12页(除附图外)。 4. 每组
3、单独一个题目,每组上限5人。 时间安排 课程设计计划时间4周。课程设计题目于17周下发。课程设计完成后于20周三中午下班前送交电子信息办公室(实验楼三楼),届时指导教师安排短暂答辩。 辅导时间和地点 17~20周每周2、周3和周4。 目录 一、设计要求 3 二、设计目的 4 三、设计的具体实现 5 3.1系统概述 5 3.2单元电路设计 6 3.2.1 单片机的引脚介绍 6 3.2.2 单片机复位电路介绍 7 3.2.3 时钟电路的介绍 8 3.2.4 详细设计 10 3.3软件程序设计 12 3.3.1 系统软件的设计 12 3.3.2 主程序流程图 13
4、 3.3.3子程序流程图 13 3.3.4 源程序代码 16 四、结论与展望 21 五、心得体会及建议 22 六、附录 24 七、参考文献 26 单片机病房呼叫系统设计报告 一、设计要求 1、设计一个可容64张床位的病房呼叫系统。 2、要求每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮。此时护士值班室内的呼叫系统板上显示该患者的床位号,并振铃3秒。 3、当护士按下“响应”键时,取消当前呼叫。 二、设计目的 在大型机关,旅馆和医院中,常需要有一种内部联络和呼叫系统,以便在旅客(病员)
5、和服务人员之间建立必要的联络,而一般的内部通话系统都比较少,经常使用的是比较便宜的呼叫指示,这种呼叫指示系统在提示的同时,能够用数码管显示各呼叫的号码。 病房呼叫系统是病人请求值班医生或护士进行诊断或护理的紧急呼叫工具,它主要用于协助医院病员在病床上方便地呼叫医务人员,可将病人的请求快速传送给值班医生或护士,是提高医院和病房护理水平的必备设备之一。医院的竞争越来越激烈,商业医院的生存是第一位的,提升档次和服务质量迫在眉睫,陪护问题一直是医患矛盾的主体,也是长期困扰卫生系统服务质量的大问题,使用病房呼叫系统,方便病人更快找到医生,以节约病人的宝贵时间。。因此该系统具有很大的应用前景和广阔的市场
6、发展空间。 本设计是以AT89C51为核心的病人呼叫系统,对该系统的硬件和软件结构进行了相应的描述。此系统主要由89C51单片机,按键,数码管,喇叭等组成。每个病人要呼叫可以按键,同时会有喇叭响,数码管显示不同床位号,相应的指示灯亮 通过对病区的数据采集,实现医院医疗人员值班室和病人房之间的通信呼叫联系,具有使用方便、操作简单等特点。 三、设计的具体实现 3.1系统概述 在本系统中,我采用单片机AT89C51为核心的系统主要包括2个部分:数据采集和数据的输出,数据的输出用来进行呼叫,编码使用单片机完成,数据采集负责接收分机发来的信号,并显示该患者的床位号,并响铃,主机
7、上设有键盘可以取消当前呼叫。 其实现结构框图如图3.1所示。 图3.1 系统总体方案图 由8×8键盘矩阵采集到的键值经过P1、P2口输入到单片机AT89C51中,然后通过P0口把相关信息传送到数码管显示。同时报警警示灯闪烁、报警声响起。医疗人员可以通过控制键盘操作,完成呼叫响应和信息查询等监护工作。 3.2单元电路设计 3.2.1 单片机的引脚介绍 AT89C51可以说是最常用的51单片机了,下图介绍AT89C51的引脚图资料。如图3.2所示。 图3.2 AT89C51引脚图 (1) RESET一般接2个元件:①接10K电阻到地,②接10μ电容到电源。 (2)
8、/ VPP一般情况下接高电平(这时使用MCU内部RAM/ROM)。 (3) ALE / PROG一般情况下空着(这时使用MCU内部RAM/ROM)。 (4)一般情况下空着(当使用MCU内部RAM/ROM时)。 (5) P0内部没有上拉电阻,所以必要时需要在每个引脚外接5.1K左右上拉电阻到电源。 (6) XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz,晶振的频率可以在1MHz-24MHz内选择,电容取20PF左右。 (
9、7) VDD:电源+5V。 VSS:GND接地。 引脚功能说明: ①电源引脚 Vcc(40脚):典型值+5V。 Vss(20脚):接低电平。 ②输入输出口引脚: P0口:I/O双向口。作输入口时,应先软件置“ 1”。 P1口:I/O双向口。作输入口时,应先软件置“ 1”。 P2口:I/O双向口。作输入口时,应先软件置“ 1”。 P3口:I/O双向口。作输入口时,应先软件置“ 1”。 ③控制引脚: RST/Vpd、ALE/、、/Vpp组成了MSC-51的控制总
10、线。 RST/Vpd(9脚):复位信号输入端(高电平有效)。 第二功能:加+5V备用电源,可以实现掉电保护RAM信息不丢失。 ALE/ (30脚):地址锁存信号输出端。 第二功能:编程脉冲输入。 (29脚):外部程序存储器读选通信号。 /Vpp(31脚):外部程序存储器使能端。 3.2.2 单片机复位电路介绍 当MCS-51系列单片机的复位引脚RST出现两个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。 根据应用的要求,复位操作通常有两种基本的方式
11、上电复位和上电或开关复位。 上电复位要求接通电源后,自动实现复位操作。常用的上电复位如下图3中所示。图中电容C1和电阻对电源+5V来说构成微分电路。 上电后,保持RST一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻,也能达到上电复位的操作功能。如下图3.3和3.4中所示。 图 3.3 上电复位电路 图 3.4 上电复位和按钮复位电路 3.2.3 时钟电路的介绍 采用时钟方式时,在XTAL1和XTAL2之间接入石英晶体振荡器(晶振)即可使内部振荡器起振,产生单片机工作所需的时钟脉冲。如图3.5所示。 时钟是时序的基础,8951核片内由一个反相放大器构成振荡器,可
12、以由它产生时钟,时钟可以由两种方式产生内部方式和外部方式。本系统采用内部方式,在XTAL1和XTAL2端外接石英晶体作为定时元件,内部反相放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频。电容采用22nF MCS-51单片机时钟脉冲也可以由外部产生,但芯片的制造工艺不同,外部时钟源的输入方式有所不同。对于HMOS型芯片,外部振荡信号接至XIAL2引脚,XTAL1接地,XTAL2引脚对电源接入上拉电阻。而CHMOS型芯片,外部振荡信号接至XTAL1,XTAL2悬空。 图3.5 时钟电路 3.2.4 详细设计 (1) 数码管显示模块 本系统采用了较为简单的由单片机直接驱动数码
13、管的显示电路,由于51单片机P0口内部是漏极开路型(作I/O口用时),P0口内部没有设置上拉电阻,不接上拉电阻的话输出会不正常,比如输出高电平时得不到高电平。电路如图3.6。 图3.6 单片机与数码管接口图 (2)报警电路设计 主机在接受到呼叫后,进行报警告知值班人员。报警分为两个部分,第一个部分是当有病床进行呼叫后值班台警示灯闪烁三次后保持常亮,显示为当前有病床呼叫;第二个部分是响铃三秒后自动停止,当值班人员听到响铃会知道当前有病床呼叫,观察显示面板可知是几号病床呼叫,从而进行快速处理。报警电路用单片机如图3.7所示。 图3.7 报警电路设计图 (3) 键盘模块电路设
14、计 8×8键盘矩阵和64个LED警示灯模块组成,在键盘扫描和LED驱动部分,使用了LED显示电路原理图如图3.8所示。 图3.8 键盘模块电路图 (4) 键盘的工作方式介绍 键盘的工作方式应该根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。 编程扫描方式: 编程扫描方式是利用CPU完成其他工作的空余时间,调用键盘扫描子程序来检验按键状态,响应键盘输入。执行键功能程序时,CPU不再享有键输入要求,直到CPU重新扫描键盘为止。 定时扫描方式: 定
15、时扫描方式就是每隔一段时间对键盘扫描一次,她利用单片机内部的定时器产生一定时间(如20ms)的定时,定时时间到产生定时器溢出中断。CPU在中断服务程序中键盘进行扫描,并在有键按下时识别出该键并保存键号,然后在中断服务程序或主程序中执行该键的功能程序。 中断扫描方式: 本设计采用上述两种键盘扫描方式时,无论是否有键按下,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入。因此,CPU经常处于空扫描状态,浪费CPU大量时间,CPU不扫描键盘,而有键按下时,通过相应电路产生中断请求,CPU相应中断,执行键盘扫描子程序,并识别键号。 3.3软件程序设计 3.3.1 系统软件的
16、设计 该系统软件主要完成以AT89C51为核心的数据的采集、处理和有线传输。采用模块化程序设计方法,将系统软件的设计主要分为显示模块,输入模块,输出模块。单片机扫描发射键,如果扫描到有发射键按下,系统便扫描拨码开关的状态以确定地址码,通过P1口和P2口开始地址码传送当服务台接收到呼叫信号后,护士值班室内的呼叫系统板上显示该患者的床位号,并振铃。当护士按下“响应”键时,结束当前呼叫。 3.3.2 主程序流程图 单片机扫描发射键,如果扫描到有发射键按下,系统便扫描拨码开关的状态以确定地址码,再进行中断初始化,去除键的延时抖动,分辨行、列值,进入死循环,这时病房指示灯点亮,服务台显示出床号并响
17、铃,病房等待服务台的回应,如果没有扫描到信号输入,则单片机始终处于初始状态。如图3.9所示。 图3.9 主程序流程图 3.3.3子程序流程图 子程序如图3.10是一个中断式键盘的流程图,当单片机收到信号后,中断入口开始初始化,去除键的延时抖动。而一般的削抖方式有软件和硬件两种,硬件削抖虽能够解决键抖动问题,但如果应用系统所需按键较多,本系统采用的是软件削抖,当检测出有键闭合时,先执行一个延时子程序产数毫秒的延时,待接通时的前沿抖动消失后再判别是否有键按下,分辨出行、列值。当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判别是否有键按下。 图3.10 子程序流程图 中断
18、程序: void key(void) 扫描键盘值 { uchar hang,lie; P1=0x00;P2=0xff; delay(1); if(P2!=0xff) { delay(5); 延迟后查询行列值 if(P2!=0xff) { switch(P2&0xff) 扫描列值 { case 0xfe:lie=0;break; case 0xfd:lie=1;break; case 0xfb:lie=2;break; case
19、 0xf7:lie=3;break; case 0xef:lie=4;break; case 0xdf:lie=5;break; case 0xbf:lie=6;break; case 0x7f:lie=7;break; } P2=0x00;P1=0xff; switch(P1&0xff) 扫描行值 { case 0xfe:hang=0;break; case 0xfd:hang=1;break; case 0xfb:hang=2;break; case 0xf7:ha
20、ng=3;break; case 0xef:hang=4;break; case 0xdf:hang=5;break; case 0xbf:hang=6;break; case 0x7f:hang=7;break; } P2=0xff;P1=0x00; while(P2!=0xff); bed_NO=keytab[hang][lie];TR0=1; 行列值赋值给bed_NO } else bed_NO=0; } } void time_init(void) 计数器的初始化
21、
{
TMOD=0x01;
TH0=(65536-8333)/256; 装入初值
TL0=(65536-8333)%256;
EA=1;
ET0=1;
}
void time(void) interrupt 1 using 1 定义中断块
3.3.4 源程序代码
源程序代码如下:
#include
22、it clear=P3^4; sbit FMQ=P3^1; ucharcodedistab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code keytab[8][8]={ {1,2,3,4,5,6,7,8}, {9,10,11,12,13,14,15,16}, {17,18,19,20,21,22,23,24}, {25,26,27,28,29,30,31,32}, {33,34,35,36,37,38,39,
23、40},
{41,42,43,44,45,46,47,48},
{49,50,51,52,53,54,55,56},
{57,58,59,60,61,62,63,64},
};
uchar bed_NO;
uchar btime;
uchar itime;
void delay(uint x)
{ uint i,j;
for(i=0;i 24、
{
uchar a10,a1;
a10=bed_NO/10;
a1=bed_NO%10;
P0=distab[a10];
B1=0;
delay(10);
B1=1;
P0=distab[a1];
B2=0;
delay(10);
B2=1;
}
void key(void)
{
uchar hang,lie;
P1=0x00;P2=0xff;
delay(1);
if(P2!=0xff)
{
delay(5);
if(P2!=0xff) 25、
{
switch(P2&0xff)
{
case 0xfe:lie=0;break;
case 0xfd:lie=1;break;
case 0xfb:lie=2;break;
case 0xf7:lie=3;break;
case 0xef:lie=4;break;
case 0xdf:lie=5;break;
case 0xbf:lie=6;break;
case 0x7f:lie=7;break;
}
P2=0x00;P1=0xff;
switch 26、P1&0xff)
{
case 0xfe:hang=0;break;
case 0xfd:hang=1;break;
case 0xfb:hang=2;break;
case 0xf7:hang=3;break;
case 0xef:hang=4;break;
case 0xdf:hang=5;break;
case 0xbf:hang=6;break;
case 0x7f:hang=7;break;
}
P2=0xff;P1=0x00;
while(P2!=0xff 27、);
bed_NO=keytab[hang][lie];TR0=1;
}
else
bed_NO=0;
}
}
void time_init(void)
{
TMOD=0x01;
TH0=(65536-8333)/256;
TL0=(65536-8333)%256;
EA=1;
ET0=1;
}
void time(void) interrupt 1 using 1
{
TH0=(65536-8333)/256;
TL0=(65536-8333)%256;
it 28、ime++;
if(itime>=100)
{
itime=0;
btime++;
if(btime>6){TR0=0;btime=0;}
buzzer=!buzzer;
FMQ=!FMQ;
}
}
void main(void)
{
FMQ=1;
time_init();
for(;;)
{
key();
display();
if(TR0==0){buzzer=1;}
if(clear==0)
{
delay(10);
if(clear==0)
{ 29、
bed_NO=0;
}
}
}
}
四、结论与展望
本设计是以AT89C51为核心的病人呼叫系统,对该系统的硬件和软件结构进行了相应的描述。通过对病区的数据采集,实现医院医疗人员值班室和病人房之间的通信联系,具有使用方便、操作简单等特点。伴随着医疗体制改革的不断深化和医疗事业的飞速发展,越来越多的人们需要迅捷、方便地得到医院的各种各样的医疗服务。
这使得衡量一个医院的综合水平高低,不再仅局限于软、硬件的建设上,更要比服务。临床呼叫求助装置是传送临床信息的重要手段,关系病员安危,传统的有线呼叫系统历来受到各大医院的普遍重视。
在医院的病房里每个床位 30、边都装有一个呼叫按钮,当病人需要帮助时,按下呼叫按钮,护士办公室里呼叫显示板上相应房间号的指示灯点亮并进行声音提示,同时在值班室里安装一个电子显示牌,使值班护土能及时的知道哪个房间的病人需要帮助或需要进行抢救。
五、心得体会及建议
本次课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈 31、向社会,从事职业工作前一个必不少的过程。千里之行始于足下,通过这次毕业设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
通过这次单片机设计,我在多方面都有所提高。通过这次基于单片机的病房呼叫器设计,综合运用本专业所学课程的理论和生产实际知识进行一次单片机设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了单片机课程所学的内容,掌握单片机设计的方法和步骤,掌握单片机设计的基本的技能懂得了怎样分析电路,了解了单片机的基本结构,提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了 32、全面的复习,独立思考的能力也有了提高。
在这次设计过程中,体现出团队设计的团结以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。转眼之间课程设计就要结束了,这几周我过得虽然忙碌但是很充实,因为通过这次设计我学到了很多知识,对单片机也有了更深的认识,并且把以前学的知识又重新梳理了一遍,除此之外我也感觉到了自己知识的匮乏,设计过程中遇到许多困难,比如由于之前对单片机应用知识的不熟悉,程序编写无从下手以及对以前所学知识掌握的不够牢固等等,给了我很大的压力,真正的感觉到是学无止境这句话是什么含义。我一遇到不会的知识或者以前学过但现 33、在却忘记的知识,我就上图书馆,上网去查,或者拿出以前的书再看看,尽力把它弄明白。我们小组在设计时一起讨论,一起研究,在大家的互相帮助下我们提高的很快,解决了很多问题,也通过这次设计我们在彼此身上学到了很多知识,并且在我们即将面临实习的重要时刻,这次设计过程也让我们对我们自己的专业,和学习,工作的方向有了更清晰的认识。让我知道不论做什么工作都要努力,都要不断学习。
此次设计为有线呼叫系统,虽存在布线复杂、维修不便、病房不能与值班室的语音对话等缺陷。但相对于无线呼叫系统而言,它的可靠性能高,而且不干扰其他医疗设备。
如果采用无线传输,会节约布线和改造线路的资金,为医院节约成本,并且及时、简便可 34、行,比目前的同类产品更能受到医院及病人的认可,有更强的竞争力,能大量推广。
六、附录
附录一:系统电路图
图6.1 病房呼叫系统电路图
附录二:元器件明细表
表6.2 元件器件表
器件
参数
数量
电阻
500Ω
2
电容
22pF,20uF
22pF2个,20uF1个
芯片
AT89C51
1
晶振
1
蜂鸣器
1
数码管
两位
1
排阻
1
按键
66
LED
RED
1
七、参考文献
35、1·孙俊逸,盛秋林·《单片机原理与应用》·北京清华大学出版社·2006.
2·何立民· 《单片机高级教程-应用与设计》·北京航天航空大学出版社·2000.
3·李朝青·《单片机原理及接口技术》·北京航天航空大学出版社·1999.
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名: 日期: 36、
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。
作者签名: 指导教师签名:
日期: 日期:
注 意 事 项
37、1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
30






