毕业设计论文-液位检测显示控制系统设计_第1页
毕业设计论文-液位检测显示控制系统设计_第2页
毕业设计论文-液位检测显示控制系统设计_第3页
毕业设计论文-液位检测显示控制系统设计_第4页
毕业设计论文-液位检测显示控制系统设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STYLEREF"标题1"ABSTRACT STYLEREF"标题1"ABSTRACT 毕业设计论文_液位检测显示控制系统设计摘要水位测量在日常生活和工业领域有着广泛的应用,比如江河湖泊,地下水,水电站等都需要进行水位监测,以此来了解水位的工作情况以方便工作。水位监测系统目前在国里外都有广泛的应用。水位检测就是水位数据的采集、存储、传输、处理等技术的集成。水位检测的方法有很多种,如人工检测、传感器检测等等。本文介绍的是基于压力传感器实现的液位控制器的设计方法,该控制器以STC89C51单片机为核心,并辅以外围硬件电路来实现控制要求。本文首先介绍总体的设计方案,接着重点介绍各功能模块的作用及实现方法。最后,介绍proteus仿真软件。关键词:水位检测单片机控制传感器

ABSTRACTWaterlevelmeasurementindailylifeandindustrialfieldshaveawiderangeofapplications,suchasrivers,lakes,groundwater,hydropower,alltheseneedwaterlevelmonitoring,inordertounderstandthechangesinthewaterleveltofacilitatethework.Waterlevelmonitoringsystemarewidelyusedinsideandoutsidecurrently.Leveldetectionisthelevelofdatacollection,storage,transmission,processingandothertechnologyintegration.Leveldetectionmethodsaremany,suchasartificialdetection,sensordetectionandsoon.Thisarticleisbasedonapressuresensortoachievethelevelcontrollerdesignmethod,thecontrollerSTC89C51microcontrollerasthecore,supplementedbyperipheralhardwarecircuittoachievecontrolrequirements.Thispaperdescribestheoveralldesignscheme,andthenfocusesontheroleofvariousfunctionalmodulesandimplementation.Finally,proteussimulationsoftwareisintroduced.Keywords:leveldetectionsinglechipmicrocomputercontrolsensor

