#include                  //调用单片机头文件

#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255

#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535

//数码管段选定义       0    1    2    3    4        5        6         7          8           9

uchar code smg_du[]={0xde,0x91,0xcd,0xd5,0x93,0x2b,0x5f,0xd4,0xdf,0xd1,

//                                           A        B         C          D           E   F        不显示

0xd7,0x1f,0x4e,0x9d,0x4f,0x47 };         //断码

sbit led_y = P2^2;          //黄灯        //高水位

sbit led_g = P2^1;          //绿灯

sbit led_r = P2^0;          //红灯        //低水位

sbit shuiwei1 = P3^4;

sbit shuiwei2 = P3^5;

sbit shuiwei3 = P3^6;

sbit shuiwei4 = P3^7;

sbit relay = P1^0;   //继电器

sbit beep =  P2^7;   //蜂鸣器

uchar shuiwei;   //水位

sbit dianji = P2^3;

/***********************1ms延时函数*****************************/

void delay_1ms(uint q)

{

uint i,j;

for(i=0;i

for(j=0;j<120;j++);

}

/********************独立按键程序*****************/

uchar key_can;         //按键值

void key()         //独立按键程序

{

static uchar key_new;

P1 |= 0x06;

if((P1 & 0x06) != 0x06)                //按键按下

{

delay_1ms(1);                     //按键消抖动

if(((P1 & 0x06) != 0x06) && (key_new == 1))

{                                                //确认是按键按下

key_new = 0;

switch(P1 & 0x06)

{

case 0x02: relay = 0;  //手动进水

break;          //得到按键值

case 0x04: relay = 1;  //手动停止进水

break;          //得到按键值

}

}

}

else   //按键松开

key_new = 1;

}

/******************主程序**********************/

void main()

{

P0 = P1 = P2 = P3 = 0xff;  //初始化单片机IO口为高电平

P0 = ~smg_du[0] ;

delay_1ms(1500);

while(1)

{

key();         //独立按键程序

if(shuiwei4 == 1)             //高水位 4档

{

shuiwei = 4;

led_r = 1;led_g = 1;led_y = 0;           //高水位绿灯亮

}

else if(shuiwei3 == 1)         //       3档

{

shuiwei = 3;

led_r = 1;led_g = 0;led_y = 1;           //正常水位绿灯亮

}

else if(shuiwei2 == 1)         //       2档

{

shuiwei = 2;

led_r = 1;led_g = 0;led_y = 1;           //正常水位绿灯亮

}

else if(shuiwei1 == 1)         //       1档

{

shuiwei = 1;

led_r = 1;led_g = 0;led_y = 1;           //正常水位绿灯亮

}else                                         //低水位 0

{

shuiwei = 0;

led_r = 0;led_g = 1;led_y = 1;           //低水位红灯亮

}

P0 = ~smg_du[shuiwei];           //

if(shuiwei < 1)        //进水

{

beep = ~beep;  //蜂鸣器报警

relay = 0;     //打开继电器  进水

}

else

{

beep = 1;    //关闭蜂鸣器

}

if(shuiwei >= 4)  //停止进水

{

relay = 1;          //关闭继电器

dianji = 0;  //打开抽水电机

}else

{

dianji = 1;   //关闭电机

}

key();         //独立按键程序

delay_1ms(100);

}

}

智能水位检测系统proteus_单片机水塔水箱水位系统Proteus仿真程序相关推荐

  1. 水塔水位测量c语言程序,基于51单片机水塔水箱水位检测系统控制器设计(附程序代码)...

    基于51单片机水塔水箱水位检测系统控制器设计(附程序代码)(任务书,开题报告,外文翻译,论文18000字) 摘  要 为了能实现水位监测与控制,以STC89C52作为核心控制芯片,进行了水位检测系统控 ...

  2. 毕业设计 基于STM32单片机的水箱水位控制系统

    基于STM32单片机的水箱水位控制系统 用32单片机完成对MPX10DP压差传感器的数据采集,然后将采集的信号在OLED12864显示屏上,然后可以用按键设定上下限值,当超过上下值得时候分别控制继电器 ...

  3. 51单片机自动浇水系统/51单片机自动浇花系统/智能浇水系统

    51单片机自动浇水系统/51单片机自动浇花系统 整个设计由51单片机模块.湿度传感器模块(土壤湿度传感器或者温度传感器或者温湿度传感器,都可以).lcd1602液晶显示模块等组成,实现智能浇花和智能浇 ...

  4. 基于单片机双路温度检测报警系统设计-基于单片机声光控智能开关控制灯设计-基于单片机热电偶智能体温检测设计-基于单片机小型家用燃气锅炉控制系统设计-基于单片机一氧化碳有毒气体采集报警系统设计

    1628基于单片机双路温度检测报警系统设计(串口上位机控制) 基于pcf8591 tlc2543的双路温度检测报警系统 带串口上位机控制带仿真 源程序 温度传感器是 LM35 两路测温通道所用的ad芯 ...

  5. 基于单片机热电偶智能体温检测系统设计-基于单片机一氧化碳CO有毒气体采集报警系统设计-基于单片机热电偶智能体温检测系统设计(仿真,原理图,报告)【资料转发分享】

    1626基于单片机小型家用燃气锅炉控制系统设计(仿真,程序,论文) 1. 设计任务 结合实际情况,基于AT89C51单片机设计一个小型家用燃气锅炉单片机控制系统. 该系统应满足的功能要求为: (1) ...

  6. 基于51单片机的水箱水位监测控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.通过传感器监测水位,当水位低于水位下限时,接通加水水泵,直到水位达到水位上限,停止加水 2.水位低于水位下限时,声光报警 3.可按键手动加水, ...

  7. 单片机实现水位控制C语言,单片机课程设计 水位自动控制.doc

    单片机课程设计 水位自动控制 河南机电高等专科学校电气工程系 电子课程设计报告 设计题目:水位自动控制 专业: 电机与电器 班级: 101 班 学号: 姓名: 指导教师: 设计时间: 2012-6-2 ...

  8. 基于51单片机水塔水箱液水位WIFI监控报警设计proteus仿真原理图PCB

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.WIFI实时上传当前水位状态 2.通过液位传感器检测液位,检测到最低液位和最高液位时,超过设定阈值将声光报警 3.通过状态指示灯显 ...

  9. 基于51单片机的多音阶电子琴proteus仿真程序原理设计

    硬件设计 仿真图1: 总共二十几个按键,高中低音阶,同时可以播放歌曲,开机可设置显示学号 仿真图2: 7个音符按键,切换高中低音阶,同时可以播放歌曲 程序设计 #include<reg52.h& ...

最新文章

  1. Py之pycurl:Python 库之pycurl的简介、安装、使用方法之详细攻略
  2. 解决样本类别不平衡以及困难样本问题的方法总结
  3. oracle中dbms_并发和由于DBMS中的并发导致的问题
  4. 总算知道怎样从ImageMagick生成的数据转换成HICON: MagickGetImageBlob LookupIconIdFromDirectoryEx...
  5. linux yum源码安装mysql_linux下通过源码包安装mysql,以及yum安装
  6. 24. Swap Nodes in Pairs 1
  7. android webview 魅族,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
  8. 个性化制作nodemcu-firmware(esp8266/esp8285 固件制作)----包含lua程序bin的制作
  9. 华为2019年4月10日实习生笔试题
  10. 金融行业数据容灾架构中的数据复制技术
  11. 猴子问题----约瑟夫环算法
  12. 计算机位数怎么看win10,怎么查看Win10是32位还是64位操作系统?
  13. 常变量和符号常量的区别?常变量和文字常量的区别?
  14. 2021-08-11好奇心
  15. 最小费用流算法不完全指南-2017华为软件精英挑战赛
  16. 软件开发工程师 学习路线
  17. 软件开发中会使用到的图
  18. Python中 range 和xrange的详细区别
  19. 如何在win7下装win8以及我的win8之旅
  20. mw320r虚拟服务器,水星MW320R路由器桥接设置教程 | 192路由网

热门文章

  1. 操作系统:第二章 进程管理2 - 处理机调度
  2. 递归算法题解析:设m,n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目
  3. 【Java入门】package包
  4. java学习笔记十三
  5. 多线程基础-实现多线程的两种方式(二)
  6. 13.multi-term-vector请求
  7. 互联网大鳄的成长模式
  8. 计算机秋招必备!上海互联网大厂企业整理清单!
  9. 使用组合索引你得注意了
  10. 老的消息中间件投递失败的类型值_RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息...