前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于单片机的水位检测系统_51单片机温度传感器程序

基于单片机的水位检测系统_51单片机温度传感器程序

作者头像
全栈程序员站长
发布于 2022-11-10 08:30:34
发布于 2022-11-10 08:30:34
39900
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

开发前的准备:

LCD1602一块

51单片机开发板 一块(这里我用的是普中的板子)

霍尔水流量传感器一块(红色接5V黑色接GND黄色是数据传接口)

霍尔传感器流量经验公式: Q=(F+3)/8.1 Q表示流量

main.c

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <REGX52.H>//头文件
#include "LCD1602.H"//1602显示的头文件
#include "Buzzer.h"//蜂鸣器的头文件
#define uchar unsigned char   //宏定义
#define uint  unsigned int   //宏定义
#define stand  40   //设置报警值(可调根据自己需求调)
uint flag;//设置标志位
sbit led=P2^0;
sbit K1=P3^1;//定义按键Key1引脚
float Q,F,num;//Q为流量,单位L/min;F为频率,单位HZ
//毫秒级延时函数
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
uint read()//得到计数器0当前脉冲次数函数
{
uint tl,th1,th2;//读两次高位,两次高位一样说明没有低位进位,读数更加精确。
uint value;//设置存储值value
while(1)
{
th1=TH0;//定时器置高位赋值给th1
tl=TL0;//定时器置低位赋值给t1
th2=TH0;//定时器置高位赋值给th2
if(th1==th2)//判断如果两个高位相等就结束
break;
}
value=th1*256+tl;//把定时器高位转为二进制+上低位
return value;//返回val的值
}
void buzzer()//蜂鸣器报警
{
Buzzer_Time(100);
}
void timer0()//定时器函数
{
TMOD=0x15;//定时器计数器工作方式配置
TH0=0;//高位
TL0=0;//低位
TH1=(65536-45872)/256;//确定高位
TL1=(65536-45872)%256;//确定低位
EA=1;//开总中断
ET0=1;//中断允许
ET1=1;
TR0=1;//运行控制位
TR1=1;
}
void KeyPro()//按键函数
{
static uint a;//静态变量a标志位
if(K1==0)//如果k1按下
{
delay(20);//按时20ms
if(K1==0)//再一次判断		
{
a++;//标志位+1
if(a%2==0)//标注位对二求余等于0
{
flag=1;//flag就等于1
}
else//否则就flag等于0
{			
flag=0;				
}
}
}
}
void main()//主函数
{
LCD_Init();//初始化
timer0();//定时器初始化
while(1)//死循环
{			 
KeyPro();//按键函数
LCD_ShowNum(1,2,Q,4);//lcd1602显示函数
LCD_ShowString(1,6,"ML");//lcd1602显示函数  字符串
if(stand <= Q)//判断预设值和报警值
{
if(flag==1)//标注位等于1的话蜂鸣器就报警
{
buzzer();//蜂鸣器报警
}
}
}	 
}
void T0_time()interrupt 1//中段函数1
{
TH0=0;
TL0=0;
}
void T1_time()interrupt 2//中断3
{
TH1=(65536-45872)/256;//50毫秒
TL1=(65536-45872)%256;
num++;
if(num==5)  //1s更新一次数据,送至数码管显示
{
num=0;
F=read();//每隔1s读一次计数器0,该值则为频率。计算出Q后立马把计数器0清零重新计数。
if(F>0)
{
Q=(F+3)/8.1*100;   //流量传感器经验公式根据这个公式计算水流量
TH0=0;
TL0=0;													 
}
else
{
Q=0;//如果不加这句,当F=0,由公式知道Q!=0。
TH0=0;
TL0=0;
}
} 
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月27日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
单片机补充案例--stc89c52的P4口使用
说明:头文件为8052.h默认情况下不能使用P4口,需要添加如下代码,如使用P4_4:
zhangrelay
2021/03/03
9210
【51单片机】配置定时器
​ 那么我们先创建一个子函数 void Timer0_Init() ⇥ 对定时器进行初始化。 那么首先是TMOD的一个配置,定时器1我们先不管(高四位定时器全部给上0),只管低四位的一个定时器0的一个配置。 在前面的定时器工作有介绍过,STC89C52 的 T0 和 T1 一共有四种工作模式:在这里我们选择最常用的工作模式1。 Ⅰ:工作模式①的话,我们只需要把 M1 = 0,M0 = 1 就是定时器模式①的配置了。 Ⅱ:C/T(取反):这个我们只需要给C/T(取反) = 0即可,SYSclk⇢系统时钟。 Ⅲ:GATE(门控端),GATE = 0,这里当中都是数字电路当中的一些基础逻辑门,TR0 = 1。
謓泽
2022/12/12
7320
【51单片机】配置定时器
MCS-51单片机温度控制系统的设计
注塑机是一种常用的制造设备,用于生产塑料制品。在注塑机的工作过程中,溶胶必须达到一定的温度才能被注入模具中进行成型。因此,在注塑机的生产过程中,温度控制是非常重要的一环。
DS小龙哥
2023/09/07
3490
MCS-51单片机温度控制系统的设计
实验四:定时器实验[通俗易懂]
一、实验目的 1、掌握单片机定时/计数器的使用方法。 2、掌握定时/计数器编程方法。
全栈程序员站长
2022/09/17
9700
实验四:定时器实验[通俗易懂]
水流量霍尔传感器工作原理_51单片机温度传感器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
1.2K0
水流量霍尔传感器工作原理_51单片机温度传感器
设计分享|基于51单片机的门铃设计
51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
电子工程师成长日记
2025/03/10
1390
设计分享|基于51单片机的门铃设计
基于单片机的数字温度计设计
数字温度计是一种用于测量和显示环境温度的设备。本文章介绍基于STC89C52主控芯片的数字温度计的设计过程和实现原理。该设计采用DS18B20温度传感器进行温度采集,使用LCD1602显示屏进行温度显示,通过按键设置温度的上限和下限阀值,并通过蜂鸣器进行报警。
DS小龙哥
2023/09/01
9790
基于单片机的数字温度计设计
51单片机学习 中断及定时/计数实验
T1工作于方式 0 定时,P1.0口输出周期为 8ms 的方波,由仿真结果可以看到,一格为 2 ms,输出方波一个周期占了 4 格。
叶庭云
2021/12/01
1K0
51单片机学习     中断及定时/计数实验
山东大学单片机原理与应用实验 3.8 ADC0808/9信号采集实验
利用LCD1602和AD0808实现简单的交流信号过零检测与频率分析。要求信号幅度变化时(满量程的5%—95%),不影响检测到结果。频率检测的结果通过LCD1602的第一行显示出来,信号过零时,能够通过P2.6输出一个脉冲宽度为5μs的脉冲信号。
timerring
2022/07/20
9350
山东大学单片机原理与应用实验 3.8 ADC0808/9信号采集实验
(十六)51单片机——红外遥控
目录 学习目标 成果展示  硬件知识 简介 硬件电路 NEC编码 遥控器键码 外部中断  中断号 寄存器 代码  红外调控  直流电机 总结  ---- 学习目标         本节知识我们来学习关于红外遥控的部分,重点要学习的是NEC编码和外部中断的知识,好了,让我们开始今天的学习吧! 成果展示  https://live.csdn.net/v/embed/229226 红外遥控) https://live.csdn.net/v/embed/229231 红外调速直流电机 硬件知识 简介    
小点点
2022/12/12
1.1K0
(十六)51单片机——红外遥控
蓝桥杯单片机必备知识—–(9)超声波测距
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。这就是所谓的时间差测距法。 超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。 测距的公式表示为:L=C×T 式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。 超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量,虽然目前的测距量程上能达到百米,但测量的精度往往只能达到厘米数量级。 由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段。在精密的液位测量中需要达到毫米级的测量精度,但是目前国内的超声波测距专用集成电路都是只有厘米级的测量精度。
全栈程序员站长
2021/04/16
8030
蓝桥杯单片机必备知识—–(9)超声波测距
单片机入门:定时器/计数器应用
利用单片机内部定时器/计数器中断实现一个数码管的秒记数,重点学习定时器/计数器的工作方式以及其控制寄存器TMOD、TCON的功能,在程序实现过程中掌握定时器/计数器中断的一般步骤。
电子工程师成长日记
2022/07/21
6570
单片机入门:定时器/计数器应用
单片机补充案例--入侵检测系统
说明:使用 STC89C52 设计入侵检测系统,给出方案和核心代码,需满足下列要求: 1. 发现入侵立刻开启 LED 闪烁警示 2. 入侵超过 5s 警报响起 3. 手动清除声光报警时,需输入安许可防密码
zhangrelay
2021/03/03
9700
设计分享|单片机8路抢答器
51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。
电子工程师成长日记
2022/07/27
6170
设计分享|单片机8路抢答器
设计分享|51单片机双定时器控制16位流水灯
51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
电子工程师成长日记
2025/02/10
950
设计分享|51单片机双定时器控制16位流水灯
关于单片机定时器的个人看法
其实本来不是写定时器的文章,而是想写一篇长长的文章把单片机说完。但是我写的写的后悔了,实在是有点多,写完定时器就饿了,SO,最后起了这个名字。
云深无际
2022/03/07
3470
关于单片机定时器的个人看法
4.10 51单片机-使用计数器测量NE555脉冲频率
STC90C51RC/RD+系列单片机内部设置的两个16位定时器/计数器T0和T1都具有计数方式和定时方式两种工作方式。对每个定时器/计数器(T0和T1),在特殊功能寄存器TMOD中都有一控制-C/T来选择T0或者T1为定时器还是计数器。定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每6个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚(T0为P3.3,T1为P3.3),则为计数方式,每来一个脉冲加1。
DS小龙哥
2022/01/10
1.7K0
4.10 51单片机-使用计数器测量NE555脉冲频率
(十三)基于51单片机的简单温度报警装置
        调安全温度范围我们用按键来实现,但是得用定时器来扫描,不然会影响获取温度;
小点点
2022/12/12
3920
蓝桥杯单片机矩阵按键扫描编程
蓝桥杯单片机中的NE555模块的编程,其实是很简单。简单来说就是计算一秒钟之内有多少个频率响应。中间所谓的频率响应也就是计算定时器作为计数器时候溢出的个数而已。能够考察的点就是这样子了,也要稍微了解,之后进行编程,就能够熟练掌握了。
全栈程序员站长
2021/11/15
4310
51单片机+DS1302设计一个电子钟(LCD1602显示时间)
电子钟是一种能够准确显示时间的设备,广泛应用于家庭、办公场所和公共场所,为人们提供了方便和准确的时间信息。本项目设计一个基于51单片机的电子钟,使用DS1302作为RTC时钟芯片,LCD1602作为显示屏,并通过串口方式连接上位机进行时间设置和闹钟设置。
DS小龙哥
2023/11/15
1.9K1
51单片机+DS1302设计一个电子钟(LCD1602显示时间)
相关推荐
单片机补充案例--stc89c52的P4口使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验