基于单片机的病床呼叫系统-毕业论文
更新时间:2024-04-25 00:44:01 阅读量: 综合文库 文档下载
基于单片机的病床呼叫系统
摘要 系统是基于51系列的单片机设计的病床呼叫系统。该系统以AT89C51单片机为核心辅以
矩阵键盘、LED点阵显示电路和部分简单模拟和数字电路组成的能够实现病人和医护人员之间信息的传递。在该设计中每个病房都有一个按键,当患者有需要时,按下按键,此时 值班室的显示屏可显示此患者的床位号,多人使用时可实现循环显示,医护人员按下“响应”键取消当前呼叫。此系统能够为医院提供一个成本低、效率高、操作方便和易于安装维护的快捷系统。
关键词:单片机;矩阵键盘;点阵;LED显示;呼叫系统
目 录
引言............................................................................................................... 1 1 51系列单片机的简介................................................................................. 1
1.1 单片机的发展介绍 ........................................................................................................... 1 1.2 单片机的结构特点 ........................................................................................................... 2 1.3 单片机的实际应用 ........................................................................................................... 2 1.4 控制器AT89C51 ............................................................................................................... 3
2 接口技术 ................................................................................................... 4
2.1 键盘接口 ........................................................................................................................... 4 2.2 显示器接口 ....................................................................................................................... 5
3 程序设计语言 ............................................................................................ 9
3.1 机器语言 ........................................................................................................................... 9 3.2 汇编语言 ........................................................................................................................... 9 3.3 高级语言 ........................................................................................................................... 9
4 基于单片机的病床呼叫系统的设计实现................................................. 10
4.1 系统总体设计 ................................................................................................................. 10 4.2 系统硬件设计 ................................................................................................................. 11 4.3 系统软件设计 ................................................................................................................. 15 4.4 系统的调试与结果 ......................................................................................................... 19
结论............................................................................................................. 20 致谢............................................................................................................. 20 参考文献 ..................................................................................................... 21 附录............................................................................................................. 22
附录A:原理图 .................................................................................................................... 22 附录B:源程序..................................................................................................................... 22
******毕业设计 引言
病床呼叫系统是一种应用于医院病房、养老院等地方,用来联系沟通医护人员和病员的专用呼叫系统,是提高医院水平的必备设备之一。病床呼叫系统的优劣直接影响到病员的安危,历来受到各大医院的普遍重视。它要求及时、准确可靠、简便可行、利于推广[1]。
目前市场上存在着许多种型号不一功能各异的医院病房呼叫系统,主要为两大类:有线式和无线式[2]。无线式病房呼叫系统不存在铺设线路的问题,但是可靠性差,而且无线电波会干扰其他医疗仪器设备[3]。本文设计的是有线式的,适合较小的医院病房使用,具有成本低,易于操作、安装和维护,而且具有可靠稳定,对其他医疗设备不会产生干扰的特点;但受到布线较多,影响美观,故不适宜较大的医院。
病床呼叫管理系统便于病员快捷的呼叫护士,缩短人工呼叫的时间。当今病房呼叫系统正在逐步地向智能化发展,它可以和录像机一起使用,当病人按下开关时,在护士值班室的大屏幕能够观察病人的需要。并且可以配备对讲机等设备,能够使病员及时快捷地与医护人员进行沟通。
1 51系列单片机的简介
1.1 单片机的发展介绍
单片机也被称作“单片微型计算机”、“微控制器”和“嵌入式微控制器”,单片机一词最初源于“Single Chip Microcomputer”,简称SCM。随着单片机在技术和体系结构上的进步,其控制功能不断扩展,国际上逐渐采用“MCU”(Micro Controller Unit,微控制器)来代替SCM。单片机的发展历史大致分为4个阶段。
第一阶段:单片机的探索阶段。这一阶段主要是探索如何把计算机的主要部件集成在芯片上。
第二阶段:单片机的完善阶段。Intel公司在MCS-48的基础上推出了完善的、典型的MCS-51单片机系列。它在以下几个方面奠定了典型的通用总线型单片机体系结构:
①设置了经典、完善的8位单片机的并行总线结构; ②外围功能单元由CPU集中管理的模式; ③体现控制特性的地址空间和位操作方式;
④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
1
******毕业设计 第三阶段:向微控制器发展的阶段。这一阶段主要是为了满足测控系统要求的各种外围电路和接口电路,突出其职能化控制能力。
第四阶段:单片机的全面发展阶段。由于很多大半导体和电气厂商都开始参与单片机的研制和生产。随着单片机在各个领域全面深入的发展和应用,逐渐出现了高速、低功耗、大寻址范围、强运算能力的8位、16位、32位通用型单片机以及小型廉价的专用型单片机,还有功能全面的片上单片机系统。[4]
1.2 单片机的结构特点
单片机是微型机的一个重要分支,它在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模的集成电路芯片上。
单片机内是一种在线式实时控制计算机,在线式就是现场控制,需要有较强的抗干扰能力,较低的成本。
单片机由于这种结构,所以具有很多显著的特点。主要有控制能力强,抗干扰能力强、可靠性高,性能价格比高,低功耗、低电压,扩展了多种串行口和系统扩展容易等特点。
1.3 单片机的实际应用
单片机广泛应用于仪表仪器、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为以下几个范畴:
(1)在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等特点,广泛应用于仪器仪表中看,结合不同类型的传感器,可以实现诸如电压、功率、频率、温度、流量、速度、角度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化。且功能比采用电子和熟悉电路更加强大。例如精密的测量设备(功率计、示波器和各种分析仪)。
(2)在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
(3)在家用电器中的应用
可以这样说,现在的家电基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子称量设备,五花八门,无其不有,无所不
2
******毕业设计 在。
(4)在计算机网络和通信领域的应用
现在的单片机普遍具有通信接口,可以很方便的与计算机实现数据通信,为计算机网络和通信设备间的应用提供了极好的物质条件,可以的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线对讲机等。
(5)单片机在医用设备领域中的应用
单片机在易用设备领域中的应用相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声波诊断设备及病床呼叫系统等等。此外单片机在工商、金融、科研、教育、国防、航空航天领域都有相当广泛的应用。
1.4 控制器AT89C51
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数
据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域[2]。
主要特性:
① 与MCS-51产品指令系统完全兼容 ② 4K字节可重擦写Flash闪速存储器 ③ 1000次擦写周期 ④ 全静态操作:0Hz-24MHz ⑤ 三级加密程序存储器 ⑥ 128×8字节内部RAM ⑦ 32个可编程I/O口线 ⑧ 2个16位定时/计数器 ⑨ 5个中断源
⑩ 可编程串行UART通道
AT89C51单片机采用40Pin封装的双列直插 DIP结构,图1.1是它的引脚配置图。40个引脚中,正电源和地线两根;4组8位I/O口,共32个引脚;时钟电路引脚 XTAL1和 XTAL2;控制信号引脚包含:复位输入端 RET,地址锁存允许输出/编程脉冲输入端
3
******毕业设计 ALE/PROG,片外程序存储器选通控制信号端 PSEN,内外程序存储器选择/编程电源输入端 EA/VPP。
图1.1 AT89C51单片机引脚图
P1.0 Vcc P1.1 AT89C51 P0.0 P1.2 P0.1 P1.3 P0.2 P1.4 P0.3 P1.5 P0.4 P1.6 P0.5 P1.7 P0.6 RST P0.7 P3.0 EA/Vpp P3.1 ALE/PROG P3.2 PSEN P3.3 P2.7 P3.4 P2.6 P3.5 P2.5 P3.6 P2.4 P3.7 P2.3 XTAL2 P2.2 XTAL1 P2.1 Vss P2.0 2 接口技术
2.1 键盘接口
在单片机的应用系统中,通常都有人—机对话功能。它包含人对系统的状态干预、数据的输入以及应用系统向人报告运行状态与运行结果等。键盘成为人—机联系的必要手段,此时需要配置适当的键盘输入设备[5]。
2.1.1 键盘工作原理
键盘中的每个按键都是一个常开的开关电路,当所设置的功能键或数字键按下时,则处于闭合状态。对于一组键或一个键盘,需要通过接口电路与单片机相连,以便将键的开关状态通知单片机。单片机可以采用查询或中断方式检查有无键的输入以及是哪个键被按下,并通过转移指令转入执行该键的功能程序,执行完再返回到原始状态。
2.1.2 独立式按键
独立式按键是指直接用I/O口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线的工作状态都不会影响其他I/O口线的工作状态。
4
******毕业设计 2.1.3 行列式键盘
独立式按键电路每一个按键开关占用一根I/O口线。当按键数较多时,要占用较多的I/O口线。因此,在按键数大于8时,通常采用行列式(也称“矩阵式”)键盘电路。
最简单的键盘,每个键对应I/O端口的一位,没有什么键闭和时,各位均处于高电位。当有一个键按下时,就是对应位接地而成为低电位,而其它位仍为高电位。这样,CPU只要检测到某一位为“0”,便可判别出对应键已经按下。但是,当键盘上的键较多时,引线太多,占用的I/O端口也太多。比如,一个有64个键的键盘,采用这种方法来设计时,就需要64条连线和8个8位并行端口。所以,这种简单结构只用在仅由几个键的小键盘中。通常使用的键盘结构是矩阵式的,如图2.1所示。设有m * n个键盘,那么,采用矩阵式结构以后,便只要条引线就行了。比如,有m + n 个键,那么,只要用两个并行端口和16条引线便可以完成键盘的连接[6] 。
图2.1 矩阵键盘
2.2 显示器接口
为了方便人们观察和监视单片机运行情况,通常需要利用显示器作为单片机的输出设备,以显示单片机的键输入值、中间信息以及运算结果等。
在单片机应用系统中,常用的显示器主要有LCD(液晶显示器)和LED(发光二极管显示器)。这两种显示器都具有耗电省,配置灵活,线路简单,安装方便,耐振动,寿命长等优点。
2.2.1 液晶显示器
液晶显示器LCD(Liquid Crystal Display)是一种极低功耗的显示器。由于其具有清晰度高,信息量大等特点,从而使得它越来越广泛地应用在小型仪器的显示中。
把LCD与驱动器组装在仪器的部件的英文名称为LCD Module,简称LCM。LCM一般分为三类,即段码型液晶模块、点阵字符液晶模块和点阵图形液晶模块。
2.2.2 LED点阵显示屏
5
******毕业设计 LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型[7]。
目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点[7]。
① 8*8点阵
如图2.2和图2.3是8*8点阵原理图和实物图
图2.2 8*8点阵原理图
图2.3为8×8单基色点阵的结构图,从内部结构可以看出8×8点阵共需要64个发光二极管,且每个发光二极管是放置在各行和列的交叉点上。当对应的某一列置高电
6
******毕业设计
图2.3 8*8点阵实物图
平,另一列置低电平时,则在该行和列的交叉点上相应的二极管就亮。
图10为8×8点阵LED外观及引脚图,其等效电路如图9所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴[8]。
②8*8点阵显示原理
从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。8*8的点阵共有64个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,8*8的点阵需要64/8=8个锁存器。这个数字很庞大,因为我们仅仅是8*8的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法[9]。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如8行)的同名列共用一套驱动器。具体就8*8的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第8行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24
7
******毕业设计 次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的[10]。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图2.4为显示屏电路实现的结构框图:
图2.4 显示屏系统框图
列驱动器 单 片 机 电源 行 驱 动 器 LED显示点阵
8
******毕业设计 3 程序设计语言
单片机能执行的程序可以用很多种语言编写。从语言结构及其与单片机的关系两方面可分为三大类:分别是机器语言、汇编语言和高级语言。
3.1机器语言
机器语言是一种用二进制代码“0”和“1”表示指令和数据 的最原始的程序设计语言。由于计算机只能识别二进制代码,因此,这种语言与计算机的关系最为直接,计算机能够快速识别并立即执行,响应速度最快。但这种语言编写程序非常繁琐、费时,且不易看懂,不便记忆,容易出错。
3.2 汇编语言
汇编语言是一种用助记符来表示的面向机器的程序设计语言。不同的机器所使用的汇编语言一般是不同的。这种语言比机器语言更加直观、易懂、易用,且便于记忆。但是由于不同机器的汇编语言不同,这种语言有一定的局限性,移植性差。
3.3高级语言
高级语言是一种面向过程且独立于计算机硬件结构的通用计算机语言。目前在单片机应用最广泛的是C语言。
3.3.1 单片机C语言的特点
①对单片机的指令系统不要求了解,仅要求对单片机的存储结构有初步的了解。 ②寄存器的分配、不同存储器的寻址及数据类型等细节可由编译器管理。 ③程序有规范的结构,可分为不同的函数,可使程序结构化。 ④关键字及运算函数可用近似人的思维过程方式使用。 ⑤编程及程序调试时间显著缩短,从而提高效率。
⑥提供的库包含许多标准子程序,具有较强的数据处理能力等。 3.3.2单片机C语言使用的编程软件 3.3.2.1编程软件
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
9
******毕业设计 运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
3.3.2.2仿真软件
Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。
4 基于单片机的病床呼叫系统的设计实现
4.1系统总体设计 4.1.1功能要求
本课题主攻方向是使系统实现以下目的:
①任一病房(共16张)呼叫,医护值班室马上能响应并显示病房号; ②显示病房床号;
③若有多个病床呼叫就循环显示; ④处理完毕后清除记录;
⑤显示器不重复显示按一次以上的病床号 4.1.2设计方案
用8051自身接口实现数码管静态显示和键盘扫描,使用8051单片微机外加作地址锁存用的四块三态锁存器74LS373芯片和一块74LS138芯片可构成一个完整的最小微机电路。以此为基础,在智能装置中若要配置多位数码管显示器,以及m行n列矩阵键盘的话,可以不扩展I/O芯片而由8051自身I/O口,实现上述功能, 即用P0口的八个端口作为LED的段选,用P2口的高三位连接一个三八译码器74LS138 作为四个LED的片选.用P1口和P2口的低五位做键盘电路的接口。
4.1.3 总体结构框图
本设计是基于AT89C51单片机设计的病房呼叫系统设计,该系统就是以Atmel公司的AT89C51单片机作为主控器,包括键盘输入电路,显示电路,以及晶振复位电路等来实现病房呼叫系统。
10
******毕业设计
图4.1病房呼叫系统结构框图
输入部分 键盘输入 控制器 AT89C51 输出部分 LED显示 4.2 系统硬件设计 4.2.1硬件构成示意图
报警电路 图4.2 硬件构成示意图
键盘电路 单片机 显示电路 4.2.2 外围电路设计 4.2.2.1 控制器AT89C51 复位电路:
RST引脚是复位信号输入端,高电平有效。采用上电加按钮复位,因为本系统设计考虑到该系统比较重要,所以除了采用上电复位的方式外,应该还有按钮复位备用复位方式以防止系统死机时能。如下图4.3所示:
图4.3上电复位和按键复位
R1 2KΩ 81 8W-PB C1 10uF VCC 单片机 RET R2 200KΩ 11
******毕业设计 时钟电路:
时钟是时序的基础,AT89C51核片内由一个反相放大器构成振荡器,可以由它产生时钟,时钟可以由两种方式产生内部方式和外部方式。本系统采用内部方式,在XTAL1和XTAL2端外接石英晶体作为定时元件,内部反相放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频。电容采用30pF电容。如下图4.4所示:
图4.4内部时钟电路
C1 XTAL1 单 片 机 XTAL2 C2 4.2.2.2 键盘电路设计 1、 键的识别
为了识别键盘上的闭合键,通常采用两种方法,一种称为行扫描法,另一种称为行反转法。
行扫描法的原理 :
行扫描法识别闭合键的原理如下:先使第0行接地,其余行为高电平,然后看第0行是否有键闭合,这是通过检查列线电位来实现的,即在第0行接地时,看是否有条列线变成低电平。如果有某条列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行上没有键被按下。此后,再将第1行接地,,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便在扫描中途退出,而将输入值进行移位,从而确定闭合键所在的列线位置。根据行线位置和列线位置便能再扫描法来确定具体位置。将行线和一个并行接口相接,CPU每次使并行输出接口的某一位为0,便相当于将某一行线接地,而其他位为1,则相当于使其他行线处于高电平。为了检查列线上的电位,将列线和一个并行输入输出口相接,CPU只要读取输入输出口中的数据,就可以设法判别出第几号键被按下[11]。
从上面的原理中知道,程控扫描法是由程序控制键扫描的方法。程控扫描的任务是: ①首先判断是否有键按下。其方法是使所有的行输出均为低电平,然后从端口A读
12
******毕业设计 入列值 。如果没有键按下,则读入的列值为FFH;如果有键按下,则读入的列值不为FFH。
②去除键抖动。若有键按下,则延时5~10ms,再一次判断有无键按下,如果此时仍有键按下,则认为键盘上有一个键处于稳定闭合期。
③若有键闭合,则求出闭合键的键值. 求键值的方法是对键盘逐行扫描。如图4.5是行扫描法: 输出使Xi为低电平 键释放了? 有键按下? 延时10ms 有键按下? N 有键按下? Y N 列数据右移1位 调显示程序 列值+1 扫描整个键盘 开始 再次扫描整个键盘 N N 延时 Y N 各行扫描完了? Y 图4.5行扫描法的流程图 13
行值+0SH 此行有键按? BUFF 键值 Y 计算键值 求下一行为低电平模型 调用找功能键程序
******毕业设计 (2)行反转法的原理[12]。
行反转法也是识别闭合键的常用方法,它的原理如下所述。这了叙述方便,以4×4=16键的键盘为例。图4.6是行反转法的工作示意图:
图 4.6 行反转法连接图
从图中可以看到,用行反转法识别闭合键时,要将行线接一个并行口,先让它工作为输出方式,将列线接到一个并行口,先让它工作在输出方式。程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线的值。如果此时有某一个键被按下,则必定会使某一列线值为0,然后,程序再对两个并行端口进行方式设置,使接行线的并行端口工作在输出方式,而使接列线的并行端口工作在输出方式,并且将刚才读得的列线值从所接的并行端口输出,再读取行线的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对惟一的行值和列值。在键盘设计时,除了以键码的识别以外,还有抖动问题需要解决[13]。
有软件方法可以很容易解决抖动问题,这就是通过延迟来等待抖动消失,这之后,再读入键码。
4.2.2.3 显示电路设计
在LED的点阵显示中,已经详细介绍了显示的原理,此外还需要知道显示驱动程序。显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:
刷频率(帧频)=1/16×T0溢出率
=1/16×f/12(65536-t)
其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。图4.7为显示驱动程序(显示屏扫描函数)流程图:
14
******毕业设计
进入中断 定时器赋初 ·Up 读取行号并增加1 ·Down 送新行显示数据 消隐 ·Ok 切换显示数据 发送新行号,打开显示 退出中断 图4.7 显示驱动流程图 图4.8 控制按键
4.2.2.4 控制电路设计
三个控制按键分别接p3.2 ,p3.3,p3.4口(如图4.8所示),当有呼叫发出时,值班室人员收到相应信息后,可按下“响应按钮”,单片机执行中断程序。
4.2.2.5 示警电路
报警电路由一个led灯与p3.1口相接,当有键按下时,有信号输入,灯亮示警,提醒值班人员有病人出现紧急情况。
4.3 系统软件设计
4.3.1 设计的软件环境简介 4.3.1.1 Keil c
对于AT89C51的控制设计,以Keil c软件编程环境,以proteus软件为电路仿真设计环境。二者的结合为该系统的设计提供有利条件。Keil c软件界面,如图4.9所示:
15
******毕业设计
图4.9 Keil_c软件界面
该软件是一款集编程和仿真于一体的软件,它支持汇编、C语言及二者的混合编程
[14]
。
4.3.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[15]。
Proteus ISIS的工作界面是一种标准的Windows界面,如图所示,包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
16
******毕业设计
图4.10 电路仿真界面
运行Proteus程序后,进入软件的主界面。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线[16](图4.10 电路仿真界面)。
4.3.2 系统程序设计
4.3.2.1 系统主程序设计的流程如图4.11所示:
17
******毕业设计 图4.11 系统主程序设计的流程
主程序程序描述:
首先对各存储单元初始化,设定定时初值,接着判断清零键,看是否按下,若按下,则清零,然后继续扫描键盘,如扫描到键盘有键按下,则调用计数显示子程序,循环显示病床号时,要判断标志位是否为1,若为1,则表示已经按下,则不响应,如为0,则调用循环显示病床号子程序,循环显示病床号,接着定时一秒。最后,清除定时一秒,准备下一次的定时。
4.3.2.2 显示电路流程图
调显示子程序 返回 图4.12 按键总数显示程序流程图 图4.13按键循环显示子程序
计算键值子程序 开始 初始化 N 键标志为0? 标志位是 否为1? N (COUNTER)+1 INC FLAG Y 40个单 元扫描完? N 调BCD调整子程序 Y N 定时是否 达到1S? Y 调显示子程序 存储单元加1 显示程序描述
(1)按下键总数显示子程序描述(图 4.12 按键总数显示程序流程图)
把按键数存储单总元(COUNTER)的值经过BCD调整后十位和个位分别送(7AH)(7BH),调用显示子程序显示按键总数。
(2)循环显示病床号子程序描述(图 4.13按键循环显示子程序)
首先判断标志位是否为0,若为0,则表对示应的存储单元里没有值存入,则再检
18
******毕业设计 测下一个存储单元标志位是否为0,直到检测到为1.如为1,则把值存入(BED_BOUNTER)中,接着进行BCD调整为十进制,把十位和个位分别送入(BEDCODE_1)和(BEDCODE_2)中,然后调用显示子程序,循环显示病床号。
4.4系统的调试与结果
系统调试工作是系统开发过程中必不可少的一个过程,一个完整的控制系统调试包含控制系统的硬件联调、软件联调、系统仿真、仿真烧录和现场安装调试等几个环节。在系统设计组装完成后,首先是进行实验室条件下的系统硬件调试,调试成功后,有了硬件的保证,就容易发现软件的漏洞,进而促进改进和完善。所有的调试通过后,要进行现场运行并能持续一定的时间,待其中未发现故障后,方可验收合格,才算完成了整个系统的设计工作
4.4.1调试界面显示
下面是我们通过Proteus软件编程,使对应的软件仿真模块变成可视化的控制界面:
图4.14 系统初始化界面 图4.15 按下8键后界面
4.4.2 结果分析
图4.16 按下3键后显示界面 图4.17 按下OK键后显示界面
启动电源,显示屏显示0000,在按下8号键时,界下部分显示病床(即8号病床呼叫);界面上部分代表共有一个病床按下,在起始位置显示(循环显示);如果现在不按清零键,再按下3号键时,按键号循环显示,可以看出该系统具有记忆功能,以至于不会忽略之前按下的按键;图5.4反映了控制电路的可行性,按up键向后选一房间(呼叫病房),down向前选一房间(呼叫病房),ok则去房间.。综上所述,本系统实现了主要功能:显示病床号,亮报警提醒值班人员,若有多个病床同时呼叫,则循环显示病床号,确保性息不丢失,待值班人员处理呼叫信息。通过PROTEUS软件仿真,能达到上述
19
******毕业设计 结论,满足课题目目的,达到要求。
结论
至此,此系统的详细设计及过程已经结束。
在设计的过程中遇到了很多问题,发现了自己的不足之处,有很多没有学习,如Proteus仿真知识及操作,还有单片机的C语言编程;有些软件掌握得不够牢固,比如说wave仿真不熟练;通过此次学习,进一步加强了我的理解,同时提高了我独立自学的能力。
整个设计过程中,老师详细的指导,同学的帮助,以及校图书馆的资料给了我很大的帮助。此次设计让我从中学到很多东西。虽然中间遇到很多困难,但都对于我是一次很好的锻炼。设计以后,才更加深刻感受到自己的学习只是理论部分,而且很多时候不能付诸实践。这次设计能够让我从实践中重新学习理论知识,对我今后的工作和学习有了很多提高。
但是由于本人水平有限,整个设计仍有很多不足之处,如程序不够完善、灵活,显示可以采用液晶LCD模块,还有可以采用无线NRF2401射频模块及其无线扩展功能等等。完善后将会进一步提高设计的稳定性和普适性。
最后,在指导老师和同组同学的身上我学得到很多实用的知识,特别感谢指导老师给予的帮助,还用同学之间的资源共享。再次表示感谢!
致谢
时光匆匆,大学三年已经接近尾声。这三年给我留下很多美好的记忆,同时接受很多优秀老师的教育,和很多同学的帮助。在此论文完成之际,我要向这三年来帮助我的老师、同学表示由衷的感谢!
这几个月的毕业设计,充满了忙碌,也感到学习的充实。从拿到毕业设计的题目,之后便开始整理材料,这期间,在图书馆里找到很多有关书籍。然后开始了一系列的整体方案的设计,并投入选择器材和方案的制定。最后开始整体的实验,虽然其中经历很多的失败。在老师、同学的帮助下,我很快克服了困难。设计的系统虽不是那么完善,但也是从知识到实践的转换。我从中学到了怎样独立地思考发现问题、解决问题和进一步完善提高的能力。时光短暂,但给我留下很多深刻的印象,这是第一次独立自主的做设计。以前只注重理论的学习,却忽略了实践。通过此次设计,对我今后的学习和工作
20
******毕业设计 必将有很大的帮助。
在此,谨向所有帮助我的老师、同学表示衷心的感谢和敬意!
参考文献
[1] 王意岗.病房呼叫系统[J].建筑电气,2004(23):179-182.
[2] 朱艳华,田行军,李夏青.基于PL3105的病床呼叫系统设计[J].北京石油化工学院学报,2009,17(2):40-43.
[3] 邬春明,王艳茹.基于低压线载波技术的病床呼叫系统[J].电子技术应用,2005,31(9):60-63 [4] 何立民.《单片机初级教程-单片机基础》[M].北京:北京航空航天大学出版社,2006,82(1):2-3
[5] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2005 [6 ] 康华光《电子技术基础》[M]. 北京:高等教育出版社, 2000:17-23
[7]康华光《电子技术基础(模拟部分)》[M]. 北京:高等教育出版社, 1999:112-119 [8]丁元杰.《单片微机原理及应用》[M].北京:机械工业出版社, 1996:256-276 [9]何立民.《单片机应用技术选编》[M].北京:北京:航空航天大学出版社, 1996.218~224 [10]张培仁等.《MCS-51单片机原理与应用》[M]. 北京.清华大学出版社, 2003:130~145 [11]李伯成《单片机及嵌入式系统》[M]. 北京:清华大学出版社, 2005:337-346 [12]肖金球《单片机原理与接口技术》[M]. 北京:清华大学出版社, 2004:153-159 [13]王环,张亚宁 《单片机程序设计实例》[M] 北京:清华大学出版社, 2003:520-524 [14]治刚.《单片机应用技术与实训》[M]. 北京:清华大学出版社, 2004:130-133 [15]胡汉才.《单片机原理及接口技术》[M]. 北京:清华大学出版社, 1995:111-123 [16]徐淑华等.《单片机微机原理及应用》[M]. 哈尔滨工业大学出版社, 1994:336-351 .
21
******毕业设计
附录
附录A:原理图
附录B:源程序
#include
uchar ys=0,num=0,N=0,d=0,q=0; //num为当前显示值,N为总显示值
/******************************主函数**********************************/ void main() { uchar j; TMOD=0x10;
22
******毕业设计 TH0=(65536-45000)/256;//设置50毫秒定时 TL0=(65536-45000)%6; 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);
P3_1=1; delay10ms(10); P3_1=0; }
if(P3_4==0) { N--; if(N>0) {
23
******毕业设计 for(j=q;j 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)%6; if(d==0) 24 ******毕业设计 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 /****************************延时子程序********************************/ void delay10ms(uchar d) { unsigned char i,j,k; for(k=d;k>0;k--) { for(i=20;i>0;i--) F or(j=248;j>0;j--); } } /******************************点阵显示子程序**************************/ void display1(uchar x,uchar s,uchar p) 25 ******毕业设计 { uchar i,j=0,k,m=0,n=0,w[2],y[2],z[2]; w[0]=s/10; w[1]=s; y[0]=x/10; y[1]=x; z[0]=p/10;z[1]=p; if(s<=0|s>16) { for(i=0;i<16;i++,n++) { lie=i; if(n==8) {m=1;j=0;} for(k=0;k<1;k++) { hang0=shuzi2[y[m]][j]; hang1=shuzi2[y[m]][j+1]; hang2=shuzi2[z[m]][j]; hang3=shuzi2[z[m]][j+1]; hang0=0x00; //清屏 } j+=2; } j=0; hang1=0x00; hang2=0x00; hang3=0x00; for(i=16;i<64;i++) { lie=i; for(k=0;k<1;k++) { hang0=ziku1[j];// 第0行赋值 hang1=ziku1[j+1]; //第1行赋值 hang2=ziku2[j];// /第2行赋值 hang3=ziku2[j+1];// /第3行赋值 26 ******毕业设计 hang0=0x00; //清屏 } j+=2; hang1=0x00; hang2=0x00; //清屏 hang3=0x00; } } else { for(i=0;i<16;i++,n++) { lie=i; if(n==8) {m=1;j=0;} for(k=0;k<1;k++) { hang0=shuzi2[w[m]][j]; hang1=shuzi2[w[m]][j+1]; hang2=shuzi2[z[m]][j]; hang3=shuzi2[z[m]][j+1]; hang0=0x00; //清屏 hang1=0x00; hang2=0x00; //清屏 } j=0; } j+=2; hang3=0x00; for(i=16;i<64;i++) { lie=i; for(k=0;k<1;k++) { hang0=ziku2[j]; 27 ******毕业设计 hang1=ziku2[j+1]; hang2=ziku2[j]; hang3=ziku2[j+1]; hang0=0x00; //清屏 hang1=0x00; hang2=0x00; //清屏 j+=2; } } } hang3=0x00; } 28
正在阅读:
基于单片机的病床呼叫系统-毕业论文04-25
水中有机污染物的富集和GC_MS分析技术05-22
人教版小学三年级下册数学应用题专项练习111-11
医疗器械文档控制程序11-23
201X学校支委会会议记录-word范文模板(6页)05-11
大学教师三月份个人工作总结(5篇)08-23
概率与统计(教师版)10-16
部编人教版《道德与法治》二年级上册教案(全册,精品)04-17
观看《八佰》个人心得体会范文03-24
企业消防安全培训考试卷子通用版(含答案)10-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 单片机
- 病床
- 呼叫
- 毕业论文
- 基于
- 系统
- 基于PLC的自动识别分选系统设计
- 五星级班级评比细则
- 关于各种批文的说明
- 中考文言文一点通之九 - -古今异义
- 政治纪律方面存在的问题原因分析一
- 汉语修辞学模拟试题1
- 初中数学竞赛 - 整式的恒等变形(二)
- 归纳思想
- 南开考试卷《现代远程学习概论》课程作业满分答案
- 行政财务管理试题
- 浙江省科学技术厅关于印发浙江省科技计划项目验收管理(暂行)
- 行业人物专访采访提纲
- 商城县国民经济和社会发展第十二个五年规划纲要
- 利用Java实现远程控制
- 生态学论文
- 基于脉冲编码调制(PCM)与增量调制(ΔM)的波形编码仿真与实现毕业
- 镇巴文化资源和文化旅游产业
- 城市社区治理中存在的问题及其对策
- 2017年农村商业银行发展现状及市场前景分析(目录)
- 计数器的设计