基于单片机的病房呼叫系统

更新时间:2024-05-11 10:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕 业 设 计

题 目 基于单片机的病房呼叫系统 姓 名 雷顺頔 学 号 20126005 系 部 理工系 年级专业 2012级电子信息工程 指导教师 陈亚妮

2016年3月5日

摘要

呼叫系统是医院和养老院的必备设备,是日常护理和紧急抢救重要通讯手段。传统有线呼叫系统施工繁琐、检修困难、施工成本高,更重要的是有线系统没有移动接收呼叫信息的功能,使很多病人丧失了抢救的良机。随着医院、养老院的医疗条件的不断提高,越来越多的场所采用无线呼叫系统,施工和维护简便,呼叫操作简单,医护人员可随时随地接收病人的呼叫。医护呼叫系统采用调幅(FSK)技术,保证呼叫成功率,避免信号干扰。

根据医院和养老院的功能要求、场地大小、管理要求等因素,多种解决方案以供选择。

关键词:单片机STC89C51,无线传输模块,病床呼叫

Title:Ward calling system based on single chip microcomputer Abstract:

Call system is necessary equipment in hospitals and nursing homes, is the daily care and emergency rescue of an importantmeans of communication. The traditional wired call system and fussy construction, maintenance difficulties, high construction cost, more important is

the cable system

to

is

not mobile receives save. Along

with and

the the more

call information, make many

home medical wireless call personnel

places using

patients lost the opportunity to conditionscontinue can whenever interference.

According to the hospitals and nursing homes, the size of the site functional requirements, management requirements and other factors, plus Xun series products provide a variety of solutions to choose from.

Keywords: single chip STC89C51, wireless transmission module, Sickbed Calling

and

system, construction and easy

wherever

hospital, nursing

improve, more

possible to

maintenance, operation simplecall, call medical

receive patients. Add fast wireless medical call

system using amplitude modulation (FSK) technology, ensure the call success rate, to avoid

II

目 录

1 绪 论 ............................................................................................. 错误!未定义书签。 1.1病床系统背景与意义 ..................................................................................................... 3 1.2目标 ................................................................................................................................. 3 1.3可行性分析 ..................................................................................................................... 3 1.4 设计步骤 ........................................................................................................................ 3 2 基于单片机的病床呼叫系统的设计实现 ................................................................... 4 2.1系统总体设计 ................................................................................................................ 4 3 系统硬件设计 ................................................................................................................. 5 3.1单片机介绍 ..................................................................................................................... 5

3.1.1单片机的发展介绍 ................................................................................... 5 3.1.2 单片机的结构特点 .................................................................................. 5

3.1.3单片机的实际应用 ................................................................................................. 5

3.1.4控制器AT89C51 ...................................................................................... 6

3.2 系统原理框图 .............................................................................. 错误!未定义书签。 3.3硬件模块设计 ................................................................................................................. 9

3.3.1无线发射模块 ......................................................................................... 9 3.3.2无线接收模块 ......................................................................................... 9 3.3.3声音报警模块 ....................................................................................... 12 3.3.4应答电路 ............................................................................................... 13 3.3.5键盘接口 ............................................................................................... 14 3.3.6 显示接口 .............................................................................................. 14

3.4外围电路设计 ............................................................................................................... 17

3.4.1 控制器AT89C51 ................................................................................... 14 3.4.2 键盘电路设计 ...................................................................................... 14 4 系统软件设计 ............................................................................................................. 20 4.1程序设计语言的介绍 ................................................................................................ 20 机器语言 ...................................................................................................................... 20

1

汇编语言 ...................................................................................................................... 20 高级语言 ...................................................................................................................... 20 4.2主函数程序设计 ............................................................................................... 21 4.3 初始化程序设计 .............................................................................................. 19 4.4延时子程序设定 ............................................................................................... 24 4.5液晶显示子程序 ............................................................................................... 24 5液晶显示子程序 ............................................................................................................ 25

