基于单片机的智能家居安防系统设计_第1页
基于单片机的智能家居安防系统设计_第2页
基于单片机的智能家居安防系统设计_第3页
基于单片机的智能家居安防系统设计_第4页
基于单片机的智能家居安防系统设计_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科论文目录TOC\o"1-2"\h\z\u28989摘要 位ROM和单线接口图2.6DS18B20的内部结构64位ROM和单线接口高速缓存存储器存储器和控制器8位CRC生成器温度传感器低温触发器TL高温触发器TH配置寄存器电源检测表2.1DS18B20引脚定义序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源3VDD可选择的VDD引脚。当工作于寄生电源时,次引脚必须接地 .3软件设计3.1系统主程序设计本设计的软件部分是以单片机的程序作为核心,其他子程序依照主程序来进行设计,整个系统的运行是主程序与各子程序之间的相互配合来完成的。程序首先需要完成各部分的初始化,然后对是否需要对报警电话号码进行调整的判断,然后通过读取各传感器所采集数据来判断是否有报警,在然后根据判断发送报警,如果没有报警则返回[18]~[19]。流程图如图3.1所示。图3.1主程序流程图3.2显示子程序设计本设计除了实现防外来人员入侵、防可燃气/烟雾泄漏报警的功能、利用继电器控制家电的开关外,还要实现实时显示当前温度的功能及当前设定报警阈值。首先是显示屏参数的初始化,先进行A0的读取,判断是否为高电平,如果是即读取温度传感器数据并实时显示温度值,同时展示温度报警阈值,如果按动“温度加”、“温度减”,温度报警阈值也随之发生相应变化。如图3.2所示为LCD1602显示流程图。开始开始LCD参数初始化LCD参数初始化NOA0是否为高电平NOA0是否为高电平YESYESLCD实时显示当前温度值及温度报警阈值LCD实时显示当前温度值及温度报警阈值结束结束图3.2显示电路设计流程图3.3GSM模块子程序设计本设计的核心也是亮点就是GSM模块,所以通讯这一功能是软件极其重要的一环,首要任务是对单片机的串行口完成初始化,然后让单片机持续工作,接收信号,当有电话打入的情况下,则发送挂断电话的指令,并向指定号码发送当前温度值的信息。以上功能是根据手机的AT指令和它的通讯协议来完成的,具体程序流程图如图3.4所示。开始单片机串口初始化开始单片机串口初始化串口接收到“RING”?模块初始化关闭总中断Y发送短信YNN发送挂机命令“ATH”串口中断?延时开启总中断结束图3.3GSM模块软件流程图4系统调试4.1系统调试最后一步需进行系统调试[20],所有的元器件及传感器依照原理图进行焊接之后进行通电测试,当然相对于不是很复杂的电路采用这种方式是最直接便捷的,但是不利于发现问题,如焊接错误需浪费更多的时间寻找,所以本设计采用的调试方法为在安装的过程中进行调试,就是把电路分成各个模块,以模块为单位进行安装和调试。调试成功的电路板图片如下图4.1所示。图4.1电路板实物图4.2调试过程通电前检查电路焊接完成后,不能为系统通电。首先,应根据原理图,仔细检查接线是否正确,是否有不良接触或电路错误,连接到主控制器上的引脚是否与电路图对应。检查时尽量用万用表测量,尽量直接测量零件的引脚部分,这样也可发现是否存在接触不良的零件,并完成整改。各单元电路通电测试根据电路图电流导向完成单元模块的焊接之后,还应当在通电前对电路进行一下简单的复查,试通电查看一下电路是否存在异样,无异样即可以之前调试的模块的输出值作为当前模块的输入值作为调试依据进行通电测试,无问题后调试下一个模块。整体通电测试当所有的模块都完成了通电测试后,将程序下载到单片机内,即可开始整个系统的通电测试,同样也需要进行试通电,确保电路板无异样后即可正式通电测试各项功能该综合测试主要在系统调试正常的情况下,验证各项功能完成情况。①首先调整DS18B20的灵敏度,调整报警温度为50℃并在LCD液晶屏上显示,通过一些特殊手段,改变环境的温度,看LCD液晶屏显示温度值是否会改变。②通过测量当环境温度超过温度阈值时,系统发出声光报警和GSM发出英文短信到用户手机;③当室内检测到可燃气体或烟雾时,GSM模块发出英文短信到用户手机;④当室内有人入侵时,GSM模块发出英文短信报警;⑤当拨打所插手机卡的号码时,GSM模块挂断电话并发出英文短信的当前温度值;⑥当发送“#OPEN”或者“#CLOSE”短信到GSM时,继电器完成闭合或断开的动作,继而实现对智能家居的控制;⑦当按下求救按钮时,系统GSM发出英文短信到用户手机。各项功能均可正常实现即为调试成功。调试成功图如4.2所示。4.3调试中遇到的问题(1)通电测试后烟雾传感器无法正常检测烟雾/可燃气体解决方法:经查阅资料后得知,烟雾传感器需根据使用情况作出微调:①调节COMP电位器,使用电压表测量U5第三脚(V+输入端),使其电压在1.8V左右;②在完全没有烟雾/可燃气体的情况下,调节VALUE电位器,使用电压表测量U5第二脚(V-输入端),使其电压在0.6V左右;③如果要提高灵敏度,可调节COMP电位器,适当降低电压,降低灵敏度则适当提高电压,但不能低于第二脚电压。图4.2调试功能完成情况各项功能电路部分正常,但无法与GSM模块实现联动解决方法:经查阅资料,该情况可能为SIM800LGSM模块为检测到网络信号,导致无法成功完成网络注册,故无法实现功能,因技术受限,该模块暂不支持电信卡,故更换移动或联通手机卡,或者移动位置寻找一个信号网络强的地方即可完成网络注册,正常实现功能。5软件仿真5.1软件仿真图如图5.1所示为软件仿真图。图5.1软件仿真图5.2软件仿真详解首先进行,系统上电,各电路初始化,SIM800L开始读取网络信息,读取完成后LCD显示当前温度值与预设报警温度阈值如图5.2所示。图5.2LCD屏显示然后此时系统已进入正式运行状态,按动“温度加”、“温度减”按钮时,显示屏中预设温度值随其发生变化,如图5.3所示。按动“温度减”,温度阈值也会随之变小,类似于图5.3,这里不再做赘述。 图5.3按动温度加仿真 当改变当前温度,并超过所设温度阈值“50℃”时,灾情灯亮起,同时蜂鸣器也发出报警声,如图5.4所示。图5.4温度报警仿真当检测到可燃气体或烟雾时,灾情灯亮起,同时蜂鸣器也发出报警声,如图5.5所示。当人体红外模块检测到有人时,盗情灯亮起,同时蜂鸣器也发出报警声,如图5.6所示。图5.5可燃气体报警仿真图5.6人体红外检测报警仿真由于仿真无法加入SIM800L模块无法进行与用户交互功能的展示,以上所有“盗情”及“险情”无法进行仿真,同样也无法进行继电器在收到短信后的“断电”与“闭合”的仿真,无法演示其对家电的控制。结论本文从整体到部分详细介绍了智能家居报警控制器的设计。通过查阅大量资料,本文提出了几种可行性方案,对硬件电路的实现方案进行了分析对比,并最终选择了基于GSM模块的实现方案。在比较重要的部分进行了详细的论述,并且给出了程序及说明,其可靠性和稳定性都达到了很好的效果。本设计已经完成了对智能住宅盗情、火情、煤气泄漏等进行自动监测并实现了自动报警功能。经测试,人体电红外传感器的感应范围为6.3m左右;在外界温度超过报警温度值时,DS18B20温度传感器能够准确感应,并发出报警,基本实现预期目的,同时系统还能够辨别不同险情,进行不同的报警,方便主人正确处理险情,使设计跟家智能化、人性化。本设计中使用的芯片只是当前电子科技发展的一般产物,随着科技的不断发展,更高密度,更高精度的芯片将会取代现有的产品。在现代电子科技的高速发展过程中,微型化、集成化、高密度化以及设备的高精度化已经成为一种长期的趋势,这就要求我们力求使用更精确的设备。本设计从具有成本较低,功能实用,灵活多样,简便有效等特点,有效的降低了用户住宅遇到和发生险情及其他意外事件的风险,有效的避免了因险情及其他意外事件造成的经济及其他损失,将居民损失降到最小,同时也将提高用户的生活品质水平。参考文献[1]冯娟,曾立华.基于GSM的住宅智能报警系统的设计[J].微计算机信息,2008.24:100-101[2]韩斌杰.GSM原理及其网络优化[M].机械工业出版社,2001[3]卢宪友.智能远程家电控制及安防系统的研究[D].曲阜师范大学,2010[4]郭天祥.新概念51单片机C语言教程[M],电子工业出版社,2010.3[5]高放,杜云,冯建武等.基于GSM网络短消息的汽车防盗报警系统设计[J].河北工业科技,2009,26:182-184[6]张洪润.传感器技术大全(上册)[M].北京航空航天大学出版社,2008[7]赵冲.基于GSM的防盗报警系统设计[D].西安科技大学,2007[8]TC35iHardwareInterfaceDescription,Version:03.01,DocId:TC35i_HD_v03.01,September09,2005[9]谢崇明.GSM汽车防盗报警系统设计[J].装备制造技术,2008.1:105-107[10]张援朝.防火探测器及气体传感器[J].家用电器.消费,2000.5:80-83[11]林雪梅.\o"热释电红外传感器及其应用"热释电红外传感器及其应用[J].甘肃科技纵横,2005.1:4-6[12]姚福安.电子电路设计与实践[M].山东:山东科学技术出版社,2002:105~118.[13]李晓思.基于无线GSM网络的智能型住宅自动控制系统[J].传感器世界,2010.7:75-76[14]梅创社.基于GSM手机模块在车载防盗系统中的应用研究[J].计算机应用与软件,2007(05):124-125+130[15]郭玲,杨佳宁,李挥,吴晔,谢亨骏.一种GSM手机发射机数字模块的设计[J].通信技术,2010,43(08):97-99+102[16]崔浩斌,刘伟.基于STM32单片机的智能家居控制系统设计研究[J].微处理机,2020,41(01):61-64[17]童名文.一种新型报警器的研制[J].高校电子学报,2003.5:45-59[18]IntroductiontotheSMSinPDUmodeVi.00,Januaty.2000[19]GTSGSM07.07Version5.0.0.Digitalcellulartelecommunicationssystem(Phase2+);ATcommandsetforGSMMobileEquipment(ME)(GSM07.07)[S],SMG4.1996.7.1[20]徐博.基于ZigBee的社区安防系统设计与研究[D].河北工业大学,2013 附录1原理图

