欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機智能家居源程序
[打印本頁]
作者:
youngboy
時間:
2019-6-10 16:07
標題:
單片機智能家居源程序
基于51單片機的智能家居系統,東西都在文件里,拿走不謝
單片機源程序如下:
//文件包含
#include "reg52.h"
#include "uart.c"
#include "lcd1602.h"
#include "DHT11.C"
//宏定義
#define uchar unsigned char
#define uint unsigned int
//按鍵定義
sbit KEY1= P1^6;
sbit KEY2= P3^2;
sbit KEY3= P3^3;
sbit KEY4= P3^4;
sbit BEE = P1^0;
sbit HW = P1^3;
//ADC定義
sbit CS=P3^5;
sbit CLK=P3^7;
sbit DIO=P3^6;
//字符數組
uchar code Tab0[] = {"0123456789. "};
uchar code Tab1[] = {" it is readying "};
uchar code Tab2[] = {" it is ok "};
uchar code Tab3[] = {"smoke is ppm"};
//uchar code Tab3[] = {" the GSM system "};
uchar code Tab4[] = {" 'C % "};
uchar code Tab5[] = {"in calling "};
uchar code Tab6[] = {"in sending "};
uchar code Tab7[] = {" ON OFF"};
uchar GSM_flag=0;
uchar temp,Set_temp=40; //溫度
uchar shidu,Set_shidu=100; //濕度
uchar smoke=0,Set_smoke=50; //煙霧
uchar HW_reg=0;
//設置短信接收人
//uchar code PhoneNO[]= "00310035003700320039003300390030003100330037"; // 15729390137
uchar code PhoneNO[]= "00310038003700350031003900310039003600350034 "; // 18751919654
//設置電話接聽人
uchar code PhoneNO1[]= "18751919654";
//uchar code PhoneNO1[]= "15729390137";
//主人您好!我是您的管家!
uchar code Text1[]= "4E3B4EBA60A8597DFF016211662F60A876847BA15BB6FF01";
//主人,溫度過高,可能著火了,快回家看看!
uchar code Text2[]="4E3B4EBAFF0C6E295EA68FC79AD8FF0C5BB64E2D53EF80FD7740706B4E86FF015FEB56DE5BB6770B770BFF01";
//主人,家中有人闖入,您的家可能被盜了!
uchar code Text3[]="4E3B4EBA002C5BB64E2D67094EBA95EF5165FF0C60A876845BB653EF80FD88AB76D74E86FF01";
//煙霧濃度過大,可能著火了!快回家看看吧!
uchar code Text4[]="70DF96FE6D535EA68FC75927FF0C53EF80FD7740706B4E86FF015FEB56DE5BB6770B770B5427FF01";
//ADC0832函數,帶返回值
unsigned int A_D()
{
unsigned char i,dat;
CS=1; //一個轉換周期開始
CLK=0; //為第一個脈沖作準備
CS=0; //CS置0,片選有效
DIO=1; //DIO置1,規定的起始信號
CLK=1; //第一個脈沖
CLK=0; //第一個脈沖的下降沿,此前DIO必須是高電平
DIO=1; //DIO置1, 通道選擇信號
CLK=1; //第二個脈沖,第2、3個脈沖下沉之前,DI必須跟別輸入兩位數據用于選擇通道,這里選通道CH0
CLK=0; //第二個脈沖下降沿
DIO=0; //DI置0,選擇通道0
CLK=1; //第三個脈沖
CLK=0; //第三個脈沖下降沿
DIO=1; //第三個脈沖下沉之后,輸入端DIO失去作用,應置1
CLK=1; //第四個脈沖
for(i=0;i<8;i++) //高位在前
{
CLK=1; //第四個脈沖
CLK=0;
dat<<=1; //將下面儲存的低位數據向右移
dat|=(unsigned char)DIO; //將輸出數據DIO通過或運算儲存在dat最低位
}
CS=1; //片選無效
return dat; //將讀出的數據返回
}
//主函數
void main(void)
{
uchar G,S,B;
LCD1602_Init(); //1602液晶屏初始化
LCD1602_Display(LINE1,Tab1,0,16); //準備界面
BEE=0; //開機提示
Delay_ms(50);
BEE=1;
Uart_init();
Delay_ms(500); //等待GSM模塊穩定
SendString("AT\r\n");
BEE=0; //提示已穩定
Delay_ms(50);
BEE=1;
while(1)
{
LCD1602_Display(LINE1,Tab3,0,16); //準備完畢
LCD1602_Display(LINE2,Tab4,0,13); //準備完畢
smoke=A_D();
RH();
temp=U8T_data_H; //溫度
shidu=U8RH_data_H; //濕度
if(1)
{
B=temp/100;
S=temp%100/10;
G=temp%10;
LCD1602_Display(LINE2,Tab0,B,1);
LCD1602_Display(LINE2+1,Tab0,S,1);
LCD1602_Display(LINE2+2,Tab0,G,1);
B=shidu/100;
S=shidu%100/10;
G=shidu%10;
LCD1602_Display(LINE2+7,Tab0,S,1);
LCD1602_Display(LINE2+8,Tab0,10,1);
LCD1602_Display(LINE2+9,Tab0,G,1);
B=smoke/100;
S=smoke%100/10;
G=smoke%10;
LCD1602_Display(LINE1+9,Tab0,B,1);
LCD1602_Display(LINE1+10,Tab0,S,1);
LCD1602_Display(LINE1+11,Tab0,G,1);
}
Delay_ms(100);
//第一個按鍵,打電話測試
if(KEY1==0)
{
Delay_ms(10);
if(KEY1==0)
{
BEE=0; //提示進入按鍵
Delay_ms(20);
BEE=1;
LCD1602_Display(LINE2,Tab5,0,16);
SendString("ATD"); //打電話指令
SendString(PhoneNO1);
SendASC(';');
SendASC('\r'); //發送回車指令
SendASC('\n'); //發送回車指令
Delay_ms(2000);
SendString("ATH\r\n"); //主動掛斷
Delay_ms(100);
}
}
//第二個按鍵
if(KEY2==0)
{
Delay_ms(10);
if(KEY2==0)
{
BEE=0; //提示進入按鍵
Delay_ms(20);
BEE=1;
LCD1602_Display(LINE2,Tab6,0,16);
SendString("AT+CMGF=1\r\n");
Delay_ms(100);
SendString("AT+CSCS=\"UCS2\"\r\n");
Delay_ms(100);
SendString("AT+CSMP=17,0,2,25\r\n");
Delay_ms(100);
SendString("AT+CMGS="); //信息發送指令 AT+CMGS=//
SendASC('"');
SendString(PhoneNO);
SendASC('"');
SendASC('\r'); //發送回車指令//
SendASC('\n'); //發送回車指令//
Delay_ms(100);
SendString(Text1);
Delay_ms(100);
SendASC(0X1A);
Delay_ms(1000);
}
}
//第三個按鍵,布防
if(KEY3==0)
{
Delay_ms(6);
if(KEY3==0)
{
BEE=0; //提示進入按鍵
Delay_ms(20);
BEE=1;
GSM_flag=1;
LCD1602_Display(LINE2+13,Tab7,0,3);
}
}
//第四個按鍵,撤防
if(KEY4==0)
{
Delay_ms(6);
if(KEY4==0)
{
BEE=0; //提示進入按鍵
Delay_ms(20);
BEE=1;
GSM_flag=0;
LCD1602_Display(LINE2+13,Tab7,4,3);
}
}
//紅外
if(HW==1)
{
Delay_ms(10);
if(HW==1)
{
BEE=0; //提示進入按鍵
Delay_ms(100);
BEE=1;
if(GSM_flag==1)
{
HW_reg++;
if(HW_reg>=10)
HW_reg=10;
}
}
}
//進入布防模式
if(GSM_flag==1)
{
//有人闖入
if(HW_reg>=1)
{
HW_reg=0;
SendString("AT+CMGF=1\r\n");
Delay_ms(100);
SendString("AT+CSCS=\"UCS2\"\r\n");
Delay_ms(100);
SendString("AT+CSMP=17,0,2,25\r\n");
Delay_ms(100);
SendString("AT+CMGS="); //信息發送指令 AT+CMGS=//
SendASC('"');
SendString(PhoneNO);
SendASC('"');
SendASC('\r'); //發送回車指令//
SendASC('\n'); //發送回車指令//
Delay_ms(100);
SendString(Text3);
Delay_ms(100);
SendASC(0X1A);
Delay_ms(1000);
}
//溫度過高,可能著火了
if(temp>=Set_temp)
{
SendString("AT+CMGF=1\r\n");
Delay_ms(100);
SendString("AT+CSCS=\"UCS2\"\r\n");
Delay_ms(100);
SendString("AT+CSMP=17,0,2,25\r\n");
Delay_ms(100);
SendString("AT+CMGS="); //信息發送指令 AT+CMGS=//
SendASC('"');
SendString(PhoneNO);
SendASC('"');
SendASC('\r'); //發送回車指令//
SendASC('\n'); //發送回車指令//
Delay_ms(100);
SendString(Text2);
Delay_ms(100);
SendASC(0X1A);
Delay_ms(1000);
}
//煙霧濃度過高,可能著火了
if(smoke>=Set_smoke)
{
SendString("AT+CMGF=1\r\n");
Delay_ms(100);
SendString("AT+CSCS=\"UCS2\"\r\n");
Delay_ms(100);
SendString("AT+CSMP=17,0,2,25\r\n");
Delay_ms(100);
SendString("AT+CMGS="); //信息發送指令 AT+CMGS=//
SendASC('"');
SendString(PhoneNO);
SendASC('"');
SendASC('\r'); //發送回車指令//
SendASC('\n'); //發送回車指令//
Delay_ms(100);
SendString(Text4);
Delay_ms(100);
SendASC(0X1A);
Delay_ms(1000);
}
}
}
}
復制代碼
所有資料51hei提供下載:
程序.rar
(77.9 KB, 下載次數: 21)
2019-6-10 16:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2019-6-11 02:58
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者:
brewster
時間:
2019-6-11 19:45
這個智能家具系統是怎么個智能法?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1