5.1软件调试 ........................................................................................................... 25 5.2硬件调试 ........................................................................................................... 26 参考文献 ............................................................................................................................. 27 附录A .................................................................................................................................. 28 附录B ................................................................................................................................. 29 致谢 ..................................................................................................................................... 30

2

1 引言

1.1病床系统背景与意义

医院建设呼叫中心系统有十分的重要现实意义,国内部分医院都有成功应用的经验。医院建设呼叫中心系统具有以下几个方面的重要现实意义:改善医院服务质量;提升医院的品牌优势;优化医院的服务流程;降低医院的服务成本;开辟新的收入来源;提升医疗信息化的水平等。通过医院呼叫中心的建设,医院不仅可以更大程度的提高服务质量及工作效率,更可以体现出医院的人文特色、全面提高就医者对医院的满意度,同时也可以利用医院呼叫中心多种多样的增值业务来提高医院的利润、起到盈利性的目的。我们正是基于这种考虑,利用现有发达的电话网,采用计算机网络技术和语音交换技术设计了医院呼叫中心系统,为医疗机构提供了全面有效的解决方案。

1.2目标

设计要求:设计出稳定高效的运行系统,并且有一定的抗干扰能力,能够实现多路呼叫且互不干扰。距离在100m范围内,实现多路无线病床呼叫,并留有扩展空间。

预期目标:病人按呼叫键时,无线发射器发射信号,无线接收器接收无线信号,通过单片机控制处理,护士值班室发出呼叫警报,同时1602液晶上显示相应的床位号,当护士按键应答,呼叫报警停止,液晶显示以应答,警报由定时器控制关闭。当有多个病人呼叫没有及时应答时,对应显示各床床位号,同时报警。

1.3可行性分析

有线呼叫器受位置的制约不能很好的达到医患沟通,无线呼叫系统就显示其很大的优越性,可移动,不受位置制约,现今无线传输技术有了突飞猛进的发展,技术越来越成熟,普遍应用到生活、娱乐、学习和军工等领域,这为无线传输技术与医学临床的结合提供了技术支持。在校期间也学习了与单片机相关的课程,有了一定的理论基础。因此,本课题具有可行性,能够得到。

1.4 设计步骤

针对单片机的无线病床呼叫系统,制定以下方案及步骤: 第一步,根据设计目的构想设计的原理图框架,学习设计中要用到的知识,如无线发射模块的原理、编码解码,单片机C语言编程设计,液晶1602的显示,使用的芯片引脚工作原理, Protel软件使用等。

第二步,对硬件模块进行设计。如无线发射模块、无线接收模块、1602显示模块、声音呼叫模块。在Protel中绘制原理图。

第三步,对系统软件进行设计。如主函数程序设计、初始化程序设计、延时子程序设计、液晶显示子程序设计、定时器中断服务子程序设计

3

VCCGDNADTAANTU2123456789A0A1A2A3A4A5A6A7GNDPT22624*10kVCCDOUTOSC2OSC1TED0D1D2D3181716151413121110R34.7MD1D2D3D4VCCS1S2S3S4图3.4无线发射模块图

发射模块有密码保证功能,最多可以编6个数据码和6561个地址码,使重复的机会大大减少。其性能参数如下:

? 电源电压: DC3V~DC12V ? 静态电流:≤0.02uA ? 发射频率:315MHz ? 发射电流:5~50mA

? 发射距离:50~800m ? 调制方式:ASK

在通常使用中,一般采用8位地址码和4位数据码,这时编码芯片PT2262和解码芯片PT2272的第1~8脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三种状态,3的8次方为6561,所以地址编码不重复度为6561组,只有发射端PT2262和接收端PT2272的地址编码完全相同,才能配对使用,一般生产厂家都把地址编码端悬空,用户可以自己设置编码。设置地址码的原则是:同一个系统地址码必须一致;不同的系统可以依靠不同的地址码加以区分。

3.3.2无线接收模块

解码接收模块包括接收头和解码芯片PT2272两部分。接收头将接收的信号输入PT2272的14引脚(DIN),PT2272对接收到的信号解码。无线接收模块如图3.5所示。

