⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsm-

📁 GSM室温监控系统
💻
字号:
/***********************************************
 	程序:单片机控制GSM模块发送信息
	编译器:Keil UV2		
	日期: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;						//取消键值		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -