找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3164|回复: 6
打印 上一主题 下一主题
收起左侧

锅炉液位控制系统

[复制链接]
跳转到指定楼层
楼主
ID:674983 发表于 2019-12-26 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于单片机锅炉液位控制系
1设计目的
首先采用液体的导电性,以按键模拟液位,这样可以很精确的检测到液位系统,同样达到预期的目的,通过单片机系统使数码管显示相应的数字。
系统采用5个按钮模拟液位来进行由下自上的液位检测。上电复位后,各部分均初始化,P2.0P3.5P3.6P3.7置高电平,报警器不发声,电机不转动LED显示灯不亮。显示器显示0时为复位情况,当液位到达规定高度时由液体导通电路,实现按钮的闭合后,再通过1位七段LED数码管显示液位位置,做出相应的报警提示,提醒工作人员在接到自动上液报警后按时手工恢复,保证液体供应充足以及设备的安全。当液位为最低液位时显示黄灯并报警,按下复位键报警器不响,当液位为5时报警器响,提醒工作人员液位已满,此时电机停止工作,按下复位键报警器不响。
2设计方案
2.1单片机类型:AT89C51
AT89C51:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中。
2.2晶体振荡电路
晶体振荡电路有一个晶体振荡器和两个30pf的瓷片电容组成。晶振是改单片机提供工作信号脉冲的,为了稳定,在晶振的两端接入了10pf-50pf的瓷片电容接地来消减谐波对电路的稳定性的影响。晶振与单片机的引脚XTAL0和引脚XTAL1构成的振荡电路中会产生谐波,但会降低电路稳定性。电路图如图2.1所示。

file:///C:/Users/%E6%AD%A6%E7%A6%8F%E7%94%9F/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
   图4.1  低液位仿真电路图

4.2总结
该系统设计是基于在单片机嵌入式系统而设计的,充分利用单片机强大控制功能和方便通信接口,该检测控制系统实现液位检测、电机故障检测、处理和报警等功能,提高了实验的自动控制能力。因此,该系统在锅炉工厂等冶炼领域有着广阔的应用前景。
课设初期,在选题上老师强调要找自己感兴趣有了解的课题,然后上网查资料,了解与自己选题有关的电器元件。
在课设中期,在连接电机的电路中遇到了问题,后经查询,选定AJC--1000动态继电器作为电机的开关,在电路中又加入了PNP型三极管,作为控制继电器的开关。
后期,在实验仿真过程中遇到调试与程序不符的情况,后经改正程序中的置位接口电平高低使调试顺利进行。

参考文献
[1] 陈海宴.51单片机原理及其应用[M].北京:北京航空航天大学出版社,2010.3
[2] 何希才.传感器及其应用实例[M].北京:机械工业出版社,2004.9
[4] 童诗白.数字电子技术[M].北京:高等教育出版社,2001.6                  
[5] 王思明,张金敏,苟军年等.单片机原理及应用[M].北京:科学出版社,2012.

附录1
#include<reg51.h>//定义51单片机头文件
unsigned char codetable[]={0x3f,0x06,0x5b,0x4f,0x66,
                           0x6d,0x7d,0x07,0x7f,0x6f};