9

VCCU3123456789A0A1A2A3A4A5A6A7GNDPT2272VCCVTOSC2OSC1TED0D1D2D3181716151413121110R1780kP20P21P22P23VCCVCCRXDGND无线接收模块

3.5 无线接收模块图

编码芯片PT2262 发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272 接收到信号后,其地址码经过两次比较核对后,VT 脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262 不接通电源,其17 脚为低电平,所以315MHz 的高频发射电路不工作,当有按键按下时,PT2262 得电工作,其第17 脚输出经调制的串行数据信号,当17 脚为高电平期间315MHz 的高频发射电路起振并发射等幅高频信号,当17 脚为低平期间315MHz 的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262 的17 脚输出的数字信号,从而对高频电路完成幅度键控(ASK 调制)相当于调制度为100%的调幅。 PT2272管脚说明如表3.3

表3.3 PT2272管脚说明 名称 A0-A11 管脚 1-8,10-13 说明 地址管脚,用于进行地址编码,可置为 “0”,“1”,“f”(悬空),必须与2262一致,否则不解码 地址或数据管脚,当做为数据管脚时,只有在地址码与2262一致 一致,数据管脚才能输出与2262数据端对应的高电平,否则输出为低电平,锁存型只有在接收到下一数据才能转换 电源正端(+) 电源负端(-) 数据信号输入端,来自接收模块输出端 振荡电阻输入端,与OSC2所接电阻决定振荡频率; 振荡电阻振荡器输出端; 解码有效确认 输出端(常低)解码有效变成高电平(瞬态)

PT2262和PT2272除地址编码必须完全一致外,振荡电阻还必须匹配,一般要求译码器振荡频率要高于编码器振荡频率的2.5~8倍,否则接收距离会变近甚至无法接收,随着技术的发展市场上出现一批

10

D0-D5 VCC GND DIN OSC1 OSC2 VT 7-8,10-13 18 9 14 16 15 17

兼容芯片,在实际使用中只要对振荡电阻稍做改动就能配套使用。在具体的应用中,外接振荡电阻可根据需要进行适当的调节,阻值越大振荡频率越慢,编码的宽度越大,发码一帧的时间越长。市场上大部分产品都是用2262/1.2M=2272/200K组合的,少量产品用2262/4.7M=2272/820K。

解码接收模块包括接收头和解码芯片PT2272两部分组成。接收头将收到的信号输入PT2272的14脚(DIN),PT2272再将收到的信号解码。

接收板工作电压为DC 5V,接收灵敏度: -103dBm ,尺寸(mm): 49*20*7 ,工作频率:315MHz,工作电流:5mA ,编码类型:固定码(板上焊盘跳接设置) 应用说明:与各类型遥控器配合使用,解码输出后进行相应控制,在通常使用中,我们一般采用8位地址码和4位数据码,这时编码芯片PT2262和解码芯片PT2272的第1~8脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三种状态,地

8

址编码不重复度为3=6561组,只有发射端PT2262和接收端PT2272的地址编码完全相同,才能配对使用,遥控模块的生产厂家为了便于生产管理,出厂时遥控模块的PT2262和PT2272的八位地址编码端全部悬空,这样用户可以很方便选择各种编码状态,用户如果想改变地址编码,只要将PT2262和PT2272的1~8脚设置相同即可,例如将发射机的PT2262的第2脚接地,第3脚接正电源,其它引脚悬空,那么接收机的PT2272只要也第2脚接地,第3脚接正电源,其它引脚悬空就能实现配对接收。当两者地址编码完全一致时,接收机对应的D1~D4端输出约4V互锁高电平控制信号,同时VT端也输出解码有效高电平信号。

3.3.3 1602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3.6所示:

图3.6 1602LCD尺寸图

1602LCD主要技术参数:

显示容量:16×2个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm

11

引脚功能说明 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.4所示: 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 表3.4:引脚接口说明表 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。 3.3.4声音报警模块

