单片机课程设计单片机病房呼叫系统.doc

上传人:wux****ua 文档编号:9108717 上传时间:2020-04-03 格式:DOC 页数:22 大小:282.50KB
返回 下载 相关 举报
单片机课程设计单片机病房呼叫系统.doc_第1页
第1页 / 共22页
单片机课程设计单片机病房呼叫系统.doc_第2页
第2页 / 共22页
单片机课程设计单片机病房呼叫系统.doc_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单片机 课程设计 设计题目: 单片机病房呼叫系统 专 业: 电气工程及其自动化 年 级: 08 级 学 号: 20084450427 姓 名: 指导教师: 徐 祖 华 2012 年 01 月 01 日摘要 病床呼叫系统是一种应用于医院病房、养老院等地方,用来联系沟通医护人员和病员的专用呼叫系统,是提高医院水平的必备设备之一。病床呼叫系统的优劣直接影响到病员的安危,历来受到各大医院的普遍重视。它要求及时、准确可靠、简便可行、利于推广。目前市场上存在着许多种型号不一功能各异的医院病房呼叫系统,主要为两大类:有线式和无线式。无线式病房呼叫系统不存在铺设线路的问题,但是可靠性差,而且无线电波会干扰其他医疗仪器设备。有线式的病房呼叫系统适合较小的医院病房使用,具有成本低,易于操作、安装和维护,而且具有可靠稳定,对其他医疗设备不会产生干扰的特点;但受到布线较多,影响美观,故不适宜较大的医院。病床呼叫管理系统便于病员快捷的呼叫护士,缩短人工呼叫的时间。当今病房呼叫系统正在逐步地向智能化发展,它可以和录像机一起使用,当病人按下开关时,在护士值班室的大屏幕能够观察病人的需要。并且可以配备对讲机等设备,能够使病员及时快捷地与医护人员进行沟通。 本课程设计是基于AT89C52核心单片机的有线式病房呼叫系统。为了便于操作仅仅开设了四个病房,但是其功能大致相同,都考虑了高优先级和低优先级,因此可以称为一个简易病房呼叫系统。每个病床有一个呼叫开关按键,当病人有需要的时候,按下按键,此时监护室就会得到响应信号,在数码管显示相应的床位号,并且有警示灯亮起。本次设计有运行简单,安装方便,成本低,稳定可靠的优点。最后通过设计的系统还经过proteus软件的仿真,仿真结果证明了此设计的正确性和实用性。关键字:AT89C52、病房呼叫、优先级、实验仿真。目 录摘要 21 单片机的相关知识 4 1.1 单片机89C52的介绍 42 硬件部分 6 2.1 整体硬件电路 6 2.1.1 复位电路 8 2.1.2 晶振电路 8 2.1.3 数显电路 9 2.1.4 指示电路 10 2.1.5 按键电路 103 软件部分 11 3.1 Keil C软件的介绍 11 3.2 程序的设计流程 12 3.3 源程序代码 134 调试仿真 16 4.1 Proteus7 的简单介绍 16 4.2 系统程序的调试及仿真 165 心得体会 21参考文献 221 单片机的相关知识1.1 单片机89C52的介绍AT89C52 电源 P1口 P0口复位 P3口 P2口接地图1.1 89C52芯片引脚图引脚功能VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚 备选功能 。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(外部数据存储器读选通)。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2 硬件部分 2.1 整体硬件电路本呼叫系统基于AT89C52单片机,振荡电路的晶振采用12MHz,由控制核心AT89C52单片机、电源电路、晶振电路、复位电路、数显电路、警示电路和程序等部分组成,系统框图如下:电源电路晶振电路数显电路89C52单片机复位电路警示电路数据程序图2.1 系统硬件电路 对于硬件系统图,由于没有进行实物制作,硬件原理图采用proteus软件进行绘制,其图如下所示2.1.1 复位电路RST 引脚是复位信号输入端,高电平有效。上电加按钮复位一般由RC电路组成,它响应时间大约为10ms,当按下复位按钮后,系统会重新从0000H开始执行程序,如下图所示。图2.1.1 复位电路2.1.2 晶振电路 晶振是晶体振荡器的简称,在电气上可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体的特性使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以在晶振的两端并联合适的电容它就组成并联谐振电路。单片机内部有个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产震荡时钟,为单片机提供稳定的时钟。图2.1.2 晶振电路2.1.3 数显电路数码管显示其实本质就是由七个发光二极管组成,通过其中的某一段或者几段导通而形成不同的数字。数码管有共阴极和共阳极两种,本设计都采用的是共阴极的数码管。图2.1.3 数显电路2.1.4 警示电路 本设计的指示电路其实就是一个发光二极管,它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。 发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。图2.1.4 指示电路2.1.5 按键电路单片机检测按键的原理是:单片机的IO接口既可以作为输出也可以作为输入使用,当检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的P3口相接,开始时先给该IO口赋一高电平,然后让单片机不断的检测该接口是否变成低电平,当按键闭合时,即相当于该IO口通过按键与地相连接变成低电平,程序一旦检测到接口变成了低电平说明按键被按下,然后执行相应的指令。图2.1.5 按键电路3 软件部分3.1 Keil C软件的介绍 Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。3.2 程序的设计流程 启动系统后,数码管显示0。当有一个病人呼叫时,数码管显示相应病房号,同时指示灯亮起;当有两个病人同时呼叫时,数码管显示优先级高的,同时指示灯亮起;当有一个病房呼叫后另一个病房呼叫,若后呼叫的病房优先级低,则数码管显示不变,若后呼叫的病房优先级高,则数码管显示后呼叫的,两种情况下,指示灯一样都会亮。开始赋初值N有两病房呼叫有一病房呼叫NYY判断优先级 显示病房号并响铃 有病房再次呼叫NY 判断优先级 显示病房号并响铃结束 图3.2 系统流程图 52系列单片机头文件3.3 源程序代码#include #define uchar unsigned charsbit key4=P30;/定义按键位置 定义单片机给定接口sbit key3=P31;sbit key2=P32;sbit key1=P33;sbit reset=P34;/复位sbit ring=P17;/定义指示灯端口uchar flag1,i;void choice();定义功能子程序void clean();void delay();void de();void ring();循环主程序void main()while(1)P3=0xff;reset=0;ring=0;flag1=0;choice();delay();clean(); 选择子程序,确定病人的床位。void choice()/确定病人while(reset!=1&flag=0)if(key1=0)de(20);if(key1=0)P0=0X86;flag=1; else if(key2=0)de(20);if(key2=0&key1!=0)P0=0Xdb;flag=1;else if(key3=0)de(20);if(key3=0&key1!=0&key2!=0)P0=0Xcf; flag=1;else if(key4=0)de(20);if(key4=0&key1!=0&key2!=0&key3!=0)P0=0Xe6; flag=1;复位程序,当reset为高电平时复位void clean() if(reset=1)ring=0;P0=0x3f;保持程序,当reset为低电平时指示灯一直亮void delay() while(!reset)ring();指示子程序,在相应条件下灯亮。void ring()for(i=0;reset=0;i+) de(); ring=!ring;if(key1=0|key2=0|key3=0)if(P0=0X86)P0=0X86;else if(P0=0Xdb&key1=0)P0=0X86;else if(P0=0Xcf&key1=0)P0=0X86;else if(P0=0Xcf&key1=1&key2=0)P0=0Xdb;else if(P0=0Xe6&key1=0)P0=0X86;else if(P0=0Xe6&key1=1&key2=0)P0=0Xdb;else if(P0=0Xe6&key1=1&key2=1&key3=0)P0=0Xcf;延时子程序,可以在程序中任意调用延时。void de(unit xms) uint i,j; for(i=xms;i0;i-) for (j=110;j0;j-);4 调试仿真4.1 Proteus7 的简单介绍Proteus7软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。4.2 系统程序的调试及仿真在软件编程的过程中,用keilC软件编译,形成仿真软件中89C52能识别的Hex文件,进行proteus仿真。下面给出仿真截图:KEIL软件编译图:菜单工具栏管理窗口工作窗口信息窗口图4.2 keil软件编译图4.2.1 未通电:图4.2.1 未通电时4.2.2 通电:图4.2.2 通电时4.2.3 低优先级的先呼叫A:开关4按下图4.2.3 按键四按下时4.2.4 高优先级的后呼叫A:开关3按下图4.2.4 按键三按下时4.2.5 高优先级的先呼叫B:开关1按下图4.2.5 按键一按下时4.2.6 低优先级的后呼叫B:开关2按下图4.2.6 开关二按下时4.2.7 高低优先级同时呼叫:开关1和4同时按下图4.2.7 按键一四同时按下时小结 此次课程在开始程序只能保证第一次呼叫,也就是当有一个病人呼叫后其他病人不能呼叫,在仿真的过程中,开始仿真失败,数码管完全不亮,后来发现是因为在病人的按钮开关上接了发光二极管,导致驱动不够。解决这个问题后,发现有时序混乱问题,所以又加上了void de()函数防抖动,这处是同学提醒。之后又出现指示灯不亮,又加入了light()函数的前半部分,然而又将图中的接口与口与程序中的接口没相符,改正后指示灯开始亮。最后加入了light函数的if部分,这样在一个病房呼叫后其他优先级高的病房依旧可以呼叫,调试成功。设计中我全部采用了C语言,是因为相对于汇编语言而言,我对C语言更加熟悉,在网上病房呼叫系统的例子不多,所以只能参考一些抢答器的例子。病房呼叫系统相比于抢答器来说,程序上简单很多,但是,如果是想自己写的话,我只能选择相对简单的,这样才好更加的了解自己设计的东西,比直接copy出来的设计会学到更多的东西!还有此次设计唯一感觉比较遗憾的是没有采用实物,因为实物的条件有限,所以只做出了调试仿真,以后条件允许的情况下将做出实物进行试验!最后,感谢学校能够给予我这一次设计的机会,让我学到了很多知识。感谢指导老师徐老师在这次的设计中给予我的指导。感谢同学在这次设计中给予了我很多的帮助。有了这次课程设计的经历,为我今后的学习垫定了基础,指导我深入钻研专业知识。在今后我将继续努力学习,取得更好成绩。参考文献【1】郭天祥51单片机C语言教程M.北京:电子工业出版社。 2010年10月【2】王东峰单片机C语言应用100例M.电子工业出版社。 2009年08月【3】李平单片机入门与开发M.机械工业出版社。 2008年06月【4】陈海宴51单片机原理及应用M.北京航空航天大学出版社。 2010年 09月
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!