附录2源程序清单#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharbitAlarm_flag; //温度发送短信标志位,=1表示已经发送,=0表示没有发送bitSmoke_Alarm; //烟雾发送短信标志位,=1表示已经发送,=0表示没有发送bitSteal_Alarm; //防盗发送短信标志位,=1表示已经发送,=0表示没有发送bitNEW_SMS; //短消息提示标志位bitREAD_SMS; //读取短消息标志位bitATH; //挂机标志位ucharxdataUART0_Data[256]; //存放手机模块的数组ucharUART0_Len=0; //定义长度ucharLen=0; //定义长度ucharcodeCommand_AT[]="AT\r\n"; //发送AT,建立连接ucharcodeCommand_AT_CMGF[]="AT+CMGF=1\r\n"; //把格式设置为text格式ucharcodeCommand_AT_CMGS[]="AT+CMGS="; //发送到指定号码指令ucharcodeCommand_AT_YIN[]={0x22}; //发送指定号码双引号ucharcodeCommand_AT_ENTER[]="\r\n"; //发送指定号码双引号ucharcodeCommand_AT_NUM[]=; //发送到指定号码ucharcodeCommand_AT_IPR[]="AT+IPR=9600\r\n"; //设置波特率ucharCommand_AT_CMGR[]="AT+CMGR=\r\n"; //读第几条短信ucharCommand_AT_CMGD[]="AT+CMGD=\r\n"; //删除第几条短信ucharcodeCommand_AT_CMGD1[]="AT+CMGD=01\r\n"; //删除第1条短信ucharcodeCommand_AT_CNMI[]="AT+CNMI=1,1,2\r\n"; //设置短消息提示ucharcodeCommand_AT_CLIP[]="AT+CLIP=1\r\n"; //来电显示ucharcodeCommand_AT_CRC[]="AT+CRC=0\r\n"; //设置来电开头为RING,有电话打入收到RING提醒ucharcodeCommand_ATH[]="ATH\r\n"; //挂电话ucharcodeCommand_ATE[]="ATE1\r\n"; //设置回显ucharcodeCommand_AT_End[]={0x1A}; //发送短信内容结束符ucharcodeCommand_NUM[]="0123456789+-"; //短信里温度值提取的数字ucharCommand_AT_Tem[42]="C,Temperatureexceedlimit,pleasenote!"; //温度超过界限,请注意!ucharcodeCommand_Someone[33]="Someoneinthehouse,pleasenote!"; //有人在屋里,请注意!ucharcodeCommand_Smoke[37]="Combustiblegasorsmoke,pleasenote!"; //烟雾或可燃性气体,请注意!ucharcodeCommand_Help[35]="Someonecallforhelp,pleasenote!"; //有人求救,请注意!ucharcodeCommand_Opened[13]="Itisopened!"; //打开ucharcodeCommand_Closed[13]="Itisclosed!"; //关闭ucharcodeOPEN[]="#OPEN#"; //开启ucharcodeCLOSE[]="#CLOSE#"; //关闭sbitrs=P1^0; //LCD1602位定义sbitrw=P1^1; //LCD1602位定义sbite=P1^2; //LCD1602位定义ucharcodetable1[]="NOWTemper:C"; //液晶屏显示内容ucharcodetable2[]="SETTemper:C"; //液晶屏显示内容ucharcodetable3[]=""; //清屏内容ucharcodetable4[]="GSMModule!"; //初始化显示内容ucharcodetable5[]="SIMInitialize!!"; //初始化显示内容sbitUP=P1^6; //加键sbitDOWN=P1^7; //减键sbitHELP=P2^0; //求救键sbitBEEP=P1^4; //蜂鸣器接口sbitSMOKE=P3^6; //烟雾接口sbitSTEAL=P3^5; //防盗接口sbitDQ=P3^7; //温度数据口sbitJDQ=P1^3; //继电器接口,低有效inttemperature; //全局变量温度intSet_temp=50; //设置温度,默认是50度ucharTimer_Counter; //定时器中断计数voidSend_Message(void); //函数声明voidSend_Command(ucharValue[],ucharLen); //函数声明voidSend_Message(void); voidSend_Message1(void);voidSend_Message2(void);voidSend_Message3(void);voidSend_Message4(void);voidSend_Message5(void);/**************************************LCD1602**********************************************************/voiddelay_lcd(uintz) //显示屏延时0.2ms函数{ uintx,y; for(x=z;x>0;x--) for(y=20;y>0;y--);}voiddelay1(uintz) //GSM短信延时1ms函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidwrite_com(ucharcom) //LCD1602写指令函数{ rw=0; delay_lcd(5); rs=0; delay_lcd(5); e=1; delay_lcd(5); P0=com; delay_lcd(5); e=0; delay_lcd(5); }voidwrite_date(uchardate) //LCD1602写数据函数{ rw=0; delay_lcd(5); rs=1; delay_lcd(5); e=1; delay_lcd(5); P0=date; delay_lcd(5); e=0; delay_lcd(5); }voidinit() //LCD1602初始化函数{ ucharnum; e=0; //时序表e初始为0 write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); //设置光标 write_com(0x06); //光标自动加1,光标输入方式 write_com(0x01); //清屏 write_com(0x80); //设置初始显示位置 for(num=0;num<16;num++) { write_date(table4[num]); //显示数组table1的内容 delay_lcd(1); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_date(table5[num]); //显示数组table2的内容 delay_lcd(1); } }voidLCD_Display_String(unsignedcharline,unsignedchar*string){ //液晶屏显示内容,把要显示的内容写到对应的位置 unsignedchari; unsignedcharaddress=0; if(line==1) { address=0x80; //0X80是第1行的第1个位置,0x81第2位 } elseif(line==2) { address=0x80+0x40; //0X80+0x40是第2行的第1个位置,0X80+0x40+1是第2行第2位 } for(i=0;i<16;i++) { write_com(address); write_date(string[i]); address++; }}voidtemperature_dispaly(charadd,chardat) //温度显示函数:第一个:参数的地址,第二个:参数的内容{ ucharshi,ge; shi=dat/10; //把温度的十位提取出来 ge=dat%10; //把温度的个位提取出来 write_com(0x80+add); //要写的地址 write_date(0x30+shi); //十位的内容1602字符库 write_date(0x30+ge); //个位的内容 1602字符库 if((temperature>0)&(temperature<100)) //温度在正常范围内转换 { Command_AT_Tem[1]=Command_NUM[temperature/10]; //把十位的数字存到Command_AT_Tem[1] Command_AT_Tem[2]=Command_NUM[temperature%10]; //把个位的数字存到Command_AT_Tem[2] }}/****************************************DS18B20******************************************************//*voiddelay(uinty) //DS18B20延时函数25us左右(仿真用、实际调试、需要的延时时间不同){ while(y--);}*/voiddelay(uintz) //DS18B20延时函数34us左右(仿真用、实际调试、需要的延时时间不同){ uintx,y; for(x=z;x>0;x--) for(y=1;y>0;y--);}voidwrite_byte(uintdat) //写一个字节{ uchari; for(i=0;i<8;i++) //循环八次 共有八位 { DQ=0; //写零 DQ=dat&0x01;//向总线写位数据,从最低位写起 delay(4); DQ=1; //写一 dat>>=1; //下次写作准备,移位数据 } delay(4);} ucharread_byte(void) //读一个字节,返回值{ uchari; uintvalue; for(i=0;i<8;i++) //循环八次 共有八位 { DQ=0; value>>=1; DQ=1; //释放总线 if(DQ) value|=0x80; //DQ=1,value取1 delay(4); } returnvalue;}voidds18b20_init() //初始化函数{ uintn; DQ=1; delay(8); DQ=0; delay(80); //低电平480——960us DQ=1; //总线释放 delay(8); //等待50——100us n=DQ; //读取复位状态 delay(4);}intreadtemperature() //读整数部分{ inta,b; //高八位,低八位 ds18b20_init(); write_byte(0xcc); //跳过rom匹配,跳过读序列号的操作,可节省操作时间 write_byte(0x44); //启动温度检测 delay(300); //测温度 ds18b20_init(); //开始操作前需要复位 write_byte(0xcc); //跳过rom匹配 write_byte(0xbe); //写读寄存器中温度值的命令 a=read_byte(); //low 低位开始读取 b=read_byte(); //high 高位开始读取 b<<=8; //把高位左移八位 b=b|a; //高八位与第八位进行或运算,得到总和 if(b>=0) //如果温度大于等于0 { b=b*0.0625; //直接乘以0.0625 write_com(0x80+12); //在LCD1602对应的位置不写内容 write_date(0x20); if((b>0)&(b<100)) Command_AT_Tem[0]=Command_NUM[10];//Command_AT_Tem[0]为+,表示温度大于或等于0 }else //温度小于0 { b=~b+1; //取反码再加一 b=b*0.0625; //再运算 write_com(0x80+12); //在LCD1602对应的位置写一个负号 write_date(0x2d); if((b>0)&(b<100)) Command_AT_Tem[0]=Command_NUM[11];//Command_AT_Tem[0]为-,表示温度小于0 } returnb; //返回b,此时以表示温度}/************************************按键***********************************************************/voidKEY(void){ if(HELP==0) //求救按键按下 { delay1(2); //延时消抖 if(HELP==0) //按键确实按下 { BEEP=1; //开蜂鸣器 Send_Message5(); //发送短信 while(!HELP); //等待按键释放 } } if(UP==0) //按键按下 { delay1(2); //延时消抖 if(UP==0) //按键确实按下 { while(!UP); //等待按键释放 Set_temp++; //设置的温度值加一 if(Set_temp==100) //温度值到达100 { Set_temp=0; //清零 } } } if(DOWN==0) //按键按下 { delay1(2); //延时消抖 if(DOWN==0) //按键确实按下 { while(!DOWN); //等待按键释放 Set_temp--; //设置的温度值减一 if(Set_temp<0) //温度值小于0 { Set_temp=99; //变为最大值 } } } temperature_dispaly(0x40+13,Set_temp);//显示设置值到LCD}/************************************检测各部分是否异常***********************************************************/voidCheck(void){ if(temperature>Set_temp) //如果实际温度值大于设置值 { if((temperature>0)&(temperature<100))//温度在正常范围内才报警 { BEEP=1; //启动蜂鸣器 if(Alarm_flag==0) //警报标志位为1时发送温度报警信息 { Send_Message3(); //发送温度过高报警短信 } Alarm_flag=1; //标志位置一,表示短信已经发送,避免重复发送短信 } } if(temperature<=Set_temp) //正常情况 { Alarm_flag=0; //清除标志位,下次温度超过继续发送短信一次 } if(STEAL==0) //检测到人体 { BEEP=1; //启动蜂鸣器 if(Steal_Alarm==0) //警报标志位为1时发送防盗报警信息 { Send_Message2(); } Steal_Alarm=1; //标志位置一,表示短信已经发送,避免重复发送短信 } if(STEAL==1) //正常情况 { Steal_Alarm=0; //清除标志位,下次继续发送短信一次 } if(SMOKE==0) //检测到可燃性气体 { BEEP=1; //启动蜂鸣器 if(Smoke_Alarm==0) //警报标志位为1时发送烟雾报警信息 { Send_Message1(); } Smoke_Alarm=1; //标志位置一,表示短信已经发送,避免重复发送短信 } if(SMOKE==1) //正常情况 { Smoke_Alarm=0; //清除标志位,下次温度超过继续发送短信一次 } if((SMOKE==1)&&(temperature<=Set_temp)&&(STEAL==1)&&(HELP=1)) { BEEP=0; //关闭蜂鸣器 }}/************************************GSM***********************************************************/voidSys_Init(void){ TMOD=0x21; //设置定时器1的工作方式为方式2 TH1=0xfd; TL1=0xfd; //设置串行口波特率为9600 TR1=1; //开启定时器1 SCON=0x50; //设置串行口的工作方式为方式一,允许接收 PCON=0x00; ES=1; //开串行口中断 EA=1; //开总中断 JDQ=1; //关闭继电器 BEEP=0; //关闭蜂鸣器}voidDelay_0_5s(uinty) //延时1s{ uinta; for(a=0;a<10*y;a++) //20为1s { TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(!TF0); TF0=0; }}voidSend_Command(ucharValue[],ucharLen) //发送指令,Value[]表示发送哪个数组,Len表示发送该数组里的几位{ uchari; for(i=0;i<Len;i++) { SBUF=Value[i]; while(!TI); TI=0; }}voidGSM_Init(void) //GSM模块初始化{ Send_Command(Command_ATE,5); //设置回显 delay1(1000); Send_Command(Command_AT,3); //建立连接 delay1(10); Send_Command(Command_AT_CMGF,10); //设置为text格式 delay1(2000); Send_Command(Command_AT_CNMI,14); //设置为设置为中断方式接收短信,即接收短信后向下位机串口发送+CMTI:"SM",1。 delay1(3000); Send_Command(Command_AT_CLIP,10); //设置来电提示RING+CLIP: delay1(1000); Send_Command(Command_AT_CRC,9); //设置来电提示RING+CLIP: delay1(1000); Send_Command(Command_AT_IPR,12); //设置波特率=9600 delay1(1000);}voidRead_Message(void){ if(NEW_SMS==1) //有新消息 { if((UART0_Data[Len+13]>=0x30)&&(UART0_Data[Len+13]<=0x39)) //短信数第二位有数据,表示有二位数或三位数 { if((UART0_Data[Len+14]>=0x30)&&(UART0_Data[Len+14]<=0x39)) //三位数暂不处理 { } if((UART0_Data[Len+14]<0x30)||(UART0_Data[Len+14]>0x39)) //二位数 { Command_AT_CMGR[8]=UART0_Data[Len+12]; //第一位为短信数十位 delay1(10); Command_AT_CMGR[9]=UART0_Data[Len+13]; //第二位为短信数个位 delay1(10); Command_AT_CMGD[8]=UART0_Data[Len+12]; //第一位为短信数十位 delay1(10); Command_AT_CMGD[9]=UART0_Data[Len+13]; //第一位为短信数个位 delay1(10); } } if((UART0_Data[Len+13]<0x30)||(UART0_Data[Len+13]>0x39)) //短信数第二位无数据,表示只有一位数 { Command_AT_CMGR[8]=0x30; //第一位为0 delay1(10); Command_AT_CMGR[9]=UART0_Data[Len+12]; //第二位为短信数 delay1(10); Command_AT_CMGD[8]=0x30; //第一位为0 delay1(10); Command_AT_CMGD[9]=UART0_Data[Len+12]; //第二位为短信数 delay1(10); } Send_Command(Command_AT_CMGR,11); //发送"AT+CMGR=?",读取第几条短信 delay1(1000); //延时 UART0_Data[Len+13]=0x40;UART0_Data[Len+14]=0x40; UART0_Len=0; NEW_SMS=0; //清除新消息提示标志 } if(READ_SMS==1) //读取消息 { if(((UART0_Data[Len+6]==OPEN[0])&&(UART0_Data[Len+7]==OPEN[1])&&(UART0_Data[Len+8]==OPEN[2])&&(UART0_Data[Len+9]==OPEN[3])&&(UART0_Data[Len+10]==OPEN[4])&&(UART0_Data[Len+11]==OPEN[5]))//移动 ||(UART0_Data[Len+3]==OPEN[0])&&(UART0_Data[Len+4]==OPEN[1])&&(UART0_Data[Len+5]==OPEN[2])&&(UART0_Data[Len+6]==OPEN[3])&&(UART0_Data[Len+7]==OPEN[4])&&(UART0_Data[Len+8]==OPEN[5]))//联通 { JDQ=0; //开启继电器 Send_Command(Command_AT_CMGD,11); //删除短信 delay1(1000); Send_Message(); //发送到指定号码 delay1(1000); //等待回复输入符号 Send_Command(Command_Opened,13); //发送消息 delay1(1000); Send_Command(Command_AT_End,1); //发送短信结束符 delay1(2000); } if(((UART0_Data[Len+6]==CLOSE[0])&&(UART0_Data[Len+7]==CLOSE[1])&&(UART0_Data[Len+8]==CLOSE[2])&&(UART0_Data[Len+9]==CLOSE[3])&&(UART0_Data[Len+10]==CLOSE[4])&&(UART0_Data[Len+11]==CLOSE[5])&&(UART0_Data[Len+12]==CLOSE[6]))//移动 ||(UART0_Data[Len+3]==CLOSE[0])&&(UART0_Data[Len+4]==CLOSE[1])&&(UART0_Data[Len+5]==CLOSE[2])&&(UART0_Data[Len+6]==CLOSE[3])&&(UART0_Data[Len+7]==CLOSE[4])&&(UART0_Data[Len+8]==CLOSE[5])&&(UART0_Data[Len+9]==CLOSE[6]))//联通 { JDQ=1; //关闭继电器 Send_Command(Command_AT_CMGD,11); //删除短信 delay1(1000); Send_Message(); //发送到指定号码 delay1(1000); //等待回复输入符号 Send_Command(Command_Closed,13); //发送消息 delay1(1000); Send_Command(Command_AT_End,1); //发送短信结束符 delay1(2000); } UART0_Data[Len+13]=0x40;UART0_Data[Len+14]=0x40; UART0_Len=0; READ_SMS=0; } if(ATH==1) //电话打入,需要判断是否为注册号码拨打,是则挂机和结束报警,否则直接挂机 { Send_Command(Command_ATH,4); //发送挂机命令 delay1(1000); Send_Message4(); //发送当前温度 ATH=0; UART0_Len=0; //标志 }}voidSend_Message(void) //发送到指定号码{ Send_Command(Command_AT_CMGS,8); //发送指令 delay1(500); Send_Command(Command_AT_YIN,1); //发送引号 delay1(100); Send_Command(Command_AT_NUM,11); //发送号码 delay1(100); Send_Command(Command_AT_YIN,1); //发送引号 delay1(100); Send_Command(Command_AT_ENTER,1); //发送回车 delay1(100);} voidSend_Message1(void) //发送警报浓度{ Send_Message(); //发送到指定号码 delay1(1000); //等待回复输入符号 Send_Command(Command_Smoke,37); //发送烟雾报警信息 delay1(1000); Send_Command(Command_AT_End,1); //发送短信结束符 delay1(100);}voidSend_Message2(void) //发送入室盗贼短信息{ Send_Message(); //发送到指定号码 delay1(1000); //等待回复输入符号 Send_Command(Command_Someone,33); //发送警报消息 delay1(1000); Send_Command(Command_AT_End,1); //发送短信结束符 delay1(100);}voidSend_Message3(void) //发送警报温度{ Send_Message(); //发送到指定号码 delay1(1000); //等待回复输入符号 Send_Command(Command_AT_Tem,42); //发送温度 delay1(1000); Send_Command(Command_AT_End,1); //发送短信结束符 delay1(100);}voidSend_Message4(void) //发送当前温度{ Send_Message(); //发送到指定号码 delay1(1000); //等待回复输入符号 Send_Command(Command_AT_Tem,4); //发送温度 delay1(500); Send_Command(Command_AT_End,1); //发送短信结束符 delay1(100);}voidSend_Message5(void) //发送求救信号{ Send_Message(); //发送到指定号码 delay1(1000); //等待回复输入符号 Send_Command(Command_Help,35); //发送求救信息 delay1(1000); Send_Command(Command_AT_End,1); //发送短信结束符 delay1(100);}/************************************主程序***********************************************************/voidmain(){ Sys_Init(); //单片机系统初始化 init(); //液晶屏初始化 Delay_0_5s(50); //等待模块初始化 temperature=readtemperature(); //读取实时温度 GSM_Init(); //模块初始化 Send_Command(Command_AT_CMGD1,11); //删除短信第一条短信息,腾出空间接收短信 delay1(500); TH0=(65536-50000)/256; //50MS定时 TL0=(65536-50000)%256; ET0=1; //允许T0中断 TR0=1; //开启定时器 LCD_Display_String(1,table1); //显示内容 LCD_Display_String(2,table2); //显示内容 Timer_Counter=50; //第一次直接进入温度读取 while(1) { if(Timer_Counter>=20) //每1s读取一次温度20*50ms=1s { Timer_Counter=0; //清除 temperature=readtemperature(); //读取实时温度 } temperature_dispaly(13,temperature); //显示温度到LCD1602 KEY(); //扫描按键程序 Check(); //检测传感器情况 Read_Message(); //读取短信内容 }}/***********************************定时器中断服务子程序无需调用***********************************************************/voidTimer0()interrupt1 //定时器T0中断函数{ TH0=(65536-50000)/256; //赋初值=50ms TL0=(65536-50000)%256; //TH0=3C,TL0=B0 Timer_Counter++;}/***********************************串口中断服务子程序无需调用有数据就直接进入***********************************************************/voidSerial()interrupt4{ RI=0; //接收完毕 UART0_Data[UART0_Len]=SBUF; //存入到对应数组 if(SBUF==0x2B) //+号表示有短信或者电话打入 { Len=UART0_Len; //记录序号 } if((UART0_Data[Len+1]==0x43)&&(UART0_Data[Len+2]==0x4D)&&(UART0_Data[Len+3]==0x54)&&(UART0_Data[Len+4]==0x49)) { //接收到的内容是短信提示UART0_Data【】="+CMTI",比较前五位 NEW_SMS=1; //短信标志位置一 } if((UART0_Data[Len+1]==0x43)&&(UART0_Data[Len+2]==0x4D)&&(UART0_Data[Len+3]==0x47)&&(UART0_Data[Len+4]==0x52)) { //接收到的内容是读取短信提示UART0_Data【】="+CMGR",比较前五位 READ_SMS=1; //读取短信标志位置一 } if((UART0_Data[Len+1]==0x43)&&(UART0_Data[Len+2]==0x4C)&&(UART0_Data[Len+3]==0x49)&&(UART0_Data[Len+4]==0x50)&&(UART0_Data[Len+5]==0x3A)) { //接收到的内容是电话提示UART0_Data【】="+CLIP:",比较前6位 ATH=1; //挂机标志位置一 } UART0_Len++; //序号递增 }致谢为期几个月的毕业设计结束了,在这段时间的设计和学习过程中,我得到了很多人的帮助,学到了很多东西。在此首先我要感谢谢莹老师以及冯雅丽老师,是你们的细心指导和关怀,使我能够顺利的完成毕业设计及论文。在我的学业和论文的研究工作中无不倾注着老师们辛勤的汗水和心血。老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。在此我要向我的导师谢莹老师以及冯雅丽老师致以最衷心的感谢和深深地敬意。在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法使得我们对所学知识有了更深层的理解,所以在这里非常感谢帮助我的同学。最后感谢我的系主任和我的导员以及我的学院,是你们给了我这次学以致用的机会,将大学所学知识集中的体现在毕业设计中,我的毕业设计正是依靠于各位老师领导以及学校共同支撑的平台,才有了本次展示自我的机会,感谢老师,感谢智能工程学院,感谢沈阳城市学院。