该设计有声音报警,当有病人呼叫时,蜂鸣器就会大声提示,直到护士应答回复,才会停止鸣叫,控制引脚接在P3.4引脚上,利用三极管当做开关电路可以保护单片机,还可以起到放大电流的作用,当三极管基极为高电平时,发射极截止,为低电平时,发射极导通。报警模块如图3.7所示。

12

VCCP34R41kQ18550蜂鸣器

图3.7声音报警模块

3.3.5应答电路

本设计中四个床位使用一个应答按钮,接在P3.3引脚上,当有病人按下按钮,报警开始时,按下

应答按钮,即可停止报警,声音模块图如图3.8所示

VCCR510kS1P33

图3.8应答电路

13

3.3.6键盘接口

在单片机的应用系统中,通常都有人—机对话功能。它包含人对系统的状态干预、数据的输入以及应用系统向人报告运行状态与运行结果等。键盘成为人—机联系的必要手段,此时需要配置适当的键

[5]

盘输入设备。

3.3.6.1 键盘工作原理

键盘中的每个按键都是一个常开的开关电路,当所设置的功能键或数字键按下时,则处于闭合状态。对于一组键或一个键盘,需要通过接口电路与单片机相连,以便将键的开关状态通知单片机。单片机可以采用查询或中断方式检查有无键的输入以及是哪个键被按下,并通过转移指令转入执行该键的功能程序,执行完再返回到原始状态。

3.3.6.2 独立式按键

独立式按键是指直接用I/O口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线的工作状态都不会影响其他I/O口线的工作状态。

3.3.6.3行列式键盘

独立式按键电路每一个按键开关占用一根I/O口线。当按键数较多时,要占用较多的I/O口线。因此,在按键数大于8时,通常采用行列式(也称“矩阵式”)键盘电路。最简单的键盘,每个键对应I/O端口的一位,没有什么键闭和时,各位均处于高电位。当有一个键按下时,就是对应位接地而成为低电位,而其它位仍为高电位。这样,CPU只要检测到某一位为“0”,便可判别出对应键已经按下。但是,当键盘上的键较多时,引线太多,占用的I/O端口也太多。比如,一个有64个键的键盘,采用这种方法来设计时,就需要64条连线和8个8位并行端口。所以,这种简单结构只用在仅由几个键的小键盘中。通常使用的键盘结构是矩阵式。设有m * n个键盘,那么,采用矩阵式结构以后,便只要条引线就行了。比如,有m + n 个键,那么,只要用两个并行端口和16条引线便可以完成键盘的连接。 3.3.6.4显示接口

为了方便人们观察和监视单片机运行情况,通常需要利用显示器作为单片机的输出设备,以显示单片机的键输入值、中间信息以及运算结果等。

在单片机应用系统中,常用的显示器主要有LCD(液晶显示器)和LED(发光二极管显示器)。这两种显示器都具有耗电省,配置灵活,线路简单,安装方便,耐振动,寿命长等优点。

3.3.6.5 液晶显示器

液晶显示器LCD(Liquid Crystal Display)是一种极低功耗的显示器。由于其具有清晰度高,信息量大等特点,从而使得它越来越广泛地应用在小型仪器的显示中。

把LCD与驱动器组装在仪器的部件的英文名称为LCD Module,简称LCM。LCM一般分为三类,即段码型液晶模块、点阵字符液晶模块和点阵图形液晶模块。

3.3.6.6 LED点阵显示屏

LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,

[7]

具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。

目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机

[7]

通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。

① 8*8点阵

为8×8单基色点阵的结构图,从内部结构可以看出8×8点阵共需要64个发光二极管,且每个发光二极管是放置在各行和列的交叉点上。当对应的某一列置高电平,另一列置低电平时,则在该行和列的交叉点上相应的二极管就亮。

14

8×8点阵LED外观及引脚图,其等效电路如图9所示,只要其对应的X、Y轴顺向偏压,即可使

[8]

LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。

②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次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。

采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目

[10]

多。当列数很多时,并列传输的方案是不可取的。

采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。