//定义一个数组,使数码管显示的数字和数组元素的下标相等
sbit yeman=P1^0;//液体自动充满
sbit yw5=P1^1;//液位充满
sbit yw4=P1^2;//液位4
sbit yw3=P1^3;//液位3
sbit yw2=P1^4;//液位2
sbit yw1=P1^5;//液位1
sbitshougong=P1^6;//手工填液
sbitdianji=P1^7;//电机控制位
sbitstate1=P3^7;//红灯显示
sbitstate2=P2^0;//蜂鸣器
sbitstate3=P3^6;//电机工作指示灯绿灯开启
sbit state4=P3^5;//黄灯显示
/*延时程序*/
voiddelay02s(void)
{
  unsigned char i,j,k;
  for(i=100;i>0;i--)
  for(j=100;j>0;j--)
  for(k=200;k>0;k--);
}
main()
{
       P0=0;
    P2=1;
       while(1)
              {
             if(shougong==0)    //当按手动回复按钮时
                     { state1=0;          //手动控制亮红灯
                     dianji=0;         //开电机
              state2=0;         //报警器响
              state3=0;         //液位显示灯
              state4=1;
                       P0=table[0];      //数码管显示
                       delay02s();       //延时
                     }

           if(yeman==1&&yw5==1&&yw4==1&&yw3==1&&yw2==1&&yw1==0)//当唯一的闭合一个传感器单元:水位1时发生
                     {
                            dianji=0;//开电机
                            state1=1;//红灯亮
              state2=1; //报警不响
              state3=0; //电机工作指示灯打开
                       state4=0; //液位为1时亮黄灯
              P0=table[1]; //显示液位深度:1
                     }
           if(yeman==1&&yw5==1&&yw4==1&&yw3==1&&yw2==0&&yw1==1)//当唯一的闭合一个传感器单元:水位2时发生
                     {
                            P0=table[2];//显示液位深度:2
                state1=1; //红灯不亮
                            dianji=0; //电机显示亮
                            state2=1;
                            state3=0;
                state4=1; //黄灯不亮
                     }
          if(yeman==1&&yw5==1&&yw4==1&&yw3==0&&yw2==1&&yw1==1)//当唯一的闭合一个传感器单元:水位3时发生
                     {
                          P0=table[3]; //显示液位深度:3
                state1=1;
                            state2=1;
                            dianji=0;
                            state3=0;
                state4=1;
                     }
          if(yeman==1&&yw5==1&&yw4==0&&yw3==1&&yw2==1&&yw1==1)//当唯一的闭合一个传感器单元:水位4时发生
                     {
                            P0=table[4];
                        state1=1;
                            state2=1;
                            dianji=0;
                state3=0;
                state4=1;
                     }
         if(yeman==1&&yw5==0&&yw4==1&&yw3==1&&yw2==1&&yw1==1)//当唯一的闭合一个传感器单元:水位5时发生
                     {
                     dianji=1; //关电机
                            state1=0; //红灯开
                            state2=0;
                state3=1; //电机工作指示灯熄灭
                state4=1;
                P0=table[5]; //显示水位深度已满
                            delay02s();   
                     }
if(yeman==0&&yw5==1&&yw4==1&&yw3==1&&yw2==1&&yw1==1)                   {
                             
                            P0=table[1];
                        dianji=0;  
                            state1=1;
              state2=1;
              state3=0;
                        state4=0;
                            delay02s();
                            P0=table[2];
                            delay02s();
                            P0=table[3];
                            delay02s();
                            P0=table[4];
                            delay02s();
                            P0=table[5];
                            dianji=1;
                            state1=0;
                            state2=0;
              state3=1;
              state4=1;
                     }
   }
        
}



课程设计报告.doc

134 KB, 下载次数: 49, 下载积分: 黑币 -5

液位控制系统

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:942389 发表于 2021-7-3 18:33 | 只看该作者
大佬你这个最终完成点电路,为什么按 复位键 喇叭还在响啊
回复

使用道具 举报

板凳
ID:942389 发表于 2021-7-3 18:35 | 只看该作者
大佬为什么按照这个电路图,最后按 复位键 喇叭还是在响啊,大佬可以发一下电路图吗
回复

使用道具 举报

地板
ID:161164 发表于 2021-7-3 23:54 | 只看该作者
yunxiaowusan 发表于 2021-7-3 18:33
大佬你这个最终完成点电路,为什么按 复位键 喇叭还在响啊
  1.                 if(shougong==0)    //当按手动回复按钮时
  2.                 {
  3.                         state1=0;          //手动控制亮红灯
  4.                         dianji=0;         //开电机
  5.                         state2=0;         //报警器响
  6.                         state3=0;         //液位显示灯
  7.                         state4=1;
  8.                         P0=table[0];      //数码管显示
  9.                         delay02s();       //延时
  10.                 }
复制代码
没错啊?
如果只想响一下
可以在delay02s(); //延时
加下一句:state2=1; //报警器关

回复

使用道具 举报

5#
ID:282869 发表于 2021-7-4 09:28 | 只看该作者
下載研究參考看看 謝謝
回复

使用道具 举报

6#
ID:942389 发表于 2021-7-4 14:10 | 只看该作者
lkc8210 发表于 2021-7-3 23:54
没错啊?
如果只想响一下
可以在delay02s(); //延时

大佬我可以把电路图发给你看看是什么问题嘛
回复

使用道具 举报

7#
ID:942389 发表于 2021-7-4 14:29 | 只看该作者
lkc8210 发表于 2021-7-3 23:54
没错啊?
如果只想响一下
可以在delay02s(); //延时

大佬我用你帖子里的这个代码,烧不出程序,说代码有问题,然后用word里的附录代码,可以烧出程序,可是就是会按 复位键 ,喇叭还在响,大佬要不看看帖子里的这个代码呗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表