HYPERLINK如何给电脑重做系统给电脑重做系统,自己学学,可少花钱,哈哈[图]

一、准备工作:

如何重装电脑系统

首先,在启动电脑的时候按住DELETE键进入BIOS,选择AdvancedBIOSFeatures选项,按Enter键进入设置程序。选择FirstBootDevice选项,然后按键盘上的PageUp或PageDown键将该项设置为CD-ROM,这样就可以把系统改为光盘启动。

其次,退回到主菜单,保存BIOS设置。(保存方法是按下F10,然后再按Y键即可)

1.准备好WindowsXPProfessional简体中文版安装光盘,并检查光驱是否支持自启动。

2.可能的情况下,在运行安装程序前用磁盘扫描程序扫描所有硬盘检查硬盘错误并进行修复,否则安装程序运行时如检查到有硬盘错误即会很麻烦。

3.用纸张记录安装文件的产品密匙(安装序列号)。

4.可能的情况下,用驱动程序备份工具(如:驱动精灵2004V1.9Beta.exe)将原WindowsXP下的所有驱动程序备份到硬盘上(如∶F:Drive)。最好能记下主板、网卡、显卡等主要硬件的型号及生产厂家,预先下载驱动程序备用。

5.如果你想在安装过程中格式化C盘或D盘(建议安装过程中格式化C盘),请备份C盘或D盘有用的数据。

