基于单片机的液位控制器设计
基于单片机的压力液位控制系统的设计研究

3、电路设计
电路设计主要包括电源电路、传感器信号调理电路、按键与显示电路等。电 源电路为整个系统提供稳定的工作电压;传感器信号调理电路用于将传感器输出 的微弱信号进行放大和滤波,提高信号质量;按键与显示电路用于实现人机交互 功能。
4、传感器选择
压力传感器选用常见的应变片式压力传感器,具有测量精度高、稳定性好等 优点;液位传感器可选用超声波液位传感器或电容式液位传感器,根据实际需求 进行选择。
2、程序流程设计
实现系统的主程序流程,包括初始化、数据采集、控制输出、显示等步骤。 根据实际需求,可加入定时器中断、按键中断等功能。
3、数据处理与运算实现控制策 略的核心是根据采集到的压力和 液位数据
参考内容
一、引言
在现代工业生产中,液位的监控和管理是一项非常重要的任务。例如,在化 工、石油、食品等行业,液位的精确控制直接影响到生产的安全和效率。因此, 开发一种高效、精确、实时的液位监控系统至关重要。本次演示将介绍一种基于 单片机的液位监控系统,这种系统具有实时监测、数据传输、数据处理等功能, 能够满足大多数工业应用的需求。
随着技术的不断进步和应用需求的不断增长,我们有理由相信基于单片机的 液位监控系统将在未来的工业生产中发挥更加重要的作用。通过引入更多的先进 技术和算法,例如人工智能、物联网等,这种液位监控系统的性能和功能将得到 进一步的提升和拓展,以满足更加复杂和精细的生产控制需求。
四、结论
本次演示介绍了一种基于单片机的液位监控系统,该系统结合了硬件和软件 的设计方法,能够实现对液体位置的实时监测和报警控制。这种系统具有精度高、 稳定性好、操作方便等优点,能够大大提高工业生产的安全性和效率。随着技术 的不断进步和应用需求的不断增长,我们有理由相信这种基于单片机的液位监控 系统将在未来的工业生产中发挥更加重要的作用。
基于单片机的液位控制系统毕业设计

题目:基于单片机的液位控制系统设计目录摘要 (1)引言 (1)1.概述 (2)2.系统总体方案 (2)3.系统硬件设计 (3)3.189C52单片机最小系统 (3)3.2液位信号采集电路 (4)3.3显示与报警电路 (5)3.4水泵控制电路 (6)3.5直流电源电路 (7)4.系统的软件设计 (8)5.系统仿真测试 (9)6.结论 (13)参考文献 (13)附录A 总原理图 (15)附录B 系统程序 (16)致谢 (18)基于单片机的液位控制系统设计摘要:本系统以单片机AT89C52为控制核心来实现水位的基本控制功能。
该设计由液位信号采集电路、显示与报警电路、直流稳压电源电路和水泵控制电路组成。
以单片机端口输出电平控制继电器动作,实现电机的启动或停止,从而达到自动控制水位目的。
另外,系统根据设定的高度控制水位,同时具备报警提醒功能。
该系统操作方便,性能良好,进一步提高了液位控制的安全性、可靠性与实用性,降低了硬件成本。
关键词:AT89C52;信号采集;水位控制;显示与报警Design of Liquid Level Control System Based on MCU Abstract: The AT89C52 single-chip computer is used in the system as the control core to realize the basic control functions of water level. A signal acquisition circuit, a display and alarm circuit, a power supply circuit and a water pump control circuit are included in this design. When the relay is controlled by the level of the output port of the single-chip computer, the motor is set up or stopped so as to achieve the purpose of automatic water level control. In addition, according to the set of water level control system, the system is given the alarm function. The system is operated easily and has good quality, which further improves the safety , reliability and practicability of level control and the cost of hardware is also reduced.Key Words: AT89C52; Signal Acquisition; Water Level Control; Display and Alarm 引言随着微电子工业的迅速发展,单片机控制的智能型控制器广泛应用于电子产品中。
基于单片机的液位控制系统的设计方案

