基于51单片机多路温度报警器LCD1602液晶设计仿真实训

演示视频:https://v.youku.com/v_show/id_XMzk1MTcxNzY3Ng==.html?spm=a2hzp.8253869.0.0
将链接复制至IE浏览器打开!!!
功能操作说明:
本设计包括4个按键,复位键,设置键,加键,减键。
采用4路DS18B20温度传感器采用单总线方式读取数据。
程序运行后4路温度在数码管上轮回显示。
没有按键按下情况下会一直显示温度。
按下报警开关键后,温度超过设置值后会报警,蜂鸣器会报警。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
18b20+光敏+LCD1602+51单片机,显示温度及光的有无。 /*----------------------------------------------- 名称:DS18b20 温度检测液晶显示 编写:shifang 日期:2009.5 修改:无 内容: ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include<stdio.h> #include "18b20.h" #include "18b20a.h" #include "1602.h" #include "delay.h" bit ReadTempFlag;//定义读时间标志 void Init_Timer0(void);//定时器初始化 /*------------------------------------------------ 串口通讯初始化 ------------------------------------------------*/ void UART_Init(void) { SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装 TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz TR1 = 1; // TR1: timer 1 打开 //EA = 1; //打开总中断 //ES = 1; //打开串口中断 TI=1; } /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { int temp; float temperature; char displaytemp[16];//定义显示区域临时存储数组 LCD_Init(); //初始化液晶 DelayMs(20); //延时有助于稳定 LCD_Clear(); //清屏 Init_Timer0(); UART_Init(); Lcd_User_Chr(); //写入自定义字符 LCD_Write_Char(7,0,0x01);//写入温度右上角点 LCD_Write_Char(8,0,'C'); //写入字符C LCD_Write_Char(7,1,0x01);//写入温度右上角点 LCD_Write_Char(8,1,'C'); //写入字符C while (1) //主循环 { if(ReadTempFlag==1) { ReadTempFlag=0; temp=ReadTemperature(); temperature=(float)temp*0.0625; sprintf(displaytemp,"(1)%3.1f",temperature);//打印温度值 显示三位数,到小数点后一位 LCD_Write_String(0,0,displaytemp);//显示第一行 guan(); temp=ReadTemperature_a(); temperature=(float)temp*0.0625; sprintf(displaytemp,"(2)%3.1f",temperature);//打印温度LCD_Write_String(0,1,displaytemp);//显示第二行 guan2(); } } } /*------------------------------------------------ 定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 //TH0=0x00; //给定初值 //TL0=0x00; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } /*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 { static unsigned int num; TH0=(65536-2000)/256; //重新赋值 2ms TL0=(65536-2000)%6; num++; if(num==600) // { num=0; ReadTempFlag=1; //读标志位置1 } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机设计爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值