附录3实物图 i目录第一章绪论 31.1液位自动检测的现状及发展趋势 31.2课题背景及研究意义 31.3方案规划 3第二章单片机最小系统设计 32.1单片机最小系统的功能 32.251系列单片机 32.3单片机最小系统的结构 32.3.1时钟电路 32.3.2复位电路 32.4最小系统的电路设计 3第三章水位测量与显示模块的设计 33.1传感器的介绍 33.20804模数转换器 33.3LCD液晶显示模块电路设计 33.4报警电路的设计 33.5控制电路的设计 3第四章软件的设计 34.1软件的整体结构设计 34.2LCD液晶显示程序设计 34.2.1LCD1602的基本操作时序 34.2.2LCD1602的初始化过程 34.2.3LCD1602的显示流程 34.2.4液晶显示部分子函数源程序 34.34*1键盘程序设计 34.3.1按键的消抖 34.3.2按键部分源程序 34.4ADC0804程序的设计 3第五章Proteus仿真软件介绍 35.1仿真介绍 35.2Proteus的ISIS介绍 35.3利用Proteus绘制原理图 35.4Keil与Proteus的联调仿真 3第六章总结 3致谢 3参考文献 3附录1电路图 3附录2程序 3附录3实物图 3第一章绪论1.1液位自动检测的现状及发展趋势在现代化的工业生产中,液位测量几乎遍及生产工厂的各个环节。在许多生产领域,不但对液位测量的精度要求高,还需要测量仪表很好的使用工业现场的特殊环境,例如高温、高压、强腐蚀性、强放射性的场合,以及远距离传送和在密闭压力容器内的使用等情况。工业自动检测技术是以物理学、电子学、自动控制、电子计算机、测量技术等原理为基础的一门综台性技术,其研究目的是对工业自动化系统中各种工艺参数进行自动检查与测量。作为一个工业自动化检测系统,其任务就是对生产设备和工艺过程参数进行计。对只有传感器、A/D转换和数字计算机的数据测量(处理)系统,存在着大量工艺参数和模拟量的转换问题,系统的精度很大程度上取决于检测装置的精度近年来,随着计算机技术的不断完善以及高精度传感器的出现,给参数检测自动化带来了新的生机。目前国内外在液位监测方面采用的技术和产品很多,传统的液位传感器按其采用的测量技术及使用方法分类已多达十余种。近年来国内外一些研制单位还在研制开发更新的传感监测技术。归纳起来主要有以下几种:差压式液位测量仪表、浮体式液位测量仪表、声波液位测量仪表、电窖式液位测量仪表、核辐射式液位测量仪表、直流电极式液位测量仪表、光纤液位测仪表、感应式数字水位测仪表。近年来由于微电子技术的发展使得液位检测技术发生了根本性变化。新的检测原理与电子部件的应用使得液位测量仪更趋向小型化和微型化,特别是一些小型现场液位开关发展极快,如超声液位计和振动式液位开关,由于没有可动部件,所以可靠性高,不仅可现场显示,而且可以发出控制信号。与此同时,液位检测也在向着智能化发展,在液位测量领域内广泛应用微处理技术,以实现故障诊断和报警,目的是提高测量的精确度、可靠性、安全性和多功能化。在传感器方面,在应用和设计中尽量实现不接触式或不渗透式涮量,其中以超声波式液位计、光学式液位计、电磁式液位计与辐射式液位计最为典型,从而提高探头对恶劣的过程条件的抵抗能力。随着计算机应用的普及,直接输出数字信号的数字化液位传感器已成为这一领域仪表的发展趋势;随着纳米技术、生物工程技术的发展,纳米技术和生物技术在液位测量中的应用也将会日益增多对于一些处于发展阶段的液位计在目前的应用中并不是十分普遍,但其低成本、高性能的吸引力给其发展带来光明的前景[1]。1.2课题背景及研究意义不论社会经济如何飞速发展,水一直在人们正常生活和生产中起着重要的作用,一旦断了水,轻则给人们生活带来很大的不便,重则会造成严重的生产事故和重大损失,从而对供水系统提出了跟高的要求,必须满足及时、准确、安全、充足的供水,如果仍然采用人工供水的方式,则劳动强度大,工作效率低,安全性无法保证,因此必须进行自动化控制,从而实现提供充足的水量,平稳的水压。随着科学技术的发展,单片机作为嵌入式控制器在工业测控系统、智能仪器和家用电器得到广泛应用。再实时监测和自动控制的单片机应用系统中,单片机往往作为核心部件来使用。本文主要研究液压水位的测量与显示系统,以单片机为核心,讲述了单片机系统的选择、开发和设计,根据需要选择了成本低、技术成熟、可靠性高的51单片机系列;论述了压力传感器的选择、外围电路的设计以及相关软件的使用。本次课程设计对我有以下意义:1.通过这次课程设计,加深对片机理论方面的理解。2.掌握单片机的内部模块的应用,如片内外存储器、A/D转换器等。3.了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片器应用系统打下良好基础。4.通过简单课题的设计练习,了解必须提交的工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。1.3方案规划基于单片机的数据采集系统是以单片机为核心的控制器件,结合外围电路所构成的,基本正常如图1.1所示。输出通道单片机输入通道输出通道单片机输入通道图1.1单片机数据采集系统结构图采集系统硬件主要包括传感器、转换器、单片机、输入输出电路等。单片机作为控制单元的数据采集系统工作可以分为以下几个步骤[2]:数据采集是将被测量的信号转换为能被单片机识别的信号并输入给单片机;数据处理由单片机执行以测试为目的的算法程序后,得到与被测参数对应的测量值或形成相应的判断和决策。广泛的液位显示检测控制系统包括对水体的液位,压力等控制,本系统只侧重介绍液位的检测。液位检测是利用压力传感器,把液位的转台转换为模拟信号,再通过数模转换器ADC0804把输出信号直接接到单片机的I/O口,单片机经过运算控制,输出数字信号,输出接口接LCD和发光二级管,实现液位的显示和报警,如图1.2所示报警电路控制电路液位显示STC89C51A/D转换器D压力信号传感器报警电路控制电路液位显示STC89C51A/D转换器D压力信号传感器图1.2水位显示测量控制系统总体结构图由图1.2可知传感器对液面进行测量,然后输出模拟信号,再通过数模转换器把输入的模拟信号转换成输出数字信号,再通过已经存入80C51单片机内部的程序的运算控制,将叶面高度在LCD显示屏上表示出来,如果液位过高或者太低,则报警装置进行报警,提醒工作人员注意加水或排水。

