基于单片机的汽包液位检测与显示.doc_第1页
基于单片机的汽包液位检测与显示.doc_第2页
基于单片机的汽包液位检测与显示.doc_第3页
基于单片机的汽包液位检测与显示.doc_第4页
基于单片机的汽包液位检测与显示.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

大学本科生毕业设计(论文)基于单片机的汽包液位检测与显示摘 要本次设计是以煤气发生炉中汽包为背景的,煤气发生炉生成的水煤气作为燃料,具有解决冒黑烟,二氧化硫超标和燃油,天然气锅炉运行成本高的优点,在生产中具有重要作用,汽包是煤气发生炉的重要组成部分,汽包液位在正常范围内是设备正常运行的一项重要的工作指标和安全性能指标,所以液位的准确检测与显示就尤为重要。本文介绍了以液位传感器,A/D转换芯片ADC0809,以及MCS51单片机作为主控元件的液位检测系统的设计方法。本文分别从液位检测,A/D转换,LED显示,超限报警等几个方面对硬件电路进行了比较详细的介绍,然后对A/D转换程序,LED显示程序,超限报警程序等做了比较详细的阐述,并用流程图做进一步的解释。通过软件和硬件的联合调试,实现了在一定范围内对液位的调节,动态显示出液位结果,完全实现了任务书上的要求。关键词:液位检测、A/D转换、液位传感器目录第1章 绪论11.1应用环境简介 11.2本次课程设计的意 11.3 本次课程设计的任务 2第2章 硬件电路设计32.1 硬件电路工作原理 32.2 硬件电路设计 32.2.1 系统总体设计框图 32.2.2 核心部件的介绍 42.3 硬件电路各模块设计102.3.1 电源电路设计102.3.2 单片机最小系统电路设计102.3.3 显示电路设计112.3.4 液位传感器的接口电路设计122.3.5 AT89C51与ADC0809的接口电路设计132.3.6 报警电路设计142.4 硬件电路总结14第3章 软件设计 153.1 AT89C51的I/O口应用 153.1.1 P0口的信号输入 153.1.2 P1口的信号输入 163.1.3 P2口的信号输入 163.1.4 P3口的信号输入 163.2 软件模块设计173.2.1 主程序的设计173.2.2 A/D转换的设计183.2.3 显示子程序的设计203.2.4 报警子程序的设计223.3 软件设计总结24第4章 调试254.1 仿真电路调试 254.2软件程序调试264.3软件程序调试出现的问题及解决方法 27第5章 结论28参考文献 28附录 29第1章 绪 论 1.1 应用环境简介 此次课程设计是应用与煤气发生炉中汽包的液位检测与显示。煤气发生炉是为机械、冶金、建材、轻工、化工、耐材等行业热加工车间提供混合发生炉煤气的设备。煤气发生炉工作原理是以煤为原料生产煤气,供燃气设备使用的装置。固体原料煤从炉顶部加入,随煤气炉的运行向下移动,在与从炉底进入的气化剂(空气、蒸汽)逆流相遇的同时,受炉底燃料层高温气体加热,发生物理、化学反应,产生粗煤气。此粗煤气(即热煤气)经粗除尘后可直接供燃烧设备使用。汽包的概念是指气压通过水循环导致气压下降或上升,也可以理解为汽包是气体和水分融合后形成的气压变化,极限压力中的空气与水分子会提高气体的压力上升,导致高压达到一定数值后产生的压力集分子。工业中汽包罐是能够承受汽包产生的空气压力和水位压力的一种工业设备。汽包的作用主要有:1:是工质加热、蒸发、过热三过程的连接枢纽,保证锅炉正常的水循环;2:内部有汽水分离装置和连续排污装置,保证锅炉蒸汽品质;3:有一定水量,具有一定蓄热能力,缓和汽压的变化速度;4:汽包上有压力表、水位计、事故放水、安全阀等设备,保证锅炉安全运行。1.2 本次课程设计的意义本次设计是以煤气发生炉中汽包为背景的,煤气发生炉生成的水煤气作为燃料,具有解决冒黑烟,二氧化硫超标和燃油,天然气锅炉运行成本高的优点,在生产中具有重要作用,汽包是煤气发生炉的重要组成部分,汽包液位在正常范围内是设备正常运行的一项重要的工作指标和安全性能指标,所以液位的准确检测与显示就尤为重要。1.3 本次课程设计的任务以煤气发生炉汽包水位控制为背景,利用单片机技术实现对汽包水位的采集与显示。具体要求如下:1. 掌握计算机控制系统中模拟量输入通道的的设计方法,以及程序设计方法。2. 选择合适的液位传感器,量程为01.2m,要求测量精度不超过1%。3. 掌握常用接口芯片的工作原理与接口设计。4. 选用MCS-51单片机,完成对汽包水位的定时采样和处理,并通过LED电路显示。5. 绘制硬件系统原理和软件程序流程图,并编写用户程序。6. 撰写课程设计报告一份,要求字数3000-5000字。第2章 硬件电路设计2.1 硬件电路工作原理该系统以AT89C51作为核心控制部件,外加传感器,一片A/D转换芯片和数码管来完成系统的预期任务,即液位的检测、显示和超限报警。传感器实现液位信号到电压信号的转换,再由8位A/D转换芯片ADC0809将模拟信号转换为数字信号,实现液位信息的输入,AT89C51从ADC0809读取液位信息后进行数据处理和超限判断,随后将处理过的数据输出到数码管显示,设置最高液位和最低液位,若液位超限则由单片机报警。2.2 硬件电路设计2.2.1 系统总体设计框图图21 系统总体设计框图各部分功能:1. 电源部分提供+5V电压供系统各部分使用。2. 传感器实现液位信息到电压信号的转换。3. ADC0809将传感器输出的电压信号经A/D转换后送到单片机。4. MCS51为处理器,实现液位信息的接收、数据处理、和输出到数码管。5. 蜂鸣器部分在单片机检测到液位超限是由单片机驱动LED灯亮灭报警。6. 单片机对液位数据处理后输出,数码管显示。2.2.2 核心芯片的介绍(1)单片机AT89C51MCS-51单片机是在一块芯片中集成了CPU,RAM,ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件。MCS-51单片机内包含下列几个部件: 一个8位CPU; 一个片内振荡器及时钟电路; 4K字节ROM程序存储器; 128字节RAM数据存储器; 两个16位定时器/计数器; 可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路; 32条可编程的I/O线(四个8位并行I/O端口); 一个可编程全双工串行口; 具有五个中断源、两个优先级嵌套中断结构。振荡器及定时电路8051CPU4K字节ROM128字节RAM2个16位定时器/计数器64K总线扩展控制可编程I/O可编程串行串行口频率基准源 计数器 中断 控制 并行 I/O 口 串行输入 串行输出 图2-2 8051单片机框图(2)A/D转换器ADC0809A/D转换芯片ADC0809为8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100s左右。1 ADC0809的内部结构:图23 ADC0809的内部逻辑结构图图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,图24 ADC0809的通道选择表 图25 ADC0809引脚图2 ADC0809功能介绍:分辨率为8位;最大不可调误差小于+_1LSB;单一+5V供电,模拟输入范围05V;具有锁存控制的8路模拟开关;可锁存三态输出,输出与TTL兼容;功耗为15mw;不必进行零点和满度调整;转换速度取决芯片的始终频率,它的时钟为10kHZ1.2MHZ.当时钟为500KHZ,转换速度为100us。3 ADC0809的原理ADC0809是一款8位AD转换器,数据获取的关键部分是它的8位模/数转换器。这个部分主要由N位逐次逼近寄存器SAR,D/A转换器,比较器,置数选择电路组成。转换过程如下:A选选置数电路置SAR的最高位为“1”,其余位为“0”,经D/A转换器转换成的模拟电压Uo与输入模拟电压Ui在电压比较器进行比较,若Ui大于等于Uo,则保留最高位“1”,若Ui小于Uo,则最高位为“0”。B置次高位为“1”,低位全为“0”,按上述步骤进行转换,比较,判断。C重复此过程,直到确定SAR的最低位的值取“1”,还是“0”为止。此时,SAR内容就是对应的输入模拟电压转换后的数字量。(3)液压传感器常用基本的液位传感器原理,分为差压式水位计,电极式水位计和电容式液压传感器1.差压式水位计根据液体静力学原理,通过测量变动水位和恒定水位之间的静压差,将差压值转换为水位值,再通过差压变送器将汽包水位转换为随水位连续变化的电信号,作为自动给水控制系统中的重要参数。实际应用中差压式水位计存在的问题是:测量锅炉汽包水位时,汽包压力变化使得“水位差压”的关系也发生变化,因而给测量带来很大的误差。现在普遍采用具有汽包压力补偿作用的平衡容器测量方法,但其准确度仍受到很大限制。因为设计计算的平衡容器补偿装置是按水位处于零水位情况下得出的,而运行中锅炉水位偏离零水位时,就会引起测量误差。当蒸汽压力突然下降时,正压容器内的凝结水被蒸发掉还会导致仪表指示失常。这些都给锅炉运行操作造成很大困难,尤其投入自动给水调节时将产生错误动作,导致锅炉事故发生。差压式水位计比较适合于锅炉稳定运行时的水位测量,当运行参数变化很大时误差也就很大。因此在实际运行中尽量避免在差压测量系统上工作( 例如排污、校验时等) 。如必须工作时,须与锅炉操作人员联系好,尽量减少对差压测量的影响,例如,在2号窑余热锅炉运行初期,曾因在差压水位计的平衡容器上拆除保温引起汽包水位指示错误产生了锅炉事故( 因未与锅炉运行人员事先联系,自动给水系统未解除) 。2.电极式水位计利用饱和蒸汽与饱和蒸汽凝结水的电导率的差异,将非电量的锅炉水位变化转换为电信号,并由二次仪表远距离地显示水位。电极式水位计基本上克服了汽包压力变化的影响,可用于锅炉启停及变参数运行中。电极式水位计离汽包很近,电极至二次仪表全部是电气信号传递,所以这种仪表不仅迟延小而且误差小,不需要进行误差计算与调整,使得仪表的检修与校验大为简化。3.电容式液压传感器图3-1-2 为传感器部分的结构原理图。它主要是由细长的不锈钢管(半径为R1 ) 、同轴绝缘导线(半径为R0 ) 以及其被测液体共同构成的金属圆柱形电容器构成。该传感器主要利用其两电极的覆盖面积随被测液体液位的变化而变化, 从而引起对应电容量变化的关系进行液位测量 图2-6由图2-6可知, 当可测量液位H = 0 时, 不锈钢管与同轴绝缘导线构成的金属圆柱形电容器之间存在电容C0 , 根据文献得到电容量为: (1)(1)式中, C0 为电容量, 单位为F ; 0 为容器内气体的等效介电常数,单位为F/ m; L 为液位最大高度; R1 为不锈钢管半径;R0 为绝缘导线半径, 单位为m。当可测量液位为H 时, 不锈钢管与同轴绝缘电线之间存在电容CH : (2)(2)式中, 为容器内液体的等效介电常数, 单位为F/ m。因此, 当传感器内液位由零增加到H 时, 其电容的变化量C 可由式(1) 和式(2) 得 (3)由式(3)式可知, 参数0 , , R1 , R0 都是定值。所以电容的变化量C 与液位变化量H 呈近似线性关系。因为参数0 , , R1 , R0 , L 都是定值, 由式(2) 变形可得:CH = a0 + b0 H ( a0 和b0 为常数) (4)。可见, 传感器的电容量值CH 的大小与电容器浸入液体的深度H 成线性关系。由此, 只要测出电容值便能计算出水位。我们这次选择电容式液压传感器为CR-603系列智能电容式锅炉汽包液位计,是基于电容测量原理的液位计。它采用断层扫描技术,通过测量分析桶内的液态,气态介质的介电常数,补偿温度、压力等变化带来的影响。经过微处理器运算处理后输出符合工业标准的4-20mA电流信号,也可输出RS485数字信号供给使用。液位计在运行过程中实时动态补偿,将温度、压力变化等因素减少到最小,长期稳定性好,是一款全工况,高性价比的汽包液位计。技术特点:1、两线制电流环; 2、具有全工况条件( 锅炉启、停、排污、工况等)下液位准确连续测控功能;3、采取断层扫描技术,能够对液态、汽态介质的介电常数变化连续测量补偿;4、长期稳定性好;5、经C E 认证的良好的电磁兼容特性;6、耐高温、高压、长寿命;CR-6031技术指标工作电压: 最大:28V 最小:20V输出电压:05V(0.5%)防爆参数:Ui=30V,Ii=100mA ,Pi=0.75W Ci=100pF,Li=10uH工作压力:22MPa max测量范围:1500mm 测量周期:0.5秒 介质温度:500 max. 防护等级: IP652.3 硬件电路各模块设计2.3.1 电源电路设计图27 电源电路本系统供电为市电AC220v,经变压器TR1降为交流6v,经整流桥堆BR1整流后得到脉动直流电压6v,再经三端稳压器LM7805得到VCC(+5v) ,其中电解电容C4、C6、起滤波作用,C5、C7是旁路电容,起抑制干扰的作用。2.3.2 单片机最小系统电路设计图28 单片机最小系统电路RST:复位输入。在单片机工作期间,当此引脚上出现连接2个机器周期的高电平时可实现复位操作。复位电路除了具有上电复位功能外,还可通过复位键迫使RESET为高电平。当系统通电时,RESET引脚获得高电平,随着电容的充电,RESET引脚的高电平将逐渐下降。RESET的高电平只有保持足够的时间(2个机械周期),单片机才可以进行复位操作 。时钟电路采用12MHz的晶振,因为ADC0809的工作时钟最高允许值为12MHz,单片机ALE管脚2分频后为500KHz,可以作为ADC0809转换器的时钟信号CLK。XTAL1:反向放大振荡器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。XTAL1脚是内部反相放大器的输入端,而XTAL2脚是该放大器的输出端。在晶体振荡中,晶体工作于基本响应模式,它作为一个感抗与外部电容形成并联谐振,使正反馈放大器维持震荡。所选电容为瓷片电容22PF,因为22PF对于工作于1MHZ以上的晶振都能获得良好的效果。2.3.3 显示电路设计图29 显示电路本设计由P1口控制七段发光二极管亮或灭,使用共阴极8段数码管,由图2.9可知,要使七段显示器的某一段亮,则应该是与该段相连的段选寄存器即P1口的某位线输出为1。若使某段熄灭,则必须输出0。例如要显示数字4。则应使P1口的P1.7-P1.0输出为11100110B,若用一个字节表示该输出值,即字形代码为66H,依此类推,可以得到09一共10个十进制数的字形代码依次为3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。本设计由P2.0,P2.1,P2.2,P2.3做位选,以控制哪一位七段数码管显示,例如,要求第一位数码管显示,则应设置P2.0为“1”,P2.1,P2.2,P2.3为“0”。PNP型三极管9012起到增加驱动电流的目的。电阻R12R19控制通过数码管的电流,R20R23控制通过三极管9012的电流,R4R11为单片机P1口的上拉电阻。2.3.4 液位传感器的接口电路设计图210 电位器RV1与ADC0809接口设计所选液位传感器能够根据不同的液位产生不同的电压,电压值大小范围为0.54.5V,且能够便于远距离传输。由于芯片ADC0809的输入为05V的电压,仿真时需要将输入信号转换为电压信号,为此外接一电位器R=1k,把电压转换成05V电压。在设计中,把电位器的1,3脚接+5V电压和地线,调节滑钮2能够很好的得到05V电压,因此可以用电位器模拟液位传感器。2.3.5 AT89C51与ADC0809的接口电路设计图211 AT89C51与ADC0809的接口电路ADC0809与AT89C51相连接,ADC0809中的START与ALE相连通,ALE地址锁存允许信号,对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。当ALE上升沿时,ALE锁存数据,A/D转换截止,当ALE下降沿时,START低电平,ALE低电平,不锁存,A/D转换开始。P2.4,P2.5,P2.6,P2.7分别控制CLK,START和ALE,EOC,OE信号,其控制A/D转换的开始和截止。CLK使用AT89C51内部时钟信号。ADDA,ADDB,ADDC相连通接地,信号输入为000,表示输入通道选择为IN0口。8位数据信号线2-12-8与单片机的P1.0P1.7相连,实现ADC0809与AT89C51的数据传输。Vref参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=0V)。2.3.6 报警电路设计图212 报警电路本电路的P3.0,P3.1作为高位和低位的报警控制线,通过设置高低液位报警线来实现报警功能。如果当前液位高于设置的高位报警线时,P3.0置低电平,高位报警灯亮。如果当前液位低于于设置的低位报警线时,P3.1置低电平,低位报警灯亮。如果当前液位低于设置的高位液位且高于低位液位时,高位报警灯和低位报警灯灭。2.4 硬件电路总结在本章中主要讲述了硬件电路的结构,电路原理和部分芯片的功能,根据电路组成情况分成六个电路模块,分别介绍了各个电路模块的工作原理和功能,通过本次设计掌握了更多的基本硬件电路设计原理及其工作特点。并自行绘制电路原理图: 图213 电路原理图第3章 软件设计3.1 AT89C51的I/O口应用AT89C51共有P0,P1,P2,P3,4个8位的并行双向I/O口。各个I/O口实现不同的功能,详细情况如下。3.1.1 P0口的信号输入在程序中将P0口做为段选口使用,显示十位数字的段选信号,下例为显示十位数字的指令:MOV DPTR,#TABLE ;取段码表首址。MOV A,LED_2 ;取显示的十位数字。MOVC A,A+DPTR ;取段码。MOV P0,A ;输出段码的显示。TABLE: DB 3FH,06H,5BH,4FH,66H ;共阴极数码管表DB 6DH,7DH,07H,7FH,6FH3.1.2 P1口的信号输入在程序中将P0口作为输入口,用来读A/D转换值。设计中,要求选通通道0,并把转化后得到数字量存入内部RAM的35H单元中,下例为把转化后的数字量存入内部RAM中的指令:CLR P2.5, ;SRART置0,MOV A,P1 ;MOV R7,AMOV 35H,R73.1.3 P2口的信号输入P2.0,P2.1,P2.2,P2.3做数码管的位选信号用,要哪个数码管亮,则置相应位高电平,就可将其选中。例如要求显示第一个数码管,端口设置指令为:CLR P2.0CLR P2.1CLR P2.2CLR P2.3P2.4,P2.5,P2.6,P2.7作为通用I/O口使用,与ADC0809连接。P2.4作为A/D转换的CLK信号,P2.5作为开始A/D转换的启动信号,P2.6作为查询A/D转换是否完成的判断信号,P2.7作为输出A/D转换的数字量允许信号。下例为P2.4,P2.5,P2.6,P2.7作为通用I/O口使用的指令:CLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.73.1.4 P3口的信号输入P3.0、P3.1、P3.7作为通用I/O口使用,与LED灯和蜂鸣器相连,输出报警信号,如果当前液位高于设置的高位报警线时,P3.0置低电平,高位报警灯亮。如果当前液位低于于设置的低位报警线时,P3.1置低电平,低位报警灯亮。如果当前液位低于设置的高位液位且高于低位液位时,高位报警灯和低位报警灯灭。H_ALM BIT P3.0L_ALM BIT P3.1LALM: CLR L_ALM ;低位报警 SETB TR1 CLR FLAG LJMP PROCHALM: CLR H_ALM ;高位报警 SETB TR1 SETB FLAG LJMP PROC3.2 软件模块设计3.2.1 主程序的设计系统分为初始化,A/D转换,十进制转换,LED显示,电机控制和报警电路。因此整个程序需要包含上述六个子程序。其中,LED_0 定义地址30H,以存放显示十进制的小数点后十位数字。LED_1 定义地址31H,以存放显示十进制的小数点后个位数字。LED_2 定义地址32H,以存放显示十进制的个位数字。ADC 定义地址35H,以存放经A/D转换后的数字。流程图如下:图31 主程序流程图3.2.2 A/D转换的设计ADC0809芯片实现A/D转换的时间为0.1ms左右,A/D转换后得到的数字量应及时传送到单片机进行处理。OE输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。ALE地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。本信号有时简写为ST。CLK时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号。EOC转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。CLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7CLR STSETB STCLR ST ;启动转换JNB EOC,$ ;等待输出结果SETB OE ;允许输出MOV ADC,P1 ;读取A/D转换结果CLR OE ;关闭输出MOV A,ADC ;将A/D转换结果转换成BCD码图32 A/D转换程序流程图3.2.3 显示子程序的设计设计中采用动态扫描法,实现四位数码管的数值显示,并显示小数点。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低通过逐次选通P2.0,P2.1 ,P2.2,P2.3依次送十进制的相应字段码给P1口,并延时5ms完成显示。显示程序:MOV LED_0,#00HMOV LED_1,#00HMOV LED_2,#00HMOV LED_3,#00HMOV DPTR,#TABLE ;送段码表首地址DISP: MOV A,LED_2 MOVC A,A+DPTRORL A,#80H ;显示小数点 MOV BUFFER+2,A ;送显示缓存 CLR P2.1 MOV P0,A LCALL DELAY SETB P2.1SETB P2.0 MOV A,LED_1 MOVC A,A+DPTR CLR P2.0 MOV P0,A LCALL DELAY RETDELAY: MOV R6,#10 ;延时5ms图33 显示子程序流程图3.2.4 报警子程序的设计本电路的P3.0,P3.1作为高位和低位的报警控制线,通过设置高低液位报警线来实现报警功能。本设计要求为:液位在小于1.5米时低位报警灯亮进行低位报警,液位在1.54米时灯都不亮,液位在大于4米时高位报警灯亮进行高位报警。报警程序:MOV H_TEMP,#153 ;204/255=0.6 高于80%报警MOV L_TEMP,#77 ;77/255=0.3 低于30%报警MOV A,ADC ;将A/D转换结果转换成BCD码 SUBB A,L_TEMP ;判断是否低于下限 JC LALM MOV A,H_TEMP MOV R0,ADC SUBB A,R0 ;判断是否高于上限 JC HALM CLR TR1 LJMP PROCLALM: CLR L_ALM ;低位报警 SETB TR1 CLR FLAG LJMP PROCHALM: CLR H_ALM ;高位报警 SETB TR1 SETB FLAG LJMP PROC图34 报警子程序流程图3.3 软件设计总结在本章中主要讲述了软件设计的一些情况,对软件的一些功能进行了解释,根据程序组成情况分成六个程序模块,分别介绍了各个程序模块的工作原理和功能,对部分程序进行了简单的注释,通过流程图直观的表现出各个模块的作用及程序运行过程。在本次的软件设计中,运用Keil进行编程,将编辑好的程序进行编译,查看是否语法错误,如果没有错误,设置晶振频率,编译生成.Hex文件,进行仿真。在此过程中,我收益良多,熟悉了单片机汇编语言的使用,对单片机的编程有了进一步的理解,通过和同学的交流,学会了很多以前自己不能解决的问题。第4章 调 试4.1 仿真电路调试在仿真程序中通过模块编程,用Proteus软件与Keil软件相结合进行调试,(调试程序见附录I)1建立工程文件1)点击菜单project,选择new project:2)然后选择要保存的路径,输入工程文件的名字,比如保存到论文目录里,工程文件的名字为yang.uv2.3)这时会弹出一个对话框,选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有要求你的51核的单片机,这里选AT89S51。这时要新建一个源程序文件,建立一个汇编文件,输入编写好的程序。保存。选择要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,这里有汇编语言,文件名为:yang.asm。2. 调试程序(1)点击Target 1前面的+号,展开里面的内容source Group1:(2)用右键点击Sourece Group 1(注意用鼠标的右键,而不是左键),将弹出一个菜单,选择Add Files to GuoupSource Group 1.(3)选择刚才的文件yang.asm.这时在source group 1 里就有yang.asm文件(4)单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5)。硬件仿真原理图如下图图41 仿真原理图3. 仿真结果通过改变电位器阻值的变化来模拟液位的变化,液位数值在数码管上显示,液位在小于1.5米时低位报警灯报警,液位在1.5米到4.0米时不报警,液位大于4.0米时高位报警灯报警。芯片ADC0809的转换精度为1/256,所以本电路的最小分辨率为0.05V。4.2 软件程序调试本设计调试程序使用的是Keil编译软件和Proteus仿真软件。先将编辑好的程序进行编译,检查程序是否有语法上的错误。在编译、连接无错误和警告后,把程序进行分块调试。然后用单步调试的方法进行检查寄存器中的内容是否与预期结果一致。例如:显示部分,在调试中,可以用相关窗口查看相应寄存器的内容,35H单元存放采样值,30H,31H,32H,33H单元内容则为其转换值,再对比显示的数据就可以知道是否正确。运行编译生成.hex文件,然后在Proteus中加入.hex文件,进行仿真,查看显示是否正确,能否达到要求。进行单步调试,查看硬件电路的电平是否和预期结果一致。用STC_ISP_V3.1软件将.hex文件烧写进单片机中,与硬件相连接。通电后,用万用表检查电路的电压是否与仿真图中的电压一致,用仿真结果验证硬件电路是否正确。4.3 软件程序调试出现的问题及解决方法1在仿真时,ADC0809不能进行仿真。解决方法:在仿真时使用Proteus软件,芯片ADC0809不能进行仿真,系统提示是没有模型,于是仿真时采用ADC0808芯片进行。由于ADC0809与ADC0808的区别在于:ADC0808的输出数据线D0D7是从高位依次到低位,ADC0809的输出数据线D0D7是从低位依次到高位。于是采用ADC0808进行仿真,ADC0809用在实物电路上。2在Keil中编辑程序时,程序出现有错误,其不能运行。解决方法:在Keil中运行后双击出现的错误,错误行被指出来,根据程序的上下文,改正出现的错误。由于在程序中START后少添加了“:”,使得程序不能运行,改正后程序运行正常。第5章 结 论在本次毕业设计中完成了电路原理图设计,PCB板设计,电路焊接,程序的设计,软、硬件的联机调试。硬件电路的各个模块,包括单片机最小系统电路,A/D转换电路,数码管显示电路,报警电路等都能够正常工作。在与软件进行联机调试时,通过改变电位器阻值的变化来模拟液位的变化,液位数值在数码管上显示,液位在小于1.5米时低位报警灯报警,液位在1.5米到4.0米时不报警,液位大于4.0米时高位报警灯报警。芯片ADC0809的转换精度为1/256,所以本电路的最小分辨率为1/256V。本次毕业设计完成了任务书下达的所有任务,实现了液位的检测及液位的显示,并实现了超限报警。显示液位范围为05m,显示的最小分辨率为1/256V。它是一个可以应用于一般工业的液位检测及显示系统的设计方案,测量范围和测量精度满足课程设计需要。 参考文献【1】 王再英等,过程控制与仪表,机械工业出版社,2006【2】 潘新民,王燕芳,微型计算机控制技术,高等教育出版社,2001【3】 李建忠,单片机原理及应用,西安电子科技大学出版社,2008【4】 杨居义,单片机课程设计指导,清华大学出版社,2009【5】 王锦标,方崇智,过程计算机控制,清华大学出版社,1992附录2:参考程序LED_0 EQU 30HLED_1 EQU 31HLED_2 EQU 32HLED_3 EQU 33HBUFFER EQU 34H ;显示缓存ADC EQU 35HTCNTA EQU 36HTCNTB EQU 37HH_TEMP EQU 38H ;液位上限L_TEMP EQU 39H ;液位下限FLAG BIT 00HH_ALM BIT P3.0L_ALM BIT P3.1SOUND BIT P3.7CLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 1BH LJMP INT_T1START: MOV LED_0,#00H MOV LED_1,#00H MOV LED_2,#0

温馨提示

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

最新文档

评论

0/150

提交评论