基于51单片机的温度报警系统

发布者:丹青妙手最新更新时间:2023-03-03 来源: zhihu关键字:51单片机  温度报警系统  LCD1602 手机看文章 扫描二维码
随时随地手机看文章

功能:

设计一个温度报警系统,可以设定温度上、下限的值,到达设定值时,蜂鸣器响;按键设定有设置、确定、取消、减少与增加功能,LCD1602实时显示相关温度信息

设定界面:


温度超过设定值,蜂鸣器响:

温度超过设定值,蜂鸣器响:温度超过设定值

温度低于设定值,蜂鸣器响:


部分程序:

#include

#include "SETTEM.h" //设置报警的上下限值头文件

#include "Lcd1602.h" //LCD显示模块功能头文件

#include "DS18B20.h" //DS18B02模块功能头文件

#include "IntToChar.h" //存放整型数转换为字符串头文件

#include "Alarm.h" //报警功能头文件


bit flag1s = 0; //1s定时标志

unsigned char T0RH = 0; //T0重载值的高字节

unsigned char T0RL = 0; //T0重载值的低字节


int key=0;

char Hint1[]={"Current temperature"};


void ConfigTimer0(unsigned int ms);


void main()

{

bit res;

int temp; //读取到的当前温度值

int intT, decT; //温度值的整数和小数部分

unsigned char len;

unsigned char str[12];

EA = 1; //开总中断

ConfigTimer0(10); //T0定时10ms

Start18B20(); //启动DS18B20

InitLcd1602(); //初始化液晶

ConfigInt0(); //设置温度

while (1)

{

if (flag1s) //每秒更新一次温度

{

flag1s = 0;

res = Get18B20Temp(&temp); //读取当前温度

if (res) //读取成功时,刷新当前温度显示

{

intT = temp >> 4; //分离出温度值整数部分

decT = temp & 0xF; //分离出温度值小数部分

len = IntToString(str, intT); //整数部分转换为字符串

str[len++] = '.'; //添加小数点

decT = (decT*10) / 16; //二进制的小数部分转换为1位十进制位

str[len++] = decT + '0'; //十进制小数位再转换为ASCII字符

str[len++] = key + '0';

while (len < 6) //用空格补齐到6个字符长度

{

str[len++] = ' ';

}

str[len] = ''; //添加字符串结束符

LcdShowStr(0, 0, Hint1); //提示显示到液晶屏上

LcdShowStr(0, 1, str); //温度显示到液晶屏上

}

else //读取失败时,提示错误信息

{

LcdShowStr(0, 0, "error!");

}

Start18B20(); //重新启动下一次转换

Alarm((float)temp*0.0625,Htem,Ltem);

}

}

}


关键字:51单片机  温度报警系统  LCD1602 引用地址:基于51单片机的温度报警系统

上一篇:基于51单片机的汽车倒车防撞报警系统
下一篇:基于单片机的指纹门禁设计

推荐阅读最新更新时间:2024-11-11 17:36

51单片机内部EEPROM的应用
STC89C51、52内部都自带有2K字节的EEPROM,54、55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000 次以上,先来介绍下ISP与IAP的区别和特点。 ISP:In System Programable 是指在系统编程,通俗的讲,就是片子已经焊板子上,不用取下,就可以简单而方便地对其进行编程。比如我们通过电脑给STC单片机下载程序,或给AT89S51单片机下载程序,这就是利用了ISP技术。 IAP:In Application Programable 是指在应用编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以
[单片机]
c51单片机外扩 62256 静态RAM
学习汇编语言寻址方式时 理论的知道 但是想知道地址总线物理的连接 所以自己就买了一个62256芯片(32K 静态RAM)进行连接,然后写程序测试。 上面原理图中 有个问题 62256芯片A0-A7没有接 需要用 74HC573 74HC573的链接图 然后网上又找到一张图 C51单片机中有ALE引脚,这个引脚会控制P0脚输出的是地址还是数据 使用原件 AT89S51 62256 74HC573 C51单片机建议买STC公司生产的40脚双列直插的 可以自己制作串口下载线
[单片机]
c<font color='red'>51单片机</font>外扩 62256 静态RAM
51单片机+8*8点阵实现的贪食蛇源代码
电路图和单片机仿真文件下载: http://www.51hei.com/bbs/dpj-20604-1.html 下面是源代码: #include reg51.h #define uchar unsigned char #define SNAKE 20 //最大长度 #define TIME 50 //显示延时时间 #define SPEED 71 //速度控制 //#define keyenable 1 sbit keyenable=P3^6; //方向使能 /*sbit keyx=P0^1; //左右 sbit keyy=P0^2; //上下 */ //s
[单片机]
<font color='red'>51单片机</font>+8*8点阵实现的贪食蛇源代码
51单片机-LED部分(3)
8个发光二极管间隔200ms由上至下,再由下至上,再重复一遍,然后全部熄灭再次以300ms间隔全部闪烁5次,重复此过程 . C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include #include #define uchar unsigned char #define uint unsigned int uchar x, y, j, temp; void delayms(uint
[单片机]
MCS-51单片机存储地址空间划分
1.前言 MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。 MCS-51单片机在物理结构上有四个存储空间 1、片内程序存储器(片内ROM) 2、片外程序存储器(片外ROM) 3、片内数据存储器(片内RAM) 4、片外数据存储器(片外RAM) 在逻辑上(即从用户的角度上)MCS-51单片机有三个存储空间 1、片内外统一编址的64K的程序存储器(ROM)地址空间(MOVC) 2、256B的片内数据存储器(片内RAM)的地址空间(MOV) 3、以及64K片外数据存储器(片外RAM)的地址空间(MOVX) 注:在访问三个不同的逻辑空间时,应采用不同形式的指令以产生不同的存储器空间的选通信号。 2.存储空间划
[单片机]
蜂鸣器唱《祝你平安》51单片机
蜂鸣器唱《祝你平安》 * * ********************************************************************************/ SPK bit P1.4 ORG 0000H LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M 晶振 ,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUS IC 0: NOP MOV DPTR,#DAT ;表头地
[单片机]
51单片机定时器/计数器的结构及方式控制寄存器TMOD
1、定时器/ 计数器 的结构如图1所示。 图片1 2 、定时器/计数器方式控制寄存器TMOD TMOD用于控制定时器/汁数器的工作模式及工作方式,其字节地址为80H,格式如下。其中,低4位用于决定T0的工作方式,高4位用于决定T1的工作方式。 图片1 1)、M1和M0工作方式控制位 M0和M1为工作方式控制位,确定4种工作方式,如表1所示。 图片1 2)、C/T定时器/计数器方式选择位 C/T=0,设置为定时方式,对机器周期进行计数; C/T=1,设定为计数方式,对外部信号进行计数,外部信号接至T0(P3.4)或T1(P3.5)引脚。 3)、GATE门控位 GATE=0时,只要用软件使TR0(或TR1)置
[单片机]
<font color='red'>51单片机</font>定时器/计数器的结构及方式控制寄存器TMOD
51单片机1ms延时程序
51单片机1ms延时程序 程序: void delay1s(void) { unsigned char h,i,j,k; for(h=5;h 0;h--) for(i=4;i 0;i--) for(j=116;j 0;j--) for(k=214;k 0;k--); } void delay1s(void)//12M晶振,延时999999.00us { unsigned char i,j,k; for(i=46;i 0;i--) for(j=152;j 0;j--) for(k=70;k 0;k--); }
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved