资源描述
(完整版)基于单片机的病房呼叫系统
基于单片机的病房呼叫系统
[摘要]该系统设计是基于51系列的单片机设计的病房呼叫系统.在该设计中每个病房都有一个按键,当患者有需要的时候,按下按键,此时,值班室的系统板上会显示此患者的床位号,此时,值班室的护士会看到哪个病房的患者又需要,然后护士按下“响应”键取消当前呼叫。
在这个瞬息万变、竞争激烈的时代,选择一个优越的工具往往能提升企业在这个市场上的竞争力。尤其医院的竞争越来越激烈,商业医院的生存是第一位的,提升档次和服务质量迫在眉睫,陪护问题一直是医患矛盾的主体,也是长期困扰卫生系统服务质量的大问题,使用病房呼叫系统,方便病人更快找到医生,以节约病人的宝贵时间。系统主要用于医院、门疹、养老院等场所。可大大降低护理成本,增强护理的及时性和有效性,而且无需布线、安装极其简便。以前当病人需要服务时就不得不亲自到值班室去叫。安装该呼叫系统后,在病人与护士之间架起一座及时沟通的桥梁 。使用呼叫服务系统可在减少护理人员的同时,保证病员随时能够得到服务,让每个病人及时得到最佳护。
该系统就能够满足这个要求,且实际意义在于能够为医院提供一个成本低、不复杂、生产和安装方便的简单快捷系统。
[关键字]单片机,点阵,LED显示,呼叫系统
Ⅵ
Ⅶ
1 绪论
1。1 引言
信息时代的医院管理已经从传统的人管模式,向智能化,电子化,信息化,网络化的高科技管理模式的方向迅猛发展,“病房呼叫系统"可实现医院病房的智能化管理,可实现呼叫,报警,信息储存,显示等功能。为医院和患者都带来方便。
1。2 设计概述
1.2.1 设计背景
变革来自于创新,信息时代的医院管理已经从传统的人管模式,向智能化,电子化,信息化,网络化的高科技管理模式的方向迅猛发展。
病房呼叫管理系统在全国大型医院病房中都有广泛的应用,它便于病人方便快捷的呼叫护士,缩短人工呼叫的时间。当今病房呼叫系统正在逐步的向智能化发展,它可以和录像机一起使用,当病人按下开关时,在护士值班室的大屏幕上能打开该病房,以此护士能观察到该病人的需要。并且,可以安装一个对讲机,能够使病人和护士进行对话.
1。2.2 设计目的和要求:
① 软件方面
要求界面美观,功能齐全,能写出最优控制算法,并能制成软件。
② 硬件方面
研制出到一套及时、准确、可靠、简便可行、利于推广的硬件控制系统,能做成集成电路,减小体积,方便存放和测试.
a、系统框架建立
输入系统和显示系统是设计的两大系统,因此,在开题之前要对其单独 进行分析,能准确的构建系统的框架,这是对系统进行分析和控制的前提。
b、控制算法的研究
采用各种不同的控制方法,实现控制要求。比较控制效果和考虑性价比,从中选择合适的控制算法作为控制器,进而进行下一步的系统仿真和实验.
1.3 设计的内容和结构
第23页 ( 共31页 )
设计的内容共分为六章:第一章“绪论”概括了系统的基本原理、系统的控制方法及课题的背景和内容;第二章“系统总体设计"介绍如何构建系统的框图,并对每个模块部分进行功能描述;第三章“系统硬件设计" 分析了系统的组成和基本工作原理,并介绍了详细的电路组成和实现。第四章“系统的软件设计” 着重介绍了控制算法的软件实现、软件实验平台的结构及相关的技术问题;第五章“调试和结果”给出实验结果,并分析结果得出结论。第六章“结论及展望”对完成的工作进行总结,并对今后的工作提出建议。
2 系统总体设计
2.1功能与方案确定
2.1。1功能要求
本课题主攻方向是使系统实现以下目的:
1.任一病房(共16张)呼叫,医护值班室马上能响应并显示病房号;
2.显示病房床号;
3.若有多个病床呼叫就循环显示;
4.处理完毕后清除记录;
5。 显示器不重复显示按一次以上的病床号
2。1。2.方案论证
方案一:
使用8051单片微机外加作地址锁存用的一块8三态锁存器74LS373芯片和一块EPROM芯片可构成一个完整的最小微机电路。以此为基础,在智能装置中若要配置多位数码管显示器,以及m行n列矩阵键盘的话,可通过扩展诸如8255或8279之类的并行1/0芯片来完成,或者通过串行通讯口P3。0(RXD)和P3:1(TXD)经多块串—并,并—串转换电路74LS164和74LS165 IC芯片实现接口。按照一般的设计方法,显示和键盘搜索按下键均按动态扫描的方法进行,显示电路接口由P1口和P2口组成,键盘接口由P2口和P3口组成.在完成显示功能过程中,P1口锁存器显示字符的八段字形码,P2口的高6位(P2.7-P2.2)锁存待显示字符的位选码。8051按分时方式执行程序进入到键盘搜索时,经P2.7-P2.2输出键盘扫描的行选码,键盘的列输入由P3口的P3。7-P3。4承担缓冲功能。利用P2 。7—P2。2输出数据代码的做法是通过改变程序计数器高6位数值来实现的。
方案二:
用8051自身接口实现数码管静态显示和键盘扫描
使用8051单片微机外加作地址锁存用的四块8三态锁存器74LS373芯片和一块74LS138芯片可构成一个完整的最小微机电路。以此为基础,在智能装置中若要配置多位数码管显示器,以及m行n列矩阵键盘的话,可以不扩展I/O芯片而由8051自身I/O口,实现上述功能, 即用P0口的八个端口作为LED的段选,用P2口的高三位连接一个三八译码器74LS138 作为四个LED的片选。用P1口和P2口的低五位做键盘电路的接口。
综上所述,方案一中键盘显示均采用动态扫描方式,其软件实现起来比较简单,但硬件电路过于复杂,没有合理利用单片机的I/O.而方案二外围电路简单,且软件实现起来也不是太复杂,合理利用单片机I/O口,比较起来本文采用的是方案二。
2。1。3 总体结构框图
本设计是基于AT89C51单片机设计的病房呼叫系统设计
该系统就是以Atmel 公司的AT89C51单片机作为主控器,包括键盘输入电路,显示电路,以及晶振复位电路等来实现病房呼叫系统。
输出部分
LED显示
控制器
AT89C51
输入部分
键盘输入
图1 病房呼叫系统结构框图
2。2 框架模块功能描述
(1)输入部分包括按键输入,按键输入相当于一个外界的干扰信号,用于向单片机传输命令或数据。
(2)调节电路部分包括晶振和复位,需要时对控制器发出中断信号,以对系统进行调节.
(3)微处理器采用常见的AT89C51单片机为控制核心,通过软件编程,对实时采集的温度进行处理,同时也对调节电路进行驱动和控制.
(4)输出部分包括LED显示电路,将从键盘上输入的信号显示出来,给人以直观的印象。
(5)系统过程的综述:
键盘(按钮)输入信号,AT89C51单片机收到信号后进行处理,通过输出系统将信号显示在点阵屏上,此时还可以通过按键进行中断调节,显示会发生相应变化,实际情况出发,人们易于操作。
3 系统硬件设计
3.1 硬件构成示意图
图2 硬件构成示意图
3。2 外围电路设计
单片机是指一个集成在一块芯片上的完整计算机系统.尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统.单片机是单片微型机的简称,故又称为微控制器MCU(Micro Control Unit)。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统[1]。
3。2.1 控制器AT89C52
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数
据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域[2]。
主要特性:
a 与MCS-51产品指令系统完全兼容
b 4K字节可重擦写Flash闪速存储器
c 1000次擦写周期
e 全静态操作:0Hz—24MHz
f 三级加密程序存储器
g 128×8字节内部RAM
h 32个可编程I/O口线
i 2个16位定时/计数器
j 6个中断源
k 可编程串行UART通道
l 低功耗空闲和掉电模式※ 输入输出引脚AT89C51引脚如图3示:
图3 AT89C51引脚图
P0~P3:通用I/O口;
VCC:电源端,一般接5V;
GND:电源地;
XTAL1,XTAL2:外接晶体振荡器,不能超过24M;需加微调电容,一般为30pF;
RST/VPD:复位端,平时为低电平;
ALE/PROG:地址锁存允许信号端;
EA/Vpp:外部程序存储器地址允许输入端/固化编程电压输入端;
复位电路:
RST引脚是复位信号输入端,高电平有效。采用上电加按钮复位,因为本系统设计考虑到该系统比较重要,所以除了采用上电复位的方式外,应该还有按钮复位备用复位方式以防止系统死机时能.如下图4所示.
图4 上电复位和按键复位
时钟电路:
时钟是时序的基础,AT89C51核片内由一个反相放大器构成振荡器,可以由它产生时钟,时钟可以由两种方式产生内部方式和外部方式。本系统采用内部方式,在XTAL1和XTAL2端外接石英晶体作为定时元件,内部反相放大
器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频。电容采用30pF电容。如下图5所示。
图5 内部时钟电路
3.2.2 键盘电路设计
1、 矩阵式键盘
最简单的键盘,每个键对应I/O端口的一位,没有什么键闭和时,各位均处于高电位.当有一个键按下时,就是对应位接地而成为低电位,而其它位仍为高电位。这样,CPU只要检测到某一位为”0”,便可判别出对应键已经按下。但是,当键盘上的键较多时,引线太多,占用的I/O端口也太多。比如,一个有64个键的键盘,采用这种方法来设计时,就需要64条连线和8个8位并行端口。所以,这种简单结构只用在仅由几个键的小键盘中.通常使用的键盘结构是矩阵式的,如图3。5所示。设有个键盘,那么,采用矩阵式结构以后,便只要条引线就行了.比如,有个键,那么,只要用两个并行端口和16条引线便可以完成键盘的连接.
图6 矩阵键盘
2、 键的识别
为了识别键盘上的闭和键,通常采用两种方法,一种称为行扫描法,另一种称为行反转法。
(1) 行扫描法的原理:
行扫描法识别闭和键的原理如下:先使第0行接地,其余行为高电平,然后看第0行是否有键闭和,这是通过检查列线电位来实现的,即在第0行接地时,看是否有条列线变成低电平。如果有某条列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行上没有键被按下。此后,再将第1行接地,,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到最后一行.在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便在扫描中途退出,而将输入值进行移位,从而确定闭合键所在的列线位置.根据行线位置和列线位置便能再扫描法来确定具体位置.将行线和一个并行接口相接,CPU每次使并行输出接口的某一位为0,便相当于将某一行线接地,而其他位为1,则相当于使其他行线处于高电平.为了检查列线上的电位,将列线和一个并行输入输出口相接,CPU只要读取输入输出口中的数据,就可以设法判别出第几号键被按下[4]。
从上面的原理中知道,程控扫描法是由程序控制键扫描的方法.程控扫描的任务是:
①首先判断是否有键按下.其方法是使所有的行输出均为低电平,然后从端口A读入列值 。如果没有键按下,则读入的列值为FFH;如果有键按下,则读入的列值不为FFH。
②去除键抖动。若有键按下,则延时5~10ms,再一次判断有无键按下,如果此时仍有键按下,则认为键盘上有一个键处于稳定闭合期。
③若有键闭合,则求出闭合键的键值. 求键值的方法是对键盘逐行扫描。
如图7 是行扫描法
调显示程序
扫描整个键盘
有键按下?
再次扫描整个键盘
有键按下?
延时10ms
输出使Xi为低电平
此行有键按?
行值+08H
求下一行为低电平模型
各行扫描完了?
列值+1
列数据右移1位
延时
有键按下?
键释放了?
计算键值
(BUFF) 键值
调查找功能键程序
Y
N
Y
N
Y
Y
N
N
Y
N
N
Y
开始
图7 行扫描法的流程图
(2)行反转法的原理[5].
行反转法也是识别闭合键的常用方法,它的原理如下所述.这了叙述方便,以4×4=16键的键盘为例。图8是行反转法的工作示意图。
图8 行反转法连接图
从图中可以看到,用行反转法识别闭合键时,要将行线接一个并行口,先让它工作为输出方式,将列线接到一个并行口,先让它工作在输出方式。程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线的值。如果此时有某一个键被按下,则必定会使某一列线值为0,然后,程序再对两个并行端口进行方式设置,使接行线的并行端口工作在输出方式,而使接列线的并行端口工作在输出方式,并且将刚才读得的列线值从所接的并行端口输出,再读取行线的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对惟一的行值和列值。
在键盘设计时,除了以键码的识别以外,还有抖动问题需要解决[6].
有软件方法可以很容易解决抖动问题,这就是通过延迟来等待抖动消失,这之后,再读入键码。
3.2.3 显示电路设计
1、LED点阵显示屏概述
LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型[7]。
目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏-—可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点.因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点[9]。
2、 8*8点阵
如图9和图10是8*8点阵原理图和实物图
图9 8*8点阵原理图
图10为8×8单基色点阵的结构图,从内部结构可以看出8×8点阵共需要64个发光二极管,且每个发光二极管是放置在各行和列的交叉点上。当对应的某一列置高电
图10 8*8点阵实物图
平,另一列置低电平时,则在该行和列的交叉点上相应的二极管就亮.
图10为8×8点阵LED外观及引脚图,其等效电路如图9所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮.例如如果想使左上角LED点亮,则Y0=1,X0=0即可.应用时限流电阻可以放在X轴或Y轴[9]。
3、16×16点阵显示原理
从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式.16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法[10]。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题.从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多.当列数很多时,并列传输的方案是不可取的[11].
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的.但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据.为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能.对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能.这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示.图11为显示屏电路实现的结构框图。
图12 显示屏
图11 显示屏系统框图
点阵显示屏由32个8×8点阵LED显示模块(如图12)。32片8×8点阵LED显示模块利用总线形组成一个32×64的LED点阵,用于同时显示8个16×16点阵汉字或数字。单元显示屏可以接收来自控制器或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容[12]。
4、取字原理
取字原理:由于采用共阴极的LED显示模块,故在取字符时,取字符阴码,即点亮LED灯的信号为1。取模顺序是从左到右,逐行取位,即第一个点作为最高位。每取8个点作为一个字节。取字的字体由软件写入时的字体决定,每个LED灯的亮灭都是由一个数位来标志的(如图13所示).
图13 取字原理图
每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示.我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字, 也可以显示在256像素 范围内的任何图形
5.显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:
刷频率(帧频)=1/16×T0溢出率
=1/16×f/12(65536-t)
其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示.图14为显示驱动程序(显示屏扫描函数)流程图
图14 显示驱动流程图 图15 控制按键
3。2.4 控制电路设计
三个控制按键分别接p3。2 ,p3.3,p3.4口(如图15所示),当有呼叫发出时,值班室人员收到相应信息后,可按下“响应按钮”,单片机执行中断程序。
3。2.5 示警电路
报警电路由一个led灯与p3.1口相接,当有键按下时,有信号输入,灯亮示警,提醒值班人员有病人出现紧急情况。
4 系统软件设计
4。1 设计的软件环境简介
4。1.1 Keil_c
于AT89C51的控制设计,以Keil_c为软件编程环境,以proteus软件为电
路仿真设计环境。二者的结合为该系统的设计提供有利条件。Keil_c软件界面如图16所示:
图16 Keil_c软件界面
该软件是一款集编程和仿真于一体的软件,它支持汇编、C语言及二者的混合编程[12]。
4。1。2 Proteus ISIS
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。
该软件的特点是:
(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、I2 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等[13]。
(3)目前支持的单片机类型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(4)支持大量的存储器和外围芯片。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真ARM、51、AVR、PIC[14]。
Proteus ISIS的工作界面是一种标准的Windows界面,如图所示,包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图17 电路仿真界面
运行Proteus程序后,进入软件的主界面.通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线[15](图17 电路仿真界面)。
4.2 系统程序设计
4.2.1 系统主程序设计的流程如图18所示:
图18 系统主程序设计的流程
主程序程序描述:
首先对各存储单元初始化,设定定时初值,接4着判断清零键,看是否按下,若按下,则清零,然后继续扫描键盘,如扫描到键盘有键按下,则调用计数显示子程序,循环显示病床号时,要判断标志位是否为1,若为1,则表示已经按下,则不响应,如为0,则调用循环显示病床号子程序,循环显示病床号,接着定时一秒.最后,清除定时一秒,准备下一次的定时.
4。2.2 显示电路流程图
开始
标志位是否为1?
定时是否达到1秒?
调显示子程序
存储单元加1
Y
Y
N
N
(COUNTER)+1
初始化
计算键值子程序
键标志为0?
INC FLAG
40个单元扫描完?
调BCD调整子程序
调显示子程序
返回
N
Y
Y
N
图19 按键总数显示程序流程图 图20 按键循环显示子程序
显示程序描述
(1)按下键总数显示子程序描述(图 19 按键总数显示程序流程图)
把按键数存储单总元(COUNTER)的值经过BCD调整后十位和个位分别送(7AH)(7BH),调用显示子程序显示按键总数。
(2)循环显示病床号子程序描述(图 20按键循环显示子程序)
首先判断标志位是否为0,若为0,则表对示应的存储单元里没有值存入,则再检测下一个存储单元标志位是否为0,直到检测到为1。如为1,则把值存入(BED_BOUNTER)中,接着进行BCD调整为十进制,把十位和个位分别送入(BEDCODE_1)和(BEDCODE_2)中,然后调用显示子程序,循环显示病床号。
5 调试与结果
系统调试工作是系统开发过程中必不可少的一个过程,一个完整的控制系统调试包含控制系统的硬件联调、软件联调、系统仿真、仿真烧录和现场安装调试等几个环节。在系统设计组装完成后,首先是进行实验室条件下的系统硬件调试,调试成功后,有了硬件的保证,就容易发现软件的漏洞,进而促进改进和完善。所有的调试通过后,要进行现场运行并能持续一定的时间,待其中未发现故障后,方可验收合格,才算完成了整个系统的设计工作
5.1 调试界面显示
下面是我们通过Proteus软件编程,使对应的软件仿真模块变成可视化的控制界面:
图21 系统初始化界面 图22 按下8键后界面
图23 按下3键后显示界面 图24 按下OK键后显示界面
5。1 结果分析
启动电源,显示屏显示0000,在按下8号键时,界下部分显示病床(即8号病床呼叫);界面上部分代表共有一个病床按下,在起始位置显示(循环显示);如果现在不按清零键,再按下3号键时,按键号循环显示,可以看出该系统具有记忆功能,以至于不会忽略之前按下的按键;图5。4反映了控制电路的可行性,按up键向后选一房间(呼叫病房),down向前选一房间(呼叫病房),ok则去房间。.综上所述,本系统实现了主要功能:显示病床号,亮报警提醒值班人员,若有多个病床同时呼叫,则循环显示病床号,确保性息不丢失,待值班人员处理呼叫信息.通过PROTEUS软件仿真,能达到上述结论,满足课题目目的,达到要求。
6 总结及展望
至此,本设计的主要内容已经完成。本章是在对前面完成的工作进行总结的基础上,提出今后进一步工作的建议和设想。
选择这个课题之后,我明白要解决的难点:病人都按开关时,在数码显示器能循环显示病床,这也就是考验我们对所学知识有比较透彻的了解和我们的耐心。
接下来每天奔波在宿舍、餐厅三点一线的生活,虽然有点累,但很充实,在这之中还去请教我院科技创新实验室的老师和同学,他们耐心的教导让我更加坚定了对该课题的研究,另外还有很多老师的帮助……
在设计的过程中遇到了很多问题,可以说得是困难重重,在遇到各种各样问题的同时,会发现了自己的不足之处,如对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说wave仿真不熟练,Proteus仿真知识及操作、对单片机汇编语言掌握得不好……不过通过这次设计之后,也学到了很多知识,更重要的是一定把以前所学过的知识重新温故,学好用好,学以致用。
最后在百般努力下,这次设计终于完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于实现了设计的要求。这一次设计给我的总体感觉很好,因为我学到了很多的东西。无论是什么样的困难,只要自己能够找好的学习方法,在过程中不断的努力,其实优秀的论文不是写出来的,而是修改出来的,这需要的是耐心,还要用心。那么学到的东西肯定会有很多,我相信我是能够做好这样的。
但作者水平有限,仍然有许多不足之处可以改进,例如显示屏上有部分字迹闪烁,显示程序可以完善;又如系统还可以增加优先级的设定,方便处理急救的病人。若用NRF2401射频模块扩展其无线功能,可以完善系统功能.
最后,在各位老师和同学的身上我学得到很多实用的知识,这些人也给予了我极大的帮助,在次我表示感谢!
参考文献
[1]谭浩强《MCS-51单片机应用教程》 [M]。 北京:清华大学出版社. 2004:57~62
[2]张振荣《MCS—51单片机及实用教程》 [M]。 北京:人民邮电出版社.2000:231~236
[3]康华光《电子技术基础》[M]。 北京:高等教育出版社. 2000:17~23
[4]李伯成《单片机及嵌入式系统》[M]。 北京:清华大学出版社。 2005:337~346
[5]肖金球《单片机原理与接口技术》[M]。 北京:清华大学出版社。 2004:153~159
[6]王环,张亚宁 《单片机程序设计实例》[M] 北京:清华大学出版社。 2003:520~524
[7]康华光《电子技术基础(模拟部分)》[M]。 北京:高等教育出版社。1999:112~119
[8]李勋。 《单片机微型计算机大学读本》[M]。 北京:北京航空航天大学出版社,2002:75~77
[9]丁元杰.《单片微机原理及应用》[M].北京:机械工业出版社,1996:256~276
[10]何立民.《单片机应用技术选编》[M].北京:北京:航空航天大学出版社,1996。218~224
[11]张培仁等.《MCS—51单片机原理与应用》[M]。 北京。清华大学出版社,2003:130~145
[12]治刚。《单片机应用技术与实训》[M]. 北京:清华大学出版社,2004:130~133
[13]陈明荧。《8051单片机课程设计实训教材》[M]。 北京:清华大学出版社,2004:325~329
[14]胡汉才。《单片机原理及接口技术》[M]. 北京:清华大学出版社,1995:111~123
[15]徐淑华等.《单片机微机原理及应用》[M]. 哈尔滨工业大学出版社,1994:336~351
致谢
时光飞逝,四年的大学学习生活转眼就要结束,值此论文完成之际,我要向四年来支持、帮助、关心过我的老师、同学和亲友表示衷心感谢。
这几个月的毕业设计使我受益匪浅,学习到了如何把基础知识应用到实践中来。我觉得毕业设计的准备一定要充分,不要急于得到结果,重要的是做设计过程中的思考与实践,另外,要多查找相关的知识,互联网和图书馆里面都有大量与课题相关的资料。解决问题固然重要,但是发现问题和提出问题更为重要。如此才能提高解决问题的能力.
这段日子是我人生中难忘的一段经历。虽然在设计中遇到了许多问题与困难,但是在他人的指导下,通过自己的努力以及同学的帮助,最终这些问题与困难都得以解决。通过自己的思考与实践,自己的专业知识与综合能力都得到了相应的提高。这些将为自己在社会中立足打下了良好的基础。
在此,谨向所有帮助的朋友表示衷心的感谢和敬意.
附录A:原理图
第24页 ( 共31页 )
附录B:部分源程序
#include〈reg51.h> //51系统端口定义h文件
#include "dianzhen。h" //点阵h文件
#include"keyboard.h” //键盘处理h文件
uchar ys=0,num=0,N=0,d=0,q=0; //num为当前显示值,N为总显示值
/*******************************主函数**********************************/
void main()
{ uchar j;
TMOD=0x10;
TH0=(65536-45000)/256;//设置50毫秒定时
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_2按键弹起的后,P3_1口赋高电平
delay10ms(10);//延时子程序
P3_1=0; //返回原始界面
}
if(P3_3==0) //当P3_3按键按下就执行病房号的显示
{
if(q>0) q—-;
while(P3_3==0);
第31页 (共31页)
P3_1=1;
delay10ms(10);
P3_1=0;
}
if(P3_4==0)
{
N-—;
if(N〉0)
{
for(j=q;j〈N;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//T0中断
{
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 〈reg51。h>
#include <absacc。h>
#include ”zimo。h”
第27页 (共31页)
uchar b[10];
第29页 (共31页)
/*****************************延时子程序********************************/
void delay10ms(uchar d)
{ unsigned
展开阅读全文