二、用光盘启动系统:

(如果你已经知道方法请转到下一步),重新启动系统并把光驱设为第一启动盘,保存设置并重启。将XP安装光盘放入光驱,重新启动电脑。刚启动时,当出现如下图所示时快速按下回车键,否则不能启动XP系统光盘安装。如果你不知道具体做法请参考与这相同的-->如何进入纯DOS系统:

光盘自启动后,如无意外即可见到安装界面,将出现如下图1所示

查看原图

全中文提示,“要现在安装WindowsXP,请按ENTER”,按回车键后,出现如下图2所示

查看原图

许可协议,这里没有选择的余地,按“F8”后如下图3

HYPERLINK

查看原图

这里用“向下或向上”方向键选择安装系统所用的分区,如果你已格式化C盘请选择C分区,选择好分区后按“Enter”键回车,出现下图4所示

查看原图

这里对所选分区可以进行格式化,从而转换文件系统格,或保存现有文件系统,有多种选择的余地,但要注意的是NTFS格式可节约磁盘空间提高安全性和减小磁盘碎片但同时存在很多问题MacOS和98/Me下看不到NTFS格式的分区,在这里选“用FAT文件系统格式化磁盘分区(快),按“Enter”键回车,出现下图5所示

查看原图

格式化C盘的警告,按F键将准备格式化c盘,出现下图6所示

HYPERLINK

查看原图

由于所选分区C的空间大于2048M(即2G),FAT文件系统不支持大于2048M的磁盘分区,所以安装程序会用FAT32文件系统格式对C盘进行格式化,按“Enter”键回车,出现下图7所示

查看原图图7中正在格式化C分区;只有用光盘启动或安装启动软盘启动XP安装程序,才能在安装过程中提供格式化分区选项;如果用MS-DOS启动盘启动进入DOS下,运行i386\winnt进行安装XP时,安装XP时没有格式化分区选项。格式化C分区完成后,出现下图8所示

被过滤广告

查看原图

图8中开始复制文件,文件复制完后,安装程序开始初始化Windows配置。然后系统将会自动在15秒后重新启动。重新启动后,出现下图9所示

HYPERLINK

查看原图

9

查看原图

过5分钟后,当提示还需33分钟时将出现如下图10

HYPERLINK

查看原图

区域和语言设置选用默认值就可以了,直接点“下一步”按钮,出现如下图11

查看原图

这里输入你想好的姓名和单位,这里的姓名是你以后注册的用户名,点“下一步”按钮,出现如下图12

HYPERLINK

查看原图

如果你没有预先记下产品密钥(安装序列号)就大件事啦!这里输入安装序列号,点“下一步”按钮,出现如下图13

