久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
源基于STC89C52單片機(jī)的智能家居管理系統(tǒng)源程序
[打印本頁(yè)]
作者:
duhuan502
時(shí)間:
2018-7-31 17:56
標(biāo)題:
源基于STC89C52單片機(jī)的智能家居管理系統(tǒng)源程序
源基于STC89C52單片機(jī)的智能家居管理系統(tǒng)ceshi_5
單片機(jī)源程序如下:
/*****************************
* @File Name: MENU.C
* @Author : JZHG
* @Time : 2012-12-06
* @Version : V1.0
******************************/
#include "MENU.h"
#include "LCD12864.h"
#include "KEY.h"
#include "IRDA.h"
#include "DS1302.h"
#include "DS18B20.h"
#include "GTM900.h"
#include "JD.h"
#include "yanwu.h"
#include "Counter.h"
u8 Alarm_Temp=200;
/***********************************************************
* 函數(shù)名稱:MENU_X
* 函數(shù)功能:系統(tǒng)菜單函數(shù)
* 入口參數(shù):無(wú) 出口參數(shù):無(wú)
***********************************************************/
/*********************************
一級(jí)菜單
**********************************/
void MENU_A0( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"★〓〓主菜單〓〓");
LCD12864_Show_hz(0,1,"1.家電 2.通信 ");
LCD12864_Show_hz(0,2,"3.設(shè)置 4.工具 ");
LCD12864_Show_hz(0,3,"5.娛樂(lè) 6.退出 ");
}
/*********************************
二級(jí)菜單
**********************************/
void MENU_B0( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"〓〓 家電 〓〓");
LCD12864_Show_hz(0,1,"1.電燈 2.電冰箱");
LCD12864_Show_hz(0,2,"3.空調(diào) 4.飲水機(jī)");
LCD12864_Show_hz(0,3,"5.音箱 6.電風(fēng)扇");
}
void MENU_B1( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"〓〓 通信 〓〓");
LCD12864_Show_hz(0,1,"撥電話 掛電話");
LCD12864_Show_hz(0,2,"接電話 發(fā)短信");
LCD12864_Show_hz(0,3,"通訊錄 收件箱");
}
void MENU_B2( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"〓〓 設(shè)置 〓〓");
LCD12864_Show_hz(0,1,"報(bào)警溫度 時(shí)間 ");
LCD12864_Show_hz(0,2,"報(bào)警號(hào)碼 鈴聲 ");
LCD12864_Show_hz(0,3,"模式設(shè)置 背光 ");
}
void MENU_B3( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"〓〓 工具 〓〓");
LCD12864_Show_hz(0,1,"1.計(jì)算器 2.鬧鐘");
LCD12864_Show_hz(0,2,"3.收音機(jī) 4.秒表");
LCD12864_Show_hz(0,3,"5.手電筒 6.版本");
}
void MENU_B4( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"〓〓 娛樂(lè) 〓〓");
LCD12864_Show_hz(0,1,"1.相機(jī) 2.音樂(lè) ");
LCD12864_Show_hz(0,2,"3.小說(shuō) 4.電影 ");
LCD12864_Show_hz(0,3,"5.圖庫(kù) 6.游戲 ");
}
/*********************************
三級(jí)菜單
**********************************/
void MENU_NULL( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"尊敬的用戶您好!");
LCD12864_Show_hz(0,1,"該功能暫不支持 ");
LCD12864_Show_hz(0,2," 請(qǐng)按返回鍵 ");
LCD12864_Show_hz(0,3," 返回上一級(jí) ");
}
/************************************
* 計(jì)算器菜單
*************************************/
void MENU_Counter( void )
{
LCD12864_Clear(); // 清屏函數(shù)
counter( ); // 計(jì)算器函數(shù)
}
/************************************
* 家電菜單
*************************************/
void MENU_JD( u8 num )
{
static state_value[5]={0}; // 保存狀態(tài)值
LCD12864_Clear(); // 清屏函數(shù)
switch ( num )
{
case 0:LCD12864_Show_hz(0,0,"〓〓 電燈 〓〓");break;
case 1:LCD12864_Show_hz(0,0,"〓 電冰箱 〓 ");break;
case 2:LCD12864_Show_hz(0,0,"〓〓 空調(diào) 〓〓");break;
case 3:LCD12864_Show_hz(0,0,"〓 飲水機(jī) 〓 ");break;
case 4:LCD12864_Show_hz(0,0,"〓〓 音箱 〓〓");break;
case 5:LCD12864_Show_hz(0,0,"〓 電風(fēng)扇 〓 ");break;
default: break;
}
LCD12864_Show_hz(0,1,"1.開(kāi)啟 2.關(guān)閉 ");
LCD12864_Show_hz(0,2,"按返回鍵:返回 ");
if ( state_value[num] == 1 )LCD12864_Show_hz(0,3,"當(dāng)前狀態(tài):開(kāi)啟 ");
else LCD12864_Show_hz(0,3,"當(dāng)前狀態(tài):關(guān)閉 ");
while ( IRDA_key != 12)
{
IRDA_key=255;
while( IRDA_key==255 );
if ( IRDA_key==1 )
{
JD_Drive( num ,ON); // 家電驅(qū)動(dòng)函數(shù)
LCD12864_Show_hz(5,3,"開(kāi)啟");
state_value[num]=1;
}
else if ( IRDA_key==2)
{
JD_Drive( num ,OFF); // 家電驅(qū)動(dòng)函數(shù)
LCD12864_Show_hz(5,3,"關(guān)閉");
state_value[num]=0;
}
}
}
void MENU_Version( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"智能家居管理系統(tǒng)");
LCD12864_Show_hz(0,1,"制作人:劉清泉 ");
LCD12864_Show_hz(0,2," 雙 鋒 ");
LCD12864_Show_hz(0,3,"版 本:V1.0 ");
}
void MENU_CallON( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"撥號(hào)......");
Call(CALLON); // 撥號(hào)
LCD12864_Show_hz(0,0,"撥號(hào): ");
LCD12864_Show_hz(2,0,CALL_ON+3);
LCD12864_Show_hz(0,1,"成功 ^_^");
LCD12864_Show_hz(0,2," 請(qǐng)按返回鍵 ");
LCD12864_Show_hz(0,3," 返回 ");
}
void MENU_CallOFF( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"掛電話中......");
Call(CALLOFF); // 撥號(hào)
LCD12864_Show_hz(0,0,"掛機(jī): ");
LCD12864_Show_hz(2,0,CALL_ON+3);
LCD12864_Show_hz(0,1,"成功 ^_^");
LCD12864_Show_hz(2,2,"請(qǐng)按返回鍵");
LCD12864_Show_hz(3,3,"返回");
}
void MENU_GetCall( void )
{
LCD12864_Clear(); // 清屏函數(shù)
if ( USART_flag )
{
USART_flag=0;
LCD12864_Show_hz(0,0,"連接中......");
Call(GETCALL); // 撥號(hào)
LCD12864_Show_hz(0,0,"連接: ");
LCD12864_Show_hz(2,0,CALL_ON+3);
LCD12864_Show_hz(0,1,"成功 ^_^");
Delay_nms(500);
}
else
{
LCD12864_Show_hz(0,0,"尊敬的用戶您好!");
LCD12864_Show_hz(0,1,"沒(méi)收到來(lái)電!!");
}
LCD12864_Show_hz(2,2,"請(qǐng)按返回鍵");
LCD12864_Show_hz(3,3,"返回");
}
void MENU_News( void )
{
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"發(fā)送短信。。。");
Send_ENNews( ); // 發(fā)送英文短信
if ( USART_flag )
{
USART_flag = 0;
LCD12864_Show_hz(0,0,"發(fā)送短信成功 ^_^");
}
else
{
LCD12864_Show_hz(0,0,"發(fā)送短信失敗....");
}
LCD12864_Show_hz(2,2,"請(qǐng)按返回鍵");
LCD12864_Show_hz(3,3,"返回");
}
//void MENU_SetNewsNum( void )
//{
// u8 cnt=0;
//
// IRDA_key=255;
// LCD12864_Clear(); // 清屏函數(shù)
// LCD12864_Show_hz(0,0,"請(qǐng)輸入手機(jī)號(hào)碼");
// IRDA_key=255;
// while(IRDA_key==255);
// LCD12864_SetXY(0,2); // LCD設(shè)置坐標(biāo)函數(shù)
// while(IRDA_key!=12) //不是返回鍵
// {
// if(IRDA_key<10&&cnt<11) //11位手機(jī)號(hào)碼
// {
//
// NEWS_LENGT[(cnt++)+3]=IRDA_key+48;
// LCD12864_Write_Data( LCD12864_DAT,IRDA_key+48);
// }
// IRDA_key=255;
// while(IRDA_key==255); //等待有鍵按下
// }
// IRDA_key=255;
// LCD12864_Show_hz(0,2,NEWS_LENGT);
// LCD12864_Show_hz(2,3,"輸入成功!");
// Delay_nms(500);
//}
void MENU_SetTime( void )
{
u8 temp=0,i, cnt=0;
for(i=6;i>0;i--) //星期不設(shè)置
{
LCD12864_Clear(); // 清屏函數(shù)
switch(i)
{
case 6:LCD12864_Show_hz(0,0,"請(qǐng)輸入年:");break;
case 5:LCD12864_Show_hz(0,0,"請(qǐng)輸入月:");break;
case 4:LCD12864_Show_hz(0,0,"請(qǐng)輸入日:");break;
case 3:LCD12864_Show_hz(0,0,"請(qǐng)輸入時(shí):");break;
case 2:LCD12864_Show_hz(0,0,"請(qǐng)輸入分:");break;
case 1:LCD12864_Show_hz(0,0,"請(qǐng)輸入秒:");break;
default:break;
}
temp=0; // 清零
LCD12864_SetXY(0,2); // LCD設(shè)置坐標(biāo)函數(shù)
while(cnt<2) //輸入的是兩位數(shù)
{
IRDA_key=255;
while(IRDA_key==255); //等待有鍵按下
temp=(temp*10)+IRDA_key;
LCD12864_Write_Data( LCD12864_DAT, IRDA_key+48);
cnt++;
}
temp = ((temp /10)<<4) +(temp%10); // 轉(zhuǎn)化BCD碼
DS1302_WriteByteToAddr( DS1302_CONTROL_WRITE, WP_STOP );// 取消寫(xiě)保護(hù)
switch(i)
{
case 1: DS1302_WriteByteToAddr( DS1302_SECOND_WRITE, temp);break; // 調(diào)節(jié)的時(shí)間
case 2: DS1302_WriteByteToAddr( DS1302_MINUTE_WRITE, temp);break; // 調(diào)節(jié)的時(shí)間
case 3: DS1302_WriteByteToAddr( DS1302_HOUR_WRITE, temp);break; // 調(diào)節(jié)的時(shí)間
case 4: DS1302_WriteByteToAddr( DS1302_DATE_WRITE, temp);break; // 調(diào)節(jié)的時(shí)間
case 5: DS1302_WriteByteToAddr( DS1302_MONTH_WRITE, temp);break; // 調(diào)節(jié)的時(shí)間
case 6: DS1302_WriteByteToAddr( DS1302_YEAR_WRITE, temp);break; // 調(diào)節(jié)的時(shí)間
default: break;
}
DS1302_WriteByteToAddr( DS1302_CONTROL_WRITE, WP_START );//
IRDA_key=255;
while(IRDA_key==255); //等待有鍵按下
cnt=0;
}
IRDA_key=255;
LCD12864_Show_hz(2,3,"修改成功!");
}
void MENU_SetAlarmTemp( void )
{
u8 temp=0;
LCD12864_Clear(); // 清屏函數(shù)
LCD12864_Show_hz(0,0,"請(qǐng)輸入報(bào)警溫度");
IRDA_key=255;
while(IRDA_key==255);
LCD12864_SetXY(0,2); // LCD設(shè)置坐標(biāo)函數(shù)
while(IRDA_key!=12) //不是確認(rèn)鍵
{
temp=(temp*10)+IRDA_key;
LCD12864_Write_Data( LCD12864_DAT,IRDA_key+48);
IRDA_key=255;
while(IRDA_key==255); //等待有鍵按下
}
IRDA_key=255;
Alarm_Temp=temp; //更新報(bào)警溫度
LCD12864_Show_hz(2,3,"修改成功!");
}
/***********************************************************
* 函數(shù)名稱:MENU_ShowTime
* 函數(shù)功能:顯示時(shí)間函數(shù)
* 入口參數(shù):無(wú) 出口參數(shù):無(wú)
***********************************************************/
void MENU_ShowTime( void )
{
u8 T[8], D[8];
DS1302_ReadTime( );// DS1302讀取時(shí)間保存在時(shí)間結(jié)構(gòu)體中
T[0]= CurrentTime.Hour >>4; // 時(shí)
T[1]= CurrentTime.Hour &0x0f;
T[2]= -3;
T[3]= CurrentTime.Minute >>4; // 分
T[4]= CurrentTime.Minute &0x0f;
T[5]= -3;
T[6]= CurrentTime.Second >>4; // 秒
T[7]= CurrentTime.Second &0x0f;
D[0]= CurrentTime.Year >>4; // 年
D[1]= CurrentTime.Year &0x0f;
D[2]= -3;
D[3]= CurrentTime.Month >>4; // 月
D[4]= CurrentTime.Month &0x0f;
D[5]= -3;
D[6]= CurrentTime.Date >>4; // 日
D[7]= CurrentTime.Date &0x0f;
// D[8]= CurrentTime.Week&0x0f; // 星期
LCD12864_Show_hz(0,2,"日期:"); // LCD顯示字符函數(shù)
LCD12864_Show_hz(0,3,"時(shí)間:"); // LCD顯示字符函數(shù)
// LCD12864_ShowChar(2,0,"星期:"); // LCD顯示字符函數(shù)
LCD12864_ShowNumS(3,2,8,D); // 顯示日期
LCD12864_ShowNumS(3,3,8,T); // 顯示時(shí)間
// LCD12864_ShowNum( 2, 3, D[8]); // LCD顯示一位數(shù)字函數(shù)
}
/***********************************************************
* 函數(shù)名稱:MENU_ShowTemperature
* 函數(shù)功能:處理顯示溫度函數(shù)
* 入口參數(shù): 無(wú) 出口參數(shù):無(wú)
***********************************************************/
void MENU_ShowTemperature(void)
{
LCD12864_Show_hz(0,0,"智能家居管理系統(tǒng)");
LCD12864_Show_hz(0,1,"環(huán)境溫度:");
Read_18B20();
LCD12864_SetXY(5,1); // LCD設(shè)置坐標(biāo)函數(shù)
LCD12864_Write_Data( LCD12864_DAT,(zhengshu%100)/10+48);
LCD12864_Write_Data( LCD12864_DAT,zhengshu%10+48);
LCD12864_Write_Data( LCD12864_DAT,'.');
LCD12864_Write_Data( LCD12864_DAT,xiaoshu1+48);
LCD12864_Show_hz(7,1,"℃");
while(zhengshu>=Alarm_Temp)
{
LCD12864_Clear(); // LCD清除文本函數(shù)
LCD12864_Show_hz(0,0,"發(fā)送短信....");
Delay_nms(500);
Send_CHNews(); // 發(fā)送中文短信
if ( USART_flag )
{
USART_flag = 0;
LCD12864_Show_hz(0,0,"發(fā)送短信成功 ^_^");
}
Read_18B20();
}
}
/***********************************************************
* 函數(shù)名稱:MENU_Yanwu
* 函數(shù)功能:處理煙霧傳感器函數(shù)
* 入口參數(shù): 無(wú) 出口參數(shù):無(wú)
***********************************************************/
void MENU_YANWU( void )
{
YanWu(); //
}
/***********************************************************
* 函數(shù)名稱:MENU_FB
* 函數(shù)功能:菜單反白函數(shù)
* 入口參數(shù):loca, mode 出口參數(shù):無(wú)
***********************************************************/
void MENU_FB(u8 loca,u8 mode)
{
u8 temp[6]={0};
if ( mode ) // mode=1 反白
{
temp[loca]=0xff;
LCD12864_FB(0,1,temp[0],8); LCD12864_FB(4,1,temp[1],8);
LCD12864_FB(8,0,temp[2],8); LCD12864_FB(12,0,temp[3],8);
LCD12864_FB(8,1,temp[4],8); LCD12864_FB(12,1,temp[5],8);
}
else
{
temp[loca]=0x00;
LCD12864_FB(0,1,temp[0],8); LCD12864_FB(4,1,temp[1],8);
LCD12864_FB(8,0,temp[2],8); LCD12864_FB(12,0,temp[3],8);
LCD12864_FB(8,1,temp[4],8); LCD12864_FB(12,1,temp[5],8);
}
}
/***********************************************************
* 函數(shù)名稱:System_Init
* 函數(shù)功能:系統(tǒng)初始化函數(shù)
* 入口參數(shù):無(wú) 出口參數(shù):無(wú)
***********************************************************/
void System_Init( void )
{
USART_Init(); // 串口初始化函數(shù)
KEY_Init( ); // 按鍵初始化函數(shù)
Red_Init();
DS1302_Init(); // DS1302初始化函數(shù)
Read_18B20();
LCD12864_Init( ); // LCD初始化函數(shù)
LCD12864_Clear_GDRAM( ); // 擴(kuò)充指令清屏函數(shù)
LCD12864_Clear(); // 清屏函數(shù)
}
/***********************************************************
* 函數(shù)名稱:MENU_KEYHandle
* 函數(shù)功能:菜單按鍵處理函數(shù)
* 入口參數(shù):無(wú) 出口參數(shù):無(wú)
***********************************************************/
void MENU_Handle( void )
{
u8 key;
u8 caidan[3]={0};
u8 caidan_ji=0;
u8 flag=0; // 按鍵標(biāo)志
MENU_YANWU( ); // 煙霧傳感器
MENU_ShowTemperature();// 處理顯示溫度函數(shù)
MENU_ShowTime( ); // 顯示時(shí)間菜單函數(shù)
if ( IRDA_key==17 )
{
flag=1;
LCD12864_Clear(); // 清屏函數(shù)
MENU_A0();
}
else flag=0;
while(flag)
{
while(1)
{
key=KEY_Scan();
if((key==1)||(IRDA_key==10))
{
IRDA_key = 255;
if(caidan[caidan_ji]>0)
caidan[caidan_ji]--;
else
caidan[caidan_ji]=5;
}
if((key==2)||(IRDA_key==11))
{
IRDA_key = 255;
if(caidan[caidan_ji]<5)
caidan[caidan_ji]++;
else
caidan[caidan_ji]=0;
}
if((key==3)||(IRDA_key==13))
{
if(caidan_ji<2)
caidan_ji++;
}
if((key==4)||(IRDA_key==12))
{
if(caidan_ji>0)
caidan_ji--;
}
if((key==3)||(key==4)||(IRDA_key==12)||(IRDA_key==13))
{ IRDA_key = 255; break;}
if ( (caidan_ji!=2) )
MENU_FB(caidan[caidan_ji], 1 );
}
switch(caidan_ji)
{
case 0:
{
MENU_A0();
caidan[1]=0;
}break;
case 1:
{
switch(caidan[0])
{
case 0 :
{
MENU_FB(caidan[1], 1);
MENU_B0();
}break;
case 1 :
{
MENU_FB(caidan[1], 1);
MENU_B1();
}break;
case 2 :
{
MENU_FB(caidan[1], 1);
MENU_B2();
}break;
case 3 :
{
MENU_FB(caidan[1], 1);
MENU_B3();
}break;
case 4 :
{
MENU_FB(caidan[1], 1);
MENU_B4();
} break;
case 5 :
{
flag=0;
MENU_FB(caidan[1], 0);
}break;
default: break;
}
}break;
case 2:
{
switch (caidan[0])
{
case 0:
{
switch(caidan[1])// 三級(jí)菜單
{
case 0:MENU_JD(0);break;
case 1:MENU_JD(1);break;
case 2:MENU_JD(2);break;
case 3:MENU_JD(3);break;
case 4:MENU_JD(4);break;
case 5:MENU_JD(5);break;
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
源基于STC89C52單片機(jī)的智能家居管理系統(tǒng)ceshi_5.zip
(171.27 KB, 下載次數(shù): 25)
2018-7-31 17:56 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時(shí)間:
2018-7-31 18:14
本帖需要補(bǔ)全原理圖后才可獲得積分
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩手机在线视频
|
久久久久久免费毛片精品
|
精品中文字幕视频
|
亚洲电影一区二区三区
|
国产一区二区三区色淫影院
|
国产视频精品免费
|
一区二区三区在线
|
国产精品日日夜夜
|
91黄在线观看
|
欧美一区二区
|
国产 日韩 欧美 中文 在线播放
|
中文字幕亚洲一区二区三区
|
国产一区免费视频
|
嫩草视频在线免费观看
|
久久亚洲一区二区三区四区
|
日本特黄特色aaa大片免费
|
亚洲福利网
|
国外成人在线视频网站
|
伊人网站在线
|
婷婷综合网
|
日韩免费一区
|
蜜桃黄网
|
亚洲色欲色欲www
|
91久久精品日日躁夜夜躁欧美
|
欧美精品中文
|
一区二区三区四区在线视频
|
久草在线
|
精品日韩一区二区三区
|
国产1区
|
久久五月婷
|
日韩欧美在线免费观看
|
殴美成人在线视频
|
久久久高清
|
天天综合久久网
|
亚洲国产情侣
|
av在线天堂
|
女同久久另类99精品国产
|
成人免费在线
|
中文字幕在线观看成人
|
国产精品久久av
|
久久国产区
|