基于单片机的液位控制系统的设计方案第1章绪论1.1 课题背景与研究意义在工农业生产中,常常需要测量液体液位。
随着国家工业的迅速发展,液位测量技术被广泛应用到石油、化工、医药、食品等各行各业中。
低温液体(液氧、液氮、液氩、液化天然气及液体二氧化碳等)得到广泛的应用,作为贮存低温液体的容器要保证能承受其载荷;在发电厂、炼钢厂中,保持正常的锅炉汽包水位、除氧器水位、汽轮机凝气器水位、高、低压加热器水位等,是设备安全运行的保证;在教学与科学研究中,也经常碰到需要进行液位控制的实验装置。
1.2 国内外研究现状及发展液位测量的方法比较多,依据测量方式的不同可分为接触式与非接触式两种类型。
●接触式测量法接触式测量法是指测量用传感器直接与容器内存储液体相接触,从而获得测量参数的方法。
1.人工检尺法人工检尺法可用于测量油罐液位,其历史十分悠久。
它利用浸入式刻度钢皮尺测量液位,这种方法具有测量简单、可靠性高、直观、成本低的优点,但人为读数误差大、无法实现自动检测和操作。
2.电参数测量法常见的有电阻法、光电法、测重法、电容法、浮标法及声光电的反射回波法等。
无论怎样,这些方法的关键是利用液位传感器将液位的相对位移量转换成为电压、电流、阻抗等便于进行电处理的物理量。
限于篇幅,下面仅简单介绍电容测量法的基本原理。
本方法所使用的电容通常由两块圆柱形极板或一个探极与罐壁构成。
当液位不同时,电容器的介电常数就不同,故电容量也不同。
在此基础上可以把电容量转化为电压、相移、频率、脉宽等物理量,再进行测量。
电容式液位测量装置通常结构简单、灵敏度高、稳定性好、动态响应快,适合于恶劣的工作环境,生产成本也不高;但电容液位测量器需要考虑温度补偿,且介质的成分、水分、温度、密度等不确定变化因素直接影响测量结果的准确性,另外检测电路比较复杂,尤其是检测微小电容量的变化。
●非接触式测量法非接触式测量法包括超声波法、调制型光学法、微波法等。
其特点是测量手段并不采用浮子之类的固态物,而是利用声、光、射线、磁场等的能量。
基于51单片机的液位控制器