注:总硬件电路图见附录B。

3.4 外围电路设计

3.4.1 控制器AT89C51

复位电路:

RST引脚是复位信号输入端,高电平有效。采用上电加按钮复位,因为本系统设计考虑到该系统比较重要,所以除了采用上电复位的方式外,应该还有按钮复位备用复位方式以防止系统死机时能。如下图3.9所示:

图3.9上电复位和按键复位

时钟电路:

15

时钟是时序的基础,AT89C51核片内由一个反相放大器构成振荡器,可以由它产生时钟,时钟可以由两种方式产生内部方式和外部方式。本系统采用内部方式,在XTAL1和XTAL2端外接石英晶体作为定时元件,内部反相放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频。电容采用30pF电容。如下图3.10所示:

图3.10内部时钟电路

3.4.2 键盘电路设计

1、 键的识别

为了识别键盘上的闭合键,通常采用两种方法,一种称为行扫描法,另一种称为行反转法。 (1)行扫描法的原理 :

行扫描法识别闭合键的原理如下:先使第0行接地,其余行为高电平,然后看第0行是否有键闭合,这是通过检查列线电位来实现的,即在第0行接地时,看是否有条列线变成低电平。如果有某条列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行上没有键被按下。此后,再将第1行接地,,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便在扫描中途退出,而将输入值进行移位,从而确定闭合键所在的列线位置。根据行线位置和列线位置便能再扫描法来确定具体位置。将行线和一个并行接口相接,CPU每次使并行输出接口的某一位为0,便相当于将某一行线接地,而其他位为1,则相当于使其他行线处于高电平。为了检查列线上的电位,将列线和一个并行输入输出口相接,CPU只要读取输入输出口中的数据,就可以设法判别出第几号键被按下。

(2)程控扫描法

从上面的原理中知道,程控扫描法是由程序控制键扫描的方法。程控扫描的任务是:

①首先判断是否有键按下。其方法是使所有的行输出均为低电平,然后从端口A读入列值 。如果没有键按下,则读入的列值为FFH;如果有键按下,则读入的列值不为FFH。

②去除键抖动。若有键按下,则延时5~10ms,再一次判断有无键按下,如果此时仍有键按下,则认为键盘上有一个键处于稳定闭合期。

③若有键闭合,则求出闭合键的键值. 求键值的方法是对键盘逐行扫描。

(3)行反转法的原理。

行反转法也是识别闭合键的常用方法,它的原理如下所述。这了叙述方便,以4×4=16键的键盘为例。图3.11是行反转法的工作示意图:

16

图3.11行反转法连接图

从图中可以看到,用行反转法识别闭合键时,要将行线接一个并行口,先让它工作为输出方式,将列线接到一个并行口,先让它工作在输出方式。程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线的值。如果此时有某一个键被按下,则必定会使某一列线值为0,然后,程序再对两个并行端口进行方式设置,使接行线的并行端口工作在输出方式,而使接列线的并行端口工作在输出方式,并且将刚才读得的列线值从所接的并行端口输出,再读取行线的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行值和列值。在键盘设计时,除了以键码的识别以外,还有抖动问题需要解决。

有软件方法可以很容易解决抖动问题,这就是通过延迟来等待抖动消失,这之后,再读入。

17

4 系统软件设计

4.1程序设计语言的介绍

单片机能执行的程序可以用很多种语言编写。从语言结构及其与单片机的关系两方面可分为三大类:分别是机器语言、汇编语言和高级语言。

机器语言

机器语言是一种用二进制代码“0”和“1”表示指令和数据 的最原始的程序设计语言。由于计算机只能识别二进制代码,因此,这种语言与计算机的关系最为直接,计算机能够快速识别并立即执行,响应速度最快。但这种语言编写程序非常繁琐、费时,且不易看懂,不便记忆,容易出错。

汇编语言

汇编语言是一种用助记符来表示的面向机器的程序设计语言。不同的机器所使用的汇编语言一般是

