《毕业设计-无人监守点滴自动监控系统的设计(共30页).doc》由会员分享,可在线阅读,更多相关《毕业设计-无人监守点滴自动监控系统的设计(共30页).doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上河南科技学院2014届本科毕业论文(设计)论文(设计)题目:无人监守点滴自动监控系统的设计学生姓名: 所在学院:机电学院 所学专业:电气工程及其自动化导师姓名:完成时间:2014年5月18日无人监守点滴自动监控系统的设计摘要静脉输液是常用的医疗手段之一,传统输液过程中存在着输液容易异常,需要人工监护等弊端。因此,本文设计了无人监守点滴自动监控系统以解决此问题。系统以AT89S53单片机为下位机核心,上位机和CAN总线组成有线监控系统,实现主机对从机的控制。从机通过外围电路检测储液瓶中液面高度和液体点滴速度,并通过控制步进电机实现对输液速度的控制。当输液结束或输液速度发
2、生异常时,发光二极管和蜂鸣器进行报警,并将报警信号通过串行口传送至主站。 关键词:无人监守,自动监控,单片机,CAN总线DESIGN OF AUTOMATIC MONITORING SYSTEM FOR UNATTENDED DRIPSAbstractIntravenous infusion is one of the commonly means used in medical, there is some abnormalities in tradition infusion and require manual monitoring and other defects. Therefor
3、e, we designed the unmanned automatic drip guard monitoring system to solve this problem. This system based on AT89S53 MCU as the core of the next crew, consisting of PC and CAN bus cable monitoring system, from the control of the host machine. From the machine through the external circuit to detect
4、 liquid level reservoir bottle and liquid drop, and achieve control of the infusion rate by controlling the stepper motor. When the end of the infusion or infusion rate abnormal, LEDs and buzzer alarm, and the alarm signal is sent via the serial port to the main station.Key Words: Unmanned, Automati
5、c Monitor, MCU, CAN bus专心-专注-专业目录1绪论1.1 研究背景及意义随着微电子技术和信息技术的快速发展和应用,医疗设备领域正在发生着一场悄无声息的信息化革命。尤其是近几年来,现代科技的高度发展更是为液体点滴自动监控提供了坚实可靠的技术基础。我国是世界上人口最多的国家,随着近些年来各个领域的高度发展加上环境的恶化,各种疾病日益增多,医疗消费的人群也与日俱增。虽然对医疗的改革和创新政府每年都投入巨额财政支持,但取得的效果还是微乎其微,与西方发达国家的技术还有一定得差距。目前,我国医疗设备的市场份额在全球所占的份额依然很小。根据国家经贸委的要求,我国要在2050年左右成为世
6、界医疗器械制造强国。由此可见,我国医疗技术的改革与创新具有巨大的前景。静脉输液在各个医院的医疗工作中被广泛应用,据统计住院输液率为70%80%1,它不仅是一种重要的给药途径,而且还是给患者补充体液、营养的重要方法。点滴输液是临床中一种普遍使用的治疗手段,长期以来一直靠人工控制。在传统输液中2,易发生一些异常情况,如管路堵塞、滴速异常及输液完毕无提示等情况。如果这些异常情况不能被及时发现,就会给病人造成伤害,严重的甚至还会造成医疗事故。因此,设计一款无人监守输液监控系统的医疗设备对提升我国医疗质量有着十分的重要帮助。针对上述情况,设计了一套无人坚守自动监控的医疗输液系统,通过CAN(Contro
7、ller Area Network)总线与上位机(主站)进行通信,利用8位低功耗、高性能AT89S53单片机作为下位机(从站)控制芯片,来实现医护人员对病房病人输液过程的无人监控。1.2 国内外发展和研究现状为了提高输液过程的安全性和降低输液过程中医护人员的工作强度,国内外都对输液过程的智能监控进行了研究和试验。点滴输液监控设备的发展主要经历了下面几个阶段:(1)机械式该方法出现的比较早,利用输液瓶中液位的下降会导致其重量下降的原理,用弹簧秤对其液位进行检测。由于输液瓶重量的不同,实际情况比较复杂,此方法可靠性较差,操作使用不方便,适用性较差。(2)电容式当输液瓶中的药液液位变化,引起电容长度
8、变化对药液液位进行监测。此类监控设备的可靠性、实用性都相对较高,但是由于输液瓶形状大小没有统一的标准,因以输液监控设备需要多种设计规格,在使用中不放便,不能投入实际使用。(3)电极式将正负两个电极插入输液器的莫菲氏管中,当液体点滴下落时就会产生中断信号,由此监测点滴的速度。这类设备性能可靠、设计简单,但是在点滴降落过程中会与电极发生接触,可能会造成一些医疗卫生等方面的问题。(4)光电式光电式是近年来较流行的点滴监控方式。它是利用药液吸收和散射的方式减弱通过液体中红外光的强度来进行测量。在莫菲氏管的两侧分别安装发射端和接收端,当液体点滴经过二者之间时,传感器感受到光线强弱的变化,将光信号转换成电
9、信号,并由下一级处理单元进行转换处理,由此监视输液过程由于光电传感器和药液不接触,而且与液体、输液器材无关,使输液监控设备的性能有很大提高,具有易用、高效和适用性强的优点3。除此之外,还有诸多液体点滴监控方式,由于成本或性能上的差异,不能在日常中使用,例如感应式、光纤式、超声波式等。此外,单机模式的点滴监控设备在发展中逐渐吸收了网络化的思想,基本形成了以RS-232或RS-485总线的有线和基于无线通信技术的两种监控网络。前者对系统化控制和管理方面的不完善,在实际应用中,往往要重新来布线,容易收到外接环境的影响和干扰。而后者则增加了成本,且辐射会对人身体产生危害,还会有些法律上的问题。2系统总
10、体方案2.1 系统设计方案系统由多个模块组成,在方案选择上要比较选择,因此下文详细介绍每个模块的具体方案。2.1.1 控制系统方案在无人监控系统中微处理器作为核心,对整个系统的影响较大,因此在选择上尤为重要。方案一:此方案是传统的两位模拟控制方案,具有电路简单、易于实现等优点。不过模拟控制很难做高精度,并且远程通信、键盘设定和滴速控制的功能不易于实现。方案二:此方案采用单片机AT89S53作为从站来实现复杂的运算及控制。AT89S53单片机具有低功耗,高性能且高性价比等特点。对于键盘设定、滴速控制、液位监测等功能和主、从站之间的通信能够能完美实现。因此,本设计选用方案二。2.1.2 点滴检测方
11、案方案一:可见光发光二极管与光敏三极管传感器。光线的亮度变化对此类传感器的干扰很大,造成液滴判断的不准确。所以不宜采取此方案。方案二:不调制红外对射传感器。这类传感器是直流供电,元件的额定值必须低于工作电流,对外部抗干扰能力较差。因此,也不宜采取。方案三:脉冲调制红外对射传感器。红外对射传感器的平均电流决定其对打工作电流,即使占空比调制信号较小也可以获得较大的电流。这可以大幅度提高信噪比,提高系统的抗干扰能力。综上,本设计采取方案三。2.1.3 液位监测方案方案一:拉力传感器。利用液面高度和拉力二者的线性关系这一原理进行测量。在实际中由于拉力传感器价格较高,因此在设计中很少使用。方案二:超声波
12、。这一方案的原理是超声波在不同的介质中传播速度不同。把每一次的测量结果与标定达到警戒液位得回波时间比较,既可得知是否达到警戒液位。这种方法存在盲区,当液体波动时会产生误差,且不方便安装。方案三:光电传感器。此方法是利用光的折射或反射原理,通过接受管接收到的光的强弱判断是否达到警戒液位以此来实现检测功能。在安装上,把光电传感器置于输液瓶外壁上即可,非常方便。对于上述三种方案,方案一成本较高,方案二精确度不够。所以,本设计选择方案三。2.1.4 滴速控制方案方案一:滑动软管夹的滑轮控制滴速。此方案在控制中由于移动阻力和距离难计算且很多非线性控制量的影响,采用电机调节软管夹不容易实现。方案二:电机和
13、滑轮系统控制输液瓶高度,实现对滴速的控制。本方案调节液体高度方便,由于输液瓶高度和流速之间存在非线性关系,没有公式可应用,因此采样点必须足够多,这也保证了精确性。比较方案一和方案二,本设计取用方案二。2.1.5 电机选择方案方案一:直流电机。这类电机掉电后惯性大、制动时间较长、转矩小、无抱死功能,且闭环算法复杂。方案二:伺服电机。这类电机具有机械性能好、起动转矩大、抱死功能等诸多优点,不过由于其高昂的价格,因此不予采用。方案三:步进电机。这类电机较之直流电机转矩大,较之伺服电机价格低且测量的精确度较高。故综合三种方案,本设计采用方案三。2.1.6 主从通信方案方案一:蓝牙技术。蓝牙技术存在传输
14、距离短、传输速度慢、功耗大、技术复杂,而且价格不菲。方案二:红外技术。红外技术利用红外线的方式进行数据传递。在传输中具有速度快,但传输距离短,只能直线传输且易受干扰。方案三:Zigbee技术。Zigbee技术一种低速短距离传输的无线网络协议,其成本比较高,穿透性不好。方案四:CAN总线。CAN总线是异步串行通信中总线的一种,全称“Controller Area Network”即控制器局域网,是国际上应用最广泛的现场总线之一。具有传输速度快、传输距离远、总线利用率高、通信失败率低、节点错误系统无影响、抗干扰能力强、网络调试容易、后期维护成本低等宝贵特点。根据AT89S53的4种不同工作方式,分
15、析上述四种方案,最终选定上位机与下位机之间采取基于CAN总线的有线异步传输通信方式,既方案四。2.2 系统硬件结构根据系统设计方案,整体系统结构如图1所示。主站CAN总线从站1CAN接口从站NAT89S53单片机单片机外围电路步进电机及驱动液位检测点滴检测单元声光报警单元通信电路单元图1系统结构框图根据系统需求分析,本硬件系统主要是主站,基于AT89S53单片机各个从站,主、从站之间的数据通信总线等三大部分构成的。按系统设计方案,系统电路主要包含从站电路、外围电路及通信电路三个电路单元:(1)从站电路单元该电路单元主要是负责输液信号采集和输液监控的任务,包含以下四个电路单元:点滴信号检测单元;
16、液位检测单元;键盘控制单元;声光报警单元。(2)外围电路单元该电路单元主要是对从站采集的输液信号进行处理,即把从站采取的信号进行整形以便单片机处理,该电路单元还包括对从站系统的供电部分,供电系统采取单电源供电。主要有:点滴信号整形单元;电源电路单元。(3)通信电路单元该电路单元是通过CAN总线将下位机(从站)采集的各模块数据信息传送至由PC机构筑上位机,上位机可以通过开发的监控软件实现对各从站的输液情况实时监控。该电路包含两个内容:CAN总线适配芯片连接电路;通信接口电路。3系统从站硬件设计3.1 从站硬件系统框图根据从站系统所要实现的功能,为从站系统设计出硬件系统框图4,如图2所示:AT89
17、S53键盘控制电路单元点滴信号检测单元液体检测单元单元通信电路单元报警电路单元电源电路单元点滴信号整形单元图2从站硬件系统框图3.2 从站系统各单元设计有上面的框图可以知道,从站系统所包含的子模块较多,因此下面进行逐一介绍。3.2.1 点滴信号检测单元此单元模块是通过固定在输液瓶外侧的红外传感器来检测是否有点滴滴下,电路图如图3所示。图3点滴信号检测电路红外传感器是有发射管和受光管二者构成,其主要功能是实现光和电之间的转换。红外系统具有尺寸小、重量轻、易于安装等优点,且红外光波长长与可见光,受后者的影响较小,因此选用红外传感器来检测液体点滴滴速。增强信噪比以减少环境光源的干扰,并采用脉冲调制的
18、方式。发射、接受的简化原理电路如图4所示。 图4脉冲产生电路74HC14是具有施密特功能的六反相器,图5是74HC14所构成的多谐振荡电路。施密特触发器具有上限阈值电压V2、下限阈值V1的特性,且受芯片电源VDD的限制。多谐振荡器电路产生信号的周期频率满足f=1/RClnV2(VDDV1)/V1(VDDV2),令lnV2(VDDV1)/V1(VDDV2)为k,则f=1/kRC,即T=kRC。对于74HC14而言,当VDD=5V时,下限闽值电压V1=1.4V,上限闽值电压V2= 3.6V,所以有k=1.89。考虑到脉宽可调的状况进而可以得出1.89(R1/R2+R2)C=T ,T表示方形脉冲的一
19、个周期大小,(R1/R2):(R1/R2+R2)=1:5。图5多谐振荡电路3.2.2 点滴信号整形单元 在实际操作中,当点滴落下时,接收到的信号会产生相距很近的双脉冲,这极大的干扰了计数。为了消除这种干扰,减小虚假信息的影响,提高采样的可靠性,用软件滤波的方式滤去两个脉冲中的一个,这样就确保了计数的精确性。图6是信号整形原理电路图,同过原理图,可以对整形有简单的了解。图6点滴信号整形电路3.2.3 液位检测单元按照医用卫生标准,吊瓶中应尽可能避免异物进入,所以在红外有损探测和无损探测中我们选择后者。液位检测电路是利用安装在输液瓶颈部的红外对射管对瓶内无液空间与有液空间光的折射差异来判断输液是否
20、结束。光电转换原理类似以滴速检测,但红外接收管输出的电信号是电平信号,而不是脉冲信号。电平信号经放大后输入到比较器与门限电路比较,输出后送至单片机外部中断接口INT1。因考虑到储液瓶壁较厚,可利用红外无损探测方式,增大红外发射功率来加强接收信号以保证对液位进行精确检测,储液瓶有液空间和无液空间信号差异电压比较差可以达到40mV左右,说明该电路在液位下降到红外对射管以下时系统即能发出警越限报。该电路接收到的信号只需对其放大不需滤波处理,所以本电路结构单间,安装简易。其系统框图及电路图如下图7和图8所示。放大比较红外发射门限信号红外接收输液瓶至单片机 图7液位检测框图 图8液位检测电路3.2.4
21、键盘控制电路本设计中所采用的键盘为非编码机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。触点式开关按键在最常见,且寿命长。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成,因此既经济又实用。在机械键盘按键按下或释放时,由于机械弹性作用的影响,通常伴随一定时间的触点机械抖动,然后才稳定下来。其抖动过程如图9所示,抖动时间的长短与开关的机械特性有关,一般为5l0ms。按键抖动会导致错误判断按键通或断的状态,这种情况是绝对不允许出现的。所以在设计中必须采取去抖动措施,由于按键数较多,故采用软件去抖。软件去抖采取的措施是:在检测到有按键按下时,执行一个l0ms左右的延时
22、程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。一个完善的键盘控制程序应具备以下功能:(1)检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。(2)有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。(3)准确输出按键值(或键号),以满足跳转指令要求。图9按键抖动过程由于本系统按键数较多,故采用44行、列结构的16位矩阵键盘,如图10所示。矩阵式键盘中,行、列线分别连接到按
23、键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。图10矩阵键盘电路3.2.5 声光报警单元本设计采用蜂鸣器与发光二极管实现声光报警。当传感器检测到液位低于预设值或传感器检测不到有液滴下落时,从站单片机控制蜂鸣器和报警灯工作,在发出声光报警的同时向主站发出报警信息。在实际应用中,如果设定的滴
24、速过高,输液瓶上升到支架顶部时,仍达不到设定的滴速,输液瓶继续上升有可能会拉倒支架,造成危险。所以在支架的顶部安装一个红外探测器,如检测到输液瓶上升到支架顶部,则发出信号,通知单片机控制电机停转,同时发出声光报警并向主站发送报警信号。下图11为声光报警电路。 图11声光报警电路3.2.6 电源电路单元任何电气设备的使用都离不开供电系统,在整个单片机系统设计中,电源的设计是必须要考虑的。电源的设计取决于系统所要求的供电方式,如是采用单电源方案,还是多电源方案,系统的功耗有无特殊规定等等。本系统所选用的单片机是AT89S53,其标准工作电压为+5V,且发光二极管和光敏三极管以及通讯所用的CAN总线
25、适配器等电路的工作电压都是+5V,因此在本设计中采用单电源方案。单电源方案的优点是系统简单、工作可靠。此外还涉及到对步进电机的控制,步进电机及驱动电路由L297和L298N组成,L297的工作电压为+5V ,L298N除逻辑电路工作电压+5V外,因此还需加入一个较高的电源电压来增强电机的驱动能力。根据L298N的相关资料,这个电源电压的范围在+2.5V+46V之间,考虑到用电安全及设计方便等因素,将其设定在+15V。因此我们的目标是设计出一个能够提供+5V与+15V的电源,其电路如图12所示。图12电源电路由上图可以知,此电源电路可以将220V的交流市电转换为+5V和+15V直流电输出。从原理
26、上看,首先将通过变压器的220V交流市电转换为24V交流电,然后经过二极管桥式整流电路和滤波电容C3对其进行整流,获得略低于24V的直流电输出,经过C4滤除纹波电压后进入集成稳压源L7815产生+15V直流电压供L298N使用,同时此电压又作为MC7805的输入电压,通过MC7805产生+5V电压供系统逻辑电路和各模块使用。这种做法的好处是只使用一个变压器,降低了成本的同时还减小了+5V直流电源的纹波电压。3.3 通信电路单元本系统所采用的是CAN总线作为通信总线,以下就对CAN总线的适配芯片以及通信接口连接做简要介绍。3.3.1 CAN总线适配芯片连接电路系统主控制器MPC2510CAN收发
27、器CAN收发器CAN收发器CAN收发器CAN收发器MPC2510MPC2510MPC2510MPC2510节点控制器节点控制器节点控制器节点控制器图13 CAN总线通信原理图以CAN总线作为通信系统的典型实现方法如图13所示。由系统框图中的CAN接口部分可以得知,CAN接口由两个部分组成:CAN控制器和CAN收发器。其中前者主要用于实现物理信令子层和数据链路层,而后者则是CAN控制器与物理传输媒体之间连接的子层接口。在本设计中,采用MCP2510作为CAN控制器,CAN收发器采用TJA1050。MCP2510是Microchip Technology Inc.(美国微芯科技有限公司)生产的一款
28、控制器局域网络协议控制器,完全支持CAN总线V 2.0A /B技术规范。该器件支持CAN1.2 、CAN2.0A、主动和被动CAN2.0B等版本的协议,能够发送和接收标准和扩展报文。同时它还具备验收过滤以及报文管理功能。该器件包含三个发送缓冲器和两个接收缓冲器,减少了单片机的管理负担。TJA1050是控制器区域网络协议控制器和物理总线之间的接口,是一种标准的高速CAN收发器。TJA1050可以为总线提供差动发送性能,为CAN控制器提供差动接收性能,是PCA82C250和PCA82C251高速CAN收发器的后继产品。3.3.2 通信接口电路通信接口电路即适配芯片连接电路其连接方法如图14所示:图
29、14通信接口电路适配芯片各引脚连接情况如下:(1)CAN收发器TJA1050引脚连接情况:CANL为低电平CAN总线,CANH为高电平CAN总线,TXD为发送数据输入引脚,RXD为接收数据输入引脚。(2)CAN协议控制器MCP2510各引脚的连接情况:TX0RS为通用数字输入或发送缓冲器(TXB0)请求发送引脚,TX1BF为接收缓冲器,RXB1的通用数字输出或中断引脚TXCAN引脚与CAN总线的发送输出引脚(TXD)连接,RXCAN引脚与CAN总线的接收输入引脚(RXD)连接。TJA1050具有高速模式和静音模式两种工作模式,通过引脚“8”的得取来选择模式。若引脚“8”接地则进入高速模式;若引
30、脚“8”没有接地则进入静音模式;若引脚“8”不连接,则默认高速模式。4 系统软件设计系统软件设计是基于单片机硬件进行的。软件设计是系统的主要组成部分,软件的好坏将直接影响到系统的性能指标。无人坚守点滴自动监控系统的设计采用模块化结构的方式,模块化编程是分别对各模块程序进行编写、编译,最后通过主程序将各模片相互调用的软件设计方法。本系统包含从站软件设计和主站软件设计,主站程序主要是对从从站各程序模块的协调管理。4.1 从站软件系统总体设计从站软件设计是对从站各模块进行嵌入式程序编译,本系统中需要进行程序编译的模块主要有:(1)主控模块即初始化模块;(2)键盘控制模块;(3)点滴速控制模块;(4)
31、电机控制模块;(5)报警模块;(6)主从通信模块。4.2 从站各模块软件设计从站系统程序由一个主控程序模块和若干个子程序模块组成,其中主控程序模块为软件系统的核心,其作用是管理协调各子模块,使之按照总体设计流程工作。4.2.1 主控模块主控模块是从站软件系统的核心,其主要负责调度各子模块程序。工作时,首先对串口部分和数据缓冲区进行初始化,然后调用各子模块程序来协调各子模块工作。系统初始化有两方面的工作内容:(1)串口初始化,即让串口工作处方式“1”。通过定时器T1来设定波特率的溢出率值为1200bit/s,串口处于接收的状态。此时把定时器T1的初始值设定为248(0E8),MUC外围电路使用的
32、晶振频率为11.0592MHz。(2)外部中断“0”的设置,串口数据通信通过中断来进行实现数据的发送与接收,所以初始化程序还需设定串口的中断方式。在从站系统中,当有液滴滴下时,液滴检测电路就会捕捉到一个电信号,将捕捉的电信号送到A/D转换电路中对其整形,最后产生一个数字脉冲信号,将脉冲信号送至单片机内部处理使之产生一个外部中断“0”。系统进行中断计数时,必须开启外部中断“0”和R4寄存器。同时,还需将外部中断“0”设置为电平触发模式。串口初始化程序部分源码如下:#include #include #include “tdp.h”#ifdef evalboard /采用硬件目标板时需要使用以下外
33、部函数extern void DNPUT(unsigned char aa, unsigned char bb);extern void DISPLY(unsigned char data *cc) ;static unsigned char data dg = 0, 0, 10, 0, 0, 10, 0, 0 ;#end ifvoid main (void) unsigned i; for (i=0; i1000; i+); /延时,等待系统上电稳定timer0_initialize (); /定时器0初始化com_initialize (); /串行口初始化#ifdef evalboard
34、 /采用硬件目标板时DINPUT (0X0A, 0X07); /需要对板上MAX7219初始化DNPUT (0X0B, 0X07);DINPUT (0X09, 0X0FF);DINPUT (0X0c, 0X01);DISPLY (dg); /板上LCD显示00-00-00#end iftimer0_wait (TIMER0_TICKS_PER_ SEC / 10);clock_init ();com _ puts (“TDP Vl.0rn”);while (1) const char *cmd;cmdb_init ();cmdb_prompt ();for (cmd=NULL; cmd=NUL
35、L; cmd=cmdb_ scan () clock _ update (); cmd_proc (cmd); 4.2.2 键盘控制模块键盘扫描采用行列式矩阵接口,子程序采用中断方式进行行列扫描,以获得键值输入。由于键盘抖动会对结果造成影响,因此必须消除。程序流程图如图15所示,键盘扫描程序和防抖子程序如下:(1)键盘扫描程序:byte key_scan(void) byte ktrnp, key;key=0;key_ 4x4_line_output();key_ 4x4_ row_input();key_4x4_get_row(ktmp);while ( (ktrnp&0x0f)=0x0f)
36、 key_4x4_get_row(ktmp);delay_ms(10);key_4x4_get_row (ktmp);if ( (ktmp&0x0f)!=0x0f)key= (ktmp&0x0)key_4x4_row_okey_4x4_line_indelay_ms(10);key_4x4_get_linif (ktmp&0xf0)!while( (ktmpkey_4x4_linkey_4x4_rokey+=(ktmfor (ktmp=0;if (key=kreturn(0xff)else return(0xff)else return(0xff);(2)防抖子程序:#include#incl
37、udesbit P34=0xB4;sbit P35=0xB5;unsigned char get_char(void); /函数说明void delay (void);main() unsigned char keybuf16, count; /键盘缓冲区和读键计数变量SCON=0; /将串行口设置成工作方式0ES=0; /禁止串口中断EA=0;count=0;while(count=8) column=0;continue;else break:/下面语句分析被按下键所在行号并计算键序号if(P34=0) key _ code=column;else key _ code=8+column;
38、return(key _ code);void delay (void) unsigned int i=10; /延时10mswhile(i-);开 始参数初始化调用key_scan扫描函数是否为功能键?进入中断调用key_scan扫描函数调用防抖子程序退出中断N结束?YYN图15键盘扫描流程图4.2.3 点滴速度监测模块中断计数中断计数点滴速度的测量是通过记录单位时间内点滴的下滴个数,再计算单个点滴的速度。计算原理是:每出现一个点滴下滴就进行一次中断,在单位时间内出现的中断数即为点滴下滴个数,如图16所示。图16速度计算原理系统用的定时器T0定时时间为200us。当系统检测到第一个脉冲信号时
39、,程序立即进行中断处理,读出此时计数器存储的内容,然后清零,记脉冲信号的初始值为COUNT=0。当定时器定时到达200us时,程序中断检测输入信号是否有脉冲信号到来,把计数器加1为COUNT=1。由计数器COUNT=1检测到的脉冲信号个数而设定计数器COUNT=1的存储单元是10,通过循环存储脉冲个数。在定时器COUNT =1中取5个相临的脉冲信号点,设起始脉冲点对应的计数器COUNT值是n1,最后一个脉冲点对应的值是n2。从而计算出5个脉冲点所需时间为:t = (n2-n1) 200us,那么两相临脉冲信号时间间隔的平均值为T=t/5。由此可得到点滴速度:V=60s/T,即V=1500/(n
40、2-n1) 5。根据上面的理论分析和计算,得到点滴速度测量流程图,如图17所示。N开始定时200us设置计算器COUNT=0退出中断COUNT加1设置计算器COUNT1=0定时结束?检测到脉冲信号?COUNT加1NYY图17点滴速度测量流程图 点滴速度检测程序如下:#include #include #define ulong unsigned longunsigned int T0_ ISR_ count=0; /定义T0中断次数void T0_ISR (void) interrupt 1 TO_ISR_count+; /每次T0中断时,中断次数加1TF0=0;void main (void
41、) SCON=0x50; /串行口初始化TMOD |=0x20; /利用定时器Tl作为波特率发生器THl=0xFA; /晶振为11. 0592MHz时波特率为9600TRl = 1;TI = 1;PCON |=0x80;printf (“nPulse Width Example Programnn”); /输出标题信息ET0=1;EA=l; /开中断TMOD=(TMOD&0xF0) | 0x09; /设置T0为16位定时器方式while (1) T0_ ISR_ count=0; TH0=0; TL0=0;TR0=1;printf (nStart a pulse. n); /输出提示信息while (! INTO); /等待脉冲上升沿,开始测量while (INTO); /等待脉冲下降沿,停止测量/以每个T0计数值为200 u s计算脉冲宽度并输出printf (The width pulse is: %1d uSecn,(ulong)(TH08) | TL0 | (ulong)T0_ISR_count 16); 4.2.4 电机控制模块本系统采用了工业上较为流行的PID控制算法,实现了步进电机的精确控制,其算法