HYPERLINK

查看原图

安装程序自动为你创建又长又难看的计算机名称,自己可任意更改,输入两次系统管理员密码,请记住这个密码,Administrator系统管理员在系统中具有最高权限,平时登陆系统不需要这个帐号。接着点“下一步”出现如下图14

查看原图

日期和时间设置不用讲,选北京时间,点“下一步”出现如下图15

HYPERLINK

查看原图

开始安装,复制系统文件、安装网络系统,很快出现如下图16

查看原图

让你选择网络安装所用的方式,选典型设置点“下一步”出现如下图17

HYPERLINK

查看原图

点“下一步”出现如下图18

HYPERLINK

查看原图

继续安装,到这里后就不用你参与了,安装程序会自动完成全过程。安装完成后自动重新启动,出现启动画面,如下图19

HYPERLINK

查看原图

第一次启动需要较长时间,请耐心等候,接下来是欢迎使用画面,提示设置系统,如下图20

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

HYPERLINK

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

查看原图

这里建立的宽带拨号连接,不会在桌面上建立拨号连接快捷方式,且默认的拨号连接名称为“我的ISP”(自定义除外);进入桌面后通过连接向导建立的宽带拨号连接,在桌面上会建立拨号连接快捷方式,且默认的拨号连接名称为“宽带连接”(自定义除外)。如果你不想在这里建立宽带拨号连接,请点击“跳过”按钮。

