苏州大学本科生毕业设计(论文)
基于51单片机的无线病房呼叫系统设计
苏州大学 应用技术学院 10电子,10105030, ,殷成,
前言 ........................................................ 2 第一章 理论分析及总体方案 ..................................... 3 第1.1节 设计要求和目标....................................... 3 第1.2节 设计可行性验证....................................... 3 第1.3节 设计方案及步骤....................................... 3 第二章 系统硬件设计 ......................................... 4 第2.1节 系统的原理框图....................................... 4 第2.2节 STCC51单片机芯片介绍 ............................... 4 第2.3节 硬件模块设计 ........................................ 7 第三章 系统软件设计 ........................................ 12 第3.1节 设计的软件环境...................................... 12 第3.2节 主函数程序设计...................................... 13 第3.3节 初始化程序设计...................................... 14 第3.4节 延时子程序设计...................................... 17 第3.5节 液晶显示子程序设计 .................................. 17 第四章 系统测试与分析 ....................................... 19 第4.1节 无线模块测试 ....................................... 19 第4.2节 系统的调试 ......................................... 20 结论 ....................................................... 24 参考文献.................................................... 25 致谢 ....................................................... 26 附录 ....................................................... 27 附录1:Protel原理图 ........................................ 27 附录2: 元器件清单 ........................................... 28 附录3:实物图 .............................................. 29 附录4:C语音源程序 ......................................... 30
-i-
苏州大学本科生毕业设计(论文)
基于51单片机的无线病床呼叫系统设计
苏州大学 应用技术学院 10电子,10105030, ,殷成,
【摘要】: 本文以STCC51单片机为控制核心,加入无线接收和发射模块,声音报
警和液晶显示等模块设计了一个无线病床呼叫系统,通过无线发射模块PT2262进行数据
传送,用无线接收芯片PT2272接收传送过来的信号,再利用编码解码技术,经STCC51
处理后显示输出并发出警告, 从而实现病人与医护的无线远距离沟通。该设计能够实现15
米左右的发射和接收,也能绕过障碍物收发,具有占用空间小、使用材料少、传输速度快
等优点,可以满足一定的临床应用要求。
【关键词】:单片机STCC51;无线传输模块;病床呼叫;远距离
[Abstract] : This paper takes STCC51 single chip as the control core, the wireless receiving and transmitting module, voice alarm and liquid crystal display module are added to design a wireless ward calling system, and data transmission through the wireless transmission module PT2262, receives the signal transmitted by the wireless receiving chip PT2272, and use the encoding and decoding technology, then treated by STCC51 display output and issued a warning, so as to realize the long distance wireless communication patient and medical care. The design can achieve 15 meters of transmitting and receiving, can bypass the obstacles transceiver, occupies little space, use less material, has the advantages of high transmission speed, can meet the requirement of clinical application of certain.
[Key words] : STCC51 wireless;transmit module;sickbed beeper;remote
第 1 页
苏州大学本科生毕业设计(论文)
前言
随着科技的不断发展,医疗方面的技术不断提高,但是目前大多数医院的病床呼叫传输都是有线的,由于有线传输占用空间大,使用不方便,所以有必要对病床呼叫系统进行改变,而近年来我国对无线方面的研究有大的突破,很多应用都趋向于无线化,使得非常多的应用使用更加简单方便,未来更是无线传输的天下,所以在这里进行无线病房呼叫系统设计。
本设计是由无线发射和接收模块、单片机控制模块、液晶显示模块、呼叫报警模块和复位应答等模块组成的基于51单片机的无线病床呼叫系统设计。本系统先是通过无线模块传送信号,然后单片机进行系统处理并发出警告,最终实现病房的无线信号远距离传输,节省了空间与消耗,优化医患交流,使无线技术真正应用到临床医学上。
第 2 页
苏州大学本科生毕业设计(论文)
第一章 理论分析及总体方案
第1.1节 设计要求和目标
设计要求:设计出一个距离在15米左右的,有抗干扰能力的,而且可以实现多路无线病床呼叫和多功能呼叫且互不干扰的稳定的无线病房呼叫系统。
设计目标:当病人按下呼叫键时,无线接收器接收到无线发射器发射的无线信号,再经过51单片机控制处理,向医生值班室发出能在1602液晶上显示相应床位号的呼叫警报,当护士按键应答,呼叫报警停止,液晶显示已应答,警报由定时器控制关闭。当有多个病人同时呼叫但没有及时应答时,可以同时报警多个病房并显示对应各床床位号。 第1.2节 设计可行性验证
现代无线技术的发展使得无线呼叫技术相对于有线呼叫突出了它的优越性,无线技术解决了有线呼叫因为受位置的不能很好的达到医患交流的问题,无线传输技术越来越成熟,有不受位置约束和可移动性的优点,所以给无线传输技术与医学临床的结合提供了可能性。在校大二大三期间也学习了与51单片机相关的科目,具有相关理论基础。再查阅网上的相关资料,可以发现本课题具有可行性。
第1.3节 设计方案及步骤
对51单片机的无线病床呼叫系统,制定如下方案及步骤:
第一,依照设计目的思考设计的原理图框架,学习设计中的相关知识,如无线收发模块的工作原理,单片机C语言编程设计,液晶1602的显示, 51芯片各个引脚工作原理, Protel画图软件使用等。
第二,设计硬件模块。如无线发射模块、无线接收模块、1602显示模块、声音呼叫模块。在Protel中绘制原理图并仿真。
第三,设计系统软件。如主函数程序设计、初始程序设计、液晶显示子程序设计等。用keil软件编程执行。
第四,制作实物。根据上面的硬件设计选择相关元器件和模块,先布线再焊接电路板,最后检测能否实现相关功能。
第 3 页
苏州大学本科生毕业设计(论文)
第二章 系统硬件设计
第2.1节 系统的原理框图
按照无线病床呼叫系统的设计要求画出系统原理框图,如图2-1所示。
应答按键
声音报警 发射模块接收模块 单片机
液晶显示
图2-1系统原理框图 第2.2节 STCC51单片机芯片介绍
STCC51是单片微型计算机的一个特殊系列,是一种应用广泛的单片机。它由一个8位CPU,一个片内振荡器和时钟电路,五个中断源、两个优先级嵌套中断结构,两个16位定时器,一个全双工串行口,4个8位并行I/O端口等组成。它是一种低功耗、高性能U1
140的微控制器,具有掉电保护功能。 P10VCC239P11P00 338P12P01437P13P02536P14P03635P15P04734P16P05833P17P06932RESETP071031P30/RXDEA/VP1130P31/TXDALE/P1229P32/INT0PSEN1328P33/INT1P271427P34/T0P261526P35/T1P251625P36WRP241724P37/RDP231823 X2P221922图2-2 STCC51单片机引脚图 X1P212021GNDP20
STCC52 第 4 页
苏州大学本科生毕业设计(论文)
(一)STCC51单片机的引脚说明:
VCC:供电电压
GND:接地
P0口:P0口是一个8位双向I/O口,当管脚输入1时,定义为高阻输入。
P1口:P1口和P0一样是一个8位双向I/O口,当 P1口输入1后,被内部上拉为高,用作输入,P1口被外部下拉为低电平时,电流输出。
P2口:P2口为一个8位双向I/O口,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。当作为输入时,外部拉低P2口管脚,电流作为输出。
P3口:P3口是一个双向I/O口,当P3口写入“1”后,内部上拉为高电平,并用作输入。
P3.0 RXD:串行输入口
P3.1 TXD:串行输出口
P3.2 /INT0:外部中断0
P3.3 /INT1:外部中断1
P3.4 T0:记时器0外部输入
P3.5 T1:记时器1外部输入
P3.6 /WR:外部数据存储器写选通信号
P3.7 /RD:外部数据存储器读选通信号
P3口同时为闪烁编程和编程校验接收控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:锁存
PSEN:外部程序存储器的选通信号。
EA/VPP:输入信号,访问外部程序存储器控制信号。当EA接地时,从外部程序存储器取指令。当EA接高电平时,先访问内部程序存储器。
XTAL1:内部晶振电路反相断输入。
XTAL2:内部晶振电路反相断输出。
(二)STCC51单片机最小系统:
最小系统包括单片机和电源、时钟电路、复位电路等部件,维持单片机的正常运行。STCC51单片机片内有ROM/EPROM,因而,这种芯片构成的最小系统具有简单)稳定的特点。用STCC51单片机构成的最小系统是以单片机为中心加上两个电路组成的,其结构如图2-3所示。
第 5 页
苏州大学本科生毕业设计(论文)
时钟电路 I/STCC51单片机 O 口 复位电路
图2-3 单片机最小系统原理框图
(1) 时钟电路
STCC51单片机的时钟电路有两种方式:一是内部振荡,二是外部振荡。单片机的所有指令都在时钟控制下按时序进行操作。这里介绍单片机的内部振荡电路,如图2-4所示,单片机的XTAL1(18)和XTAL2(19)引脚分别作为输入和输出外接晶振,内部振荡器就能产生自激振并发出时钟脉冲信号。图中电容的作用是稳定频率和快速起振,电容值在
C25~30pF间,典型值为30pF。晶振振荡频率范围是1.2~12MHz,典型值为12MHz和6MHz。 18
30pF
Y1
11.0592MHzC3
19
图2-4 STCC51内部时钟电路
30pF
(2) 复位电路
当在STCC51单片机的RST引脚引入至少保持2个机器周期以上的高电平时,单片机就执行复位。单片机复位完成后,内部寄存器恢复到初始状态。只要RST引脚保持高电平,单片机就循环复位。
复位电路有上电自动复位和手动按钮复位两种基本形式。上电自动复位要求接通电源后自动复位,比较简单的是通过外部复位电路的电容充放电来自动复位。
按键手动复位要求在电源接通情况下用按钮开关使单片机复位。本设计就是采用的按键手动复位方式。按键手动复位也有电平复位方式和脉冲复位方式两种。其中的电平复位是通过RST(9)端与电源Vcc相接从而实现的。按键手动复位电路见图2-5。时钟频率用
VCCS411.0592MHZ时C取10uF,R取10kΩ。 9
C1
10uFR1
10k
图2-5 STCC51复位电路
第 6 页
苏州大学本科生毕业设计(论文)
第2.3节 硬件模块设计
由图2-1系统原理框图可知,整个系统分为五个模块:无线发射模块、无线接收模块、声音报警模块、液晶显示模块、按键应答模块。
下面介绍各个模块的设计方案。
2.3.1无线发射模块
PT2262是一种低功耗低价位简洁通用的编码电路,PT2262最多可有12 位三态地址端管脚, 管脚说明如表2-1所示,PT2262 最多可有6 位数据端管脚,设定的地址码和数据码从17 脚串行输出,PT2262的载波振荡器、编码器和发射单元集成于一身。如下表2-2 是T10A发射模块。
表2-1 PT2262管脚说明
名称 管脚 说明
地址管脚,用于进行地址编码,可置为“0”、 “1” 、“悬A0-A11 1-8,10-13 空”。
D0-D5 7-8,10-13 数据输入端,有一个为“1”即有编码发出,内部下拉。
VCC 18 电源正端(,)
GND 9 电源负端(,)
TE 14 编码启动端,用于多数据的编码发射,低电平有效;
OSC1 16 振荡电阻输入端,与OSC2所接电阻决定振荡频率;
OSC2 15 振荡电阻振荡器输出端;
DOUT 17 编码输出端(正常时为低电平)
表2-2 T10A发射模块
技术指标参数
工作电压3V-12V
工作电流?25mA(12V); ?2mA(3V)
谐振方式声表谐振(SAW)
调制方式AM/ASK/OOK
工作频率315MHz、433.92MHz可选
频率误差?150kHz(max)
发射功率25mW(315MHz, 12V时)
如下图2-6所示为无线发射模块图,S1-S4四个按键分别代表不同的病床号,也可以用作同一病床的四个不同功能,按下表示病人呼叫。发射模块为了减少重复的机会,加入了密码保证功能,最多可以编6个数据码和6561个地址码。
第 7 页
苏州大学本科生毕业设计(论文)
VCCGNDDATA
ANT
D3D4D1D2U2118A0VCC217A1DOUTR3316A2OSC2415VCC4.7MA3OSC1514S1A4TE613S2A5D0712S3A6D1811S4A7D2910GNDD3
PT2262
4*10k
图2-6 无线发射模块图
2.3.2无线接收模块
无线接收模块包括接收头和解码芯片PT2272两部分。PT2272对接收头接收并输入PT2272的14引脚(DIN)的信号解码。无线接收模块如图2-7所示。
VCC
U3
118A0VCC217VCCA1VTR1316A2OSC2415780kA3OSC1VCC514A4TERXD613P20A5D0GND712P21A6D1811P22无线接收模块A7D2910P23GNDD3
PT2272
图2-7 无线接收模块图
解码芯片PT2272 接收到由编码芯片发出的包含地址码、数据码、同步码的一个完整的码字信号后,两次比较核对其地址码后,VT 脚输出高电平,同时相应的数据脚也输出高电平。接收芯片PT2272的数据输出位根据其后缀不同而不同,数据输出具有“暂存”和“锁存”两种方式,方便用户使用。PT2262 的17 脚输出的数字信号决定了高频发射电路,并对高频电路完成调制度为100,的调幅。当PT2262 的电源不接通时,高频发射电路不工作,17 脚为低电平,这是由于发射端按键未按下;同样,要想PT2262工作并从17脚输出调制后的串行数据信号,PT2262必须得电,此时需要按下按钮。当17 脚为低电平时315MHz 的高频发射电路停止振荡,当17 脚为高电平时高频发射电路起振并发射等幅高频信号。PT2272管脚说明如下表2-3所示。
第 8 页
苏州大学本科生毕业设计(论文)
表2-3 PT2272管脚说明
名称管脚说明
地址管脚,用于地址编码,可置为 “0”,“1”,“f”(悬空),但A0-A111-8,10-13 必须与2262一致,否则不解码
地址或数据管脚,当用作数据管脚时,只有地址码与2262一致,数
D0-D57-8,10-13据管脚才能输出对应的高电平,否则输出低电平,锁存型只有在
接收到下一数据才能转换
VCC18电源正端(,)
GND9电源负端(,)
DIN14数据信号输入端,来自接收模块输出端
OSC116振荡电阻输入端;
OSC215振荡电阻振荡器输出端;
VT17解码有效确认 输出端(常低)变成高电平(瞬态)
2.3.3液晶显示模块
本次设计采用1602液晶显示模块,本模块具有显示质量高,数字式接口,体积小、
19重量轻,功耗低等有点,电路图如2-8所示。 C51602
VCC
R1DVSS210K
PP1405R2Q21.5KVCC9012
R3P26210
2.2K
图2-8 1602液晶原理图 1602LCD的基本参数及引脚功能:
1602LCD有带背光和不带背光两种,基控制器一般是HD44780,带背光的比不带背光
VDDD3
的厚,是否带背光在应用中没有差距。
1602LCD主要技术参数: P15P06
显示容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V) 311
模块最佳工作电压:5.0V
第 9 页
VLD4
P16P07
412
RSD5
P00
513
R/WD6
P01
614
ED7
P02
715
D0BLA
P03
816
D1BLK
P04
苏州大学本科生毕业设计(论文)
字符尺寸:2.95×4.35(W×H)mm
1602LCD采用标准的14脚或16脚(带背光)接口,引脚接口说明如表2-4所示:
表2-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 背光源负极 第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最低,接地时对比度最
高,对比度过高会显示不清楚。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时为指令寄存器。 第5脚:R/W为读写信号线,高电平时读操作,低电平时写操作。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7,14脚:D0,D7为8位双向数据线。
本次试验采用无背光1602LCD,所以无15和16管脚。
2.3.4声音报警模块
本设计有声音报警模块,当有病人呼叫时,蜂鸣器就会呼叫提示,直到护士按下应答,
才会停止呼叫,控制引脚接在P3.4引脚上,三极管可以当做开关电路保护单片机,还可以
放大电流,当三极管基极为高电平时,发射极截止;为低电平时,发射极导通。为了防止
病人误按,长按1秒才会报警。报警模块如图2-9所示。
VCC
Q1R4P348550
1k
蜂鸣器
图2-9声音报警模块
第 10 页
苏州大学本科生毕业设计(论文) 2.3.5应答电路
在这个设计中四个床位使用一个应答按钮,接在P3.3引脚上,当有病人按下按钮时,
报警开始,当按下应答按钮时,即可停止报警,声音模块图如下图2-10所示:
VCC
R5
10k
S1
P33
图2-10 应答模块
第 11 页
苏州大学本科生毕业设计(论文)
第三章 系统软件设计
第3.1节 设计的软件环境
3.1.1 Keil
Keil C51是德国Keil Software公司出品的51系列兼容单片机C语言,支持8051微控制器体系结构的Keil开发工具软件,由于C语言易学易用,所以该软件优势明显,应用广泛。Keil C51软件的优点有:提供丰富的库函数和功能强大的集成开发调试工具,目标代码生成效率高,语句生成的汇编代码紧凑,理解起来很方便。
Keil C51软件界面如下图3-1:
图 3-1 软件截图
3.1.2 Protel99SE
Protel99SE是PORTEL公司发明的一种人机界面友好,易学易用的EDA软件。Protel99SE是应用于Windows操作系统下的EDA设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作。
Protel99SE的工作界面是一种简洁方便的Windows界面,包括:标题栏、标准工具栏、主菜单、绘图工具栏、对象选择按钮、图形编辑窗口、预览对象方位控制按钮、状态栏、仿真进程控制按钮、预览窗口、对象选择器窗口等。Protel99SE软件如下图3-2。
第 12 页
苏州大学本科生毕业设计(论文)
图3-2 软件图
运行Protel99SE程序后,进入软件的主界面。通过左侧工具栏中的Browse(从库中选择元件命令)命令。首先添加需要的元器件库,再在相应的库里找到需要的元器件,如图所示的电阻查找输入:res,其它元器件类似,将所需元器件添加完后双击元器件修改参数,最后连线保证线路通畅,最后连线图如图3-3。
图3-3 连线图
第3.2节 主函数程序设计
一个完整的程序中只有一个main函数,首先调用初始化函数进行初始化,然后判断并调用显示子程序使液晶1602显示、蜂鸣器鸣响报警。程序流程如下图3-4所示。
第 13 页
苏州大学本科生毕业设计(论文)
STCC51
调用初始化子程序
液晶显示欢迎语
否
判断是否有床 位报警
是
报警器打开,液晶
显示对应床位号
否 判断应答按键 是否按下
是
关闭报警器
液晶显示知道
结束
图 3-4 主程序流程图
第3.3节 初始化程序设计
初始化程序有液晶初始化显示和定时器中断系统初始化两个方面。 (一)、液晶初始化
在液晶使用之前,要对其设置显示模式和光标,然后进行清屏,方便下次使用。
(二)、定时器中断系统初始化
STCC51有两个具有定时和计数两种工作模式的定时/计数器,它有四种工作方式(方
式0、方式1、方式2、方式3)。特殊功能寄存器TMOD用于选择定时器/计数器的工作模
第 14 页
苏州大学本科生毕业设计(论文)
式和工作方式。无论是工作在定时器模式还是计数器模式,它们的实质都是对脉冲信号进行计数。
1、下面介绍一下单片机的时钟周期、机器周期和指令周期。
(1)时钟周期是单片机时钟控制信号的基本时间单位。如果时钟晶体的震荡频率为f ,0sc那么时钟周期为T=1/f。 OSC OSC
(2) CPU完成一个基本操作所需要的时间是机器周期。ATC51单片机的每12个时钟周期为一个机器周期,为 T=12/f。 CYOSC
(3)指令周期是指执行一条指令所需的时间。
在这个设计中,时钟晶体的频率为11.0592MHZ,所以时钟周期为1/12M。T0作为定时器使用,工作方式为方式1,作为16位计数器。设计数个数为N,计数初值为X,那么X
1616等于2-N,定时时间为N×12/晶振频率,那么定时时间为(2-X)×12/晶振频率。
该设计设置每隔50ms中断一次,得出初值X=0x4BFF,定时器T0的高8位TH0赋值0x4B,低8位TL0赋值0xFF。
2、定时器/计数器控制寄存器TCON,可位寻址。其格式见表3-1。
表3-1 特殊寄存器TCON的格式
D7 D6 D5 D4 D3 D2 D1 D0
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
位地址 8FH __ 8DH __ 8BH 8AH H 88H
? TR0:定时器启动位。TR0=0,关闭定时器0;TR0=1,开启定时器0.
? IT0:选择外部中断0为跳沿触发方式还是电平触发方式。IT0=0,为电平触发方式;IT0=1,为跳沿触发方式。
3、工作方式控制寄存器TMOD,不能位寻址。
(1) GATE :门控位。
(2) M0、M1:工作方式选择位。
(3) C/T:计数器和定时器模式选择位。C/T=0,为定时器模式;C/T=1为计数器模式。
M0、M1共有4种编码,对应于4种工作方式的选择,见表3-2。
第 15 页
苏州大学本科生毕业设计(论文)
表3-2 M1、M0工作方式选择
M1 M0 工作方式
0 0 方式0,为13位定时器/计数器
0 1 方式1,为16位定时器/计数器
1 0 方式2,8位的常数自动重装的定时器/计数器
1 1 方式3,仅用于T0,此时T0分为两个8位计数器,T1停止计数
定时器的工作方式设置好以后就要给定时器装入初值,工作方式不同初值也不同,所
以要根据不同方式定义初值。
4、单片机对各中断源的开放或屏蔽是由片内的中断允许寄存器IE控制的,可位寻址。
其格式见表3-3。
表3-3 中断允许寄存器IE的格式
D7 D6 D5 D4 D3 D2 D1 D0
IE EA __ __ ES ET1 EX1 ET0 EX0
位地址 AFH __ __ ACH ANH AAH A9H A8H
(1)EA:中断允许总开关控制位。EA=0,屏蔽所有的中断;EA=1,开放所有的中断请求。
(2)ES:串行口中断允许位。当ES=0时,禁止串行口中断;当ES=1,允许串行口中断。
(3)ET0:定时器/计数器T0的溢出中断允许位。ETO=0,禁止中断;ETO=1,允许中断。
(4)EX0:外部中断0中断允许位。EX=0,禁止中断0中断;ES=1,允许外部中断0中断。STCC51复位后,IE被清零,所有的中断请求被禁止。初始化时,使EA=1,EX0=1,ET0=1,开放总中断、允许T0中断。
(5)初始化程序如下:
第 16 页
苏州大学本科生毕业设计(论文)
void init()
{
bg_1602=0;
TMOD=0x01;
TL0=0x4b;
TH0=0xff;
EA=1;
ET0=1;
TR0=1;
E=0;
com_1602(0x38);
com_1602(0x0c);
com_1602(0x06);
com_1602(0x80);
com_1602(0x01); }
第3.4节 延时子程序设计
延时子程序为了方便其他程序调用,避免程序重复。将延时子程序设置为有参函数,
延时1ms,程序如下:
void delay(ui x)
{ ui i,j;
for(i=0;i 第3.5节 液晶显示子程序设计 void display() { if(num_D0||num_D1||num_D2||num_D3) { 第 17 页 苏州大学本科生毕业设计(论文) if(num_D0==1) { dis_1602(1,0,2,0,1); dis_1602(1,0,3,0,10); } if(num_D1==2) { dis_1602(1,0,4,0,2); dis_1602(1,0,5,0,10); } if(num_D2==3) { dis_1602(1,0,6,0,3); dis_1602(1,0,7,0,10); } if(num_D3==4) { dis_1602(1,0,8,0,4); dis_1602(1,0,9,0,10); } dis_1602(10,1,5,1,0); } else dis_1602(15,0,0,3,0); 第 18 页 苏州大学本科生毕业设计(论文) 第四章 系统测试与分析 经过一个月左右的时间,基于51单片机的无线病房呼叫系统终于设计和制作完成了,下面进行系统的测试与分析,包括无线模块的测试与呼叫系统的调试两部分组成。 第4.1节 无线模块测试 无线模块受距离和障碍物等的影响比较明显,我测试了几组关于无线模块在有障碍物和无障碍物的情况下能收发的最大距离,如下图是在不同情况下的测试结果。 在直线无障碍情况下,测试1号和2号按钮,测试出1号按钮在距离24米左右时收不到信号,2号按钮在距离26米左右时收不到信号,测试结果如图4-1,图4-2。 图4-1 测试结果1 图4-2 测试结果2 在隔墙状态下,测试3号按钮,多次测量,测试出3号按钮在14米和16米左右收不到信号,不发出警报,测试结果如下图4-3。 第 19 页 苏州大学本科生毕业设计(论文) 图4-3 测试结果3 在直线隔门状态下,测试4号按钮,多次测量,测试出4号按钮在距离在21米和22米左右收不到无线信号,测试结果如下图4-4。 图4-4 测试结果4 数据测量都是约值,在直线无障碍情况下无线模块距离在25米左右,在隔墙状态下,无线模块距离在15米左右,在直线隔门状态下,距离大约为21米,可以看出障碍物对无线模块收发距离的影响较大,所以在医院的无线呼叫系统要尽量避免过多障碍物。 第4.2节 系统的调试 画出设计原理图,并进行调试仿真,仿真结果如下图所示,系统能正常运行,四个按钮均能实现呼叫功能,应答按钮也可以正常运行。 如图4-5所示,按下开机键后液晶屏上显示happy every day。 第 20 页 苏州大学本科生毕业设计(论文) 图4-5 仿真结果1 如图4-6所示,1号按钮呼叫成功收到。 图4-6 仿真结果2 如图4-7所示,2号按钮按下呼叫键后在显示屏上成功显示。 图4-7 仿真结果3 如图4-8所示,仿真测试的3号按键能成功呼叫并警报。 第 21 页 苏州大学本科生毕业设计(论文) 图4-8 仿真结果4 如图4-9所示,4号按键按下后也能成功呼叫警报。 图4-9 仿真结果5 由上可知,4个呼叫按钮和开机键均能仿真成功,正常运行,下面测试应答按钮,如图4-10所示,按下应答按钮后,液晶屏上显示I know,仿真成功。 第 22 页 苏州大学本科生毕业设计(论文) 图4-10 仿真结果6 综上可知,仿真成功,呼叫按钮和应答按钮均能正常运行。 第 23 页 苏州大学本科生毕业设计(论文) 结论 本次毕业设计到此就结束了,这次的无线病房呼叫系统设计查阅了很多相关资料,参考了相关文章,也向老师征求了不少意见,谢谢老师在这次毕业设计中对我的帮助。 在选择无线病房呼叫系统这个课题后,我考虑要解决的难点有:病人都按开关时,在数码显示器要能循环显示病床,这是对我的专业知识的考验,也是对我思想方法的考验。 在课程设计的具体过程中遇到了不少问题,每天都在图书馆找相关资料,遇到了很多困难,但我在困难面前不低头,积极主动的找老师同学结局难题,同时也会从中发现自己的不足之处,像对以前所学过的知识理解不深刻,掌握得不够牢固等等。还有像Protel软件的应用不熟练、单片机汇编语言掌握得不好、Proteus仿真知识和操作。但是经过这次设计之后,也学到了很多知识,温故而知新,真正做到学以致用的学院宗旨。 在模块学习和电路板焊接方面,我发现了自己的动手能力还是比较差,所以很多方面需要提高,真正在这个毕业设计中发现问题解决问题。 最后在自己的不懈奋斗下,这次的毕业设计终于完成了,虽然在这次设计中遇到了不少编程问题,但是在老师的辛勤指导下,终于实现了设计的目标和要求。这一次的毕业设计让我学到了很多的知识。总之,只要根据设计内容找到适合自己的好的学习方法,通过自己的不懈努力,一定会取得进步。通过这次毕业设计学到了很多东西,我相信我一定会成功。 第 24 页 苏州大学本科生毕业设计(论文) 参考文献 兰吉昌.51单片机应用设计百例[M].北京:化学工业出版社,2009:36-117. 黄仁欣,张琴.单片机原理与应用技术(第二版)[M].北京:清华大学出版社,2010:1-249 叶梦熊. 基于MCS-51单片机的无线病房呼叫系统设计[J]. 数字技术与应用,2010,8 果真,许艳丽,冯一航,程亚冰.青岛大学学生研究性学习和创新性实验项目-无线病房呼叫系统的设计[J]. 青岛大学学报(工程技术版),2012,27(2) 侍尉,彭建学.Design of Wireless Communication Device Based on 51 MCU and nRF905[IN].Electronic Technology,2013,1 耿德根、宋建国、马潮、叶永建 编著. AVR高速嵌入式单片机原理与应用[M]. 北京航空航天大学出版社. 2000年10月 肖金球《单片机原理与接口技术》[M]. 北京:清华大学出版社, 2004 唐棠、陆兵.微型机算计与接口技术[M].南京.南京大学出版社.1993年.371页 康华光《电子技术基础(模拟部分)》[M]. 北京:高等教育出版社, 1999 张毅刚、彭喜源 编著. MCS—51单片机应用设计[M]. 哈尔滨工业大学出版社 .2001年1月 第 25 页 苏州大学本科生毕业设计(论文) 致谢 这次论文是在苏州大学应用技术学院做毕业设计期间写的总结,是在导师彭静玉老师指导下完成的。 通过这几个月的毕业设计学习,在老师的精心指导下,我们在学习能力和动手能力都受益匪浅。在此尤其要感谢我的论文指导老师—彭静玉老师,她对我进行了认真负责的指导,不辞辛苦的帮助我进行一次次的论文修改和改进,所以我们在分析问题、解决问题及工作的能力有了很大的提高。在此期间,彭静玉老师提出了很多有益的建议并给予我很大帮助。在此谨向彭静玉老师表示衷心的感谢。 苏州大学应用技术学院是一个友好和谐,热爱学习的大集体,大家互帮互助,彼此讨论学习问题,共同提高知识能力。在此也要感谢我的各位同学,有了大家的支持和帮助使得毕业论文可以顺利的完成。 最后,再次向彭静玉老师以及帮助过我的老师和同学们表示最真诚的谢意~ 第 26 页 苏州大学本科生毕业设计(论文) 附录 附录1:Protel原理图 主控机: C5VCCVCC1602P1R7R921VCCQ3D0D2Q4901390132.2K2.2KVCCPOWERR8R103P13P11J1S110K10K21CON2VCCVCC21VSS43R1431165VDD10K6522VL3R11R13D1Q5D3Q6RS4R/W90139013P142.2K2.2K5P156R12R14Q2R2EP12P10P16D071.5KP00D110K10K8VCC9012P01D2910P02D311P03D412VCCP04D5R313P26VCCU3P05D314118VCCP062.2KD7A0VCCBLA1521217P07U1VCCRP1M2820KA1VTBLKR616316K0P101401VCCA2OSC2P1.0VCCCOMVCC415P11239P002A3OSC1P1.1(AD0)P0.0R1DATA514P12338P013A4TEP1.2(AD1)P0.1R2DATAC1613D3P13437P024RESETA5D0P1.3(AD2)P0.2R3GND712D2P14536P035A6D1P1.4(AD3)P0.3R4R20811D1P15635P046JSMKA7D2P1.5(AD4)P0.4R510uF1K910D0P16734P057GNDD3P1.6(AD5)P0.5R6833P068P1.7(AD6)P0.6R7sc2272VCC932P079RST(AD7)P0.7R8R41031VCCP3.0(RXD)EA/VPP10K113010KP3.1(TXD)ALE/PROG1229C2P3.2(INT0)PSEND1Q1P331328K1P3.3(INT1)(A15)P2.7R5P34P349012P331427P23P3.4(T0)(A14)P2.6Y115262130pF2.2kP3.5(T1)(A13)P2.51625P3.6(WR)(A12)P2.4LEDF11724know12MHzP3.7(RD)(A11)P2.31823C3XTAL2(A10)P2.21922XTAL1(A9)P2.1202130pFGND(A8)P2.0FMQC51 图1 病人的遥控器: M1 FSMKGND VCC12VATAD K243D3D421D1D2U24148414841484148118A0VCCA2174.7MA1VTR15K3316A2OSC243415A3OSC121514A4TE613A5D0B712A6D1K4811A7D243910GNDD321sc2262CR16R17R18R19K510K4310K10K10K21 D 图2 第 27 页 苏州大学本科生毕业设计(论文) 附录2: 元器件清单 1. 5*7万用板 2. 7*9万用板 3. LCD1602液晶 4. 16p母座 5. 插针*20 6. 315M无线可再生遥控模块 7. 315M无线可再生接收模块 8. SC2272-M4 9. SC2262 10. 12V电池 11. 脚坐*2 12. 4.7M电阻(贴片) 13. 820k电阻(贴片) 14. 1N4148*4 15. 按键*6 16. 10k排阻(103) 17. 10k电阻*10 18. 2.2k电阻*6 19. 1.5k电阻(200~1.5k之间) 20. 9013*4,9012*2 21. 12M晶振 22. 30pf电容*2 23. 10uf电容 24. 40脚坐 25. stcc51单片机 26. 5V有源蜂鸣器 27. 电源插口 28. 自锁开关 29. 天线(23cm长导线)*2 30. 导线若干,焊锡若干 31. USB电源线或电池盒+DC插头 第 28 页 苏州大学本科生毕业设计(论文) 附录3:实物图 图3 图4 图5 第 29 页 苏州大学本科生毕业设计(论文) 附录4:C语音源程序 #include #define uc unsigned char #define ui unsigned int sbit RS=P1^4; sbit RW=P1^5; sbit E=P1^6; //1602引脚定义 sbit D0=P1^3; sbit D1=P1^2; sbit D2=P1^1; sbit D3=P1^0; //接受引脚 sbit bg_1602=P2^6; //1602背光 sbit key=P3^3; //应答按键 sbit Beep=P3^4; //蜂鸣器 uc code tab0[]=" 1234567#"; uc code tab1[]="Calling!!!"; uc code tab2[]="I Know!"; uc code tab3[]="Happy Every Day!"; uc num_D0=0,num_D1=0,num_D2=0,num_D3=0; //床号 bit bdata fu_D0=0, fu_D1=0, fu_D2=0, fu_D3=0,flag;//初始床号 void delay(ui x) //延时函数 { ui i,j; for(i=0;i void init() //初始化函数 { bg_1602=0; //开启背光 TMOD=0x01; TH0=0x4b; TL0=0xff; EA=1; ET0=1; TR0=1; D0=0; D1=0; D2=0; D3=0; //清零床号引脚 } /******LCD1602******/ 第 30 页 苏州大学本科生毕业设计(论文) void com_1602(uc com) //写命令 { RS=0; P0=com; delay(1); E=1; delay(1); E=0; RS=1; } void data_1602(uc date) //写数据 { RS=1; P0=date; delay(1); E=1; delay(1); E=0; RS=0; } void dis_1602(uc word_num,uc hang,uc lie,uc tab_num,uc num) /**word_num:显示字符个数,hang,lie:显示坐标,**** ***tab_num:显示数组号,num:从第几字符开始显示****/ { uc n; for(n=0;n com_1602(0x80+hang*0x40+lie); if(tab_num==0) data_1602(tab0[num+n]); else if(tab_num==1) data_1602(tab1[num+n]); else if(tab_num==2) data_1602(tab2[num+n]); else if(tab_num==3) data_1602(tab3[num+n]); delay(5); lie++; } } void init_1602() //初始化1602 { RW=0; //写命令 第 31 页 苏州大学本科生毕业设计(论文) com_1602(0x38);//设置1602 com_1602(0x0c);//设置显示,光标不闪烁 com_1602(0x06);//不移动,指针加1 com_1602(0x01);//清屏 } void know() //应答函数 { if(D0!=fu_D0) num_D0=1; if(D1!=fu_D1) num_D1=2; if(D2!=fu_D2) num_D2=3; if(D3!=fu_D3) num_D3=4; //数据脚状态改变,将床号赋给变量 if(key==0) //检测按键 { delay(5); if(key==0) { if((num_D0!=0)||(num_D1!=0)||(num_D2!=0)||(num_D3!=0))//如果有呼叫时 { bg_1602=0; //打开背光 Beep=1; //关闭蜂鸣器 flag=0; //标志位清零 num_D0=0;num_D1=0;num_D2=0;num_D3=0; fu_D0=D0;fu_D1=D1;fu_D2=D2;fu_D3=D3;//将床位清零,并记录当前引脚状态 com_1602(0x01); //清屏 dis_1602(7,1,4,2,0); //显示I Know } else //如果没有呼叫时 bg_1602=0; //只点亮背光 } while(!key); //按键释放 delay(2000); com_1602(0x01);//清屏 } } void display() //显示函数 { 第 32 页 苏州大学本科生毕业设计(论文) if((num_D0==0)&&(num_D1==0)&&(num_D2==0)&&(num_D3==0)) //当没有床位 呼叫时 dis_1602(16,0,0,3,0); //显示Happy else //有床位呼叫时 { if(flag==0) { flag=1; com_1602(0x01);//清屏 } if(num_D0==1) { dis_1602(1,0,2,0,num_D0); dis_1602(1,0,3,0,10); } if(num_D1==2) { dis_1602(1,0,5,0,num_D1); dis_1602(1,0,6,0,10); } if(num_D2==3) { dis_1602(1,0,8,0,num_D2); dis_1602(1,0,9,0,10); } if(num_D3==4) { dis_1602(1,0,11,0,num_D3); dis_1602(1,0,12,0,10); } dis_1602(10,1,3,1,0); //在对应床位显示床位号 } } void LED() //背光函数 { if((D0!=fu_D0)||(D1!=fu_D1)||(D2!=fu_D2)||(D3!=fu_D3)) //如果有呼叫 bg_1602=0; //打开背光 } void main() //主函数 { init(); init_1602();//初始化 while(1) //死循环 第 33 页 苏州大学本科生毕业设计(论文) { display(); know(); LED(); } } void T0_time() interrupt 1 //定时器T0 { ui m,n; TH0=0x4b; TL0=0xff; //重新赋初值 m++; if(m==10) { m=0; if((num_D0!=0)||(num_D1!=0)||(num_D2!=0)||(num_D3!=0)) //如果有呼叫时开启蜂鸣器 Beep=~Beep; } if((bg_1602==0)&&(D0==fu_D0)&&(D1==fu_D1)&&(D2==fu_D2)&&(D3==fu_D3) ) { n++; if(n==300) //背光点亮时计时15秒关闭背光 { n=0; bg_1602=1; } } } 第 34 页