版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自动配药系统的设计与实现[摘要]多年来,国内大部分化学实验室、化工研究所在进行药剂调配时,研究人员通常采用量杯手工操作的配药方法来完成配药工作,耗时又费力。与此同时,在药剂配比过程中,有些腐蚀性强药剂或易挥发的药剂是不适宜护理人员亲肤接触,对于长期接触有毒性的易挥发性药物的人群往往对其身体构成较大的损害。另外,在人工药剂配比调配中,药液量难免出现配药量比例偏差失误,也可能造成因药物总量偏多而导致的残余药物处理等污染,影响配置药液的质量。针对以上药剂量比例偏差、药物污染等这类问题,本课题“自动配药系统”将立足于研究解决该类问题。该系统是基于增强型51单片机来实现以智能配药为目的的自动配药产品,可广泛应用于化学实验室、化工研究所、医疗等领域。设计中结合《STC12C5A60S2单片机应用原理》、《电工电子》和《电机与拖动基础》等基础学科知识作为研究和设计的强有力基础。自动配药系统设计中主要由单片机最小系统、蠕动泵驱动模块、键盘控制模块、显示模块、原药箱、混合配液箱等部分组成,通过键盘设定各种药液的配比剂量,并在液晶显示屏上显示当前药剂量,而后用蠕动泵将原药液抽取到混合药箱中进行混合,从而实现较为精确的自动配药功能。在作品外观上,采用CAXA绘制净化器外形结构加工图纸。在自动配药系统中,改变了传统人工量取药液的环节,设计为自动取药的功能,使得该系统不仅仅提高了配药液的质量,促进了配药液的合理性,更加保证了配药人员的配药安全。[关键词]自动配药系统LCD液晶显示屏STC12C5A60S2Designandimplementationofautomaticdispensingsystem[Abstract]overtheyears,thedomesticmostofthechemicallaboratory,chemicalresearchwherethedeploymentagent,researchersisusuallyusedcupmanualdispensingmethodtocompletetheworkofthedispensing,time-consumingandlaborious.Atthesametime,intheratioofreagentintheprocess,somestrongcorrosivechemicalsoreasyvolatileagentsisnotsuitablefornursingstaffcloseskincontact,thecrowdforthelong-termexposuretotoxicvolatiledrugsoftenthebodyconstituteagreaterharm.Alsoinartificialreagentmixing,liquidamountappearsunavoidablywithdoseproportionalbiaserrorsmayalsocausedduetodrugnormalamountofresidualdrugtreatmentandotherpollution,affectstheconfigurationofliquorquality.Accordingtothiskindofproblemoftheseagentsinproportiontothevolumedeviation,drugpollution,theproject"automaticdispensingsystem"willbebasedontosolvethiskindofproblem.Thesystemisbasedonenhanced51MCUtorealizetointelligentdispensingforthepurposeofautomaticdispensingproductandcanbewidelyusedintheresearchofchemicallaboratories,chemical,medicalandotherfields.Designincombinationwith"STC12C5A60S2microcontrollerapplication","electricalandElectronics"and"motoranddragfoundation"andotherbasicknowledgeasabasisforresearchanddesignofastrongfoundation.Automaticdispensingsystemdesignmainlyconsistsoftheminimumsystemoftheonechipcomputer,aperistalticpumpdrivemodule,keyboardcontrolmodule,displaymodule,theoriginaldrugbox,mixedwithaliquidboxparts,liquiddosageratioissetthroughthekeyboard,anddisplaysthecurrentdosageontheLCDscreen,thenperistalticpumpwilldrugliquidextractiontomixinginthechestweremixed,inordertoachieveamoreaccurateautomaticdispensingfunctions.Intheappearanceofthework,theuseofCAXAtodrawthepurifierconfigurationprocessingdrawings.Inautomaticdispensingsystem,changedthetraditionalmanualtakeliquidlink,designedforautomatictakingmedicinefunction,makingthesystemnotonlyimprovesthequalityofthedispensingoffluids,promotetherationalityofthedispensingoffluids,moretoensurethedispensingstaffofdispensingsafety.[Keywords]Automaticdispensingsystem,LEDliquidcrystaldisplay,STC12C5A60S2目录引言 1第1章绪论 21.1自动配药系统简介 21.2自动配药系统的组成与功能 21.3论文的主要内容 2第2章系统的设计思路及流程 42.1系统模块设计方案 42.2系统总体设计方案 4第3章硬件电路设计 63.1系统的总控单元构成 63.2电源电路设计 83.3直流电机驱动电路设计 93.3.1电机的介绍 93.3.2电机芯片的选型及介绍 103.3.3电机驱动电路的设计 113.4液晶显示电路设计 123.4.1LCD12864液晶显示简介 123.4.2LCD12864引脚功能 123.4.3LCD液晶显示器电路设计 133.5串行通信方式设计 143.5.1MAX232芯片简介及功能 143.5.2MAX232芯片介绍 143.5.3串行接口的电路设计 153.6键盘电路设计 163.7蜂鸣器警报电路 173.8蠕动泵的原理与作用 18第4章软件设计 204.1软件总体结构 204.2软件模块设计 204.2.1电机驱动模块 214.2.2液晶显示模块 214.2.3键盘输入模块 23第5章系统调试 245.1软件调试 245.1.1Keil简介 245.2.2系统仿真图 245.2硬件电路制作 255.2.1PCB板的介绍及制作 255.2.2电路板的焊接 26结论 27致谢语 28参考文献 29附录 30引言单片机的全称为单片微型计算机(SingleChipMicrocomputer),在国际上统称为微型控制器(MicroControllerUnitMCU).单片机自从问世以来,单片机这门技术得到了飞快的发展[1]。目前,单片机是进一步向着CMOS化、功耗低、性能好、体积小、大容量、价格廉价和外围电路内装化等几个方面发展。它的出现很大程度的改变了传统的控制系统的思想与运用方式。单片机系统功大部分依赖于数字电路或模拟电路的原理,并且通过软件控制方式实现。这种用软件替代硬件的控制方法叫做微控制技术,是对传统控制技术的改进。这一技术广泛的被运用于自动测量、智能仪器、家用电器和工业控制等各个方面。其中运用最为广泛的是由Intel公司的MCS-51系列单片机。如今,单片机的家族越来越大,技术上也越来越先进。使用单片机作为整个系统的控制核心,在蠕动泵固定流量前提下,分别控制蠕动泵的抽液时间,来控制药液混合的配比。采用电动机旋转搅拌使药液配置均匀。实现了自动配药的过程。解决了配药人员不能直接接触药液、配药液的合理、质量的稳定等问题。单片机的应用大大提升了人们工作的便捷和安全性。第1章绪论1.1自动配药系统简介随着现今医疗的不断进步,药液也不断的发展和丰富。药液的配比和种类也越来越复杂。同时,配液过程中,有些药物是不宜护理人员亲身接触,药物易对护理人员造成损害。传统的效率低、质量不稳定、出错率高等缺点。人工配药已经不在适合现如今的药液配置。为解决上述问题,我们尝试着改变传统输液配药中的环节,设计了自动配药系统。该系统基于51单片机实现的以自动智能为目的的新一代自动配药产品。该系统通过键盘输入配药溶液比,单片机控制自动配药系统自动配制溶液。且液晶显示屏自动读取溶度并显示。这样减少了配药过程中人工配药的失误和污染,大大节约了人工劳动力和药物资源。改善了配制药液质量的稳定性和合理性。1.2自动配药系统的组成与功能自动配药系统运用STC12C5A60S2单片机应用原理,同时结合电工电子、电机与拖动基础等基础学科知识进行研究和设计。该系统组成主要有电源模块、MAX232通信模块、直流电机驱动模块、警报模块、键盘输入模块、液晶显示模块等几部分组成。同时,我们设计采用液晶显示屏显示作为人机操作界面。在产品外观上,采用SolidWorks进行外观设计与AutoCAD绘制净化器外形结构加工图纸.在输入键盘上,它的数字和配药单上的数字按键相对应,使用时只需按下键盘上的按键,便可在短时间内轻松的调配出需要的药液。从而实现自动配药的控制过程。1.3论文的主要内容本论文主要基于单片机的自动配药控制的研究和设计,根据要求,完成整个系统的总体方案,并对硬件系统和软件系统进行详细的设计,实现最终的自动配药的功能。第1章主要介绍课题的背景,并对单片机发展现状以及自动配药系统的组成和功能进行详细的介绍,熟悉单片机控制优缺点,了解自动配药系统的控制。第2章介绍自动配药的基本原理,对自动配药系统的总体构造进行详细的介绍,充分了解自动配药系统的实现工艺。第3章介绍完成系统设计的硬件方面,介绍系统需要的技术要求,完成基本的硬件技术。介绍各个模块的芯片使用技术要求,完成硬件系统的设计。第4章介绍完成系统设计软件设计方面,介绍系统采用的主要芯片的软件设计,完成系统的主体程序。第5章介绍自动配药设备的外观设计和自动配药系统调制过程。充分利用专业知识与自己的创新性思维,设计外观好看实用的设计作品。第2章系统的设计思路及流程2.1系统模块设计方案系统需要实现自动配药功能,需要由多模块组成。各个模块之间的所实现的功能如下:·单片机控制模块单片机从键盘输入模块中读取信息,送显示器显示;同时根据系统状态,控制系统是否警报;单片机还负责控制配药系统的操作,完成配药过程。·电机驱动模块由电机驱动旋转扇叶,加强配药溶液的混合。使药液配置浓度均匀。·键盘输入模块用户通过键盘模块设置药液配置比例。因此用户只需按键操作,即可实现功能。·液晶显示模块显示模块负责检测显示系统的状态值,通过显示屏了解系统的当前状态,实现系统操作。·蜂鸣器警报模块通过发出声音实现警报·电源模块提供系统操作所需的能源。2.2系统总体设计方案根据以上模块功能介绍,自动配药系统要完成输入、显示、控制、警报等功能,因此需要键盘配药输入模块、液晶显示模块、单片机控制模块、警报模块、电机驱动模块、电源模块。各模块构建如下,在接通电源,系统监测物故障时,通过键盘输入扫描读取输入量,控制蠕动泵抽取药液并驱动电机进行混合搅拌,最后由显示屏显示。系统的总模块图如图2-1所示。图2-1系统总模块图如图2-2所示为系统设计硬件结构草图。图2-2系统硬件结构草图第3章硬件电路设计根据系统各模块的功能的不同,选择合适的集成电路芯片,然后就可以进行系统的硬件电路设计。自动配药系统的电路设计简易方便,按照系统的功能模块之间的电路又分为电源电路、通信电路、电机驱动电路、警报电路、键盘输入电路、液晶显示电路。单片机电路是主控电路,接收键盘电路中的按键输入,然后送到显示电路中显示;根据输入的信息,控制警报电路是否报警以及系统适配实现自动配药工作。下面对个电路进行逐一加以介绍。3.1系统的总控单元构成系统的主控单元由主控CPU(STC12C5A60S2)构建最小工作系统,主要功能是控制系统的总体,是单片机控制的核心。51系列单片机的最小系统一般包括:振荡电路、单片机、复位电路。下面我们对主控单元构成的各个电路进行分析。1.单片机的最小系统单片机最小系统是指只使用最少硬件单元电路构成的能够保证单片机正常工作的系统。电路如图3-1所示。图3-1最小系统电路STC12C5A60S2单片机是一种高速、功耗低、超抗干扰强的新一代8051单片机。他是本次设计所使用的主控芯片。选择STC12C5A60S2是由于它的运行速度比传统8051芯片快8-12倍,但其指令代码与传统的8051完全适用。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),主要是对电机控制,抗干扰强场合。其管脚图如3-2所示。图3-2管脚图2.振荡电路单片机系统里都具有晶振,在单片机系统中晶振的作用非常大。在单片机系统中,晶振的作用主要是为系统供应基本的时钟信号。单片机根据晶振所提供的时钟频率来执行一切指令。通常情况下,晶振需要与锁相环电路配合使用。如果系统工作需要频率的时钟信号,那么整个系统模块可以共用一个晶振。如果不同子系统模块需要有不同频率的时钟信号,那么可以用与同一个晶振相连的锁相环来供给[2]。晶振电路的电路图如图3-3所示。图3-3晶振电路3.复位电路复位电路是由电阻与电容串联组成的,它利用了“电压电容不能突变”的原理。系统上电后,单片机上RST脚电平状态会由低电平转换为高电平,同时电路上RC值决定高电平持续的时间。另外,当单片机在运行时出错了,用户按下复位按键,这个时候电容两端形成了一个回路,因此在按键按下的这个过程中,电容会开始释放出之前充的电量,电容电压极速下降,电阻两端分担的电压变大了,这时单片机RST脚也会出现高电平,从而进入复位过程。复位电路图如图3-4所示。图3-4复位电路图3.2电源电路设计就单片机最小系统而言,只需要5V的直流电源,然而实际单片机应用系统来说,由于需要扩展一定的测控转换通道和与其相应的接口电路及外设,因此除了5V的直流电源外,还有可能需要其他的直流(如3V.12V等)电源。单片机应用系统的电源一般是由市电通过变压、整流、稳压、滤波及AC/DC变换后提供系统所需的直流电源。也有的是从直流供电设备取得电能后通过DC/DC变换、稳压、滤波后提供系统所需电源[3]。由此,单片机应用系统的电源通常包括变压电路两种电源模块结构的设计、稳压电路和滤波电路。如图3-5的(a)、(b)所示。(a)(b)图3-5单片机系统电源组成框图本设计使用三端集成线性稳压器7805,以直流9V电源经7805后为后续电路供电的。电路原理图如图3-6所示。电路实现其原理为:接通电源后,电路经过滤波电容CI滤波后,再经过7805稳压后,7805的输出管脚输出稳定的线性5v电源。电容C2和C3的设置也是起到滤波的作用。图3-6电源原理图3.3直流电机驱动电路设计3.3.1电机的介绍电机是重要的执行器件,因此电机的驱动是一个重要的应用领域。电机的种类很多,可以分为直流电机、交流电机、步进电机。目前,越来越多的单片机集成了特殊功能,但电机驱动电路却仍很少。主要是因为电机驱动电路所需的电流越大,尤其是直流电动机用启动时,点击启动电流是正常工作电流的数倍,这就对电机驱动电路提出了新要求。所以,需要设计专门的驱动电路完成电机的驱动。直流电机要实现正转、反转、停止、刹车功能。则需要设计一种特殊的电路,即桥式电路。在这里简单介绍电源的驱动方式如图3-7所示。当三极管Q1和Q4导通后,电机将正转。相反的,要使电机反转,需要接通三极管Q2和Q3。在这两种情况下,在电机两端的电压的极性正好相反。当将全部关断这4个晶体时,电机停止转动。若使三极管QI与Q3关断,且使三极管Q2与Q4导通,电机将处于短路制动状态,电机会马上停止转动[4]。图3-7H桥示意图3.3.2电机芯片的选型及介绍专用的电机驱动芯片,其功能大都很完善。电机驱动芯片的选择,我们主要依据是电机型号和额定输入。TA7267BP是一种桥驱动器直流的有刷电机旋转控制的直流电机驱动芯片。它支持正向转动、逆向转动、停止和制动器四种不同的工作模式。这个芯片只需单电源供电即可。本次设计只需要使用的小电机,其输入为5v,而驱动电压需要12V左右即可实现所需功能。报据这个要求,我们可以选择东芝公司的TA7267系列芯片TA7267BP,如图3-8所示。图3-8TA7267BP实物图TA7267BP芯片内置有过电流防护与热关断的电路。它的内部原理图如图3-9所示。TA7267BP的工作电源电压端子和电机驱动电源接线端子是独立的,因此可以实现伺服控制操作。通常情况下,它会被设计使用于装载、卷电机驱动器录像机、磁带甲板中,有时在工业中也会被广泛应用。图3-9TA7267BP内部原理图TA7267BP各引脚功能如表3-1所示。表3-1引脚功能引脚号码符号功能说明1IN1输入2IN2输入3IN3输出4IN4接地5IN5输出6IN6马达驱动供应电路输入7IN7马达驱动IC工作输入3.3.3电机驱动电路的设计系统配药调剂中,需要通过混合、搅拌的过程。因此,需要设计电机作为搅拌模块的动力,来实现调速驱动功能。增加药液混合的均匀和质量的稳定保证。控制直流电机在单片机系统中的典型应用有转向、启动、停止。选用直流电机,只要在直流电机的两个控制端之间加上有电位差的电压,就能够使它转动.改变加在两端的电压就可以改变转动方向[5]。本文选用东TA7267BP作为直流电机的驱动芯片。控制原理图如图3-10所示。图3-10驱动芯片原理图使TA7267BP芯片上的Pin1与Pin2作为控制信号的输入端,与单片机CPU连接;且Pin3与Pin5连接到电动机上,同时并联一个电容与电阻。单片机通过改变Pin1与Pin2这两个管脚的电平,实现4种电机状态的控制指令。其逻辑功能表如表格3-2所示。表3-2逻辑功能表IN1IN2OUT1OUT2马达动作11LL快速自动01LH正/反转10HL反/正转00高阻抗停止3.4液晶显示电路设计3.4.1LCD12864液晶显示简介液晶显示器((LCD)是一种近年来被广泛用于单片机控制的智能仪器、智能仪表和低功耗电子产品中。它具有的特点是功耗低、体积小、重量轻、厚度薄。中文字库的128X64具有4位/8位并行、2线或3线串行多种接口方式。同时它的内部含有国标简体中文字库的点阵图形液晶显示模块。该模块接口方式简单灵活,构成全中文型人机交互图形界面方便易行[6]。通过这种模块构成的液晶显示方案不论是硬件电路结构或者是显示程序方面,都要比其他同类型的图形点阵液晶显示模块简洁、方便许多。如图3-11所示为LCD12864实物图。图3-11液晶屏正反面3.4.2LCD12864引脚功能(1)液晶屏若自带电位器时,第三脚VO可以不接。(2)液晶接口18脚VOUT可以不接悬空(3)串并行显示有以下两种调节方式:·通过PSB脚来控制程序内部的高低电平·若JP2短路点有3点时,S和中间点连起来为串行,而P点和中间点连起来为并行。如果当取字模出现乱码时,请一定把JP2短接P为并口S为串口。下图3-3所示为LCD12864引脚功能表。表3-3LCD12864引脚功能表引脚号引脚名称方向功能说明1GND-模块的电源地2VCC-模块电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令、数据选择信号:串行片选信号5R/W(SID)H/L并行的读写选择信号:串行的数据口6E(CLK)H/L并行的使能信号:串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并、串行接口选择:H-并行;L-串行16NC空脚17RSTH/L复位低电平有效18VOUT倍压输出脚19LED_A-背光源正极(LED+5V)20LED-K-背光源负极(LED-5V)3.4.3LCD液晶显示器电路设计本设计主要研究通过单片机控制来实现液晶模块字符的显示。电路设计液晶原理图如图3-12所示。Pin1和Pin20共地、Pin2和Pin19都接5V电源、Pin4片选信号、Pin5为R/W信号、DB0到DB7作为接收单片机信号的数据。图3-12液晶原理图3.5串行通信方式设计3.5.1MAX232芯片简介及功能单片机有两种通信方式,即并行、串行两种通信方式。并行通信是指同时对各个位数据的接收或发送,串行通信则指将数据一位一位地按顺序进行发送或者接收。电平转换芯片MAX232是一种专门用于进行TTL电平转换为RS232电平的芯片。MAX232内部置有泵电源,能将++5V电源电压在芯片内提高到RS232电平所需的正10v或者负10v电平。若在保持RS-232协议输出电平的前提下,MAX3222,MAX3232和MAX3241可有效确保120kbps的数据传输速率。MAX3232带有2个接收器和2个驱动器[7]。在关断模式中,其接收器保持活动状态,同时允许仅用1μA的工作电流监测外部设备。MAX232封装实物图如图3-13所示。图3-13MAX232实物图3.5.2MAX232芯片介绍MAX232芯片引脚功能如下,引脚电路图如图3-14所示第一部分是一种电荷泵电路。它由1,2,3,4,5,6脚和4只电容组成。能够产生+12v和-12v两个电源,供给RS-232串口电平所需。第二部分是数据转换通道。由7,8,9,10,11,12,13,14脚构成两个数据通道.其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T10UT)为第一数据通道。8脚(R2IN)、9脚(R20UT)、10脚(T2IN)、7脚(T20UT)为第二数据通道。TTL/CMOS数据从T1IN,T2IN输入转换成RS-232数据从T10UT,T20UT送到电脑DB9插头;DB9插头的RS-232数据从R1IN,R2IN输入转换成TTL/CMOS数据后从R1OUT,R20UT输出。第三部分是供电。15脚GND,16脚VCC(+5v)。送到电脑DB9插头;DB9插头的RS-232数据从R1IN,R2IN输入转换成TTL/CMOS数据后从R1OUT,R20UT输出。图3-14MAX232芯片引脚图3.5.3串行接口的电路设计本次设计基于STC12C5A60S2主控芯片,采用RS-232进行双机通信.RS232连接器一般为9针的D型接头。电路设计将Pin2与MAX232的输入连接,Pin3与MAX232输出相连,实现串行通信的功能。其电路原理图如图3-15所示。图3-15串行通信原理图3.6键盘电路设计键盘是控制单片机系统最直接的方式,使用键盘可以提高工作效率,且方便操作。不同控制系统中,键盘的组成形式差别较大。在该设计中,由于采用的按键相当较少且CPU端口足够使用,故而采用独立式键盘的设计。该设计的电路图如图3-17所示,且其功能如下:当按键P2.0对应的按键被按下时,表示对药液A进行增加抽取量。当按键P2.1对应的按键被按下时,表示对药液B进行增加抽取量。当按键P2.2对应的按键被按下时,表示对药液C进行增加抽取量。当按键P2.3对应的按键被按下时,表示对药液A进行减少抽取量。当按键P2.4对应的按键被按下时,表示对药液B进行减少抽取量。当按键P2.5对应的按键被按下时,表示对药液C进行减少抽取量。当按键P2.6对应的按键被按下时,表示确认对药液进行配置。当按键P2.7对应的按键被按下时,表示取消对药液进行配置。图3-17独立键盘电路3.7蜂鸣器警报电路在单片机应用的设计上,通常在很多方案中都会配备使用蜂鸣器。很大部分都是使用蜂鸣器作为系统的提示或报警。单片机驱动他激蜂鸣器可以使用两种方式:一种是使用PWM输出口直接进行驱动,另一种是通过利用I/O定时翻转电平生成驱动波形来对蜂鸣器进行驱动[8]。在这设计模块系统中,我们需要介绍了PWM输出口驱动蜂鸣器的方法,还需要介绍I/O口驱动蜂鸣器的方法。通过对其应用将两种驱动方式做到一起。蜂鸣器实物图如图3-18所示。图3-18蜂鸣器现如今市场上有种小型蜂鸣器因其体积小、重量轻、价格低等特点,被广泛地应用于各种需要发声的电子制作、单片机电路中。蜂鸣器应用与设计的不同,需要根据电路选择所需要的蜂鸣器。蜂鸣器的规格选择如表3-3所示。表3-3蜂鸣器规格类型单位HYT-1201HYT-1203HYT-1205HYT-1212额定电压V1.53512工作电压V1.2~32~54~78~16最大额定电流mA20303030共振频率Hz2000~2600利用蜂鸣器的结构原理,我们设计了以下的一个系统来说明单片机对蜂鸣器的驱动。设计系统中安装一个他激蜂鸣器,它的频率为2000Hz,由I/O输入口进行控制调节。I/O端口控制的蜂鸣器在没有鸣叫时,我们可以按一次按键I/O输入口控制的蜂鸣器鸣叫。再按一次即可以停止鸣叫。蜂鸣器多发出蜂鸣声,提示用户操作进程。自动配药系统警报模块原理图如图3-19所示。图3-19警报电路原理图3.8蠕动泵的原理与作用蠕动泵通常也被称作恒流泵和软管泵。蠕动泵所运用的机械原理非常简单。其主要是利用对泵管进行交替挤压和释放来泵送流体。简单的说,它就像是使用两根手指夹挤一根充满液体的软管一样,它随着手指的移动,管内就会形成负压,使液体也随着手指的移动而流动。利用这个原理,蠕动泵中软管装卡在转子和定子之间用以达到泵送的目的[9]。其工作原理大致如图3-20所示。图3-20蠕动泵工作原理蠕动泵在本系统主要是利用它的原理。当系统设置好药液配置起始值开始工作时,通过蠕动泵定时定量对药液进行抽取。可以确保药液抽取量的准确性。如此,将更好的保证药液浓度配比的精确。第4章软件设计4.1软件总体结构软件设计主要是对键盘进行扫描,根据按键输入控制配药比,控制电机驱动搅拌,并将结果显示。在通电,初始化过程中,主要是初始化STC1C5A60S2主控单元。LCD12864显示初始化。然后检测系统是否正常,在蜂鸣器不响时表示系统无故障。通过键盘输入药液配比,然后由键盘扫描读取数据。主控芯片控制蠕动泵抽取原药液并驱动搅拌电机搅拌。完成配药工作。系统工作总流程图如图4-1所示。图4-1系统工作总流程图4.2软件模块设计4.2.1电机驱动模块根据TA7267BP各个引脚的功能,以及各引脚对电平的控制对于实现对小电机的转动控制很容易实现。通过单片机来控制电机转动,首先需要将STC12C5A60S2单片机的I/O接口作为输出口,传输数据TA7267BP的控制字,然后由TA7267BP来驱动电机,控制电机的转动。电机驱动流程图如图4-2所示。图4-2电机驱动流程图4.2.2液晶显示模块显示模块在系统中的作用主要是初始化显示、执行命令操作显示。该模块便于系统操作的简便,可以方便识别系统目前的状态。对于LCD12864显示屏使用时,都必须先对其进行经过初始化设置。LCD12864的初始化设置包括对调节文字显示位置、功能设定、以及显示状态等的设置。如图4-3所示为初始化流程图。图4-3初始化流程图模块在接收到指令前,需要先去确认模块内部是否处于空闲状态,也就是去读取BF标志时BF需要为“0”,只有这样才能够接受新的指令。如果在发送一个指令前没有检查BF标志,那么在前一个指令和这个指令之间就会延迟一段较长的时间。也就是说需要去等待前一个指令确定执行完成才能继续进行。如图4-4所示为LCD显示流程图。图4-4LCD显示流程图4.2.3键盘输入模块键盘接口电路程序设计,主要完成串行口的初始化和按键扫描工作。TTP226接触板检测集成电路有直接模式、键矩阵模式、串行模式三种输出工作模式。大多数输出模式工作在直接模式或串行模式中。其模式框图如下图4-5所示。图4-5模式框图键盘模块作为系统直接操作的输入模块,便于系统的操作使用。键盘工作的流程如下图4-6所示。图4-6键盘工作流程图第5章系统调试5.1软件调试5.1.1Keil简介硬件设计和软件设计是单片机开发应用中不可缺少的两个重要环节。设计中除必要的硬件外,同样离不开软件。一般情况下,有手工汇编、机器汇编两种方式将所需汇编语言源程序转变为CPC可以执行的机器代码。其中机器汇编他是由汇编软件将源程序转变为机器码。目前,Keil软件是目前最流行开发NICS-51系列单片机的一种软件。Keil是一种包括C编译器、宏汇编、连接器、库管理和仿真调试器等的单片机软件开发系统。本设计使用Keil进行C语言的编写,并进行调试编译[10]。5.2.2系统仿真图Keil的使用必须先启动Keil,接着建立工程和新文件,然后就可以进行对程序的编写。在完成编写和保存之后,进行主菜单功能的设置。下图5-1所示为程序编写编译图。图5-1程序编译图5.2硬件电路制作5.2.1PCB板的介绍及制作随看电子设备越来越复杂,需要的零件自然越来越多。电路板的种类也随之变得多样。PCB板是一种印刷电路板。板子本身的基板是由绝缘隔热、并不易弯曲的材质所制作成。在表面可以看到的细小线路材料是铜箔,原本铜箔是覆盖在整个板子上的,而在制造过程中部份被蚀刻处理掉,留下来的部份就变成网状的细小线路了。这些线路被称作导线或称布线,并用来提供PCB上零件的电路连接使用。本次设计使用Altiumdesigner绘制PCB板。绘制步骤如下图5-2所示。图5-2PCB制作流程图5.2.2电路板的焊接(1)焊接前,将电烙铁充分预热到一定的温度。左手拿焊锡,右手持电烙铁,先将元器件的一个脚进行固定后再焊其他的脚。(2)烙铁头刃面要与焊点处保持紧贴的状态。电烙铁与水平面要有一定的倾斜便于熔化的锡能更好的从烙铁头上流到焊点上提高焊接质量。烙铁头在焊点处不宜停留太久,大约停留2~3秒即可。(3)抬开烙铁头,保持元器件不能动,等到焊锡冷却凝固后元器件固定了方可松开手。焊接时,要保证每个焊点焊接牢靠、接触良好。要保证焊接质量,其典型特征是锡点光亮,圆滑而无毛刺,锡量适中。锡和被焊物融合牢固,不应有虚焊和假焊。本次设计焊接实物图如图5-3所示。图5-3实物图正反面结论本设计由多模块组合而成,其中以STC12C5A60S2单片机作为主控机,通过串行通信MAX232控制的键盘输入控制系统工作,由LCD12864液晶屏显示。系统还有buzzer蜂鸣器作为警报电路,增加系统工作状态属性分析。同时由TA7267BP芯片控制的电机驱动,加强药液配置浓度的均匀稳定。PCB板在制作过程中,先用AltiumDesignerWinter09画出PCB板图,然后经过裁板、洗板、转印、最后腐蚀。在电路板焊接有些时候电子元器件的管脚搞错导,由于很多器件都是采用贴片式,所以导致许多的虚焊,以致不能正常的显示,安装红外对管的时候,由于没有考虑室管对它的影响,导致显示效果不佳。经过不断的修改,遵循一步又一步的测试和排故,终于调试好。此次毕业设计的完成,主要工作有如下:1、熟悉STC12C5A60S2单片机功能及工作特性。2、加强对TA7267BP芯片的了解,以及引脚的功能属性。对TA7267BP芯片控制的电机驱动的选型与设计。
3、对键盘和显示器进行选型比较,得出各种型号优劣比。4、采用面向对象的思想,分层次、分模块构建设计的总体框架。致谢语大学四年弹指一挥间已经接近了尾声。在大学生活即将结束之际,经过认真的思考及资料的收集。我完成了毕业设计和论文的撰写。这过程中得到了许多人的帮助。首先,非常感谢我的导师林老师,本设计就是在林镇周老师的悉心指导下完成的。林老师从指导写作指导、论文框架结构到细节修改,都给予了细致的指导,提出了很多宝贵的意见与建议。同时林老师以其严谨求实的教学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风对我产生及其重要影响。他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。这篇论文是在林老师的精心指导和大力支持下才完成的。其次我要感谢我的学校,给了我学习的机会。包括大学四年所有的任课老师,是你们的教育让我学习了许多专业的知识。这些知识在毕业设计的设计过程中起到很大的作用。如果没有这些年知识的积淀,相信我将不会有如此大的动力和信心来完成这篇论文。谨以此致谢。最后,我要向百忙之中抽时间对本论文进行审阅的各位老师表示衷心的感谢。感恩之余,诚恳地请求各位老师对我的论文多以加指导纠正,使我及时找出论文的不足之处。参考文献[1]王悦凯.51单片机系统入门•扩展•应用开发学习手册[M].中国铁道出版社,2013,05.[2]卢易枫.AT89C51最小系统故障诊断分析[J]《学园》,2015.[3]刘坤.51单片机C语言应用开发技术大全[M].人民邮电出版社,2008,08.[4]王玉梅.电气自动化技能型人才实训系列电动机控制与变频调速[M].中国电力出版社,2011,06[5]焦玉朋.基于51单片机的PWM直流电机调速系统[D].内蒙古大学,2013,05.[6]三恒星科技.MCS-51单片机原理与应用实例[M].电子工业出版社,2008.[7]曹莲.应用MAX232实现MCS51单片机串行通信[D].中国工程物理研究院电子工程研究所.2012.[8]丁修方.基于Cortex-M3延伸报警系统的研制[J].江苏科技大学,2012.[9]李想,郭庆.基于单片机的蠕动泵控制系统设计[J].大众科技,2011,11.[10]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010,07.附录主函数程序/*=============================================================-Project:STC12C5A6S2For-Version:V1.0-Date:2016-3-24-Author:WangYiHong-Company:-Comments:-Chiptype:STC12C5A6S2-Programtype:Application-Clockfrequency:11.0592MHz-Memorymodel:Small-ExternalRAMsize:0-DataStacksize:256=============================================================*/#include"STC12C5A.h"#include"func.h"#include"time.h"#include"Parallel_12864.h"#include"key_scan.h"#include"PumpCtrl.h"#defineuchar unsignedchar#defineuint unsignedint#defineFSCLK 11059200sbit Bell =P3^7;voidmain(){ P4SW=0x70; LCD_12864_Init(); Clear_12864(); DisplayInit(); Delay_ms(4000); LCM_clr(); InitMotor(); time0_int(); while(1) { if(Sec400F) {Sec400F=0; } if(Sec100F) {Sec100F=0; Keyscan_Manage(); } if(Sec10F) {Sec10F=0; MotorCtrl(); } if(Sec1F) {Sec1F=0; DisplayMenu(); } }}LCD12864显示程序/***********************************************************************************************************文件功能:12864液晶并行驱动程序*********************************************************************************************************/#include "intrins.h"#include "Parallel_12864.h"#include"func.h"#include"key_scan.h"ucharcodeaddr_tab[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置};ucharidataMenuTab1[16]={"氯化钠:mL"};ucharidataMenuTab2[16]={"硫酸:mL"};ucharidataMenuTab3[16]={"纯净水:mL"};ucharidataMenuTab4[16]={"请注意当前配比"};/***********************************************************************************************************函数名称:voidCheck_12864_Busy(void)**函数功能:读忙碌状态**函数说明:若12864处于忙碌,等待直到空闲状态**入口参数:无**出口参数:无*********************************************************************************************************/voidCheck_12864_Busy(void){ ucharflag=0,i; DATA_PORT=0XFF; RS=0; RW=1; while(flag==0) { for(i=0;i++;i<10) { _nop_();_nop_();_nop_();_nop_(); } CE=1; for(i=0;i++;i<10) { _nop_();_nop_();_nop_();_nop_(); } if(DATA_PORT&0X80)flag=0; elseflag=1; for(i=0;i++;i<10) { _nop_();_nop_();_nop_();_nop_(); } CE=0; } }/***********************************************************************************************************函数名称:Write_12864_Data(uchardate)**函数功能:写数据**函数说明:**入口参数:待写入数据**出口参数:无*********************************************************************************************************/voidWrite_12864_Data(uchardate)//写数据{ uchari; Check_12864_Busy(); RS=1; RW=0; for(i=0;i++;i<4) { _nop_();_nop_();_nop_();_nop_(); } CE=1; for(i=0;i++;i<4) { _nop_();_nop_();_nop_();_nop_(); } DATA_PORT=date; for(i=0;i++;i<4) { _nop_();_nop_();_nop_();_nop_(); } CE=0;}/***********************************************************************************************************函数名称:ucharRead_12864_Data(void)**函数功能:读数据**函数说明:**入口参数:无**出口参数:待读出数据*********************************************************************************************************/ucharRead_12864_Data(void)//读数据{ uchardate,i; Check_12864_Busy(); DATA_PORT=0XFF; RS=1; _nop_();_nop_();_nop_();_nop_(); date=DATA_PORT; RW=1; for(i=0;i++;i<10) { _nop_();_nop_();_nop_();_nop_(); } CE=1; for(i=0;i++;i<10) { _nop_();_nop_();_nop_();_nop_(); } date=DATA_PORT; CE=0; return(date); }/***********************************************************************************************************函数功能:读数据**函数说明:**入口参数:待写入的指令**出口参数:无*********************************************************************************************************/voidWrite_12864_Com(ucharcommod)//写指令{ uchari; Check_12864_Busy(); RS=0; RW=0; for(i=0;i++;i<4) { _nop_();_nop_();_nop_();_nop_(); } CE=1; for(i=0;i++;i<4) { _nop_();_nop_();_nop_();_nop_(); } DATA_PORT=commod; for(i=0;i++;i<4) { _nop_();_nop_();_nop_();_nop_(); } CE=0;}/***********************************************************************************************************函数功能:12864液晶初始化程序**函数说明:**入口参数:无**出口参数:无*********************************************************************************************************/voidLCD_12864_Init(void){ Write_12864_Com(basic_commod);//30H--基本指令操作 Write_12864_Com(cursor_off);//0x06开显示,关光标,不闪烁。扩展 Write_12864_Com(clear);//清除显示0x01 Write_12864_Com(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。00000110}/***********************************************************************************************************函数功能:向液晶连续写入一段字符串**函数说明:字符可以是任何字符,包括汉字,但是汉字必须是写在一个连续的16*16的点阵中**函数举例:Write_12864_String("LCD12864液晶实验"),这段字符串有8个英文字符,总共占4个16*16的点阵,后面的四个同样占4个16*16的点阵**错误举例:Write_12864_String("LCD液晶显示"),前面的三个字符占了一个半的16*16单元的点阵,会导致后面的汉字没法正常显示**入口参数:待写入的字符串**出口参数:无*********************************************************************************************************/voidWrite_12864_String(uchar*str)//写入字符串或者汉字{ uchar*p; p=str; while(*p!=0) { Write_12864_Data(*p); p=++str; } }/***********************************************************************************************************函数功能:在指定位置写入汉字**函数说明:汉字必须是写在一个连续的16*16的点阵中**入口参数:待写入的汉字**函数举例:Hanzi_Disp("液晶实验")**出口参数:无*********************************************************************************************************/voidHanzi_Disp(ucharx,uchary,uchar*s){ Write_12864_Com(addr_tab[8*x+y]);//写地址 while(*s>0) { Write_12864_Data(*s);//写数据 s++; }}/***********************************************************************************************************函数功能:在指定位置写一个整数**函数说明:整数的范围从0到65535**入口参数:待写入的整数**出口参数:无*********************************************************************************************************/voidNum_Display(ucharx,uchary,uintnumber){ uinti=10000; Write_12864_Com(addr_tab[8*x+y]);//写地址 if(number!=0) { while(number/i==0) { i/=10; } if(i!=1) { while(number/i!=0) { Write_12864_Data(number/i+0x30); number-=(number/i)*i; i/=10; if(i==1)break; } } } Write_12864_Data(number%10+0x30);}/***********************************************************************************************************函数功能:在屏幕上显示一副图片**函数说明:可以有半屏显示和全屏显示两种模式,可以自行修改**画图方式为从左到右扫描,从上到下,每写一个字节后行地址加一,每写玩16个字节,即128个点(如果半屏显示8个字节,64个点)列地址加一**点阵取点方式为从左到右,从上到下,高位在前,低为在后**入口参数:绘画的图片的首地址**出口参数:无*********************************************************************************************************/voidPHO_Display(constunsignedchar*s){ ucharCOUNT3=0X02,COUNT1,COUNT2,LCD_X=0X80,LCD_Y; for(;COUNT3!=0;COUNT3--) { LCD_Y=0X80;//上半屏 COUNT2=0X20;//32 for(;COUNT2!=0;COUNT2--) { // COUNT1=0X10;//8个16*16点阵单元显示全屏 COUNT1=0X08;//4个16*16点阵单元显示半屏华师logo Write_12864_Com(0x34); Write_12864_Com(LCD_Y); Write_12864_Com(LCD_X); Write_12864_Com(0x30); for(;COUNT1!=0;COUNT1--) { Write_12864_Data(*s++); } LCD_Y+=1; } LCD_X=0X88;//下半屏 } Write_12864_Com(0x36); Write_12864_Com(0x30);}/*另外一种打点画图程序*/voidimg_displeft(constunsignedchar*img)//注意031,031上下分半{unsignedchari,j,m,n;for(j=0;j<32;j++){for(i=0;i<4;i++){Write_12864_Com(0x34);//扩展指令,显示绘图Write_12864_Com(0x80+j);//更新坐标Write_12864_Com(0x80+i);Write_12864_Com(0x30);//基本指令集Write_12864_Data(img[j*8+i*2]);//高字节Write_12864_Data(img[j*8+i*2+1]);//低字节}}for(n=0;n<32;n++){for(m=0;m<4;m++){Write_12864_Com(0x34);//扩展指令,显示绘图Write_12864_Com(0x80+n);//更新坐标Write_12864_Com(0x88+m);Write_12864_Com(0x30);//基本指令集Write_12864_Data(img[n*8+256+m*2]);//高字节Write_12864_Data(img[n*8+256+m*2+1]);//低字节}}Write_12864_Com(0x36);//扩充功能指令,开绘图开关。}/***********************************************************************************************************函数功能:清除12864内部的CGRAM**函数说明:当屏幕之前通过CGRAM绘图,可以调用此函数来清除CGRAM中的内容**入口参数:无**出口参数:无*********************************************************************************************************/voidClear_12864(void){ ucharCOUNT3=0X02,COUNT1,COUNT2,LCD_X=0X80,LCD_Y; for(;COUNT3!=0;COUNT3--) { LCD_Y=0X80; COUNT2=0X20;//32 for(;COUNT2!=0;COUNT2--) { COUNT1=0X10;//16 Write_12864_Com(0x34); Write_12864_Com(LCD_Y); Write_12864_Com(LCD_X); Write_12864_Com(0x30); for(;COUNT1!=0;COUNT1--) { Write_12864_Data(0x00); } LCD_Y+=1; } LCD_X=0X88; } Write_12864_Com(0x36); Write_12864_Com(0x30); }voidLCM_clr(void){ Write_12864_Com(0x30); Write_12864_Com(0x01); Delay_ms(1); Delay_ms(1);}/***********************************************************************************************************函数功能:在屏幕上打上一个点,屏幕像素是128*64**函数说明:打点范围不要超过坐标范围,这个函数用来为后面的画直线和其他函数服务**入口参数:待写入的整数**出口参数:无*********************************************************************************************************/voidSet_12864_Point(ucharx,uchary){ ucharx_byte,x_bit,y_byte,y_bit; uchardate1,date2;//存储读回的数据 x&=0x7F;//限制在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度医院安保服务承包合同2篇
- 2024年度广告发布合同:规定广告内容、投放范围与费用3篇
- 2024年养老院膳食供应协议3篇
- 2024儿童游乐场租赁经营合同
- 2024年办公家具定制购销合同3篇
- 2024年度航空货物快递委托合同版B版
- 2024年度模具更新与调整合同合同书一
- 2024年度物业装饰施工合作合同版B版
- 建筑监理安全合同范本
- 二零二四年度健身房会员健康保险合作合同3篇
- 2025年中国蛋糕行业市场规模及发展前景研究报告(智研咨询发布)
- 东北三省精准教学2024年12月高三联考语文试卷(含答案详解)
- DZ∕T 0213-2020 矿产地质勘查规范 石灰岩、水泥配料类(正式版)
- 2024年甘肃省民航机场集团社会招聘公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 高教版【中职专用】《中国特色社会主义》期末试卷+答案
- 中国历史地理智慧树知到期末考试答案章节答案2024年北京大学
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
- 【超星尔雅学习通】大国崛起:中国对外贸易概论网课章节答案
- 最新实验室评审准则内审检查表
- 苏教版小学数学五年级上册《除数是小数的除法》教案
- 铁路工程施工组织设计规范
评论
0/150
提交评论