不同的。这种语言比机器语言更加直观、易懂、易用,且便于记忆。但是由于不同机器的汇编语言不同,这种语言有一定的局限性,移植性差。

高级语言

高级语言是一种面向过程且独立于计算机硬件结构的通用计算机语言。目前在单片机应用最广泛的是C语言。

4.2主函数程序设计

一个完整的程序中只有一个main函数,首先调用初始化函数进行初始化,然后判断并调用显示子程序使液晶1602显示、蜂鸣器鸣响报警。程序流程如图4.1所示。

18

开始 调用初始化子程序 液晶显示欢迎语 否 判断是否有床位报警 是 报警器打开,液晶显示对应床位号 判断应答按键是否按下 否 是

关闭报警器 液晶显示知晓

图4.1主程序流程图

结束 4.3 初始化程序设计

初始化程序包括液晶初始化显示、定时器中断系统初始化。 (一)、液晶初始化

根据液晶使用手册,在液晶使用之前,要对其设置显示模式,光标设置,然后进行清屏操作。方便之后使用。

(二)、定时器中断系统初始化

19

STC89C51有两个定时/计数器,都有定时和计数两种工作模式,四种工作方式(方式0、方式1、方式2、方式3),属于增一计数器。特殊功能寄存器TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式。但无论是工作在定时器模式还是计数器模式,实质都是对脉冲信号进行计数,只是计数的来源不同,计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚的外部脉冲进行计数,而定时器模式是对单片机的时钟振荡器信号经片内12分频后的内部脉冲信号计数。

3、 工作方式控制寄存器TMOD,不能位寻址,其格式如表4.1所示。

表4.1 寄存器TMOD的格式

(1) GATE :门控位。 (2) M0、M1:工作方式选择位。

(3) C/T:计数器和定时器模式选择位。C/T=0,为定时器模式;C/T=1为计数器模式。 M0、M1共有4种编码,对应于4种工作方式的选择,见表4.2。

表4.2 M1、M0工作方式选择

M1 M0 0 0 0 1 工作方式 方式0,为13位定时器/计数器 方式1,为16位定时器/计数器 1 0 方式2,8位的常数自动重装的定时器/计数器 1 1

方式3,仅用于T0,此时T0分为两个8位计数器,T1停止计数 定时器的工作方式设置好以后就要给定时器装入初值,工作方式不同初值也不同。 1、下面介绍一下单片机的时钟周期、机器周期和指令周期。

(1) 时钟周期是单片机时钟控制信号的基本时间单位。若时钟晶体的震荡频率为f0sc ,则时钟周期Tosc=1/fosc 。

(2) 机器周期是CPU完成一个基本操作所需要的时间。AT89C51单片机的每12个时钟周期为一个机器周期,即TCY=12/fOSC 。

(3) 指令周期是执行一条指令所需的时间。AT89C51单片机中指令按字节来分,可分为单字节、双字节和三字节指令,单字节和双字节指令一般为单机器周期和双机器周期,三字节指令都是双机器周期,只有乘、除指令占4个机器周期。

本设计中,时钟晶体的频率为11.0592MHZ,所以时钟周期为1/12M。T0作为定时器使用,工作方

16

式为方式1,作为16位计数器。设计数个数为N,计数初值为X,那么X=2-N, 定时时间=N×12/

20

晶振频率,所以,定时时间=(2-X)×12/晶振频率。

本设计设置每隔50ms中断一次,那么得出初值X=0x4BFF,定时器T0的高8 位TH0赋值0x4B,低8位TL0赋值0xFF。

2、定时器/计数器控制寄存器TCON,可位寻址,其格式见表4.3。

表4.3特殊寄存器TCON的格式

D7 D6 D5 D4 D3 D2 D1 D0 16

TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 位地址

8FH __ 8DH __ 8BH 8AH 89H 88H ① TR0:定时器启动位。TR0=0,关闭定时器0;TR0=1,开启定时器0.

② IT0:选择外部中断0为跳沿触发方式还是电平触发方式。IT0=0,为电平触发方式;IT0=1,为跳沿触发方式。 4、单片机对各中断源的开放或屏蔽是由片内的中断允许寄存器IE控制的,可位寻址,其格式见表4.4。