在这里我先创建一个宽带连接,选第一项“数字用户线(ADSL)或电缆调制解调器”,点击“下一步”按钮,如下图22所示

HYPERLINK

查看原图

目前使用的电信或联通(ADSL)住宅用户都有帐号和密码的,所以我选“是,我使用用户名和密码连接”,点击“下一步”按钮,如下图23所示

查看原图

输入电信或联通提供的帐号和密码,在“你的ISP的服务名”处输入你喜欢的名称,该名称作为拨号连接快捷菜单的名称,如果留空系统会自动创建名为“我的ISP”作为该连接的名称,点击“下一步”按钮,如下图24所示

查看原图

已经建立了拨号连接,微软当然想你现在就激活XP啦,不过即使不激活也有30天的试用期,又何必急呢?选择“否,请等候几天提醒我”,点击“下一步”按钮,如下图25所示

HYPERLINK

查看原图

输入一个你平时用来登陆计算机的用户名,点下一步出现如下图26

HYPERLINK

查看原图

点击完成,就结束安装。系统将注销并重新以新用户身份登陆。登陆桌面后如下图27

HYPERLINK

查看原图

六、找回常见的图标

在桌面上点开始-->连接到-->宽带连接,如下图32

查看原图

左键点“宽带连接”不放手,将其拖到桌面空白处,可见到桌面上多了一个“宽带连接”快捷方式。结果如下图33

