久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于51的無線溫度報警系統-完整代碼

作者:MCU   來源:不詳   點擊數:  更新時間:2014年08月03日   【字體:

    該方案從網上收集整理得到,采用了一些常用的外圍電路模塊,以51單片機為核心,實現了很酷的無線報警功能。這里提供完整的代碼,DIY愛好者可制作。

系統功能描述:
    利用溫度傳感器采集環境溫度,當溫度達到設定的溫度時,產生報警信號,通過GSM模塊來實現短信報警。報警溫度和報警電話號碼均可設置。短信內容也可編輯。附加DS1302

硬件部分:
    AT89S52+TC35+DS18B20+12864液晶+紅外搖控+DS1302


 






 

TC35模塊就是GSM模塊,可以實現手機短信發送的功能,在某寶有很多,只需要簡單的幾個接口傳送命令與數據,就能控制其給手機發短信。

代碼鏈接:http://www.zg4o1577.cn/f/GSM室溫監控系統.rar

 

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

  程序:單片機控制GSM模塊發送信息

編譯器:Keil UV2

更多免費資源,加MCU起航QQ:2246080671

日期:2010/06/11

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

 

#include "common.h"

uchar Alarm_Temp=32; //報警溫度設置為32度

void Key_Handle(void); //聲明按鍵處理程序

void Show_Temperature(void); //顯示溫度

void Show_Menu(void); //顯示菜單

void Show_Time(void); //顯示時間

//系統初始化

void Sys_Init()

{

PhoneNum[14]='\0';

USART_Init(); //串口初始化

Red_Init(); //紅外初始化

Read_18B20(); //先讀取兩次溫度,初次讀取會不準確

//write_1302_time(times); //第一次編程時設定一個時間,以后就不用了

LcmInit(); //液晶初始化

LcmClearTXT(); //清除顯示

LcmClearBMP();

delay_ms(100);

PutStr(0,0,"Initial OK !");

delay_ms(1000);

LcmClearTXT(); //清除顯示

}

 

//主函數

void main()

{

Sys_Init(); //系統初始化

while(1)

{

Key_Handle();

Show_Time();

Show_Temperature();

delay_ms(150);

}

}

 

//顯示時間函數

void Show_Time(void)

{

read_1302_time(times);

PutStr(2,0,"日期:");

PutStr(3,0,"時間:");

PutTime();

}

//顯示溫度函數

void Show_Temperature(void)

{

PutStr(0,0,"GSM 溫度報警系統");

PutStr(1,0,"環境溫度:");

Read_18B20();

PutTemp(1,5);

PutStr(1,7,"℃");

if(zhengshu>=Alarm_Temp)key=72; //溫度超過閥值,進入發短信模式,即報警

}

 

//顯示主菜單

void Show_Menu(void)

{

LcmClearTXT(); //清除顯示

PutStr(0,0,"1.設定手機號碼");

PutStr(1,0,"2.設定報警溫度");

PutStr(2,0,"3.編輯短信內容");

PutStr(3,0,"4.修改日期時間");

}

//紅外按鍵處理程序

void Key_Handle(void)