第二章单片机最小系统设计2.1单片机最小系统的功能在日常生活及工业生产中单片机的应用越来越广泛,但单片机本身正常运行所需的资源基本是固定不变的,因此就需要开发单片机最小系统。单片机最小系统,或称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来讲,最小系统一般包括:单片机、晶振电路、复位电路。一般将单片机最小系统最为应用系统的核心部分,通过对其存储器扩展、A/D扩展等,使单片机完成比较复杂的功能。2.251系列单片机8051系列单片机由于其生产成本低、功能强大、应用技术成熟等优点被广泛的应用于生产生活的各个方面。8051系列单片机的基本结构如下[3]:1.一个8位微处理器CPU2.片内数据存储器RAM和特殊功能寄存器SFR3.片内程序存储器ROM4.两个定时/计数器T0、T1,可用作定时器,也可用以对外部脉冲进行计数5.四个8位可编程的并行I/O端口,每个端口既可作输入,也可作输出6.一个串行端口,用于数据的串行通信7.中断控制系统8.内部时钟电路51单片机引脚及其功能如图2.1所示::图2.151单片机引脚图P0.0~P0.7P0口8位双向口线(在引脚的39~32号端子)P1.0~P1.7P1口8位双向口线(在引脚的1~8号端子)P2.0~P2.7P2口8位双向口线(在引脚的21~28号端子)P3.0~P3.7P2口8位双向口线(在引脚的10~17号端子)这4个I/O口具有不完全相同的功能。P0口有三个功能:1、外部扩展存储器时,当做数据总线。2、外部扩展存储器时,当作地址总线。3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。P1口只做I/O口使用:其内部有上拉电阻。P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器设置。有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)在介绍这四个I/O口时提到了“上拉电阻”,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。PSEN外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作。1、内部ROM读取时,PSEN不动作;2、外部ROM读取时,在每个机器周期会动作两次;3、外部RAM读取时,两个PSEN脉冲被跳过不会输出;4、外接ROM时,与ROM的OE脚相接。ALE/PROG地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。PORG为编程脉冲的输入端。EA/VPP访问和序存储器控制信号:1、接高电平时:CPU读取内部程序存储器(ROM)扩展外部ROM:当读取内部程序存储器超过0FFFH(8051)1FFFH(8052)时自动读取外部ROM。2、接低电平时:CPU读取外部程序存储器(ROM)。在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的。3、8751烧写内部EPROM时,利用此脚输入21V的烧写电压。XTAL1和XTAL2外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。VCC:电源+5V输入VSS:GND接地。RST复位信号:当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。2.3单片机最小系统的结构51单片机的最小系统是以51单片机为核心,再辅以外部硬件电路,主要包括时钟电路、复位电路、扩展接口电路等部分,如图2,2所示:51单片机系统接口时钟电路51单片机系统接口时钟电路复位电路复位电路图2.2单片机最小系统结构框图2.3.1时钟电路时钟电路(如图2.3、2.4所示)就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。图中的电容C1和C2起稳定作用图2.3时钟电路2.3.2复位电路单片机在启动时都需要复位以使CPU及系统各部件处于确定的初始状态并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时且振荡器稳定后如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上则CPU就可以响应并将系统复位。单片机系统的复位方式有手动按钮复位和上电复位。在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需10K*10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位[4]。89c51RST89c51RST图2.4复位电路2.4最小系统的电路设计对于51单片机来说,单片机+晶振电路+复位电路便组成了一个最小系统[5],本次设计采用的是STC89C51,属于51系列单片机。STC89C51单片机的最高工作时钟频率为80MHz,片内含8KBytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性。使用的51单片机在+5V的直流条件下才能够稳定工作。单片机的接+5V的引脚为40引脚VCC,而接地的引脚为20引脚GND。供给单片机工作的+5V直流电源,必须是很稳定的,否则会导致单片机频频复位,这在单片机的正常工作中必须避免。,除非是有特定的需要。图2.5单片机最小系统电路图总结:复位电路的原理是单片机RST接收到2US以上的电平信号,只要保证电容充放实践大于2US,即可实现复位。按复位键系统复位,其实质是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加造成的。51单片机最小电路介绍:51单片机最小系统的复位电路的极性电容C1的大小直接影响单片机的复位时间的长短,一般采用10—30uf,容值越大复位时间越短。单片机最小系统的晶振Y1可以用6MNZ或11.0592MHZ,晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。起振电容C2、C3一般采用15—33uf,电容离晶振越近越好,晶振离单片机越近越好。P0口为开漏输出,作为输出口试需加上拉电阻,阻值一般为10K。当晶振频率为12MHZ时,最高计数频率不应该超过0.5MHZ,即计数脉冲的周期要大于2ms。

