版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-PAGEIII-基于STC单片机的磁诊疗仪设计摘要随着科学的进步,社会的发展,医疗器械成为全民关注的热点,其安全性、便捷性、舒适性,成为不断提高的要求目标。由于目前社会医疗资源紧缺,医院排号、诊断、治疗都需要耗费大量的时间。传统的治疗形式,不再能满足日益增长的病人需求,于是方便快捷的小型诊疗仪成为当下热门的医疗器械。诊疗仪作为一种新型医疗设备,拥有现代化的医学诊疗形式,可以简单实现为病人诊断、治疗的效果。目前阶段,市场上的诊疗仪多数基于红外线诊疗,往往频率较低,能量不够,不能促使原子、分子解体,其次波长和穿透力不如电磁波。在这种背景下,希望可以设计一种电磁诊疗仪,可以在温度的作用下,促进炎症吸收、扩张血管,加速局部血液循环,刺激局部细胞活性。本文设计的是基于STC单片机的磁诊疗仪,包含STC89C52、LCD12864显示屏、DS18B20温度传感器、按键模块、中间继电器等部分,首先由电源提供电能,按键控制诊疗的时间,控制要求经单片机下发指令,控制继电器进行电磁线圈通电,电磁线圈和铁芯发热,对皮肤表面进行热疗,而后温度传感器将表面温度采集处理,传回单片机并显示在显示屏上,显示实时表面温度,方便我们查看。系统还设置有定时温度检测报警装置,防止表面温度过高对人造成灼伤。由实际设计出发,设计的关键部分有以下几点,第一明确系统各部分的功能,为各项功能的实现做好准备工作。第二人体的热诊疗温度和距离有相应的安全范围,应当配以好温度传感器做好安全防护工作。第三用单片机控制电磁线圈,利用C语言来编程,建立屏显、报警等功能。关键词:STC89C52;电磁诊疗;电磁线圈;医疗器械论文类型:技术开发目录摘要 IAbstract II目录 IV1绪论 11.1诊疗仪研究的背景 11.2诊疗仪的目前发展 11.3诊疗仪未来发展方向 21.4本论文研究的主要内容 22基于单片机的磁诊疗仪系统的设计需求和总体设计 42.1磁诊疗仪的产品 42.1.1电磁波治疗仪 42.1.2磁振磁电治疗仪 52.1.3磁振热治疗仪 62.2需求分析 72.3磁诊疗仪的电源 82.4磁诊疗仪的控制电路 92.4.1单片机主控电路 92.4.2单片机复位电路 92.4.3单片机晶振电路 92.5磁诊疗仪的线圈部分 92.6磁诊疗仪的温度数据模块 92.7磁诊疗仪的数据显示模块 102.8按键子程序模块 103主控芯片单片机STC89C52 123.1单片机的发展 123.1.1单片机的环境结构 123.1.2单片机的起源 123.2单片机的应用 123.3单片机的开发需求 133.3.151系列单片机 133.3.2编程语言 153.3.3开发软件KeilC51 153.4单片机的程序固化 163.4.1功能介绍 163.4.2使用方法 173.5单片机程序分析 173.5.1关键字定义部分 173.5.2LCD初始化设定 183.5.3设定延时函数 183.5.4主函数 193.5.5温度读取指令 214其他主要元器件的选择及组装 224.1温度传感器 224.1.1温度传感器的分类 224.1.2温度传感器的选用 224.2液晶显示屏 234.2.1显示屏的选用 234.2.2LCD12864参数 234.3电磁线圈 244.4电磁继电器 254.4.1工作原理 254.4.2电磁继电器的分类及选型 254.4.3电磁继电器的应用 264.5硬件仿真软件PROTEUS 264.5.1电路仿真 274.5.2电路仿真图 274.6硬件组装实物 30结论 31参考文献 32附录一单片机程序 35
1绪论1.1诊疗仪的研究背景现代中医诊疗仪器起源于1934年,国内首台电子管电针仪由唐氏公司研制的,随后的几十年,脉络诊断仪、电针仪、灸疗仪、磁疗仪、脉诊仪、舌诊仪、四诊仪等,相继层出不穷的问世,是我国中医诊疗仪器一个全新发展的里程碑[3]。据数据统计,目前我国中医的治疗仪器有很多种,它们分布于科研测试、学习教育、医疗储备之中。近几年,出现一些数字化、智能型的磁疗仪器的研究,采用交变、半波、间断磁场和衔铁振动原理来治疗疾病,可与体表紧密接触,所以磁漏小,穿透力强,可作用到人体较深的组织及器官,有较好的疗效并在临床上广泛应用[4]。21世纪我们的医学发展将从“疾病医学”转为“健康医学”,从重视治疗向重视预防保健转变[1]。目前随着全球信息技术化的发展程度不断提高,尤其是2020年新冠疫情的全球性爆发,人民居家自助诊疗的手段又成为国内外相关领域关注的热点,各类自助诊疗设备也层出不穷,拥有了家用磁诊疗仪,患者可以免去医院排队的不便,也更方便了患者对自己病情的把握。随着现代科技的发展,中医诊疗仪器凭借中医理论,我们可以看到各式各样的诊疗仪器,它依据传统中医检查部位,比如脉搏、眼睛、舌唇,可以智能化的对患者的身体状态、体质类型、气血脉象做出分析报告,给予患者调理身体的建议。未来我们甚至可以在家里通过手机中的软件监测自己的健康状态,进行预防保健[2]。1.2诊疗仪的目前发展中医诊疗仪器不仅可以用来诊断、治疗疾病,还可以在某个范围内,收集患者的个体病例,了解百姓的基本身体素质。同时可为医院提供个体和群体基础的四诊信息,为未来社区医疗机构向居民提供“私人医生”式的健康管理服务奠定基础[2]。如今测量血压、体温、心率可以轻轻松松实现,我相信未来科技的进步,中医诊疗仪器可以制作的更小巧、便捷、智能,我们可以随时随地为我们的亲人朋友的健康做评估,如果身体有所不适,可以主动发出预警、报警信息,还可以我们对年迈在家的父母实施健康监护等。中医诊疗仪器是以中医理论为指导,应用现代科学技术手段对中医诊断所依据的望、闻、问、切四诊信息进行采集、分析及处理的仪器[2]。于是我就想设计完成一种磁诊疗仪控制系统的设计与开发,主要功能包括线圈表面温度的采集,诊疗仪器工作时间的定义,治疗强度的设置等功能,有效帮助仪器使用人员随时掌握仪器的工作状态和对所需的治疗参数进行设置。诊疗仪(Diagnosisandtreatmentinstrument)它可以将物理因子作用在人身上,对我们的身体加以调理,适用范围较广,我们可以、全天候、不限场所的使用。中国科学院院士、上海中医药大学校长陈凯先曾经这样描绘过中医诊疗仪器的未来:中医诊疗仪器实现产品化后,可配置给中医药科室医生、社区医师、农村基层医生,提高各类医疗人员的诊疗水平;同时也可为有需求的家庭也可配备,作为家庭健康管理机,提供日常中医养生建议,有必要时还可进行“人机会诊”,实现远程医疗[2]。1.3诊疗仪未来发展方向中医不像西医研究病理如何变化,它更注重我们人体内在系统的机理状态,深入研究“功能反应状态”,通过传统的四诊将病理显现出来。诊疗仪的未来发展从以下内容着手,第一是要将诊疗信息可视化、将诊疗结果客观化,来解决目前中医存在的问题,诊疗主要依靠医生经验,具有一定的主观性,不能量化[2]。第二应该多收集病情案例,做到全面收集,将四诊做的更加详尽准确。我们要将诊疗仪的使用推向临床化使用的新高度,将医疗使用效果评价作为我们评价仪器的第一指标,这是目前诊疗行业的首要目标。中国中医科学院常务副院长刘保延提出,“拥抱大数据,开创中医仪器研发的新局面”。中医还具有很多有待挖掘的潜力,西医诊疗依靠严格记录的数据,相比之下,中医可以在大数据收集方面,可以找到发展的空间。比如中医的临床效果是依靠前辈临床实践的样本效果,而没有小数据的验证。为更好地为人类健康服务,中医诊疗仪器作为中医传统诊疗技术的现代化载体,日益引起人们的重视,发展中医诊疗仪器并用其进行中医健康管理和疗效评估、指导辨证治疗已然成为一种潮流。因此诊疗仪器系统将从理论指导、研发能力等全面提升中医诊疗仪器的核心技术,实现中医诊疗仪器的更好发展。1.4本论文研究的主要内容本文的主要工作是研究与设计一种基于STC89C52单片机的电磁诊疗仪系统,使之应用于家庭中可以简单完成部分身体部位的磁热诊疗。论文主要工作包括:(1)设计基于单片机的磁诊疗仪系统的目的与意义。主要论述了治疗的意义、单片机技术的发展与应用以及国内外诊疗仪技术概述与发展趋势。(2)根据设计要求选取适当的编辑软件来设计基于单片机的磁诊疗仪系统程序。(3)通过选择合适元器件,设计完成实现基于单片机的磁诊疗仪系统的硬件内容。(4)规划基于单片机的磁诊疗仪系统的软件流程,并且最终编出相应的上位机及下位机程序,实现此磁诊疗仪系统的加热设计要求。
2基于单片机的磁诊疗仪系统的总体设计需求基于单片机的磁诊疗仪系统主要包括开关电源设备、单片机的控制电路、电磁感应加热设备、液晶显示设备、温度报警设备等。图2.1单片机总体设计结构2.1磁诊疗仪的产品目前大多数电磁理疗医用仪器都指的是直接利用一些物理化学因子(例如光、电、声、磁、压力等)直接作用在我们人体上,使我们身体的某些发病部位产生明显好转,我们正在研究的电磁诊疗仪器就是利用磁,也就是磁场等物理作用因子。人体本身具有一定的电场磁性,我们人体的大脑、心脏、皮肤和其他属于身体各个部位的各器官内输出电流都会具有一定磁场。下面来介绍几种我们日常的磁疗仪器。2.1.1电磁波治疗仪电磁波无线辐射化学治疗仪又被当时人们的称做“神灯”,它的一个主要核心部件TDP(电磁波辐射治疗板),用的是经过特殊化学加工而内含30多种化学元素的材料,混合为特殊化学涂层复合材料加工制成。在不同时间、温度的分子催化条件作用下,能产生输出能量衍生和输出在同一条波中带有几十种不同分子元素能量,能量复杂的分子波和电磁波,促进分子在生物体内的进化,可以产生在分子生物学上的催化作用效应。图2.2电磁波治疗仪2.1.2磁振磁电治疗仪磁振波微磁电磁波治疗仪主要是将微波振荡同电磁波、磁振波、机械波、低频及超声波及电磁脉冲波等电磁波技术相结合,产生刺激作用,作用在人体的局部骨盆、阴囊及其他相关神经穴位,转化产生为一系列人体生物学效应,并可以作用于人体的整个骨盆局部,用于治疗Ⅲ型慢性前列腺炎(慢性肾盂前列腺炎、慢性肾盂骨盆疼痛前列综合征)。图2.3磁振磁电治疗仪2.1.3磁振热治疗仪磁振热物理治疗仪由主机和磁力驱动线圈传导子系统构成,它是物理热治疗仪器,它依据的主要物理因子有交变磁场、生物磁振、温热。它内部的线圈接通高频交流电后,第一是产生具有交变磁场,可以引起振动;第二因为产生了磁力涡流,线圈中的铁芯也会产生振动,进而发热,通过电子仪器产生的治疗因子,对发病部位起到清热祛肿、镇痛、消炎的治疗作用。图2.4磁振热治疗仪2.2需求分析通过了解目前已有的各种磁诊疗仪器,我也想设计完成一款基于单片机的磁诊疗仪,可以完成对自身机体的集中加热理疗。根据设计要求,功能设计有以下内容:开始通电后检测所有模块并进行初始化。整套系统采用按键输入,需要按键程序对按键模块进行编程,同时需要对LCD屏幕等进行编程控制,这样液晶屏幕才会显示按键的内容,之后,将电磁继电器控制部分进行编程,电磁继电器工作吸合,最后定时计数器进行定时设定。同时,为温度传感器和蜂鸣器的监控编写程序,需系统流程图如图所示:图2.5系统流程图我们要想基于单片机实现磁诊疗仪的自动定时设置、温度自动测量、参数显示、温度自动报警等一系列功能,首先对系统进行模块化自动检测,选择一款温度传感器,完成对温度测量信号的实时采集,将测量得到的数据传输回单片机,在液晶显示屏上显示测量的实时参数。我们再利用单片机进行磁诊疗时间的定时设置,首先通过按键模块设定诊疗时间,单片机定时计数器进行倒计时,将计时参数返回到显示屏上,同时利用电磁继电器模块完成线圈启动。对于那些超出设置限值的定时数据,通过高频蜂鸣器信号进行定时提醒,具体系统功能划分如图所示:图2.6功能描述图2.3磁诊疗仪的电源任何电子器件都需要一个电源模块来为其供电,电源的稳定是整个系统是顺畅运行的前提保证,我们将这个模块称为电源模块。51系列单片机是我们目前使用领域最广泛的单片机,虽然已经诞生很多年了,我们仍可以在很多地方看到它的身影,但是有一个致命的缺点,由于电磁效应会对正在运行的单片机产生干扰,在实际的日常使用过程中,经常会出现系统程序跑飞的情况,为了解决这个问题,我们就更应该为系统程序配置一个稳定的电源了。为了降低功耗,单片机还推出了3种模式低速、空闲、掉电模式。用电脑的USB给单片机供电,所提供的是5V的直流电源,所有的单片机都需要晶振来提供工作的时序,就好比人的心脏需要跳动,单片机只有在一定的时序脉冲上才能有条不紊的工作。2.4磁诊疗仪的控制电路2.4.1单片机主控电路主控电路采用的芯片是STC89C52单片机,主控电路需要电源、晶体振荡器和按键复位。2.4.2单片机复位电路单片机的复位,指的是把整个单片机模块电路当前一个状态初始化到默认状态,复位方式有很多种,比如使用RST引脚来复位、通过掉电/上电来复位、使用看门狗来复位、检测内部是否低压来复位、利用软件来复位、MAX180专用复位、程序地址非法复位等。我们关注的是掉电/上电复位,当电源电压VCC低于掉电/上电复位检测门限电压时,将单片机内的所有电路复位,当内部电压VCC电压高于掉电/上电复位检测门限电压(3.2V)后,延迟32768个时钟后结束掉电/上电复位过程。2.4.3单片机晶振电路晶体振荡器,简称晶振,为系统提供基本的时钟信号。晶振的时钟频率代表了单片机的运行的快慢,频率高运行速度就快,当内置R/C时钟电路时,可能不要要晶体振荡器,所以不是每个单片机都拥有晶振电路。为了能让各部分时钟信息保持同步,系统同步使用唯一的晶振。STC89C52使用的是频率为11.0592MHz的晶体振荡器,我们只需要将单片机的振荡电路模块同晶振连接,再配备2个电容即可使用,电容的容量一般在15pF~50pF。2.5磁诊疗仪的线圈部分电磁回路加热器的线圈设计需要分别考虑两个主要参数:横截面积和励磁电感容量。横截面积大小决定了驱动电流的流量大小,功率越大时则横流的截面越大列,反之就越小。其次,电感的容量越低,它的实际工作频率也就越高,功率也就越大,获得效益也越高。确定一个功率管的大小后,先开始确定线圈制作参数,然后确定高频加热所用负载的线圈形状、尺寸、大小后再来开始进行线圈制作。2.6磁诊疗仪的温度数据模块温度数据测量依靠温度传感器(Temperaturetransducer),利用各种化学物质的不同临界温度及其物理性质随着内外界环境温度变化波动的不同作用情况将温度信号转换为电输出信号。根据接触时使用的测量方式,可分为接触式和非接触式,按照按照半导电热灵敏传感器的工作原材料及其它主要电子元件的半导热灵敏特性又可以分为半导热灵敏传感电阻和半导磁性灵敏热电偶两类。让它便捷的应用在生产实践的各个方面的原因是它外形很小巧方便,同时为我们的生活提供了大量的便利。通过将表面温度数据加以收集,可以在这个模块内设定一个温度阈值,来防止表面皮肤受到伤害。2.7磁诊疗仪的数据显示模块我们需要一块能显示汉字界面的屏幕,并能够将实时温度显示出来,通过控制定时计数器,在屏幕上倒计时显示诊疗时间。首先选择一块带有中文字库的屏幕,通过单片机程序来访问液晶自定义字库,完成DDRAM地址设置并由第一行展示出来,按照程序内部数据,完成显示结果首地址以及循环量设置,正常循环期间,持续取字符代码直至结束,第二行显示步骤与此相同,四行有效展示后直接终止子程序,完成显示模块。图2.7数据显示模块2.8按键子程序模块为了达到磁诊疗仪的诊疗效果实现,用相同的时间间隔,来划分不同的诊疗强度,我们设想以5分钟作为一个时间档位,然后设置诊疗门槛时间为10分钟,诊疗时间应不易过长,否则会对皮肤表面造成伤害,因此设置了最高诊疗时间为30分钟,分为五个不同的诊疗强度。图2.8按键模块
3主控芯片单片机STC89C523.1单片机的发展3.1.1单片机的环境结构单片机称做单片微控制器(Single-chip-microcomputer),它是一种主要是用于超大型模组集成电路控制技术的数字电路集成芯片,把具有强大数据处理能力控制芯片的微中央处理器(CPU)、随机访问存储器(RAM)、程序存储器(ROM)、外部设备接口、单片机中断系统、定时器/计数器,总线等集成到单块硅片表面,来构成的一个小且完整的微型计算机系统。它的优点有:体积小、质量轻、价格便宜等,为我们学习单片机、应用开发单片机提供了很好的实践条件。图3.1单片机的基本结构图3.1.2单片机的起源1970年,人类成功研制出了单片机(称作单片微型计算机),他是基于同期的微型计算机而来的衍生产品。美国一家名为Intel的公司,在1976年生产了型号为MCS-48的单片机,这家公司在二十几年间,通过四次换代,将性能、集成度做到初代的一倍,功能也就近乎翻了一番。随着移动信息时代的不断进步与现代信息电子科技的不断进步发展,目前该系统相关信息技术的研究开发应用实践以及实际应用日渐成熟,它已经渗透到生产和生活的各个领域。3.2单片机的应用如今社会,人们开始关注单片机在电子电器的开发和智能化,比如自动测量、智能仪表、多功能家用电器,都能看到单片机技术的应用。(1)在智能仪器仪表上的应用单片机在各类测量仪器仪表中,凭借它小巧、智能、功能众多的优点,应用于各种精密测量仪表中,想要实现电压、功率、频率等物理量的测量可以通过结合不同类型的传感器来实现完成。(2)在工业控制中的应用用单片机可以组成各种不同类别的控制系统、数据采集系统(SCADA),像智能芯片,智能电梯控制、预警型的报警系统等等。(3)在家用电器中的应用目前我们的家用电器基本都使用单片机控制,比如电视机、智能洗衣机、光波炉、电动马桶、智能音箱、电动窗帘等等。(4)在计算机网络和通信领域中的应用单片机存在通信接口,这就意味着我们可以和计算机进行信息交互,我们可以实现网络通信和设备通信,目前用单片机来控制的通信设备有,比如手机、程序控制交换机、小区的呼叫系统、列车无线电通信、对讲机等。(5)其他领域单片机在金融、医疗、教育、汽车、科研、、国防、航空航天等领域都有着十分广泛的用途。3.3单片机的开发需求2014年Keil公司推出一款集成开发环境软件,名为μVision5,它是依托Windows操作系统(32位/64位)的开发平台。单片机的种类不仅繁杂,单片机品种还在不断推陈出新,更加智能化、微型化、性能化。从使用情况上来看,MCS-51系列单片机的应用最为广泛,这个系列的单片机芯片就有十几种。此时,我们就需要一种强大、兼容性强的软件,最好可以使用简练的语言来完成程序编写,KeilμVision5就是一款这样的软件。3.3.151系列单片机首先我们介绍下51单片机,Intel公司于1980年制造的8051单片机系列被称为IntelMCS-51架构单片机,在当时市场受到一致好评。8051单片机是使用N-MOS技术开发的,但是使用电池供电的设备及其低功耗导致使用CMOS技术(以其低功耗而闻名)。尽管8051单片机在2007年走下生产线,但依然有20多家半导体制造商仍在生产8051兼容单片机,这些单片机仍是基于MSC-51架构的处理器。不同制造商生产了不同名称的单片机,有Atmel(AT89C51,AT89S51),Phillips(S87C654),STCMicro(STC89C52),Infineon(SAB-C515,XC800),西门子(SAB-C501),SiliconLabs(C8051),ENROO(EN8F5113),恩智浦(NXP700,NXP900)等。STC公司生产的STC89C52特点是高性能、低功耗、具有8位微控制器、8KFlash存储器,采用MCS-51内核,在原有基础上做了提升,丰富了更多的功能。图3.2单片机STC89C52对于系统我使用的是新型STC89C52系列单片机的D版本芯片,STC89C52系列单片机的特点见表3.1。表3.1单片机功能特性STC89C52主要功能特性兼容MCS51指令3个16位定时器/计数器双向通用I/O口32个ISP(在系统可编程)/IAP(在应用可编程)工作电压:5.5V~3.4V省去外部复位电路,采用集成MAX810专用复位电路时钟工作频率:24MHz4路外部中断,下降沿中断或低电平触发中断3级加密位PowerDown模式可由外部中断低电平触发中断方式唤醒串行中断2个可反复擦写的FLASHROM(8K)外部中断源2个软件设置睡眠功能、唤醒功能低功耗、掉电模式可编程异步串行口(URAT)图3.3单片机引脚图芯片说明:主电源引脚VCC(Pin40):电源输入+5VGND(Pin20):接地外接晶振引脚XTAL(Pin18):片内振荡电路的输入端XTAL(Pin19):片内振荡电路的输出端控制引脚RST/VPP:复位引脚,2个机器周期高电平单片机复位ALE/PROG;地址锁存允许信号PSEN:外部存储器读选通信号EA/VPP:程序存储器分为内外部,收到低电平从外部读取指令,收到高电平则从内部读取指令。可编程输入/输出引脚STC89C52单片机拥有P0、P1、P2、P3这4个可编程I/O口,而每个I/O口又有8位。3.3.2编程语言最早使用的编程语言是汇编语言,存在的缺点是程序复杂难上手、灵活性很差、耗费大量时间精力,在调试、纠错方面也要花费大量时间和精力。为了提高程序编写的速度,选择用C语言(高级计算机程序语言)编写计算机的系统程序和应用程序。C语言它的语言表达和综合运算能力较强,可以对计算机硬件进行直接操作,于是本次程序的编写和调试,我们选用C语言来完成。3.3.3开发软件KeilC51KeilC51是由美国KeilSoftware公司设计开发的51系列产品单片机编程软件开发软件,C语言环境比起汇编代码具有高效的特点。KeilC51提供了C51编译器、A51宏汇编器、BL51/L51连接定位器、RTX51实时操作系统、Simulator软件模拟器以及Monitor51硬件目标调试器,所有这些功能均可在μVision5提供的灵活的开发环境中极为简便地进行操作。KeilC51生成目标代码的效率非常高,汇编代码紧凑、简单、容易理解。尤其在大型软件开发时,它能比汇编语言体现更大的优点。与汇编相比,C语言的优势体现在功能上、结构性、可读性、可维护性上,更加容易学习和使用。综上所述,本系统采用KeilC51作为开发工具图3.4单片机编程软件KEIL首先在开始编写代码前,先了解硬件性能、需要实现的功能并绘制流程图。然后创建一个工程,在创建工程下载中编写一个汇编/c语言应用程序代码,定位器将每个目标程序模块进行组合后成为一个可执行程序,解析外部和共同的文件引用,为每个可重构和定位的应用程序模块分配绝对地址,目标HEX文件转换器通过定位器插入转换器十六进制工程文件表示,然后将单片机通过USB接口在ISP软件上调试,最后将程序烧录到单片机内,完成封装。3.4单片机的程序固化3.4.1功能介绍在系统编程(InSystemProgramming—ISP)是一种在本地固化程序的方式。当集成软件开发技术人员通过使用Keil集成开发软件的开发系统环境,完成软件开发代码的初始编写和运行调试后,就需要通过使用STC公司软件提供的STC-ISP软件固化工具将最终得到的程序进行固化写入到8051单片机内部的程序存储器。STC-ISP就是一个用来给所有STC单片机用户下载烧录程序的一个软件。3.4.2使用方法首先我们打开STC-ISP软件,在软件界面找到单片机型号并选择自己的单片机型号。然后点击串口号,找到我们电脑对应的串口号(COM的编号是随机变化的),它是我们在通信时使用的端口。然后依次选择“波特率”,默认输入数值为9600,默认为校验位,就不需要再检验。如果串口显示关闭串口,就代表打开完成了。图3.6ISP软件截图最后是界面的设置,主要是主机串口数据接收和主机发送文件的设置,设置的模式是“文本”或“HEX”两种。3.5单片机程序分析主程序包含的主要函数定义及功能,不同功能的实现需要我们使用不同类型的函数程序,我们对重要函数进行说明。3.5.1关键字定义部分我们定义了数据接口、寄存器选择输入、液晶读写控制、液晶使能控制接口、串/并控制方式、蜂鸣器、延迟输入、按键的端口设置,定义了这些功能的端口,赋予它们实现功能的引脚。#defineLCD_dataP0//数据口 sbitLCD_RS=P3^5;//寄存器选择输入sbitLCD_RW=P3^6;//液晶读/写控制sbitLCD_EN=P3^4;//液晶使能控制sbitLCD_PSB=P3^7;//串/并方式控制sbitrelay=P1^0;sbitbeep=P2^3;sbitDUA=P2^6;sbitWEI=P2^7;sbitK1=P3^0;sbitK2=P3^1;sbitK3=P3^2;sbitK4=P3^3;3.5.2LCD初始化设定想要完成我们的系统显示功能,首先要对液晶显示屏的初始化定义,定义并行接口方式,将我们的指令操作扩充附上地址,再将基本指令的地址添加上去,关闭我们的显示屏光标,对清除指令的操作地址加以命名。voidlcd_init(){LCD_PSB=1;//并口方式lcd_wcmd(0x34);//扩充指令操作delay(5);lcd_wcmd(0x30);//基本指令操作delay(5);lcd_wcmd(0x0C);//显示开,关光标delay(5);lcd_wcmd(0x01);//清除LCD的显示内容delay(5);}3.5.3设定延时函数延时函数为了使单片机CPU的时序而采用的机制,比如蜂鸣器报警、按键按下、LED灯闪烁等,单片机内部电路时钟信号应保持一致,才能使系统的同步工作。我们设定了4个nop指令,即为空操作,执行一个nop,占用一个机器周期,也就是12个时钟周期。voiddelay(intms){while(ms--) {uchari; for(i=0;i<250;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } }}3.5.4主函数主函数是我们整个程序的核心,涉及到温度传感器的工作程序、LCD屏幕的设置、定时计数器的计数、按键程序的执行,构成我们的主函数,实现设定、定时、温度测量、温度报警的功能实现。voidmain(){ inti,ttt; floattp; DUA=0; WEI=0; tp=Ds18b20ReadTemp(); Delay10ms(100); lcd_init();//初始化LCD lcd_wcmd(0x01); lcd_pos(0,1); i=0; while(dis1[i]!='\0') {//显示字符 lcd_wdat(dis1[i]); i++; } lcd_pos(2,0); i=0; while(dis2[i]!='\0') { lcd_wdat(dis2[i]);//显示字符 i++; } tp=Ds18b20ReadTemp(); TMOD=0x01; //定时器0方式1 TH0=(65536-50000)/256; //定时器0:50ms TL0=(65536-50000)%256; EA=1; ET0=1;TR0=1; while(1) { if(ttt>=100) { ttt=0; LcdDisplay(Ds18b20ReadTemp()); } ttt++; lcd_pos(3,0); lcd_wdat('0'+min/10%10); lcd_wdat('0'+min%10); lcd_wdat(':'); lcd_wdat('0'+sec/10%10); lcd_wdat('0'+sec%10); if(state==0) { if(K1==0)//按键按下 { Delay10ms(1);//延时消抖 if(K1==0)//按键按下 { Time=0; sec=0; min=min+10; if(min>20) min=30; while(K1==0);//等待按键松开 } } if(K2==0)//按键按下 { Delay10ms(1);//延时消抖 if(K2==0)//按键按下 { Time=0; sec=0; min=min-10; if(min<10) min=10; while(K2==0);//等待按键松开 } } } if(K3==0) { relay=0; state=1; } if(K4==0) { relay=1; state=0; } }}3.5.5温度读取指令温度读取依靠外部元件DS18B20,读取到的数据为十六位地址数据,首先将实时温度转换为数字信号,将低位的函数读取出来,再将高位的函数读取出来,将我们的温度测量值返回给我们的主函数,进而显示在显示屏上,如遇高温它还可以报警。intDs18b20ReadTemp(){ inttemp=0; unsignedchartmh,tml; Ds18b20ChangTemp(); //先写入转换命令 Ds18b20ReadTempCom(); //然后等待转换完成,再发送读取温度的命令 tml=Ds18b20ReadByte(); //共16位,先读取低字节部分 tmh=Ds18b20ReadByte(); //再读取高字节部分 temp=tmh; temp<<=8; temp|=tml; returntemp;}
4其他主要元器件的选择及组装4.1温度传感器温度传感器的原理是通过测量不同材料物体的温度在不同环境条下件温度变化的数值,根据被测物体所用材料的不同特性,来间接测量物体温度的。膨胀、电阻、电容、电动势、磁场性能、频率、光学特性及热噪声等是影响温度传感器温度发生变化的主要物理因素。4.1.1温度传感器的分类温度传感器分为两种,第一种是接触式温度传感器,它需要和被测物质保持接触,通过两种物质的热交换来达到相同温度;第二种是非接触式温度传感器,它仅使用和被测物质的热辐射或对流辐射将温度传到温度传感器,不需要和被测物体接触,即可完成温度的测量。4.1.2温度传感器的选用我所选用的温度传感器是DS18B20,选择它是因为体积小、集成度高、价格低廉、抗干扰性能好,还可以输出数字信号,也能应用在小范围的测量领域内。它的接线方便,封装成形后有不同的样式:比如管道式、螺纹式、磁铁吸附式、不锈钢封装式,根据我们不同的需求,可以挑选不同的外观类型,满足我们的设计要求。图4.1温度传感器DS18B20DS18B20是单口线通信,所以连接口线只有一条,仅可以利用总线就完成供电,供电的电压范围为3.0V~5.5V,能够测量的温度范围为-55℃~+125℃。4.2液晶显示屏液晶显示模块的结构是由LCD屏幕、LED背光板和PCB板组成。液晶显示的原理是背光灯组件有均匀的光源,光源从液晶显示屏映入眼睛是新型平板显示器件。显示器中的液晶体不发光,控制外部光的通过量。当液晶分子外部有光线通过时,液晶分子的排列方式不同,使光线通过的量不同,屏幕的亮暗就不同,还可以通过控制光源来显示出的想要的文字、图形。屏幕和背光灯组装在PCB板面上,就完成了整块屏幕模块。4.2.1显示屏的选用我所选择的是中文汉字图形点阵液晶显示模块LCD12864,数字12864是指LCD的屏幕分辨率为128×64,简单地理解为128行64列,它内部设定了8192个中文汉字(16×16点阵)和128个字符(8×16点阵),具有4位并行或8位并行两种模式,串行多种接口方式有2线或3线,还拥有64×256点阵显示RAM(GDRAM),不仅可以显示汉字,还可以显示图形,构成中文人机交互图形界面。它的特点是接口方式灵活,操作简便、功耗低、电压低。液晶显示模块比起同类型的图形点阵液晶模块,拥有硬件电路结构简单、显示程序清晰、价格低廉的特点。图4.2LCD12864液晶显示屏引脚4.2.2LCD12864参数表4.1LCD12864参数显示容量4行8列共32个16×16点阵的汉字、4行16列共64个ASCII字符工作电压范围4.5~5V显示颜色蓝屏/灰屏/黄绿LCD类型STN、半透、正显与MCU接口8/4位并行,或者3位串行屏幕尺寸93mm×70mm×12.5mm(长宽高)多重模式光标显示、画面移动、自定义字符、睡眠模式等图4.3液晶显示屏PCB板实物4.3电磁线圈电磁加热器能将电能转换为热能,利用的就是电磁感应原理。电磁控制器将电流性质通过交—直转换,最后转换为变为二十千赫兹的高频高压电,高频电流在线圈内高频变化,交变磁场产生的交变磁力线,在铁、钴、镍等金属内产生很多涡流,让金属材料高速发热,加热目的可以实现。在电磁感应加热中,电磁感应加热线圈对电磁加热器的影响是非常大的,根据用户不同的要求,制定不同技术参数的电磁感应线圈制作方法,主要有这三种圆形绕法、盘绕法、订制线盘缠绕法。线圈的缠绕方式也是多种多样的,我们可以根据自己的需求缠绕不同的方式,以此完成我们的加热需求。线圈要用耐温高温线来绕制,还要能够防火阻燃。同时我们还需要一个主机来控制电流的强度进而来控制诊疗强度。图4.4主机和电磁线圈实物4.4电磁继电器电磁继电器由铁芯、衔铁、电磁线圈、复位弹簧和触点等部分构成,是一种电控件,它有两部分回路,分别是输入回路和输出回路,是自动控制电路中的常见元器件,他所控制的电流较小,所以不需要灭弧装置。可以在电路中起自动调节、安全保护、转换电路等作用。4.4.1工作原理低压控制电路开关闭合,电磁线圈通电以后,铁心中由于电流的流过会产生磁通,衔铁受到吸力便会通电吸合,动静触点吸合,断开控制开关,电流减小到消失,磁通减少,吸力减小,这时衔铁就会断开,被控制电路断开。4.4.2电磁继电器的分类及选型(1)电流继电器电流继电器以电流为输入信号,线圈和被测电路串联,通过测量电路中电流来进行开关动作。(2)电压继电器电压继电器以电压为输入信号,线圈和被测电路并联,其特点是线圈匝数多、导线细。(3)中间继电器中间继电器也是电压继电器。特点是触点数量较多、容量大、灵敏性高。当其他继电器的触点数量、容量不够时,连接中间继电器来扩大触点的数量和容量,起到进行中间转换的效果。我选择的中间继电器是通灵JQC-3FF-S-Z,它的电压为5V,工作电压65mA,触发电压0-3.5V,触发电流2mA,采用双面FR-4线路板设计,采用贴片工艺生产,具有电源和继电器动作指示,吸合亮,断开不亮,继电器可以直接控制设备和负载,使用蓝色KF301端子接控制线更方便。图4.5电磁继电器模型图4.4.3电磁继电器的应用电磁继电器被应用于电动机的过载保护和短路保护中、电子通信设备中、电铃铛中、各类欠电压、过电压、零电压继电器中,说简单点他就是一个开关,利用电磁铁来完成控制:(1)用低电压控制高电压、弱电流控制强电流;(2)实现远距离操纵和自动控制。4.5硬件仿真软件PROTEUSProteus软件是英国LabCenterElectronics公司出版的EDA工具软件,已经被广泛使用了20年了,全球化程度比较高。它的器件库多达30种,主流芯片都可以操作仿真,还具备双向异步通信的功能,我们仅通过关键字搜索就可查找到想要的器件,还支持各种信号源的输入,包括多达13种的虚拟仪器,使仿真显示更加生动具体,将线路的输出变化通过图形的方式显示,另外还可以测试模拟信号和数字信号。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具,饱受单片机爱好者、教师、研究机构、开发应用人员的青睐。图4.6ROTEUS仿真界面Proteus是英国的EDA工具(仿真软件),从原理图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。4.5.1电路仿真在Proteus完成原理图绘制后,将目标代码文件编译完成,生成头文件*.HEX,不仅可以看到运行的结果,还可以在软件中看到软件的运行状态,我们可以将仿真内容进行过程行记。首先我们打开Proteus软件,在打开的初始界面中只有面包板,我们需要自己查找添加元件。首先打开左边的元器件库,将我们本次仿真实验需要的元件逐个添加到左侧小框内,注意选择正确的型号进行添加。根据之前设计好的原理图,按照思路将元件逐一放置在软件的面包板上,然后使用编译好的目标文件,也就是我们的程序指令,添加到主控芯片内,开始仿真。点击左下方的红色三角形标志,就可以看到仿真结果啦目前电路仿真是我们制作设计电路的第一步,它可以模拟我们的设计电路在一定情况下的运行情况,我们可以免去真实元件测试的各种负面结果,大大的降低了成本,同时可以在短时间内得到我们想要的设计结果。可以缩短我们的设计时间、减少设计费用、更能降低工程制造的风险。使用Proteus软件为单片机做系统仿真,可以使计算机和单片机相结合,这样不仅锻炼了我们的电路设计技术,更提高了我们的实际操作技术。4.5.2电路仿真图图4.6PROTEUS仿真电路图(1)按键模块图4.7按键模块(2)电源模块图4.8电源模块(3)单片机芯片图4.9单片机芯片(4)液晶显示屏图4.10液晶显示模块4.6硬件组装实物图4.11硬件组装完成
结论诊疗仪的主要功能是需要实现磁诊疗仪定时设置、参数显示、温度测量、温度报警功能,通过度传感器模块完成温度检测功能,利用单片机的时钟电路计算出诊疗时间,温,利用电磁继电器模块完成线圈部分启动,理由按键进行定时设置,如有温度超过阈值,利用蜂鸣器来发声报警。单片机是诊疗仪的核心元件,它的性能和品质决定了诊疗仪的整体使用效果。本文分析了国内外磁诊疗仪的发展现状和趋势,设计了一款基于单片机的高可靠性并具有较强扩展性的磁诊疗仪。磁诊疗仪由硬件开发平台、软件开发平台和实物所组成,本设计是基于PLC单片机的。本课题的主要设计内容和测试结果如下:开关电源设备、单片机的控制电路、电磁感应加热设备、液晶显示设备、温度报警设备等。根据总体设计要求,选择STC89C52系列单片机作为主要的控制芯片,选择C语言进行软件编程,论文对平台化医用冷柜温度控制器接口功能模块进行了设计,包括单片机最小系统、联网通信接口、信号处理电路、电池管理电路、继电器驱动电路、AD转换接口等设计。
附录一单片机程序#include<reg51.h>#include<intrins.h>//重定义关键词//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#defineLCD_dataP0//数据口 sbitLCD_RS=P3^5;//寄存器选择输入sbitLCD_RW=P3^6;//液晶读/写控制sbitLCD_EN=P3^4;//液晶使能控制sbitLCD_PSB=P3^7;//串/并方式控制sbitrelay=P1^0;sbitbeep=P2^3;sbitDUA=P2^6;sbitWEI=P2^7;sbitK1=P3^0;sbitK2=P3^1;sbitK3=P3^2;sbitK4=P3^3;charTime,sec,min=10,state;ucharcodedis1[]={"温度:℃"};ucharcodedis2[]={"倒计时:"};//ucharcodedis3[]={"温度正常"};//ucharcodedis4[]={"温度异常"};ucharcodedis3[]={"温度OK"};ucharcodedis4[]={"温度Err"};sbitDSPORT=P2^2;voidDelay1ms(unsignedint);unsignedcharDs18b20Init();voidDs18b20WriteByte(unsignedcharcom);unsignedcharDs18b20ReadByte();voidDs18b20ChangTemp();voidDs18b20ReadTempCom();intDs18b20ReadTemp();#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};voidLcdDisplay(int);voidDelay10ms(unsignedintc)//误差0us{unsignedchara,b;for(;c>0;c--)for(b=38;b>0;b--)for(a=130;a>0;a--);}/*******************************************************************//**//*延时函数*//**//*******************************************************************/voiddelay(intms){while(ms--) {uchari; for(i=0;i<250;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } }} /*******************************************************************//**//*检查LCD忙状态*//*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。*//**//*******************************************************************/bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0x80);LCD_EN=0;return(result);}/*******************************************************************//**//*写指令数据到LCD*//*RS=L,RW=L,E=高脉冲,D0-D7=指令码。*//**//*******************************************************************/voidlcd_wcmd(ucharcmd){while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//**//*写显示数据到LCD*//*RS=H,RW=L,E=高脉冲,D0-D7=数据。*//**//*******************************************************************/voidlcd_wdat(uchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//**//*LCD初始化设定*//**//*******************************************************************/voidlcd_init(){LCD_PSB=1;//并口方式lcd_wcmd(0x34);//扩充指令操作delay(5);lcd_wcmd(0x30);//基本指令操作delay(5);lcd_wcmd(0x0C);//显示开,关光标delay(5);lcd_wcmd(0x01);//清除LCD的显示内容delay(5);}/*********************************************************//**//*设定显示位置*//**//*********************************************************/voidlcd_pos(ucharX,ucharY){ucharpos;if(X==0){X=0x80;}elseif(X==1){X=0x90;}elseif(X==2){X=0x88;}elseif(X==3){X=0x98;}pos=X+Y;lcd_wcmd(pos);//显示地址}/********************************************************************************函数名:main*函数功能 :主函数*输入:无*输出 :无*******************************************************************************/voidmain(){ inti,ttt; floattp; DUA=0; WEI=0; tp=Ds18b20ReadTemp(); Delay10ms(100); lcd_init();//初始化LCD lcd_wcmd(0x01); lcd_pos(0,1);//设置显示位置为第一行的第1个字符 i=0; while(dis1[i]!='\0') {//显示字符 lcd_wdat(dis1[i]); i++; } lcd_pos(2,0); //设置显示位置为第3行的第1个字符 i=0; while(dis2[i]!='\0') { lcd_wdat(dis2[i]);//显示字符 i++; } tp=Ds18b20ReadTemp(); TMOD=0x01; //定时器0方式1 TH0=(65536-50000)/256; //定时器0:50ms TL0=(65536-50000)%256; EA=1; ET0=1;TR0=1; while(1) { if(ttt>=100) { ttt=0; LcdDisplay(Ds18b20ReadTemp()); } ttt++; lcd_pos(3,0); //设置显示位置为第4行的第1个字符 lcd_wdat('0'+min/10%10); lcd_wdat('0'+min%10); lcd_wdat(':'); lcd_wdat('0'+sec/10%10); lcd_wdat('0'+sec%10); if(state==0) { if(K1==0)//按键按下 { Delay10ms(1);//延时消抖 if(K1==0)//按键按下 { Time=0; sec=0; min=min+5; if(min>30) min=30; while(K1==0);//等待按键松开 } } if(K2==0)//按键按下 { Delay10ms(1);//延时消抖 if(K2==0)//按键按下 { Time=0; sec=0; min=min-5; if(min<10) min=10; while(K2==0);//等待按键松开 } } } if(K3==0) { relay=0; state=1; } if(K4==0) { relay=1; state=0; } }}voidTimer0()interrupt1{ TH0=(65536-50000)/256; //恢复定时器0初值 TL0=(65536-50000)%256; if(state==1) { Time++; if(Time>=20) //50ms*20=1s转换状态 { Time=0; sec--; if(sec<0) { if(min==0) { sec=0; state=0; relay=1; } if(min>0) { sec=59; min--; } } } }}voidLcdDisplay(inttemp) //lcd显示{//inti; unsignedchardatas[]={0,0,0,0,0};//定义数组 floattp; if(temp<0) //当温度值为负数 { lcd_pos(0,3);//设置显示位置为第一行的第4个字符 lcd_wdat('-'); //显示负 //因为读取的温度是实际温度的补码,所以减1,再取反求出原码 temp=temp-1; temp=~temp; tp=temp; temp=tp*0.0625*100+0.5; //留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点 //后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就 //算由?.5,还是在小数点后面。 } else { lcd_pos(0,3);//设置显示位置为第一行的第4个字符 lcd_wdat('+'); //显示正 tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量 //如果温度是正的那么,那么正数的原码就是补码它本身 temp=tp*0.0625*100+0.5; //留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点 //后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就 //算加上0.5,还是在小数点后面。 } datas[0]=temp/10000; datas[1]=temp%10000/1000; datas[2]=temp%1000/100; datas[3]=temp%100/10; datas[4]=temp%10; lcd_wdat('0'+datas[1]);//十位 lcd_wdat('0'+datas[2]);//个位 lcd_wdat('.'); //显示‘.’ lcd_wdat('0'+datas[3]);//显示小数点 if(temp>=4000) { beep=0; lcd_pos(1,1);//设置显示位置为第2行的第1个字符 lcd_wdat('E'); lcd_wdat('r'); lcd_wdat('r'); lcd_wdat('o'); lcd_wdat('r'); } else { beep=1; lcd_pos(1,1);//设置显示位置为第2行的第1个字符 lcd_wdat(''); lcd_wdat('O'); lcd_wdat('K'); lcd_wdat(''); lcd_wdat(''); } }/********************************************************************************函数名:Delay1ms*函数功能 :延时函数*输入:无*输出 :无*******************************************************************************/voidDelay1ms(unsignedinty){ unsignedintx; for(y;y>0;y--) for(x=110;x>0;x--);}/********************************************************************************函数名:Ds18b20Init*函数功能 :初始化*输入:无*输出 :初始化成功返回1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护士岗位招聘笔试题与参考答案
- 焊工(技师)试题库(附答案)
- (完整版)档案管理职称考试题库及答案
- 2025纪检监察考试题库(附参考答案)
- 银行消防考试题及答案
- 低钾血症考试试题及答案
- 大气遥感考试题及答案
- 呼吸系统疾病患者的心理护理
- 2026黑龙江绥化市农业农村局所属农田建设服务中心招聘7人参考题库必考题
- 中共绍兴市纪委绍兴市监委公开选调下属事业单位工作人员5人备考题库必考题
- 长沙股权激励协议书
- 问卷星使用培训
- 心源性脑卒中的防治课件
- 2025年浙江辅警协警招聘考试真题含答案详解(新)
- 果园合伙经营协议书
- 节能技术咨询合同范本
- 物业管理经理培训课件
- 员工解除竞业协议通知书
- 【语文】太原市小学一年级上册期末试题(含答案)
- 储能电站员工转正述职报告
- DB3301∕T 0165-2018 城市照明设施养护维修服务标准
评论
0/150
提交评论