{

unsigned long temp=0;

  signed char i=0;

    uchar cnt=0;

if(key!=255) //有鍵按下

{

switch(key) //在這里可以隨便添加你的按鍵處理程序

{

case 72: //發送短信

{

LcmClearTXT(); //清除顯示

PutStr(0,0,"短信發送模式");

PutStr(1,0,"請稍候...");

delay_ms(1000);

Send_Message(PhoneNum,MsContent);

while(key==72); //等待有鍵按下并退出

Read_18B20(); //再讀一次

break;

}

case 14: //進入主菜單

{

Show_Menu();

key=255;

                while(key==255);     //等待有鍵按下  

switch(key)

                {

   case 1 :         //設置手機號碼

                        {

                            key=255;

                            LcmClearTXT();

                            PutStr(0,0,"請輸入手機號碼");

                            key=255;

                            while(key==255); 

                            WriteCommand(0x30);

                            WriteCommand(AC_TABLE[8]); //在第二行開始顯示鍵入值            

                       while(key!=14)     //不是確認鍵

                       {

if(key<10&&cnt<11) //11位手機號碼

{

PhoneNum[(cnt++)+3]=key+48;

                                WriteData(key+48);

}

PhoneNum[14]='\0';

                           key=255;

                           while(key==255); //等待有鍵按下              

                       } 

                       key=255;

PutStr(2,0,PhoneNum);

PutStr(3,2,"修改成功!");

delay_ms(1000);

                       break;

                        }

 

                    case 2 :         //設置報警溫度

                        {

                            key=255;

                            LcmClearTXT();

                            PutStr(0,0,"請輸入報警溫度");

                            key=255;

                            while(key==255); 

                            WriteCommand(0x30);

                            WriteCommand(AC_TABLE[8]); //在第二行開始顯示鍵入值            

                       while(key!=14)     //不是確認鍵

                       {

                           temp=(temp*10)+key;

                                WriteData(key+48);

                           key=255;

                           while(key==255); //等待有鍵按下              

                       } 

                       key=255;

                       Alarm_Temp=(uchar)temp;   //更新報警溫度

PutStr(3,2,"修改成功!");

delay_ms(1000);

                       break;

                        }

 

                    case 4 :         //設置時間

                        {

                            key=255;

for(i=6;i>=0;i--)

{

if(i!=5) //星期不設置

{

LcmClearTXT();

switch(i)

{

case 6:PutStr(0,0,"請輸入年:");break;

case 4:PutStr(0,0,"請輸入月:");break;

case 3:PutStr(0,0,"請輸入日:");break;

case 2:PutStr(0,0,"請輸入時:");break;

case 1:PutStr(0,0,"請輸入分:");break;

case 0:PutStr(0,0,"請輸入秒:");break;

default:break;

}

times[i]=0; //清0

                            WriteCommand(0x30);

                            WriteCommand(AC_TABLE[8]); //在第二行開始顯示鍵入值 

                           while(cnt<2)     //輸入的是兩位數

                       {

  key=255;  

     while(key==255); //等待有鍵按下 

                           times[i]=(times[i]*10)+key;

                               WriteData(key+48);  

cnt++;

                       } 

  key=255;  

     while(key==255); //等待有鍵按下 

cnt=0;

}

else times[5]=1;

 

}

                       write_1302_time(times); //使時間生效

PutStr(3,2,"修改成功!");

delay_ms(1000);

                       break;

                        }

default:break;

                }  

break;

}

default: //其他

break;

}

LcmClearTXT(); //清除顯示

delay_ms(100);

key=255; //取消鍵值

}

}

 

關閉窗口

相關文章

主站蜘蛛池模板: 2020国产在线| 欧美日韩高清一区二区三区 | 91精品国产自产精品男人的天堂 | 精品久久久久久亚洲综合网站 | 久久久久国产一区二区三区 | 国产精品一区二区视频 | 亚洲欧美日韩精品久久亚洲区 | 中文字幕一区二区三区精彩视频 | 中文字幕免费观看 | 久久草视频 | 日韩视频在线一区 | 成人在线不卡 | www.9191.com| 国产精品久久久久久久久久久久 | 国产综合在线视频 | 国产欧美日韩精品一区 | 成人国产精品久久久 | 国产四区 | 成人欧美一区二区三区黑人孕妇 | 国产91久久精品一区二区 | 自拍偷拍中文字幕 | 电影午夜精品一区二区三区 | 超级乱淫av片免费播放 | 欧美理论片在线观看 | 天天草夜夜骑 | 一区二区三区四区不卡视频 | 国产在线视频一区 | 一区二区视频在线观看 | 久久里面有精品 | 精品久久久久久久久久久院品网 | 欧美午夜精品久久久久免费视 | 羞羞网站在线观看 | 日韩精品一区二区三区在线观看 | 中国一级特黄真人毛片 | 亚洲1区 | 国产精品视频免费观看 | 男女羞羞免费视频 | 一区二区三区观看视频 | 国产麻豆一区二区三区 | 久久久久久国产精品 | 国产小u女发育末成年 |