第三章水位测量与显示模块的设计3.1传感器的介绍MPX4115系列压电电阻传感器是一个硅压力传感器,MPX4115传感器是整体片少带两级操作扩大电路和薄膜电阻网络提供高精度输出和温度补偿。这个传感器结合了高级的微电机技术,薄膜镀金属,以及两级半导体处理精确度高,还能为高水准模拟输出信号提供一个均衡压力。在0℃-85℃的温度下误差不超过1.5%,温度补偿是-40℃-125℃[6]。它的实物如图3.1所示:图3.1MPX4115实物图压力传感器MPX4115的管脚说明如表3.1所示:表3.1MPX4115的管脚压力传感器MPX4114的特性参数如表3.2所示:表3.2压力传感器MPX4114的特性参数本系统中采用一个滑动变阻器代替压力传感器,用阻值的变化模拟水压的变化,根据不同的阻值LCD显示不同的液位高度值。3.20804模数转换器A/D转换就是将模拟信号转换成为数字信号,A/D转换器就是来实现这一功能的。ADC0804是用CMOS集成工艺制成的逐次比较型摸数转换芯片。分辨率8位,转换时间100μs,输入电压范围为0~5V,增加某些外部电路后,输入模拟电压可为5V。该芯片内有输出数据锁存器,当与计算机连接时,转换电路的输出可以直接连接在CPU数据总线上,无须附加逻辑接口电路[7]。ADC0804芯片引脚图如3.2所示。引脚名称及意义如下:图3.2ADC0804引脚图AGND:模拟信号地。DGND:数字信号地。CLKIN:外电路提供时钟脉冲输入端。VCC:电源端。CLKR:内部时钟发生器外接电阻端,与CLKIN端配合可由芯片自身产生时钟脉冲,其频率为1/1.1RC。CS:片选信号输入端,低电平有效,一旦CS有效,表明A/D转换器被选中,可启动工作。WR:写信号输入,接受微机系统或其它数字系统控制芯片的启动输入端,低电平有效,当CS、WR同时为低电平时,启动转换。RD:读信号输入,低电平有效,当CS、RD同时为低电平时,可读取转换输出数据。INTR:转换结束输出信号,低电平有效。输出低电平表示本次转换已完成。该信号常作为向微机系统发出的中断请求信号。VIN(+)、VIN(—):差动模拟电压输入。输入单端正电压时,VIN(—)接地;而差动输入时,直接加入VIN(+)、VIN(—)。VREF:辅助参考电压。DB0—DB7:8为数字输入端。在使用时应注意以下几点:(1)转换时序当CS与WR同时为低电平A/D转换器被启动切在WR上升沿后100模数完成转换,转换结果存入数据锁存器,同时,INTR自动变为低电平,表示本次转换已结束。如CS、RD同时来低电平,则数据锁存器三态门打开,数字信号送出,而在RD高电平到来后三态门处于高阻状态。(2)零点和满刻度调节。ADC0804的零点无须调整。满刻度调整时,先给输入端加入电压,使满刻度所对应的电压值是,其次是输入电压的最大值,是输入电压的最小值。当输入电压与值相当时,调整端电压值使输出码为FEH或FFH。(3)参考电压的调节在使用A/D转换器时,为保证其转换精度,要求输入电压满量程使用。如输入电压动态范围较小,则可调节参考电压,以保证小信号输入时ADC0804芯片8位的转换精度。(4)接地模数、数模转换电路中要特别注意到地线的正确连接,否则干扰很严重,以至影响转换结果的准确性。A/D、D/A及取样保持芯片上都提供了独立的模拟地(AGND)和数字地(DGND)的引脚。在线路设计中,必须将所有的器件的模拟地和数字地分别连接,然后将模拟地与数字地仅在一点上相连。图3.3ADC0804部分电路连接图3.3LCD液晶显示模块电路设计在单片机的人机交流界面中,一般的输出有以下几种:发光管、LED数码管、液晶显示器。本设计采用的显示屏是LCD1602液晶显示屏,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。图3.4LCD1602实物图LCD1602各引脚的定义如下所示:LCD1602各引脚的定义如下所示:引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,写操作时,下降沿使能。读操作时,E高电平有效7DB0低4位三态、双向数据总线0位(最低位)8DB1低4位三态、双向数据总线1位9DB2低4位三态、双向数据总线2位10DB3低4位三态、双向数据总线3位11DB4高4位三态、双向数据总线4位12DB5高4位三态、双向数据总线5位13DB6高4位三态、双向数据总线6位14DB7高4位三态、双向数据总线7位(最高位)(也是busyflag)15BLA背光电源正极16BLK背光电源负极在实际电路中将滑动变阻器与液晶显示屏连接来调节液晶显示屏的对比度以及液晶显示屏幕背光灯的亮度。图3.5LCD电路连接3.4报警电路的设计本系统的报警电路使用两个红绿发光二级管作为报警灯[8],当水位达到上限时红色的发光二极管亮提醒注意排水,当水位达到下限时绿色的发光二极管亮提醒注意加水,报警电路的连接如图3.6所示。图3.6报警电路当水高于或低于设定的最高和最低水位时,发光二级管导通,提醒工作人员注意。3.5控制电路的设计通过电机的控制芯片试使电机与单片机连通,通过反馈信息来控制电机的转向,以实现水位高时排水,水位低时加水的控制,实现自动化管理。本文不涉及电机电路部分,故不对电机的控制芯片及其反馈作出介绍。

第四章软件的设计4.1软件的整体结构设计本系统包括液压的采集、LCD液晶显示、A/D转换、报警模块、控制模块等几部分。在系统的硬件确定以后,功能完善的软件能够很好的指导和协调硬件的工作,可使系统发挥其最大的功效。一个完整的系统离不开对系统状态的监控。开机后,系统经过LCD初始化,显示启动界面;对系统进行初值的设定,设定最高水位和最小水位,当测量的水位高于最高水位或低于最低水位时,系统报警,同时控制系统加水或排水[9]。图4.1主程序流程序4.2LCD液晶显示程序设计4.2.1LCD1602的基本操作时序1. 读操作顺序(如图4.2所示)图4.2读操作时序2.写操作时序(如图4.3所示)图4.3写操作时序3.LCD1602的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表4.1所示:表4.1LCD1602指令序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。1602LCD的一般初始化(复位)过程延时15ms写指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置4.2.2LCD1602的初始化过程图4.4液晶初始化过程4.2.3LCD1602的显示流程图4.5显示程序流程图4.2.4液晶显示部分子函数源程序1. 写指令到LCD函数voidwrite_com(ucharcmdcode){chk_busy();LCM_RS=0;LCM_RW=0;LCM_EN=1;Lcd_Bus=cmdcode;LCM_EN=0;}2. 写数据到LCD函数voidwrite_data(ucharDispdata){chk_busy();LCM_RS=1;LCM_RW=0;LCM_EN=1;Lcd_Bus=Dispdata;LCM_EN=0;}3. 检查忙函数voidchk_busy(){LCM_RS=0;LCM_RW=1;LCM_EN=1;Lcd_Bus=0xff;While((Lcd_Bus&0x80)==0x80);LCM_EN=0;}4. 初始化LCD屏函数voidlcm_init(){write_com(0x30);write_com(0x0c);lcm_clr();write_com(0x60);lcm_clr2();}4.34*1键盘程序设计4.3.1按键的消抖一般的按键是机械弹性开关,由于机械触点的弹性作用,按键闭合时不会立马接通,按键断开时也不会立马断开,在闭合和断开的瞬间会产生一些抖动,如果不消除按键的抖动,会导致单片机对按键的误判,从而产生误差。利用按键稳定闭合的时间与按键的抖动时间较大的差别,可采用硬件或软件的方式进行消抖处理。本系统采用的是软件消抖。软件消抖的原理为[10]:当检测到按键闭合后执行一个5ms10ms的延时程序,即避开按键前沿抖动部分,再一次检测按键状态,如仍为闭合,则确认按键被按下;同样的,当检测到按键被释放后,也执行一个5ms10ms的延时程序,即避开按键前沿抖动部分,之后才能再一次进入读按键状态处理程序。4.3.2按键部分源程序/*******键盘程序函数*********/Voidkeyscan(){if(SET==0){delay1(5);if(SET==0){set_st++;if(set_st>1){set_st=0;}}While(!SET);}if(set_st==0){if(ADD==0){delay1(5);if(ADD=0){Shangxian++;If(shangxian>50)shangxian=50;}while(!ADD);show1();}If(DEC==0){delay1(5);If(DEC==0)Shangxian--;If(shangxian<xiaxian)Shangxian=xiaxian;while(!DEC);Show1();}}If(set_st==1){if(ADD==0){Delay1(5);If(ADD==0){Xiaxian++;If(xiaxian>shangxian)xiaxian=shangxian;}While(!ADD);Show2();}If(DEC=0){Delay1(5);If(DEC==0){xiaxian--;If(xiaxian==-50)Xiaxian=-50;}While(!DEC);Show2();}If(ENTER==0){Set_st=2;Show1();Show2();}}4.4ADC0804程序的设计ADC0804是属于连续渐进式(SuccessiveApproximationMethod)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百us)、分辨率高价钱便宜的优点,普遍被应用于微电脑的接口设计上。以输出8位的ADC0804动作来说明“连续渐进式A/D转换器”的转换原理,动作步骤如下表示(原则上先从左侧最高位寻找起)。第一次寻找结果:10000000(若假设值≤输入值,则寻找位=假设位=1)第二次寻找结果:11000000(若假设值≤输入值,则寻找位=假设位=1)第三次寻找结果:11000000(若假设值>输入值,则寻找位=该假设位=0)第四次寻找结果:11010000(若假设值≤输入值,则寻找位=假设位=1)第五次寻找结果:11010000(若假设值>输入值,则寻找位=该假设位=0)第六次寻找结果:11010100(若假设值≤输入值,则寻找位=假设位=1)第七次寻找结果:11010110(若假设值≤输入值,则寻找位=假设位=1)第八次寻找结果:11010110(若假设值>输入值,则寻找位=该假设位=0)这样使用二分法的寻找方式,8位的A/D转换器只要8次寻找,12位的A/D转换器只要12次寻找,就能完成转换的动作,其中的输入值代表图1的模拟输入电压。对8位ADC0804而言,它的输出准位共有28=256种,即它的分辨率是1/256,假设输入信号Vin为0~5V电压范围,则它最小输出电压是5V/256=0.01953V,这代表ADC0804所能转换的最小电压值。表4.1列出的是8~12位A/D转换器的分辨率和最小电压转换值。表4.1A/D转换器的分辨率和最小电压值位数目 分辨率 最小电压转换值8 1/256 0.01953V10 1/1024 0.00488V12 1/4096 0.00122V至于内部的转换频率fCK,是由图2的CLKR(19脚)、CLKIN(4脚)所连接的R()、C(150PF)来决定。图4.6ADC0804与CPLD&FPGA、8051单片机等典型连接图频率计算方式是:f=1/(1.1×R×C)。若以图4.6的R=10KΩ、C=150PF为例,则内部的转换频率是f=1/(1.1×10KΩ×150PF)=606KHz。更换不同的R、C值,会有不同的转换频率,而且频率愈高代表速度愈快。但是需要注意R、C的组合,务必使频率范围是在100KHz~1460KHz之间。要求ADC0804进行模拟/数字的转换,可以直接由下面的时序图及信号的流向来配合了解。以图4.6、图4.7信号流向而言,控制ADC0804动作的信号应该只有CS、WR、RD。其中INTR由高电位转为低电位后,代表ADC0804完成这次的模拟/数字转换,而DB0~DB7代表是转换后的数字资料。图4.7的动作大概可分成4个步骤区间——S0、S1、S2、S3,每个步骤区间的动作方式如下:步骤S0:CS=0、WR=0、RD=1(由CPLD发出信号要求ADC0804开始进行模拟/数字信号的转换)图4.7ADC0804控制信号时序图步骤S1:CS=1、WR=1、RD=1(ADC0804进行转换动作,转换完毕后INTR将高电位降至低电位,而转换时间>100us)步骤S2:CS=0、WR=1、RD=0(由CPLD发出信号以读取ADC0804的转换资料)。步骤S3:CS=1、WR=1、RD=1(由CPLD读取DB0~DB7上的数字转换资料)。由上述步骤说明,可以归纳出所要设计的CPLD动作功能有:负责在每个步骤送出所需的CS、WR、RD控制信号。在步骤S1时,监控INTR信号是否由低电位变高电位,如此以便了解ADC0804的转换动作结束与否。在步骤S3,读取转换的数字资料DB0~DB7。ADC0804的程序代码如下:ucharAdcRead(void){ucharSampleValue;ADC_CS=0;ADC_WR=0;//NOPADC_WR=1;//NOPADC_CS=1;ADC_CS=0;//_NOPADC_RD=0;//NOPSampleValue=DB;ADC_RD=1;//NOPADC_CS=1;returnSampleValue;}voiddata_pro(void){unsignedinttemp;floatRealVoltage;RealVoltage=ad_data*VREF;RealVoltage=RealVoltage/FULLSCALE;temp=(int)(RealVoltage*1000);press_bai=temp/1000;press_shi=(temp%1000)/100;press_ge=((temp%1000)%100)/10;press_dot=((temp%1000)%100)%10;}

第五章Proteus仿真软件介绍5.1仿真介绍Proteus软件是英国Labcenterelectronics公司出版的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等多种编译器。Proteus软件的功能模块有[11]:智能原理图设计、完善的电路仿真功能、单片机协同仿真功能、实用的PCB设计平台。5.2Proteus的ISIS介绍预览窗口(TheOverviewWindow):它具有两个功能:1、当你在元件列表中选择一个元件时,它会显示该元件的预览图;2、当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图,并会显示一个绿色的方框,你可用鼠标改变绿色的方框的位置,从而改变原理图的可视范围。原理图编辑窗口(TheEditingWindow):用来绘制原理图。蓝色方框内为可编辑区,元件要放到它里面。注意,这个窗口是没有滚动条的,你可通过预览窗口来改变原理图的可视范围,或shift+鼠标移动到窗口边框来实现滚动。菜单栏:File-文件操作:新建、打开、保存、打印等View-查看:控制界面元素的显示、放大、缩小等Edit-编辑:对象的查找、编辑、剪贴;操作的撤销恢复Library-库:元件的制作和元件库的管理Tools-工具:布线、电气检查、元件清单、电路板设计等工具Design-设计:设计图纸的标题和说明;父子电路的切换等Graph-图表Source-源程序Debug-调试System-系统Help--帮助工具栏:IsIs的除了通过菜单操作外,使用工具栏上的工具按钮操作更加便捷。包括以下几个工具栏:文件工具栏、视图工具栏(如图5.1)、编辑工具栏(如图5.2)、设计工具栏、模型选择工具栏(如图5.3)、方向工具、仿真工具(如图5.4)。前四个工具栏可以通过“View”菜单的“Toolbars”显示或关闭。各工具栏的位置可以通过拖动其左端适当调整。图5.1文件工具栏与视图工具栏图5.2编辑工具栏图5.3模型选择工具栏图5.4方向工具、仿真工具5.3利用Proteus绘制原理图原理图的绘制是否正确直接关系到硬件是否能够正常工作,利用Proteus软件绘制原理图非常方便且准确度很高。在Proteus中绘制原理图可以分为以下几个步骤:1.新建文件并设置图纸参数和相关信息。在开始电路设计之前,应根据电路图的复杂程度和具体要求确定所有设计模板,或直接设计图纸的尺寸、样式以及文件头等设计相关信息。2.放置元器件。根据需要元件库选择所需元件,然后从对象选择器中将用户选定的元器件放置到已建好的图纸上,并队对元器件在图纸上的位置进行调整,对元器件的名称、参数等进行设定。3.对原理图进行布线。该过程实际上是将事先放好的元器件用具有意义的导线、网络标号等连接起来,使元器件之间具有连接关系,构成一张完整的电路原理图。4.调整、检查和修改。在该过程中,应用ISIS提供的电气规则检查命令对前面所绘制的原理图进行检查,并根据系统所提供的错误报告修改电路图,调整原理图布局,以同时保证原理图的准确和美观。在Proteus的应用过程中一定要注意,鼠标使用规则,与传统方式不同,右键选择,左键编辑或移动。右键单击为选中对象,此时对象呈红色;再次右击以选中的对象,即可删除该对象;邮件拖拽可以框选一个块的对象;左键单击为放置或对选中的对象进行编辑;左键拖拽可移动对象。5.4Keil与Proteus的联调仿真Proteus与keil联调需要一个驱动程序为vdmagdi.exe,安装此驱动程序后,配置proteus软件,选择debug,再选择usedebugmonitor,使用本地IP。将系统中单片机属性对话框中的程序文件设定空,在工程工作区中选定target1,右击选择optionsfortarget‘target’,在弹出的对话框中选择debug中use打点选中,并在下拉框中选定proteusvsmsimulator,并改IP地址为本地IP,默认端口号,确认即可。完成以上配置再启动proteus和keil,即可实现联调。

第六章总结通过这次的毕业设计,使我对单片机及其应用有了更进一步的认识,不仅培养了我的独立思考能力和动手能力,而且对我以后的学习工作有着重要的启示作用。但我毕竟学习和掌握的知识并不全面,所以在设计过程中难免会出现一些错误,这次的毕业设计使我受益匪浅。第一、使我对51单片机的应用有了更深入的了解,对51单片机开发板有所了解,并且对压力传感器有了一定认识,通过对总体电路的设计,使我对分块电路和总体电路的关系的认识有了更加合理的认识,具备了设计较复杂电路的经验,这对我以后的工作和学习有着重要的意义。第二、通过本次毕业设计,使我学会了proteus和keil软件的应用,方便了以后的工作,重温了C语言这一重要工具,积累了系统程序设计的经验。第三、在本次毕业设计中,我遇到了许多问题和困难,但这是这些问题和困难锻炼了我的动手能力,使我明白在工作中遇到困难不应该回避,而应该迎难而上;不应该丧失信心,而应该镇定自若,沉着冷静,只有这样才能成功解决问题。

致谢四年的大学生活在即将这个明媚的季节划上一个句号,而于我的人生却只是一个逗号,我将又一次面对新的征程。四年的求学生涯在师长、亲友的大力支持下,走得辛苦却也收获匪浅,在论文即将付梓之际,思绪万千,心情久久不能平静。伟人、名人为我所崇拜,可是我更急切地要把我的敬意和赞美献给我的导师。我不是您最出色的学生,而您却是我最尊敬的老师。您治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。您使我不仅接受了全新的思想观念,而且领会了基本的思考方式,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我感到“山重水复疑无路,柳暗花明又一村”。感谢我的爸爸妈妈,是你们一直在背后默默的支持着我前进。焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、朋友给了我无言的帮助,在这里请接受我诚挚谢意!同时也感谢我的舍友为我提供良好的做毕业设计的环境。最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。

参考文献[1]李丽宏,谢克明.液位自动检测的现状与发展.太原理工大学学报,2001,7(04).pp:417—420.[2]赵建领,薛园园.51单片机开发与应用技术详解.北京:电子工业出版社,2009.pp:12—45.[3]林伸茂.8051单片机彻底研究:基础篇.北京:人民邮电出版社,2004.pp:64—90.[4]田希晖,薛亮儒.C51单片机技术教程.北京:人民邮电出版社,2007.pp:78—101.[5]刘同法,陈忠平,眭仁武.单片机基础与最小系统实践.北京:北京航空航天大学出版社,2007.pp:97—123.[6]黄成功,邵琼玲,丁东方.基于MPX4115的小型无人机气压高度测量系统设计.宇航计测技术,2009,8(04).pp:30—35.[7]陈良光,孔令海.使用ADC0804和8031实现11位A/D.自动化与仪表,1994(04).pp:46—48.[8]童诗白.模拟电子技术基础(第4版).北京:高等教育出版社,2010.pp:45—72.[9]姜志海,赵艳雷.单片机的C语言.北京:电子工业出版社,2008.pp:77—112.[10]王效东.按键消抖的软件处理新法.自动化与仪表,2000(02).pp:68—69.[11]李学礼.基于Proteus的8051单片机实例教程.北京:电子工业出版社,2008.pp:13—19.

附录1电路图

附录2程序#include<reg52.h>#include<intrins.h>#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint/*********LCD*********/#defineBUSY0x80#defineDATAPORTP0sbitLCM_RS=P1^0;sbitLCM_RW=P1^1;sbitLCM_EN=P1^2;/*********ADC0804********/sbitADC_CS=P3^5;sbitADC_RD=P3^6;sbitADC_WR=P3^7;#defineDBP2#defineVREF5#defineFULLSCALE256/********variable******/ucharad_data;sbitAlarm_led_red=P1^3;sbitAlarm_led_green=P1^4;sbitLed_chong=P3^3;sbitLed_fang=P3^2;charpress_data;unsignedcharad_alarm;unsignedcharpress_bai=0;unsignedcharpress_shi=0;unsignedcharpress_ge=0;unsignedcharpress_dot=0;ucharcodestr0[]={"Depth:(cm)"};ucharcodestr1[]={"DesignBYWang-Wei"};voiddelay(uint);voidlcd_wait(void);voiddelay_LCM(uint);voidinitLCM(void);voidlcd_wait(void);voidADWRiteCommandLCM(ucharWCLCM,ucharBusyC);voidADWRiteDataLCM(ucharWDLCM);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidDisplayListChar(ucharX,ucharY,ucharcode*DData);voiddisplay(void);voidalarm(void);voiddata_pro(void);ucharAdcRead(void);voidmain(void){delay(500);ad_data=0;initLCM();ADWRiteCommandLCM(0x01,1);DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);while(1){ad_data=AdcRead();alarm();data_pro();display();}}voiddelay(uintk){uinti,j;for(i=0;i<k;i++){for(j=0;j<60;j++){;}}}voidADWRiteCommandLCM(ucharWCLCM,ucharBusyC){if(BusyC)lcd_wait();DATAPORT=WCLCM;LCM_RS=0;LCM_RW=0;LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;}voidADWRiteDataLCM(ucharWDLCM){lcd_wait();DATAPORT=WDLCM;LCM_RS=1;LCM_RW=0;LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;}voidlcd_wait(void){DATAPORT=0xff;LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();_nop_();_nop_();while(DATAPORT&BUSY){LCM_EN=0;_nop_();_nop_();LCM_EN=1;_nop_();_nop_();}LCM_EN=0;}voidinitLCM(){ADWRiteCommandLCM(0x38,1);ADWRiteCommandLCM(0x0c,1);ADWRiteCommandLCM(0x06,1);ADWRiteCommandLCM(0x01,1);}voidDisplayOneChar(ucharX,ucharY,ucharDData){Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;ADWRiteCommandLCM(X,0);ADWRiteDataLCM(DData);}voidDisplayListChar(ucharX,ucharY,ucharcode*DData){ucharListLength=0;Y&=0x01;X&=0x0f;while(X<16){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}voiddisplay(void){ADWRiteCommandLCM(0x0c,1);DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(7,0,press_bai+0x30);DisplayOneChar(8,0,press_shi+0x30);DisplayOneChar(9,0,press_ge+0x30);DisplayOneChar(10,0,0x2e);DisplayOneChar(11,0,press_dot+0x30);delay(1000);}ucharAdcRead(void){ucharSampleValue;ADC_CS=0;ADC_WR=0;//NOPADC_WR=1;//NOPADC_CS=1;ADC_CS=0;//_NOPADC_RD=0;//NOPSampleValue=DB;ADC_RD=1;//NOPADC_CS=1;returnSampleValue;}voiddata_pro(void){unsignedinttemp;floatRealVoltage;RealVoltage=ad_data*VREF;RealVoltage=RealVoltage/FULLSCALE;temp=(int)(RealVoltage*1000);press_bai=temp/1000;press_shi=(temp%1000)/100;press_ge=((temp%1000)%100)/10;press_dot=((temp%1000)%100)%10;}voidalarm(void){if(ad_data>=243){Alarm_led_red=1;Led_fang=0;}else{Alarm_led_red=0;Led_fang=1;}if(ad_data<=14){Alarm_led_green=1;Led_chong=0;}else{Alarm_led_green=0;Led_chong=1;}}

附录3实物图基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究HYPERLINK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论