本项目为设计一个可以报警的智能温度显示系统,该系统由单片机最小系统、oled显示屏电路、复位电路、 功能按键电路等组成。系统上电后开始工作,可通过功能按键设置好运行模式,启动运行后数字温度传感 器DS18B20不断采集温度数据,并送给单片机处理,单片机将系统设置数据与当前温度传感器DS18B20 采集的温度传感器数据进行对比,决定是否报警。
本项目采用STC89C52RC单片机作为主控制器,由oled屏显示,使用8550和SS8050三极管驱动, LED灯作为报警装置,温度传感器采用数字输出形式的DS18B20,通过温度检测和设定温度比较, 三种工作方式:风扇停止,风扇转动,风扇全速转动。
#include <reg51.h>
#include <intrins.h>
#include "ds18b20.h"
#include "oled.h"
#include "key.h"
sbit fengsan=P2^3;//控制风扇
unsigned char time=0;
void Timer0Init(void) //5毫秒@11.0592MHz
{
TL0 = 0xCD; //设置定时初值
TL0 = 0x00; //设置定时初值
TH0 = 0x28; //设置定时初值
TR0 = 1; //定时器0开始计时
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);//当
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();//高低温检测值
zhidowenkong();//自动控制风扇
}
}
}
void InterruptTimer0() interrupt 1
{
time=1;
}
纷传文章借鉴与此