第一范文网 - 专业文章范例文档资料分享平台

基于51单片机stc89c58的智能家居设计(仅分享)

来源:用户分享 时间:2025/10/17 18:47:30 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

/***************************************************************/ /* 智能家居控制系统 原设计:刘东宇

芯片:STC89C58+DS18B20+DHT11+DS1302+LCD12864+红外人体感应器+无线遥控 功能:1.数字可调万年历

2.显示空气中温度和湿度 3.对环境温度和湿度可以自动控制 4.测量水的温度 5.无线控制 6.防盗报警 7.低功耗模式 8.开机图片 9.EEPROM数据保存 其他文件略做修改即可添加 */ /***************************************************************/

#include #include #include #include\#include\#include\#include\#include\#include\#include\#include\#include\

/********************函数申明********************/ void init(); //初始化程序 void sleep_sign_init(); //睡眠(报警)模式初始化 void init_time_DHT11_DS18B20(); //初始化定时器T0和T1 void open_logo(); //开机图片 void kay_scan(); //kay_scan 按键扫描程序 void display_time(); //display_time时间扫描(LCD12864显示) void alarm(); //温湿度超值判断

void sleep_sign(); //睡眠(报警)模式和正常模式切换函数 void sos_display(); //当声光报警时LCD12864显示“报警!” /************位变量定义****************/ sbit lcd_lig=P2^4; //LCD12864背光控制 sbit relay1=P1^0; //继电器1 sbit relay2=P1^1; //继电器2

sbit voi_lig_sigo=P1^2; //声光报警控制位 sbit key_sigo=P1^6; //睡眠(报警)模式进入按键 /************变量定义****************/ unsigned char code shu5[]={\

unsigned char code shu6[]={\年月日:%unsigned int k,T; bit Interrupt_flag=1; //该标志位可以有效防止报警触发后影响其他程序

bit sos=0; //LCD12864显示报警标志位

void main() {

init(); //初始化程序 lcd_lig=0; //开LCD背光 open_logo(); //开机LOGO sleep_sign_init(); //睡眠(报警)模式初始化 init_lcd12864(); //初始化LCD12864 init_time_DHT11_DS18B20(); //初始化定时器T0和T1 DS18B20_caution(); //DS18B20温度报警设置 while(1) { kay_scan(); //kay_scan 按键扫描程序 display_time(); //display_time 时间显示扫描(LCD12864显示) alarm(); //温湿度超值判断 sleep_sign(); //睡眠(报警)模式和正常模式切换函数 sos_display(); //当声光报警时LCD12864显示“报警!” } }

/************************************************/

/****************程序初始化**********************/ /************************************************/ void init() {

IAP_ReadCode(0x8000,&set_up_sd,1); //读湿度阀值 IAP_ReadCode(0x800f,&set_up_wd,1); //读温度阀值

relay1=1; //继电器1(湿度控制) relay2=1; //继电器2(温度控制)

IP=0X0A; //中断优先级设定,将定时器T0和T1设置为高级

sd_shi=0; sd_ge=0;

wd_shi1=0; wd_ge1=0;

dsq_0=0; //定时器T0

/***********DS1302初始化****************/ ds_io=0; ds_rst=0;

ds_sclk=0; //DS1302初始化 ds_xieshu(0x8e,0x00); //控制 }

/*****************************************************/ /**************睡眠(报警)模式初始化*****************/ /*****************************************************/ void sleep_sign_init() {

voi_lig_sigo=1; key2=1; lcd_lig=0;

//睡眠(报警)模式初始化

//初始化声光报警控制位 //初始化按键key2(睡眠报警模式进入键) //LCD12864背光控制位

TCON=0X55; //INT0设置为下降沿触发,INT0设置为下降沿触发 EX0=1; //开外部中断INT0 EX1=0; //关外部中断INT1 EA=1; //开总中断 }

/**************************************/

/********初始化计时器T0和T1************/ /**************************************/

void init_time_DHT11_DS18B20() //初始化定时器T0和T1 {

TMOD=0X11; //定时器T0和T1工作于方式1 TH0=(65535-50000)/256; //给定时器T0装初值 TL0=(65535-50000)%6; }

TR0=1; ET0=1;

//开定时器T0计数 //开定时器T0中断 //给定时器T1装初值 //开定时器T1计数 //开定时器T1中断

TH1=(65535-50000)/256; TL1=(65535-50000)%6; TR1=1; ET1=1;

/************************************************/ /**************** 开机图片 ********************/ /************************************************/ void open_logo() {

display_bmp_logo(bmp_1); delay(10000); display_bmp_logo(bmp_2); delay(10000);

display_bmp_logo(bmp_3); delay(10000);

display_bmp_logo(bmp_4); delay(10000);

display_bmp_logo(bmp_5); delay(8000);

display_bmp_logo(bmp_6); delay(8000);

//写入图片1 //写入图片2 //写入图片3 //写入图片4 //写入图片5 //写入图片6

display_bmp_logo(bmp_7); //写入图片7 delay(8000); }

/************************************************/ /****************温湿度报警检测******************/ /************************************************/

void alarm() //温湿度超值判断 { if(sign_sd>=set_up_sd) //湿度判断 relay1=0; //继电器1(降湿度控制) else relay1=1; if(sign_wd>=set_up_wd) //温度判断 relay2=0; //继电器2(降温度控制) else relay2=1; }

/***************************************************/ /*********************按键扫描程序******************/ /***************************************************/ void kay_scan() //kay_scan按键扫描程序 {

if(key1==0) { delay(20); //按键消抖

基于51单片机stc89c58的智能家居设计(仅分享).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c56thr0owdv9pugn7q9xi_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top