功能:
設(shè)計(jì)一個(gè)溫度報(bào)警系統(tǒng),可以設(shè)定溫度上、下限的值,到達(dá)設(shè)定值時(shí),蜂鳴器響;按鍵設(shè)定有設(shè)置、確定、取消、減少與增加功能,LCD1602實(shí)時(shí)顯示相關(guān)溫度信息
設(shè)定界面:
溫度超過設(shè)定值,蜂鳴器響:
溫度超過設(shè)定值,蜂鳴器響:溫度超過設(shè)定值??????
溫度低于設(shè)定值,蜂鳴器響:
部分程序:
#include <reg52.h>
#include "SETTEM.h"????? //設(shè)置報(bào)警的上下限值頭文件
#include "Lcd1602.h"???? //LCD顯示模塊功能頭文件
#include "DS18B20.h"???? //DS18B02模塊功能頭文件
#include "IntToChar.h"?? //存放整型數(shù)轉(zhuǎn)換為字符串頭文件
#include "Alarm.h"? ???? ?//報(bào)警功能頭文件
bit flag1s = 0;????????? //1s定時(shí)標(biāo)志
unsigned char T0RH = 0;? //T0重載值的高字節(jié)
unsigned char T0RL = 0;? //T0重載值的低字節(jié)
int key=0;
char Hint1[]={"Current temperature"};
void ConfigTimer0(unsigned int ms);
void main()
{
bit res;
int temp;???????????????????????????????? //讀取到的當(dāng)前溫度值
int intT, decT;?????????????????????????? //溫度值的整數(shù)和小數(shù)部分
unsigned char len;
unsigned char str[12];
EA = 1;?????????????????????????????????? //開總中斷
ConfigTimer0(10);???????????????????????? //T0定時(shí)10ms
Start18B20();???????????????????????????? //啟動(dòng)DS18B20
InitLcd1602();??????????????????????????? //初始化液晶
ConfigInt0();???????????????????????????? //設(shè)置溫度
while (1)
{
if (flag1s)?????????????????????????? //每秒更新一次溫度
{
flag1s = 0;
res = Get18B20Temp(&temp);??????? //讀取當(dāng)前溫度
if (res)????????? ????????????????//讀取成功時(shí),刷新當(dāng)前溫度顯示
{
intT = temp >> 4;???????????? //分離出溫度值整數(shù)部分
decT = temp & 0xF;??????????? //分離出溫度值小數(shù)部分
len = IntToString(str, intT); //整數(shù)部分轉(zhuǎn)換為字符串
str[len++] = '.';???????????? //添加小數(shù)點(diǎn)
decT = (decT*10) / 16;??????? //二進(jìn)制的小數(shù)部分轉(zhuǎn)換為1位十進(jìn)制位
str[len++] = decT + '0';????? //十進(jìn)制小數(shù)位再轉(zhuǎn)換為ASCII字符
str[len++] = key + '0';
while (len < 6)?????????????? //用空格補(bǔ)齊到6個(gè)字符長度
{
str[len++] = ' ';
}
str[len] = '?';????????????? //添加字符串結(jié)束符
LcdShowStr(0, 0, Hint1);????? //提示顯示到液晶屏上
LcdShowStr(0, 1, str);??????? //溫度顯示到液晶屏上
}
else????????????????????????????? //讀取失敗時(shí),提示錯(cuò)誤信息
{
LcdShowStr(0, 0, "error!");
}
Start18B20();???????????????????? //重新啟動(dòng)下一次轉(zhuǎn)換
Alarm((float)temp*0.0625,Htem,Ltem);
}
}
}
資料包括:
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。
紛傳點(diǎn)擊用微信打開即可,過程有點(diǎn)繁瑣請見諒。