(1)判断液位高度(2)用力控软件绘出工程平面图以及用keil编辑程序(3)设置相应的实时控制和报警(4)确定I/O端口功能#include<at89x51.h>#define uint unsigned intvoid delay(uint a);void display1(uint a);void key_control();void pour_liquid();void emit_liquid();// void alarm1();int alarm();void give_out();void control();uint ADC() ;sbit ALE=P2^0;sbit EOC=P2^1;sbit OE=P2^2;sbit clk=P2^3;//sbit p17=p1^7;sbit P14=P1^4;sbit P15=P1^5;sbit P16=P1^6;sbit P24=P2^4;sbit P25=P2^5;sbit P26=P2^6;sbit P27=P2^7;/*模数转换器工作的前提条件是(由于在本题中不需要地址锁存,所以ALE不管,eoc为数模转换完毕由低电平变成了高电平,oe为打开三态门数据接收,start为数模开始转换负跳变为开始工作)clk为数模转换器提供时钟*///显示uint TAB[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09} ;//提供时钟脉冲void timer0_int(void) interrupt 1 //时钟中断定时器/计数器0{clk=~clk; //计数器提供工作时钟}void timer1_int(void) interrupt 3 //报警定时器/计数器1 {uint recieve;recieve=ADC(); //接收转换后的数据TH1=0xB1;TL0=0XDF; //给定时器重新装初值//缓冲区半场鸣......}void main(){uint data1;TMOD=0X12; //使定时器0 工作在方式2 定时器1 工作方式2 TR0=1; //开计数器/定时器0TR1=1; //开计数器/定时器1IE=0X8A; //开中断,能响应计数器溢出中断TH0=240; TH1=0xB1;TL0=0; TL0=0XDF; //中断时间定时器0 :15us 定时器1 :20ms IP=0x02; //优先级的设置:定时器0的优先级高于定时器1的优先级while(1){data1=ADC();//模数转换display1(data1);alarm();control();}}//数模转换uint ADC() //返回数据为液体的高度{uint data1;ALE=0;ALE=1;ALE=0;//给start端开始信号即使数模转换器开始工作delay(100);while(EOC==0);OE=1; //接收转换后的数据data1=P0;OE=0;data1=(uint)50.0*data1/255.0;return data1;}//报警int alarm(){ uint a ;int recieve;a=ADC();if(a>35&&a<=40) //缓冲区{P24=0 ;// P25=1;recieve=1;}else if(a>40) //报警;液体过多;需放掉一部分{P24=0;P25=1;recieve=2;}else if(a<=35&&a>=15) //在合适区{P24=0;P25=0;recieve=3;}else if(a<15) //液体过少,需加液体{P24=1;P25=0;recieve=4;}return recieve;}//选通数码管void display1(uint a){ uint temp1,temp2,temp3,temp4;temp1=a/1000; temp2=a%1000/100;temp3=a%100/10;temp4=a%10;if(temp1){P1=TAB[temp1];delay(100);P1=TAB[temp2]|0x10;delay(100);P1=TAB[temp3]|0x20;delay(100);P1=TAB[temp4]|0x30;delay(100);}else if(temp1==0){P16=1;if(temp2){P1=TAB[temp2]|0x10; delay(100);P1=TAB[temp3]|0x20; delay(100);P1=TAB[temp4]|0x30; delay(100);}else if(temp2==0) {P16=1;if(temp3){P1=TAB[temp3]|0x20; delay(100);P1=TAB[temp4]|0x30; delay(100);}else if(temp3==0) {P16=1;P1=TAB[temp4]|0x30; delay(100);}}}}//延时程序段void delay(uint a) {uint i;for(i=a;i>0;i--);}//开关控制void key_control() {uint a;a=ADC();if(a>=15&&a<35) {P27=0;P3=0X63;P27=1;}else if(a>35&&a<40){P27=0;P3=0X63;P27=1;P25=1;P24=0;}else if(a<15||a>=40){P27=0;P3=(uint)a*5.5;}}//注如液体时void pour_liquid(){P27=0;P3=0X46; //开注入液体开关P27=1; //锁存地址,直到注入液体大于35米时//if(a>35);// P27=0; //如果在35米到40米之间断开注入液体开关那么不进行报警了//return 1;//else return 0;}//需要清洗容器时,将液体清放完全/*void emit_liquid(){alarm();P27=0;P3=0XBC;P27=1;} *///清放液体时,如果液体高度在35米到40米之间关闭清放液体开关那么也不进行报警了/*void give_out(){ uint a;a=ADC();alarm();P27=0;P3=0XBC; //开输出液体开关P27=1; //锁存地址,直到输出液体小雨40米时if(a>35&&a<40);// P27=0; //如果在35米到40米之间断开注入液体开关那么不进行报警了return 3;else return 2;} *///控制液体的流量void control(){ uint a;int recieve1;a=ADC();recieve1=alarm();if(recieve1!=1)P26=1;if(recieve1==1){ if(P26==0)//关闭两开关{ P26=0;P25=0;display1(a);// recieve1=alarm1();P27=0;P3=0X63;P27=1;}else if(P26==1){ display1(a);//alarm();key_control();P25=1;}}if(recieve1==2) //大于40米{key_control();// recieve1=alarm();display1(a);}if(recieve1==3) //合适区{key_control();//recieve1=alarm();display1(a);}if(recieve1==4) //小于15米*/while(a<35){a=ADC();//pour_liquid();display1(a);if(a<15)P24=1;elseP24=0;P27=0;P3=0X46; //开注入液体开关P27=1; //锁存地址,直到注入液体大于35米时//key_control();。
基于单片机的水位控制系统设计