HYPERLINK

查看原图

然后,右键在桌面空白处点击,在弹出的菜单中选“属性”,即打开显示“属性窗口”如下图34

查看原图

在图中单击“桌面”选项卡,出现如下图35

HYPERLINK

查看原图

在图中的左下部点击“自定义桌面”按钮,出现如下图36

查看原图

在图中的上部,将“我的文档”、“我的电脑”、“网上邻居”和“InternetExplorer”四个项目前面的空格上打钩,然后点“确定”,再“确定”,你将会看到桌面上多了你想要的图标。如下图37

键盘上每个键作用!!!

F1帮助

F2改名

F3搜索

F4地址

F5刷新

F6切换

F10菜单

CTRL+A全选

CTRL+C复制

CTRL+X剪切

CTRL+V粘贴

CTRL+Z撤消

CTRL+O打开

SHIFT+DELETE永久删除

DELETE删除

ALT+ENTER属性

ALT+F4关闭

CTRL+F4关闭

ALT+TAB切换

ALT+ESC切换

ALT+空格键窗口菜单

CTRL+ESC开始菜单

拖动某一项时按CTRL复制所选项目

拖动某一项时按CTRL+SHIFT创建快捷方式

将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放

Ctrl+1,2,3...切换到从左边数起第1,2,3...个标签

Ctrl+A全部选中当前页面内容

Ctrl+C复制当前选中内容

Ctrl+D打开“添加收藏”面版(把当前页面添加到收藏夹中)

Ctrl+E打开或关闭“搜索”侧边栏(各种搜索引擎可选)

Ctrl+F打开“查找”面版

Ctrl+G打开或关闭“简易收集”面板

Ctrl+H打开“历史”侧边栏

Ctrl+I打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复

Ctrl+K关闭除当前和锁定标签外的所有标签

Ctrl+L打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)

Ctrl+N新建一个空白窗口(可更改,Maxthon选项→标签→新建)

Ctrl+O打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)

Ctrl+P打开“打印”面板(可以打印网页,图片什么的...)

Ctrl+Q打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表)

Ctrl+R刷新当前页面

Ctrl+S打开“保存网页”面板(可以将当前页面所有内容保存下来)

Ctrl+T垂直平铺所有窗口

Ctrl+V粘贴当前剪贴板内的内容

Ctrl+W关闭当前标签(窗口)

Ctrl+X剪切当前选中内容(一般只用于文本操作)

Ctrl+Y重做刚才动作(一般只用于文本操作)

Ctrl+Z撤消刚才动作(一般只用于文本操作)

Ctrl+F4关闭当前标签(窗口)

Ctrl+F5刷新当前页面

Ctrl+F6按页面打开的先后时间顺序向前切换标签(窗口)

Ctrl+F11隐藏或显示菜单栏

Ctrl+Tab以小菜单方式向下切换标签(窗口)

Ctrl+Enter域名自动完成[url=].**.com[/url](内容可更改,Maxthon选项→地址栏→常规)/另:当输入焦点在搜索栏中时,为高亮关键字

Ctrl+拖曳保存该链接的地址或已选中的文本或指定的图片到一个文件夹中(保存目录可更改,Maxthon选项→保存)

Ctrl+小键盘'+'当前页面放大20%

Ctrl+小键盘'-'当前页面缩小20%

Ctrl+小键盘'*'恢复当前页面的缩放为原始大小

Ctrl+Alt+S自动保存当前页面所有内容到指定文件夹(保存路径可更改,Maxthon选项→保存)

Ctrl+Shift+小键盘'+'所有页面放大20%

Ctrl+Shift+小键盘'-'所有页面缩小20%

Ctrl+Shift+F输入焦点移到搜索栏

Ctrl+Shift+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论