本項(xiàng)目為設(shè)計(jì)一個(gè)可以報(bào)警的智能溫度顯示系統(tǒng),該系統(tǒng)由單片機(jī)最小系統(tǒng)、oled顯示屏電路、復(fù)位電路、 功能按鍵電路等組成。系統(tǒng)上電后開始工作,可通過功能按鍵設(shè)置好運(yùn)行模式,啟動(dòng)運(yùn)行后數(shù)字溫度傳感 器DS18B20不斷采集溫度數(shù)據(jù),并送給單片機(jī)處理,單片機(jī)將系統(tǒng)設(shè)置數(shù)據(jù)與當(dāng)前溫度傳感器DS18B20 采集的溫度傳感器數(shù)據(jù)進(jìn)行對(duì)比,決定是否報(bào)警。
本項(xiàng)目采用STC89C52RC單片機(jī)作為主控制器,由oled屏顯示,使用8550和SS8050三極管驅(qū)動(dòng), LED燈作為報(bào)警裝置,溫度傳感器采用數(shù)字輸出形式的DS18B20,通過溫度檢測(cè)和設(shè)定溫度比較, 三種工作方式:風(fēng)扇停止,風(fēng)扇轉(zhuǎn)動(dòng),風(fēng)扇全速轉(zhuǎn)動(dòng)。
#include <reg51.h>
#include <intrins.h>
#include "ds18b20.h"
#include "oled.h"
#include "key.h"
sbit fengsan=P2^3;//控制風(fēng)扇
unsigned char time=0;
void Timer0Init(void) //5毫秒@11.0592MHz
{
TMOD = 0x01; //設(shè)置定時(shí)器模式
TL0 = 0xCD; //設(shè)置定時(shí)初值
TL0 = 0x00; //設(shè)置定時(shí)初值
TH0 = 0x28; //設(shè)置定時(shí)初值
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
ET0 = 1;
EA=1;
}
void main()
{
fengsan=0;
shang=3000;
xia=2000; //初始上下限值
OLED_Init();
OLED_Clear();//清屏
init_ds18b20();
Timer0Init(); //30微秒@11.0592MHz
OLED_ShowCHinese(0,0,0);//當(dāng)
OLED_ShowCHinese(18,0,1);//前
OLED_ShowCHinese(36,0,2);//溫
OLED_ShowCHinese(54,0,3);//度
while(1)
{
if(time==1)
{
duquwendu=DS_OneWire()*100;
gaodiwensheji();//高低溫檢測(cè)值
zhidowenkong();//自動(dòng)控制風(fēng)扇
}
}
}
void InterruptTimer0() interrupt 1
{
time=1;
}
紛傳文章借鑒與此