河南机电高等专科学校单片机原理及应用课程设计报告课题名称:基于单片机的水位控制系统设计专业:机电一体化技术班级:机电102学号:XXXX姓名:X X成绩:2012年06 月 5 日设计任务书一、设计任务1、利用单片机AT89C2051实现对高塔进行水位的控制;2、把水位探测传感器探得高塔中的水位送给单片机以实现对水泵加水系统和显示系统的控制;3、光报警显示系统电路,采用不同颜色的发光二极管来表示不同的水位情况4、水泵加水电路由继电器进行控制;5、分析工作原理,绘出系统结构原理图及流程图;二、设计方案及工作原理2.1 系统设计方案比较对于水位进行控制的方式有很多,而应用较多的主要有2种,一种是简单的机械式控制装置控制,一种是复杂的控制器控制方式。
两种方式的实现如下: (1)简单的机械式控制方式。
其常用形式有浮标式、电极式等,这种控制形式的优点是结构简单,成本低廉。
存在问题是精度不高,不能进行数值显示,另外很容易引起误动作,且只能单独控制,与计算机进行通信较难实现。
(2)复杂控制器控制方式。
这种控制方式是通过安装在水泵出口管道上的压力传感器,把出口压力变成标准工业电信号的模拟信号,经过前置放大、多路切换、A/D变换成数字信号传送到单片机,经单片机运算和给定参量的比较,进行PID运算,得出调节参量;经由D/A变换给调压/变频调速装置输入给定端,控制其输出电压变化,来调节电机转速,以达到控制水位的目的。
本设计利用单片机设计一个水位控制系统,要求选择合适的水位传感器及电磁阀,当设定完水位后,系统根据水位情况控制电磁阀的开启和关断。
2.2 系统设计总框图2.3工作原理基于单片机实现的水位控制器是以AT89C51芯片为核心,由键盘、数码显示、A /D 转换、传感器,电源和控制部分等组成。
工作过程如下:当水位发生变化时,引起连接在水位底部软管管内的空气气压变化,气压传感器在接收到软管内的空气气压信号后,即把变化量转化成电压信号;该信号经过运算放大电路放大后变成幅度为0~5 V 标准信号,送入A /D 转换器,A /D 转换器把模拟信号变成数字信号量,由单片机进行实时数据采集,并进行处理,根据设定要求控制输出,同时数码管显示液位高度。
基于单片机的压力液位控制系统的设计研究

基于单片机的压力液位控制系统的设计研究一、概述压力液位控制系统是现代工业自动化领域中不可或缺的一部分,广泛应用于各种工业过程控制中。
基于单片机的压力液位控制系统以其低成本、高性能和易于集成等优点,受到了广泛关注和应用。
本设计研究旨在探讨基于单片机的压力液位控制系统的设计与实现方法。
通过深入研究压力液位控制的原理和技术,结合单片机的特性,设计出一套高效、稳定的控制系统。
该系统能够实时监测液位的变化,并根据设定的压力阈值自动调节液位,保证工业过程的顺利进行。
本研究将详细介绍系统的硬件组成和软件设计,包括单片机的选型、传感器的选择与校准、控制算法的设计与实施等。
同时,还将探讨系统在实际应用中的性能表现和优化方法,为相关领域的研究和应用提供参考和借鉴。
通过本设计研究,我们期望能够为基于单片机的压力液位控制系统的设计和应用提供有益的指导,推动工业自动化技术的发展和应用。
1. 背景介绍:阐述压力液位控制系统在工业生产和日常生活中的重要性。
压力液位控制系统在现代工业生产和日常生活中扮演着至关重要的角色。
在工业领域,无论是化工、石油、制药还是食品加工等行业,都需要对液体或气体的压力、液位进行精确控制,以确保生产过程的稳定性和安全性。
例如,在化工生产中,对反应釜内的压力和液位进行精确控制,可以确保化学反应的顺利进行,避免安全事故的发生。
在石油行业中,通过控制储罐的液位,可以确保油品的储存和运输安全。
在日常生活中,压力液位控制系统同样具有广泛的应用。
例如,家庭用水系统中,通过控制水泵的工作状态,可以确保家庭用水的水压稳定在楼宇自动化系统中,对供水系统的压力和液位进行智能控制,可以提高供水效率,降低能耗。
压力液位控制系统还在农业灌溉、环保监测等领域发挥着重要作用。
传统的压力液位控制系统大多采用复杂的电路和机械结构,不仅维护成本高,而且难以适应现代工业自动化和智能化的需求。
研究基于单片机的压力液位控制系统具有重要意义。
基于单片机的液位控制系统设计毕业设计论文