表4.4中断允许寄存器IE的格式

IE 位地址

D7 EA AFH D6 __ __ D5 __ __ D4 ES ACH D3 ET1 ANH D2 EX1 AAH D1 ET0 A9H D0 EX0 A8H (1) EA:中断允许总开关控制位。EA=0,所有的中断请求被屏蔽;EA=1,所有的中断请求被开放。 (2) ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1,允许串行口中断。

(3) ET0:定时器/计数器T0的溢出中断允许位。ETO=0,禁止T0溢出中断;ETO=1,允许T0溢出中断。

(4) EX0:外部中断0中断允许位。EX=0,禁止外部中断0中断;ES=1,允许外部中断0中断。STC89C51复位后,IE被清零,所有的中断请求被禁止。所以在初始化时,要令EA=1,EX0=1,ET0=1,开放总中断、允许T0中断。初始化程序如下:

21

void init() { }

E=0;

com_1602(0x38); com_1602(0x0c); com_1602(0x06); com_1602(0x80); com_1602(0x01); bg_1602=0; TMOD=0x01; TL0=0x4b; TH0=0xff; EA=1; ET0=1; TR0=1;

4.4延时子程序设定

延时子程序作为方便其他程序调用,避免程序繁琐重复。我将延时子程序定为有参函数,延时1ms,程序如下:

void delay(ui x) { ui i,j;

for(i=0;i

4.5液晶显示子程序

void display() {

if(num_D0||num_D1||num_D2||num_D3) {

if(num_D0==1) { }

22

dis_1602(1,0,2,0,1); dis_1602(1,0,3,0,10);

} else

dis_1602(15,0,0,3,0);

if(num_D1==2) { }

if(num_D2==3) { }

if(num_D3==4) { }

dis_1602(10,1,5,1,0);

dis_1602(1,0,8,0,4); dis_1602(1,0,9,0,10); dis_1602(1,0,6,0,3); dis_1602(1,0,7,0,10); dis_1602(1,0,4,0,2); dis_1602(1,0,5,0,10);

通过以上的源代码将病床呼叫系统各个模块的功能实现,通过lcd对呼叫病床号的显示以及控制室对呼叫的应答的显示,使这次的设计很成功。

5 电路的仿真及调试

5.1软件仿真

启动电源,显示屏无显示,在按下B按钮(对应2号床位)时,界面部分显示2,有指示灯显示,按下复位键后复位。该设计充分反应了控制电路的可行性。综上所述,本系统实现了:显示病床号,有指示灯显示,病床呼叫与值班人员应答的功能。通过Protues软件仿真,能达到上述结论,满足题目目的,达到要求。

23

致谢

这次毕业设计得到了很多老师、同学和同事的帮助,其中我的导师陈亚妮老师对我的关心和支持尤为重要,每次遇到难题,我最先做的就是向陈老师寻求帮助,而陈 老师每次不管忙或闲,总会抽空来找我面谈,然后一起商量解决的办法。

另外,感谢校方给予我这样一次机会,能够独立地完成一个课题,并在这个过程当中,给予我们各种方便,使我们在即将离校的最后一段时间里,能够更多学习一些实践应用知识,增强了我们实践操作和动手应用能力,提高了独立思考的能力。再一次对我的母校表示感谢。

感谢在整个毕业设计期间和我密切合作的同学,和曾经在各个方面给予过我帮助的伙伴们,在大学生活即将结束的最后的日子里,我们再一次演绎了团结合作的童话,把一个庞大的,从来没有上手的课题,圆满地完成了。正是因为有了你们的帮助,才让我不仅学到了本次课题所涉及的新知识,更让我感觉到了知识以外的东西,那就是团结的力量。

最后,感谢所有在这次毕业设计中给予过我帮助的人。 对上述朋友,再一次真诚地表示感谢!

29

本文来源:https://www.bwwdw.com/article/f3gg.html

Top