1、1. 编写系统初始化和主程序模块;2. 画出电路流程图;3. 编写子程序;4. 显示程序。五、编写课程设计说明书,绘制完整的系统电路图(A3幅面)。课程设计说明书要求1. 课程设计说明书应书写在学院统一印制的课程设计(论文)说明书上,书写应认真,字迹工整,论文格式参考国家正式出版的书籍和论文编排。2. 论理正确、逻辑性强、文理通顾、层次分明、表达确切,并提出自己的见解和观点。3. 打印不少于12页(除附图外)。4. 每组单独一个题目,每组上限5人。时间安排课程设计计划时间4周。课程设计题目于17周下发。课程设计完成后于20周三中午下班前送交电子信息办公室(实验楼三楼),届时指导教师安排短暂答辩
2、。辅导时间和地点1720周每周2、周3和周4。单片机病房呼叫系统设计报告一、设计要求1、设计一个可容64张床位的病房呼叫系统。2、要求每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮。此时护士值班室内的呼叫系统板上显示该患者的床位号,并振铃3秒。3、当护士按下“响应”键时,取消当前呼叫。二、设计目的在大型机关,旅馆和医院中,常需要有一种内部联络和呼叫系统,以便在旅客(病员)和服务人员之间建立必要的联络,而一般的内部通话系统都比较少,经常使用的是比较便宜的呼叫指示,这种呼叫指示系统在提示的同时,能够用数码管显示各呼叫的号码。病房呼叫系统是病人请求值班医生或护士进行诊断或护理的紧急呼叫工具,它
3、主要用于协助医院病员在病床上方便地呼叫医务人员,可将病人的请求快速传送给值班医生或护士,是提高医院和病房护理水平的必备设备之一。医院的竞争越来越激烈,商业医院的生存是第一位的,提升档次和服务质量迫在眉睫,陪护问题一直是医患矛盾的主体,也是长期困扰卫生系统服务质量的大问题,使用病房呼叫系统,方便病人更快找到医生,以节约病人的宝贵时间。因此该系统具有很大的应用前景和广阔的市场发展空间。本设计是以AT89C51为核心的病人呼叫系统,对该系统的硬件和软件结构进行了相应的描述。此系统主要由89C51单片机,按键,数码管,喇叭等组成。每个病人要呼叫可以按键,同时会有喇叭响,数码管显示不同床位号,相应的指示
4、灯亮通过对病区的数据采集,实现医院医疗人员值班室和病人房之间的通信呼叫联系,具有使用方便、操作简单等特点。三、设计的具体实现3.1系统概述在本系统中,我采用单片机AT89C51为核心的系统主要包括2个部分:数据采集和数据的输出,数据的输出用来进行呼叫,编码使用单片机完成,数据采集负责接收分机发来的信号,并显示该患者的床位号,并响铃,主机上设有键盘可以取消当前呼叫。其实现结构框图如图3.1所示。图3.1 系统总体方案图由88键盘矩阵采集到的键值经过P1、P2口输入到单片机AT89C51中,然后通过P0口把相关信息传送到数码管显示。同时报警警示灯闪烁、报警声响起。医疗人员可以通过控制键盘操作,完成
5、呼叫响应和信息查询等监护工作。3.2单元电路设计3.2.1 单片机的引脚介绍AT89C51可以说是最常用的51单片机了,下图介绍AT89C51的引脚图资料。如图3.2所示。图3.2 AT89C51引脚图(1) RESET一般接2个元件:接10K电阻到地,接10电容到电源。(2) / VPP一般情况下接高电平(这时使用MCU内部RAM/ROM)。(3)ALE / PROG一般情况下空着(这时使用MCU内部RAM/ROM)。(4)一般情况下空着(当使用MCU内部RAM/ROM时)。(5)P0内部没有上拉电阻,所以必要时需要在每个引脚外接5.1K左右上拉电阻到电源。(6) XTAL1是片内振荡器的反
6、相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz,晶振的频率可以在1MHz-24MHz内选择,电容取20PF左右。(7) VDD:电源+5V。 VSS:GND接地。引脚功能说明:电源引脚 Vcc(40脚):典型值5V。 Vss(20脚):接低电平。输入输出口引脚: P0口:I/O双向口。作输入口时,应先软件置“ 1”。 P1口: P2口: P3口:控制引脚: RST/Vpd、ALE/、/Vpp组成了MSC-51的控制总线。 RST/Vpd(9脚):复位信号
7、输入端(高电平有效)。 第二功能:加+5V备用电源,可以实现掉电保护RAM信息不丢失。 ALE/ (30脚):地址锁存信号输出端。编程脉冲输入。 (29脚):外部程序存储器读选通信号。 /Vpp(31脚):外部程序存储器使能端。3.2.2 单片机复位电路介绍当MCS-51系列单片机的复位引脚RST出现两个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本的方式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。常用的上电复位如下图3中所示。图中电容C1和电阻对电源+5V来说构成微分电路。上电后
8、,保持RST一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻,也能达到上电复位的操作功能。如下图3.3和3.4中所示。图 3.3 上电复位电路 图 3.4 上电复位和按钮复位电路3.2.3 时钟电路的介绍采用时钟方式时,在XTAL1和XTAL2之间接入石英晶体振荡器(晶振)即可使内部振荡器起振,产生单片机工作所需的时钟脉冲。如图3.5所示。时钟是时序的基础,8951核片内由一个反相放大器构成振荡器,可以由它产生时钟,时钟可以由两种方式产生内部方式和外部方式。本系统采用内部方式,在XTAL1和XTAL2端外接石英晶体作为定时元件,内部反相放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二
9、分频。电容采用22nF MCS-51单片机时钟脉冲也可以由外部产生,但芯片的制造工艺不同,外部时钟源的输入方式有所不同。对于HMOS型芯片,外部振荡信号接至XIAL2引脚,XTAL1接地,XTAL2引脚对电源接入上拉电阻。而CHMOS型芯片,外部振荡信号接至XTAL1,XTAL2悬空。图3.5 时钟电路 3.2.4 详细设计(1) 数码管显示模块本系统采用了较为简单的由单片机直接驱动数码管的显示电路,由于51单片机P0口内部是漏极开路型(作I/O口用时),P0口内部没有设置上拉电阻,不接上拉电阻的话输出会不正常,比如输出高电平时得不到高电平。电路如图3.6。 图3.6 单片机与数码管接口图(2
10、)报警电路设计主机在接受到呼叫后,进行报警告知值班人员。报警分为两个部分,第一个部分是当有病床进行呼叫后值班台警示灯闪烁三次后保持常亮,显示为当前有病床呼叫;第二个部分是响铃三秒后自动停止,当值班人员听到响铃会知道当前有病床呼叫,观察显示面板可知是几号病床呼叫,从而进行快速处理。报警电路用单片机如图3.7所示。图3.7 报警电路设计图(3) 键盘模块电路设计88键盘矩阵和64个LED警示灯模块组成,在键盘扫描和LED驱动部分,使用了LED显示电路原理图如图3.8所示。图3.8 键盘模块电路图(4) 键盘的工作方式介绍键盘的工作方式应该根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保
11、证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。编程扫描方式:编程扫描方式是利用CPU完成其他工作的空余时间,调用键盘扫描子程序来检验按键状态,响应键盘输入。执行键功能程序时,CPU不再享有键输入要求,直到CPU重新扫描键盘为止。定时扫描方式:定时扫描方式就是每隔一段时间对键盘扫描一次,她利用单片机内部的定时器产生一定时间(如20ms)的定时,定时时间到产生定时器溢出中断。CPU在中断服务程序中键盘进行扫描,并在有键按下时识别出该键并保存键号,然后在中断服务程序或主程序中执行该键的功能程序。中断扫描方式:本设计采用上述两种
12、键盘扫描方式时,无论是否有键按下,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入。因此,CPU经常处于空扫描状态,浪费CPU大量时间,CPU不扫描键盘,而有键按下时,通过相应电路产生中断请求,CPU相应中断,执行键盘扫描子程序,并识别键号。3.3软件程序设计3.3.1 系统软件的设计该系统软件主要完成以AT89C51为核心的数据的采集、处理和有线传输。采用模块化程序设计方法,将系统软件的设计主要分为显示模块,输入模块,输出模块。单片机扫描发射键,如果扫描到有发射键按下,系统便扫描拨码开关的状态以确定地址码,通过P1口和P2口开始地址码传送当服务台接收到呼叫信号后,护士值班
13、室内的呼叫系统板上显示该患者的床位号,并振铃。3.3.2 主程序流程图单片机扫描发射键,如果扫描到有发射键按下,系统便扫描拨码开关的状态以确定地址码,再进行中断初始化,去除键的延时抖动,分辨行、列值,进入死循环,这时病房指示灯点亮,服务台显示出床号并响铃,病房等待服务台的回应,如果没有扫描到信号输入,则单片机始终处于初始状态。如图3.9所示。图3.9 主程序流程图3.3.3子程序流程图子程序如图3.10是一个中断式键盘的流程图,当单片机收到信号后,中断入口开始初始化,去除键的延时抖动。而一般的削抖方式有软件和硬件两种,硬件削抖虽能够解决键抖动问题,但如果应用系统所需按键较多,本系统采用的是软件
14、削抖,当检测出有键闭合时,先执行一个延时子程序产数毫秒的延时,待接通时的前沿抖动消失后再判别是否有键按下,分辨出行、列值。当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判别是否有键按下。图3.10 子程序流程图中断程序:void key(void) 扫描键盘值 uchar hang,lie; P1=0x00;P2=0xff; delay(1); if(P2!=0xff) delay(5); 延迟后查询行列值 if(P2! switch(P2&0xff) 扫描列值 case 0xfe:lie=0;break; case 0xfd:lie=1; case 0xfb:lie=2; case 0xf7:li
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1