




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 设 计 论 文题 目: 智能水位控制器的设计 学 院: 电气与信息工程学院 专 业: 电气工程及其自动化 姓 名: 学 号: 指导老师: 完成时间: 2013-5-20 III河南城建学院毕业设计(论文) 摘要摘 要水资源紧缺已经引起全社会的关注。如何节约用水、有计划地用水已成为电子工作者设计供水系统时必须考虑的问题。自动化控制供水不失为一种行之有效的方法。以往的水位控制多采用老式的浮球装置,会有很大的误差和弊端。而智能水位控制器是近年来开发的一项新技术,它是传感器、硬件、软件等几项技术紧密结合的产物,它的作用是观测和控制容器内的介质多少量,通过液面的高度来掌握体积的多少,从而达到防止超量或空装一级可以掌握存液数量的目的,可用于很多地方进行工业及民用生活控制。该方法采用单片机来对传感器的信号进行处理,输出控制信号,配合外部硬件电路,用晶体管驱动直流继电器,再控制交流接触器来完成对水泵开启、关闭,设计可以根据缺水多少的不同情况智能化地启动不同数量的水泵,即缺水少时少量水泵工作,缺水多时多台水泵同时工作,及时补充水量。这样就可以智能化的自动控制水位的高低,这在生活中将大大节省了人力、物力,是有其开发价值的。关键词:单片机,传感器,晶体管,直流继电器AbstractThe shortage of water resources has caused the concern of the whole society. How to save water, there are plans to water has become a must be considered in design of water supply system of electronic workers problems. Automatic control of water supply is a kind of effective method. Water level control usually adopts a floating ball device old-fashioned, there will be errors and defects of great. Intelligent water level controller is a new technology developed in recent years, it is the combination of sensor, hardware, software and other technology closely, it is the role of observation and control of the medium in the vessel volume, grasps the volume through the height of the liquid level, so as to prevent excessive or empty loading level can master the liquid storage quantity, can be used for many places for industrial and civil life control.The method adopts the singlechip to signal of the sensor for processing, output control signal, with the external hardware circuit, DC relay drive transistor, to control AC contactor to the completion of the pump opening and closing, design can according to the different situation of the intelligent water how to start a different number of water pump, the less water when a small amount of water pump for a long time, water pumps to work at the same time, timely replenishment of water. It can automatically control the water level intelligent level, in this life will greatly save manpower, material resources, is the development value.Keywords: single chip microcomputer, sensor, transistor, DC relayII河南城建学院毕业设计(论文) 目录目 录摘 要IAbstractII第1章 绪 论11.1选题的目的及意义11.2国内外智能水位控制器的现状和发展趋势11.3 本课题所完成的任务2第2章 系统概述42.1 系统总体方案42.2 系统的工作原理6第3章 系统硬件设计83.1水位信号检测电路的设计83.2 控制信号输出电路的设计103.3 水泵启停控制电路的设计113.4 故障报警电路的设计123.5 数码管显示电路的设计13第4章 系统软件设计144.1 主程序流程图设计144.2 子程序设计154.3 源程序清单17第5章 系统的仿真及结果205.1 程序编译205.1.1 工程的建立205.1.2 工程的详细设置225.1.3 程序编译255.2 硬件仿真255.3 仿真结果275.3.1 水位高于电极C时的仿真285.3.2 水位位于电极C和B之间时的仿真结果285.3.3 水位位于电极A和B之间时的仿真结果295.3.4 故障报警时的仿真结果30第6章 结论与展望326.1 结论326.2 展望34致 谢36参 考 文 献37附录A:电气原理图38附录B:仿真原理图39III河南城建学院毕业设计(论文) 第一章 绪论第1章 绪 论1.1选题的目的及意义随着社会的发展,我国的人群密度越来越大,如何向一个密集人群供水已成为众多电子工作者设计考虑的目的。很多供水系统采用二级供水方案,即先用潜水泵提取井水到蓄水池,再用变频系统把水源送出。这就要求蓄水池的水位必须保持在一定高度,还得防止溢水。为此大家想过很多方法,如浮球干簧管开关电路、水漂式上下水位控制开关电路和只有能控制一路水泵的控制器。这些装置容易产生接触不良、不易控制多级水位、不易远距离观察到水位指示状态等现象。本次设计采用单片机来对传感器的信号进行处理,输出控制信号,配合外部硬件电路,用晶体管驱动直流继电器,再控制交流接触器来完成对水泵开启、关闭,设计可以根据缺水多少的不同情况智能化地启动不同数量的水泵,即缺水少时少量水泵工作,缺水多时多台水泵同时工作,及时补充水量。以实现节约用水、智能供水的目标。通过毕业设计,目的是使学生对在单片机控制方面具备一定的设计和分析的能力。培养学生综合运用所学各科知识,独立分析和解决实际工程问题的能力、查询资料的能力。熟悉相关规程和规范,树立工程的观点。为今后从事电气方面的工作打下良好基础。1.2国内外智能水位控制器的现状和发展趋势不论从古到今,水在人们的正常生活和生产中始终如一的起着至关重要、无可取代的作用。一旦断了水,轻则给人们的生活带来极大的不方便,重则可能造成严重的生产事故及损失,因而满足及时、准确、安全、充足的供水成为人们对供水系统提出的新要求。水塔水位控制系统是我国住宅小区广泛应用的供水系统,这种供水系统大多采用二级供水方案,即先用潜水泵提取井水到蓄水池,再用变频系统把水源送出。这就要求蓄水池的水位保持一定的高度,还得防止溢水。在我国广大农村地区的家庭用户,时常会采用人工控制的抽水机抽水的方式进行供水。这些传统的控制方式劳动强度大、工作效率低、能耗大且控制精度低,并且安全性难以保障。中国容器水位控制器产业专题调查分析报告中指出中国容器水位控制器市场分析报告立足于容器水位控制器市场发展现状分析,通过对容器水位控制器行业环境、容器水位控制器产业链、容器水位控制器市场供需、容器水位控制器价格、容器水位控制器生产企业的详尽分析,以使企业和投资者达到对容器水位控制器产品市场发展现状的全面、深入掌握;同时为使企业和投资者把握容器水位控制器未来的市场发展趋势,单位还对容器水位控制器行业未来发展趋势和市场前景进行科学、严谨的分析与预测;另外在投资分析部分,针对企业投资决策依据进行了重点分析,并综合给出投资建议。随着工业生产日趋自动化, 对液位检测技术的要求也越来越高。为解决生产中的测量问题, 一方面是采用新的测量原理, 开发新的液位检测仪表, 扩大检测的手段, 另一方面需朝着实现微机化和智能化的方向发展。近年来, 微电子技术的发展使得液位检测技术发生了根本性变化。新的检测原理与电子部件的应用使得液位计更趋向小型化和微型化, 特别是一些小型现场液位开关发展极快, 如光纤液位计, 由于没有可动部件, 所以可靠性高, 不仅可现场显示, 而且可以发出控制信号。与此同时, 液位检测也正向着智能化方向发展, 在液位测量领域内广泛应用微处理技术, 以实现故障诊断和报警功能, 提高测量的精确度、可靠性、安全性和多功能化。在应用和设计液位计时尽量实现不接触式或不渗透式测量, 从而提高探头对恶劣环境的抵抗能力, 以便在恶劣环境下准确、可靠地工作。目前国内外水位器的种类很多,有雷达水位器、磁性浮子水位器、石英管水位器、智能雷达水位器、彩色石英管水位器和超声波水位器等等。而生产水位器的公司有美国罗斯蒙特ROSEMOUNT、德国E+H、日本横河YOKOGAWA、德国西门子SIEMENS、瑞士ABB、德国VEGA 。这些只是常用而较热门的品牌。1.3 本课题所完成的任务近几十年来,自动控制技术迅猛发展,在工农业生产、交通运输、国防建设、航空航天事业等领域中获得广泛的应用。随着生产和科学技术的发展,自动控制技术至今已经渗透到各种科学领域。比如在人们日常生活中的温度调节、湿度调节、自动洗衣机、自动售货机、自动电梯、空气调节器、电冰箱、自动路灯、自动门、保安系统等方面,自动控制技术得到大量应用;在工业领域中,气体、液体、粉体、石油化工制药、轻工食品、建材等行业需要对温度、压力、物位、流量、成分等参数进行控制,这些控制系统都无一例外地应用自动控制技术。自动控制技术已成为促进当今生产发展和科学技术进步的重要因素。本课题就是在充分分析了智能水位控制系统在国内外发展的现状和发展趋势的基础上,查阅信号处理技术、单片机原理与接口技术、单片机外围器件实用手册等相关知识,针对单片机控制系统在人们日常生产生活领域的一些应用,设计出一个比较完整的基于单片机控制的智能水位控制系统,已达到自动、高效、及时、准确、安全供水的目的。该智能水位控制系统用AT89C51单片机作为控制器;外加电机驱动电路、水位检测信号输入电路、电源电路、故障报警电路等组成系统硬件电路。在软件设计上采用汇编语言编程实现对实际水位的判断以及控制相应的水泵启停。设计可以根据缺水多少的不同情况智能化地启动不同数量的水泵,即缺水少时一台水泵工作,缺水多时两台水泵同时工作,及时补充水量。以实现节约用水、智能供水的目标。43河南城建学院毕业设计(论文) 第二章 智能水位控制器设计方案第2章 系统概述目前国内在水位控制器领域有很多的研究和发展,包括浮球式机械控制器、基于PLC的水位控制器,基于单片机的水位控制器等等。而且仅从水位监测这一部分就可以有很多种的信息采集方式,其中就包括由光敏二极管、压力传感器、光敏电阻等制成的水位液位检测传感器。因此为了使本次设计更加的经济合理,并且能突显我们学科的优越性,我要从综合各方面的考虑来选择具体的设计方案。2.1 系统总体方案现代控制理论本质上是时域法,是建立在状态空间基础上的,它不用传递函数, 而是用状态向量方程作基本工具,从而大大简化了数学表达方式,因此原则上可以分析多输入多输出、非线形以及时变系统。自动控制技术的应用,推动了控制理论的发展,而自动控制理论的发展,又指导了控制技术的应用,使其进一步完善,随着科学技术的发展,自动控制技术和理论已经广泛的应用于科技、冶金、石油、化工、电子、电力、航空、航海、航天、核反应堆等各个学科领域。近年来,控制科学的范围还扩展到生物、医学、环境、经济管理和其它许多社会领域,并为各个学科之间的相互渗透起了促进作用,可以毫不夸张的讲,自动控制技术和理论已经成为现代化社会的不可缺少的组成部分。自动控制技术的应用不仅使生产过程自动化,从而提高生产率和产品质量,降低成本,提高经济效益,改善劳动条件,而且在探索新能源,发展空间技术和创造社会文明等方面都具有十分重要的意义。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。因此单片机的学习、开发与应用在当今社会变的十分重要。单片机主要有如下特点:1有优异的性价比2集成度高、体积小、有很高的可靠性3控制功能强4单片机的系统扩展、系统配置较典范、规范,非常容易构成各种规模的应用系统。相比较PLC,单片机更加的灵活经济。因此,选择以单片机为核心控制的水位控制器符合当今社会的发展。这次设计选择的单片机AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2.1 AT89C51P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。2.2 系统的工作原理 首先通过水箱内的电极式接触式传感器测出水箱的实际水位,并将信号传输至单片机,由单片机读取检测到的水位信号来执行相应的输出,并向外部硬件发出相对应的动作指令。当单片机读取到水位信号低于B电极时,即水比较少的时候,单片机将向两台水泵发出指令,这时将用两台水泵同时供水;当单片机读取到水位信号高于B电极而低于A电极时,缺水不多的时候,单片机只向第一台水泵发出信号,而另一台水泵则处于关闭状态,这时只用一台水泵供水;当单片机读取到水位信号高于A电极时,这时表示水位已满,单片机向工作的水泵发出关闭指令,停止供水;当单片机读取到水位信号出现异常时,如水位低于警戒线C,或者读取指令有逻辑上的错误时,则为传感器出现故障,或水泵出现故障,或水源出现故障,此时系统切断水泵电源,并发出声光报警,提醒值班人员及时进行故障处理。这样,就可在水箱缺水较多时用两台水泵供水,在水箱缺水较少时用一台水泵供水,水箱水满时停止供水,系统出现异常发出报警,并且从开始工作后没有手动操作,完全是经过单片机自主调节水位,实现自动、安全、及时供水,且供水效率高,可节省大量人力财力,具有很高的实用价值。 河南城建学院毕业设计(论文) 第三章 智能水位控制器的硬件电路设计第3章 系统硬件设计硬件电路是控制系统必不可少的组成部分,本设计中水位信号检测部分、控制信号放大部分、交流接触器的控制部分均由硬件电路完成,如图3.1图3.1硬件系统框图3.1水位信号检测电路的设计实验证明,纯净水几乎是不导电的,但自然界存在的以及人们日常使用的水都会含有一定的镁离子、钙离子等,它们的存在使水导电。本设计就是利用水的导电性完成的。水位信号的检测采用电极式接触传感器,检测电路如图3.2所示,在水源和水泵不出故障的情况下,应保持水位在电极A以上。为了能检测到水源或水泵的故障情况,以及在正常情况下保证水位位于电极A和C之间,在水箱的不同高度安装了4根电极,以感知水位变化情况。图3.2 水位检测电路电极A位于水箱的近底部,电极B位于水箱的中下部作为设定低水位,电极C位于水箱的顶部作为设定高水位。电极A、B、C分别经1千欧的电阻接与+5V的电源正极,并且电极A、B、C分别用导线接于单片机的P1.7、P1.6、P1.5引脚。当水位低于C时,单片机的P1.5引脚输入高电平;当水位高于C时,单片机的P1.5引脚输入低电平;当水位高于B而低于C时,单片机的P1.5引脚输入高电平,P1.6引脚输入低电平;当水位低于B时,单片机的P1.6、P1.5引脚均输入高电平。正常情况下,无论水位位于何处,单片机的P1.7引脚均应输入低电平,且当单片机的P1.6引脚输入高电平时P1.5引脚也应输入高电平,当单片机的P1.5引脚输入低电平时P1.6引脚也应输入低电平,如果有不同于上述的情况,则为电极出现故障,或水泵出现故障,或水源出现故障,此时系统应发出故障报警。在本次设计中,我以开关电路模拟代替水位采集电路,如图3.3所示。开关A、B、C分别代替上图中的电极A、B、C。而且电极通断信号由开关关断信号代替,当开关接通表示采集有水信号,关断表示采集无水信号。图3.3 模拟水位检测电路3.2 控制信号输出电路的设计水位信号由传感器输入单片机,单片机根据读取到的水位信号发出相应的控制信号,控制信号经过晶体三极管放大后驱动直流继电器,再由直流继电器控制交流接触器,从而控制相应水泵的启停。控制信号输出电路如图3.4所示。图3.4 控制信号输出电路 当水位高于电极B而低于电极C时,单片机P1.3引脚输出高电平,P1.4引脚输出低电平,中间继电器KA1的线圈接通,KA2的线圈断开,KA1的常开触点闭合,接通交流接触器KM1的线圈,KA2的常开触点断开,交流接触器KM2的线圈也断开,此时只有一台水泵供水。当水位低于电极B而高于电极A时,单片机P1.3引脚和P1.4引脚均输出高电平,中间继电器KA1和KA2的线圈均处于接通状态,它们的常开触点KA1和KA2均闭合,使交流接触器KM1和KM2的线圈接通,此时两台水泵同时供水。当水位高于电极C时,单片机P1.3引脚和P1.4引脚均输出低电平,中间继电器KA1和KA2的线圈均断开,它们的常开触点KA1和KA2也断开,从而交流接触器KM1和KM2的线圈也断开,此时两台水泵都不供水。3.3 水泵启停控制电路的设计两台水泵的启停分别由交流接触器KM1和KM2控制,控制电路如图3.5所示。图3.5 水泵启停控制电路两台交流电机M1和M2通过刀开关接于三相交流电源上,保险管FU1和FU2在电机故障或过热时熔断,使电机与电源断开,起保护作用。KM1和KM2是交流接触器的常开触头,当交流接触器的线圈接通时,相应的常开触头闭合,使相应的电机启动。FR1和FR2是热继电器,用于对电机的过热保护。3.4 故障报警电路的设计故障报警电路用于在系统发生故障时向值班人员发出报警信号,由声音报警和光报警两部分组成,故障报警电路如图3.6所示。图3.6 声光报警电路光报警信号由发光二极管发出,声音报警信号由蜂鸣器发出。系统可能出现的故障情况有传感器自身出现故障,导致检测到的水位信号出现异常,或水泵出现故障,或水源出现故障,导致单片机发出供水信号后水位继续下降。在系统正常工作情况下,考虑到两台水泵在单位时间内的供水量大于单位时间内的最大用水量,最低水位不应低于电极A,若单片机检测到水位低于电极A,即单片机P1.7引脚的输入为高电平,则单片机P1.2引脚输出低电平,发光二极管发出光报警信号,单片机P1.0引脚输出周期为2ms的矩形脉冲信号,蜂鸣器发出声音报警信号。在传感器正常工作的情况下,当水位低于电极B时,单片机P1.6引脚和P1.5引脚均应输入高电平,不应出现P1.6引脚输入高电平,而P1.5引脚输入低电平的情况,如果出现这种情况,则应按故障情况处理。当水位高于电极C时,正常情况下单片机的P1.6引脚和P1.5引脚均应输入低电平,如果出现P1.5引脚输入低电平而P1.6引脚输入高电平的情况,也应按故障情况处理。故障情况的处理方法同上,即单片机P1.2引脚输出低电平,P1.0引脚输出周期为2ms的矩形脉冲,由发光二极管和蜂鸣器发出声光报警信号。3.5 数码管显示电路的设计数码管显示电路用于显示水泵的运行情况,正常情况下显示阿拉伯数字0、1、2,各数字代表正在供水的水泵数量,电路如图3.7所示。图3.7 数码管显示电路所用数码管为共阳极7段数码管,由单片机P2口输出段选码,R6R13为用于保护数码管不因电压过高而损坏的限流电阻,阻值为680欧。当水位低于电极C而高于电极B时,只有一台水泵供水,此时单片机P2口输出为F9H,数码管显示1;当水位低于电极B而高于电极A时,两台水泵同时供水,此时单片机P2口输出为A4H,数码管显示2;当水位高于电极C时,停止向水箱供水,此时单片机P2口输出为C0H,数码管显示0;当水位低于电极A或系统出现其他故障时,单片机P2口输出为FFH,数码管不显示任何数字,以示系统出现故障,同时由声光报警电路发出声光报警信号。河南城建学院毕业设计(论文) 第四章 智能水位控制器的软件设计第4章 系统软件设计一个应用系统,要完成各项功能,首先必须有较完整的硬件作保证。同时还必须做到相应合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可以通过软件编程而代替。甚至有些必须用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。因此充分利用其内部丰富的硬件资源和软件资源,采用51汇编语言和结构化程序设计方法进行软件编程。这个系统程序由主控程序、电机启动子程序和矩形脉冲输出子程序组成。其中主控程序是核心,由它控制着整个系统程序的运行和跳转。4.1 主程序流程图设计程序流程图是解题步骤及其算法进一步具体化的重要环节,是程序设计的重要依据,它直观清晰地体现了程序的设计思路。流程图是由预先约定的各种图形、流程线及必要的文字符号构成的。常见的流程图符号有:开始和结束符号、工作任务符号、判断分支符号、流程流向符号等。本次设计程序根据设计要求和硬件电路的端口,分为循环扫描和逻辑判断输出两部分。首先对端口P1.7的电位进行扫描,若端口检测为高电位,则输出为报警信号和电机停止信号;若端口检测为低点位,则继续检测P1.6端口。如果P1.6端口检测为高电平,则程序执行开启两台水泵的指令并且程序初始继续循环查询水位指令;若端口检测为低电平,则继续扫描P1.5端口。如果P1.5端口扫描检测为高电平,则程序转为开启一台水泵指令并且程序初始继续查询水位指令;若检测为低电平,则发出两台水泵通知停止的指令,并且程序指向循环扫描水位指令。智能水位控制器控制程序流程图如图4.1所示。开始初始化循环查询水位N检测P1.7为低?YN开启两台水泵检测P1.6为低?YN检测P1.5为低?开启一台水泵Y两台水泵同时停止发出声光报警图4.1 智能水位控制器程序流程图4.2 子程序设计 本设计源程序中包含四个子程序,分别是启动两台水泵子程序、启动一台水泵子程序、同时停止两台水泵子程序、1ms延时子程序。由于单片机P1.7引脚、P1.6引脚、P1.5引脚分别与三个电极相连,两台水泵分别由P1.4引脚和P1.3引脚控制,故启动两台水泵子程序为:PROG1: SETB P1.3 SETB P1.2 SETB P1.4 CLR P1.0 MOV P2,#0A4H LCALL M2M2: MOV A,P1 ANL A,#0E0H CJNE A,#60H,M1 LJMP M2 RET启动一台水泵子程序为:PROG2: SETB P1.4 SETB P1.2 CLR P1.3 CLR P1.0 MOV P2,#0F9H LCALL M3M3: MOV A,P1 ANL A,#0E0H CJNE A,#20H,M1 LJMP M3 RET同时停止两台水泵子程序为:PROG3: SETB P1.2 CLR P1.3 CLR P1.4 CLR P1.0 MOV P2,#0C0H LCALL M4M4: MOV A,P1 ANL A,#0E0H CJNE A,#00H,M1 LJMP M4 RET1ms延时子程序为:DELAY1: MOV R3,#10LOOP1: MOV R4,#100LOOP2: DJNZ R4,LOOP2 DJNZ R3,LOOP1 RET 4.3 源程序清单ORG 0000H ;开始LJMP MAIN ;跳到P1口检测程序ORG 0100HMAIN:MOV P1,#0FFH ;初始化P1口M1: MOV A,P1 ANL A,#0E0H ;保留有效位 MOV R2,A NOP NOP ;等待 MOV A,P1 ;再读P1口 ANL A,#0E0H CLR C SUBB A,R2 ;两次读得的结果比较 JNZ M1 ;两次结果不一样,重读 XCH A,R2 MOV R7,A MOV A,#60H CLR C SUBB A,R7 JZ PROG1 ;满足P1.6为高,执行程序1 MOV A,#20H CLR C SUBB A,R7 JZ PROG2 ;满足P1.6为低,执行程序2 MOV A,#00H CLR C SUBB A,R7 JZ PROG3 ;满足P1.5为低,执行程序3 CLR P1.2 ;以上都不满足,发出报警 CLR P1.3 CLR P1.4 SETB P1.0MOV P2,#0FFHCPL P1.0LCALL DELAY1;CPL P1.0;LCALL DELAY2LJMP M1PROG1: SETB P1.3 ;启动两台水泵 SETB P1.2 SETB P1.4 CLR P1.0 MOV P2,#0A4H LCALL M2PROG2: SETB P1.4 ;启动一台水泵 SETB P1.2 CLR P1.3 CLR P1.0 MOV P2,#0F9H LCALL M3PROG3: SETB P1.2 ;停止两台水泵 CLR P1.3 CLR P1.4 CLR P1.0 MOV P2,#0C0H LCALL M4M2: MOV A,P1 ;等待水位变化 ANL A,#0E0H CJNE A,#60H,M1 ;水位改变,重读P1口 LJMP M2RETM3: MOV A,P1 ;等待水位变化 ANL A,#0E0H CJNE A,#20H,M1 ;等待水位变化 LJMP M3RETM4: MOV A,P1 ; 等待水位变化 ANL A,#0E0H CJNE A,#00H,M1 ;等待水位变化 LJMP M4RETDELAY1: MOV R3,#10 ;延时1msLOOP1: MOV R4,#100LOOP2: DJNZ R4,LOOP2 DJNZ R3,LOOP1 RETEND河南城建学院毕业设计(论文) 第五章 程序编译与仿真第5章 系统的仿真及结果5.1 程序编译本设计中用到的程序编译软件是Keil C51,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。5.1.1 工程的建立1) 源文件的建立使用菜单“File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入汇编语言或C语言源程序,然后保存该文件,注意必须加上扩展名(汇编语言源程序一般用asm或a51为扩展名,而C语言源程序一般用c为扩展名),这里假定将文件保存为exam1.asm。需要说明的是,源文件就是一般的文本文件,不一定使用Keil软件编写,可以使用任意文本编缉器编写,而且,Keil的编缉器对汉字的支持不好,建议使用UltraEdit之类的编缉软件进行源程序的输入。2) 建立工程文件在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择CPU(Keil支持数百种CPU,而这些CPU的特性并不完全相同),确定编译、汇编、连接的参数,指定调试的方式,有一些项目还会有多个文件组成等,为管理和使用方便,Keil使用工程(Project)这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译(汇编)和连接等操作。点击“Project-New Project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,可以在编缉框中输入一个名字(设为exam1),不需要扩展名。点击“保存”按钮,出现第二个对话框,如图5.1所示图5.1这个对话框要求选择目标CPU,Keil支持的CPU很多,我们选择Atmel公司的89C51芯片。点击ATMEL前面的“+”号,展开该层,点击其中的89C51,然后再点击“确定”按钮,回到主界面,此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Source Group1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图5.5所示图5.2选中其中的“Add file toGroup”Source Group1”,出现一个对话框,要求寻找源文件,注意:该对话框下面的“文件类型”默认为C source file(*.c),也就是以C为扩展名的文件,而我们的文件是以asm为扩展名的,所以在列表框中找不到exam1.asm,要将文件类型改掉,点击对话框中“文件类型”后的下拉列表,找到并选中“Asm Source File(*.a51,*.asm),这样,在列表框中就可以找到exam1.asm文件了。双击exam1.asm文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其它文件,如果误认为操作没有成功而再次双击同一文件,这时会出现重复加入文件错误的对话框,提示你所选文件已在列表中,此时应点击“确定”,返回前一对话框,然后点击“Close”即可返回主界面,返回后,点击“SourceGroup 1”前的加号,会发现exam1.asm文件已在其中。双击文件名,即打开该源程序。5.1.2 工程的详细设置工程建立好以后,还要对工程进行进一步的设置,以满足要求。首先点击左边Project窗口的Target 1,然后使用菜单“Project-Option for targettarget1”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有8个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了。设置对话框中的Target页面,如图5.3所示图5.3Xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,对于我们所选的AT89C51而言是24M,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为12。Memory Model用于设置RAM使用情况,有三个选择项,Small是所有变量都在单片机的内部RAM中;Compact是可以使用一页外部扩展RAM,而Larget则是可以使用全部外部的扩展RAM。Code Model用于设置ROM空间的使用,同样也有三个选择项,即Small模式,只用低于2K的程序空间;Compact模式,单个函数的代码量不能超过2K,整个程序可以使用64K程序空间;Large模式,可用全部64K空间。Use on-chip ROM选择项,确认是否仅使用片内ROM(注意:选中该项并不会影响最终生成的目标代码量);Operating项是操作系统选择,Keil提供了两种操作系统:Rtx tiny和Rtx full,关于操作系统是另外一个很大的话题了,通常我们不使用任何操作系统,即使用该项的默认值:None(不使用任何操作系统);Off Chip Code memory用以确定系统扩展ROM的地址范围,Off Chip xDatamemory组用于确定系统扩展RAM的地址范围,这些选择项必须根据所用硬件来决定,由于该例是单片应用,未进行任何扩展,所以均不重新选择,按默认值设置。设置对话框中的OutPut页面,如图5.4所示图5.4这里面也有多个选择项,其中Creat Hex file用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,在此特别提醒注意。选中Debug information将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。Browse information是产生浏览信息,该信息可以用菜单view-Browse来查看,这里取默认值。按钮“Select Folder for objects”是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。Name of Executable用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改。工程设置对话框中的其它各页面与C51编译选项、A51的汇编选项、BL51连接器的连接选项等用法有关,这里均取默认值,不作任何修改。以下仅对一些有关页面中常用的选项作一个简单介绍。Listing标签页用于调整生成的列表文件选项。在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是“C Compile Listing”下的“Assamble Code”项,选中该项可以在列表文件中生成C语言源程序所对应的汇编代码。C51标签页用于对Keil的C51编译器的编译过程进行控制,其中比较常用的是“CodeOptimization”组,如图5.5所示,图5.5该组中Level是优化等级,C51在对源程序进行编译时,可以对代码多至9级优化,默认使用第8级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别试一试。Emphasis是选择编译优先方式,第一项是代码量优化(最终生成的代码量小);第二项是速度优先(最终生成的代码速度快);第三项是缺省。默认的是速度优先,可根据需要更改。设置完成后按确认返回主界面,工程文件建立、设置完毕。5.1.3 程序编译在设置好工程后,即可进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Translate.项则仅对该文件进行编译,不进行连接。以上操作也可以通过工具栏按钮直接进行。图5.5是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。图5.5编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图5.6所示的结果,提示获得了名为exam1.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil的仿真与调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册验船师资格考试(B级船舶检验法律法规)综合试题及答案一
- 2025年项目经理IT行业面试模拟题及答案详解
- 2025年注册验船师资格考试(A级船舶检验专业案例分析)测试题及答案一
- 2025年注册验船师资格考试(B级船舶检验专业基础安全)练习题及答案一
- 2025年公需科目人工智能和健康考试题和答案
- 海安银行考试题库及答案
- 2025年检察院审查起诉官选聘预测试题与解析
- 2025年软件编程工程师招聘面试模拟题及答案详解
- 株洲知识培训班课件
- 公务员面试题及答案法院
- 放射人员辐射安全培训课件
- 社会稳定风险评估 投标方案(技术标)
- 护士长科室预算管理报告
- 第二章 挂面生产技术
- 全厂失电应急预案
- 2023-2024学年七年级数学上册专题2.7 数轴与动点的四大经典题型(浙教版)(解析版)
- 服务器存储网络设备巡检报告
- 河北2023年邯郸银行内部审计人员招聘考试参考题库含答案详解
- 世界范围内社区支持农业CSA(下)
- 急性缺血性脑卒中溶栓治疗
- NB∕T 10209-2019 风电场工程道路设计规范
评论
0/150
提交评论