摘要
液位测量广泛应用于工业、经济、生活等领域。本设计以水箱供水为模型,用于对水箱液位信号进行测量监控记录。
基于单片机的液位测量装置具有测量准确、重复性好、功耗低、使用寿命长的特点,是广泛采用的技术。在深入学习科学发展观的同时,电子设备的设计也需融入可持续发展的设计理念。故此,在基于单片机的液位测量装置基础上,扩展实时监控、数据采集、计算机串行通信等功能,从而能够通过科学的方法将液位测量与统计科学结合,合理调度水资源,降低能源消耗。
作者签名:日 期:
学位论文原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。
作者签名:日期: 年 月 日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
Keywords:MCU;LiquidLevelMeasurement;Real-time monitoring;Serial C明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
基于MCS51单片机的液位控制电路设计

毕业设计(论文)课题(论文)名称:基于MCS-51单片机的液位控制电路设计题目:基于MCS-51单片机的液位控制电路设计摘要:随着电子技术的不断发展,以单片机为基础的控制电路有着体积小,价格低廉,系统结构简单,处理功能强,易于控制等优点,这使得单片机的应用更为广泛。
而液位控制是现代工业中常见的参数,有着直接观察、容易测量,过程时间常数小的优点,本系统采用AT89C51单片机为主控制器,通过液位传感器来检测水位的高度,通过键盘来设置水位的高度,并能控制电路来自动调节液位的高度,并可由LCD显示实际水位与检测的水位高度,其分辨率小于1cm并具有一定的水位报警功能。
因此,比较适合应用于一般的液位控制,如自来水厂蓄水槽、污水处理厂的污水槽、大坝的警戒水位等都需要液位检测装置来检测液位。
关键词:单片机水位检测智能化控制目录摘要................................................................... 1…前言.................................................................... 3..方案论证................................................................ 4..万案一.............................................................. 4..(1)数控电路部分 ...................................................................................... 4.(2) 液位测试部分 (3) 控制驱动电路部分〉》J 户 £、方案二方案三 方案比较 硬件设计 1、数控部分(1) 电路最小系统9..(2) 键盘控制电路 ................................................. 9.. (3) 显示电路部分 ................................................ 1..0 2、液位测试部分 .................................................... 1..1. 3、控制驱动电路部分 ................................................ 1..1 4、电路板的制作 .................................................... 1..2.(1) 原理图的绘制 ................................................ 1..2 (2) PCB 板图设计 ............................................... 1..2. (3) 元件清单 .................................................... 1..5. 5、抗干扰、远程控制方面措施 ........................................ 1..5 ...................................................... 错...误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业基础综合实验报告题目:测控技术与仪器专业
姓名:
学号:
专业班级:
1、总体设计方案
1.1 设计功能及要求
1、利用单片机和传感器构建一套完整的水位自动控制系统。
要求既能实现水位自动控制,又能显示实际水位,便于用户监视。
在水塔中经常要根据水面的高低进行水位的自动控制,同时进行水位压力的检测和控制。
本液位器具有水位检测、报警、自动上水和排水(上水用电机正转模拟,下水用电机反转模拟)、压力检测功能。
2、该系统以89S52单片机为水塔水位控制系统的核心,
用传感器采集水压模拟信号,然后将模拟信号送入A/D转换
器,换算出某一时刻水塔水位的实际高度,然后拿它与标定
水位进行比较,要求实时检测水箱的液位高度,并与开始预
设定值做比较,由单片机控制开关的开断进行液位的调整,
最终达到液位的预设定值。
检测值若高于上限设定值时,要
求报警,断开继电器,控制水泵停止上水;检测值若低于下
限设定值,要求报警,开启继电器,控制水泵开始上水。
现场实时显示测量值,从而实现对水箱液位的监控。
如此重复“测量、比较、开启”这三步,直至实测水位与标定水位的偏差落入给定的精度范围之内。
落入给定精度范围之后,将两个水泵同时关停。
电路焊接好后,接通电源,改变液位使检测点变化,当液位在A点以下时红灯连续亮并且发出频率较高的报警声,显示00,电机正转;当A≤液位<B时,显示0A,电机正转;当B≤液位<C时,显示0B,电机不转;液位在C点及以上时,绿灯连续亮并且发出报警声,显示0C,电机反转。
3、控制系统中标定水位用键盘输入,用十进制数码显示。
本液位器具有水位检测、报警、自动上水和排水、压力检测功能。
该控制器主要由89S52单片机,
0809A/D转换器,A、B、C三点水位检测电路,压力检测电路、数码显示电路、键盘和电源电路组成。
4、可根据需要设定液位控制高度,同时具备报警、高度显示等功能,
液位自动控制系统工作流程如下:将压力传感器传送来的电流信号经过前级放大和A/D转换进入单片机,经单片机计算处理(与用户的设定值作比较)。
将输出数字量进行D/A转换送给电动执行机构。
5、基于单片机的水位自动控制系统的软件设计
本论文是以单片机为核心设计水塔水位控制系统,包括硬件电路的设计和控制系统程序的设计。
通过此系统使水塔水位保持在要求的高度
1.2 设计方案
1.2.1硬件设计方案
(1)基于单片机的通用水位自动控制系统的硬件设计系统硬件部分的设计采用模块化的设计方法,根据功能的不同,把系统划分为如下模块(图2)。
图2 系统模块图
(1)硬件设计
液位控制器的硬件主要包括由单片机、传感器(带变送器)、键盘电路、数码显示电路、A/D转换器和输出控制电路等。
工作原理:基于单片机实现的液位控制器是以AT89C51芯片为核心,由键盘、数码显示、A/D转换、传感器,电源和控制部分等组成。
工作过程如下:水箱(水塔)液位发生变化时,引起连接在水箱(水塔)底部的压力传感器,压力传感器的压力受到水的压力,即把变化量转化成电压信号;该信号经过运算放大电路放大后变成幅度为0~5 V标准信号,送入A/D转换器,A/D转换器把模拟信号变成数字信号量,由单片机进行实时数据采集,并进行处理,根据设定要求控制输出,同时数码管显示液位高度。
通过键盘设置液位高、低和限定值以及强制报警值。
该系统控制器特点是直观地显示水位高度,可任意控制水位高度。
1.2.2软件设计方案
(1)设计框图
(2)原理:通过软件设计将将模拟信号送入A/D转换器,换算出某一时刻水塔水位的实际高度,然后拿它与标定水位进行比较,要求实时检测水箱的液位高度,并与开始预设定值做比较,由单片机控制开关的开断进行液位的调整,最终达到液位的预设定值。
检测值若高于上限设定值时,要求报警,断开继电器,控制水泵停止上水;检测值若低于下限设定值,要求报警,开启继电器,控制水泵开始上水。
现场实时显示测量值,从而实现对水箱液位的监控。
2.硬件设计
2.1 液位检测电路
2.2 单片机最小系统
2.3 LED显示电路2.4 按键电路
2.5 报警电路2.6 电源电路
我们组做的是按键电路、报警电路和电源电路PCB板图如下
3.软件设计
3.1 主程序设计
系统主程序设计:
ORG 0000H
AJMP MAIN
ORG 0060H
MAIN: MOV P1, #FFH ;P1 P3口初始化置1
MOV P3,#FFH
JNB P1.3 ,AUT ;若手动在自动位置,跳到自动模式子程序AJMP MEN ;否则转到手动模式子程序
END
自动模式子程序设计
AUT:NOP ;空命令
JNB P1.2 , LG ;水位高—LG
JB P1.1 LD ,;水位没低---LD
CLR P3.1 ;水位低报警
JB P1.0, LDD ;水位未低低---LDD
CLR P3.0 ;水位低低报警
JNB 3.1 P1.6, Y1 ;M1已启动—Y1
CLR P1.4 ;否则启动M1
Y1: JNB P1.7 ,Y2 ;M2已启动---Y2
CLR P1.5 ;否则启动M2
Y2: ACALL DELAY ;延时1分钟
AJMP AUT ;返回自动模式
LDD: JNB P1.6 ,Y3 ;单独运行M1(LDD〈水位〈LD)CLR P1.4
Y3: JB P1.7 Y2
SETB P1.5
AJMP Y2
LG: CLR P3.2 ;水位高报警
LD: AJMP MAIN ;返回主程序
手动模式子程序设计
MEN:NOP
JNB P1.1 , MAIN ;水位高返回主程序ACALL KEY
CJNE A ,#FOH,NN ;有无键合AJMP MEN
NN: JNB ACC.4 ,HM1
JNB ACC.5, HM2
JNB ACC.6 ,DM1
JNB ACC.7 ,DM2
AJMP MEN
HM1: JNB P1.6 ,MEN
CLR P1.4
AJMP MEN
HM2: JNB P1.7, MEN
CLR P1.5
AJMP MEN
DM1: JB P1.6, MEN
SETB P1.4
AJMP MEN
DM2: JB P1.7, MEN
SETB P1.5
AJMP MEN
RET
3.2 子程序设计
3.2.1 键盘子程序设计
有无键合子程序:
KEY:ACALL KS1 ;有无闭合
JNZ LK1
ACALL TIM
AJMP KEY ;无键闭合返回
LK1:ACALL TIM
ACALL TIM
ACALL KS1
JNZ LK2
延时1S主程序:
T1M1: MOV R1, #F0H
L4: MOV R2, #08H
L1: MOV R3, #FAH
L2: MOV R4, #FAH
L1: DJNZ R4, L1
DJNZ R3, L2
DJNZ R2, L3
DJNZ R1, L4
RET
3.2.2A/D转换子程序设计
A/D模数转换程序
入口参数:30H---33H
;出口参数:BAI,SHI,GE
CHANGE
CLRF BAI
CLRF SHI
CLRF GE;先清除结果寄存器
MOV FW 31H;
ADD WF 30H,1
MOV FW 32H
ADD WF 30H,1
MOV FW 33H
ADD WF 30H,1
RRF 30H,1
RRF 30H,0
MOV WF TEMP
MOV LW 64H ;减100,结果保留在W中
SUB WF TEMP,0
BTFSS TATUS,C ;判断是否大于100
GOTO SHI_V AL ;否,转求十位结果
MOVWF TEMP ;是,差送回TEMP中INC F BAI,1 ;百位加1
GOTO $-6 ;返回继续求百位的值
SHI_V AL
MOV LW 0AH ;减10,结果保留在W中
SUBWF TEMP,0
BTFSS STATUS,C ;判断是否大于10
GOTO GE_V AL ;否,转去判断个位结果
MOVWF TEMP ;是,差送回TEMP中
INCF SHI,1 ;十位值加1
GOTO $-6 ;转会继续求十位的值
GE_V AL
MOVFW TEMP
MOVWF GE ;个位的值
RETURN
显示程序
入口参数:BAI,SHI,GE
出口参数:无
DISPLAY
MOV FW BAI ;显示百位
CALL TABLE
MOVWF PORTD
BCF PORTA,3
CALL DELAY
CALL DELAY
BSF PORTA,3
MOVFW SHI ;显示十位CALL TABLE
MOVWF PORTD
BCF PORTA,4
CALL DELAY
CALL DELAY
BSF PORTA,4
MOVFW GE ;显示个位CALL TABLE
MOVWF PORTD
BCF PORTA,5
CALL DELAY
CALL DELAY
BSF PORTA,5
RETURN。