|
温度报警器部分程序
#include<reg52.h>
#include"stdio.h"
typedef unsigned char uint8;
typedef unsigned int uint16;
/***************************************************/
sbit RS =P2^5; //LCD1602的数据命令选择
sbit RW = P2^6;
sbit EN_LCD =P2^7; //LCD1602的使能信号
sbit BUZZER = P2^0;
sbit K1 = P3^7; //右
sbit K2 = P3^6; //加
sbit K3 = P3^5; //减
/****************DS18B20引脚**********************/
sbit DS18B20 = P2^1; //DS18B20数据端
/***********************************************************/
/******************************************************/
void delay(uint16 time); // 延时函数(6us单位)
void lcd_ini(); // LCD1602的初始化
void lcd_order(uint8 date); //向LCD1602的写1个指令
void lcd_data(uint8 date); //向LCD1602的写1个指令
void xie1602(uint8 add,uint8 daa); //写数据
void xianshi1();//显示温度
uint8 ds18_ini(); //ds18B20初使化函数
void ds18_write(uint8 date); //功能向DS18B20中写入一个数据
uint8 ds18_read(); //功能从DS18B20中读出一个数据并返回。
void ds18_check(); //起动DS18B20行进温度采集,并返回当前温度(tmp)
void xiugai(); //修改报警范围
long tmp=0; //储存温度值
long t_h=37, t_l=10; //温度的上限和下限
bit tmp_hb = 0; tmp_lb = 0; //温度上下限调节指示变量
void panduan(); //判断报警
uint8 hodometer[]= " H:00 L: 00 ";
uint8 temp[]= " wendu:00.00 ";
uint16 ji = 0;
uint8 ku=0; //biaozhiwei
void main()
{
lcd_ini();
ds18_ini(); //ds18B20初使化
ds18_write(0xcc); //跳过序列号
ds18_write(0x44); //启动温度转换
xie1602(4,t_h);
xie1602(12,t_l);
while(1)
{
ds18_check(); //从DS18B20中读出温度
xianshi1();
xiugai();
panduan();
}
}
void xie1602(uint8 add,uint8 daa)
{
lcd_order(0x80+add);
lcd_data(0x30+daa/10);
lcd_data(0x30+daa%10
|
评分
-
查看全部评分
|