版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.z毕业设计题目:手机控制家用电器类别:单片机应用技术专业:电子信息工程应用电子班级:113电子信息工程113应用电子**:2011342101、2011348117、2011348109:剑锋、宗瑾、胜林指导教师:黄媛婕2012年12月25日-.z目录设计题目:2一、容摘要:2二、关键字:2三、引言:2四、正文:2五、完毕语17六、参考资料19七、致词19八、附录20手机控制家用电器一、容摘要:本设计为手机控制室灯系统设计,硬件局部它以STC12C5A60S2单片机为核心,利用GSM模块900-B与单片机的串口通信、单片机红外接发、单片机的扩展I/O并行输出,采用红外控制实现智能家居的特点。软件局部它结合定时/计数,中断,串行口扩展I/O等知识进展程序编译。二、关键字:单片机、GSM模块900-B、红外发射、扩展、定时/计数器、中断。三、引言:随着微控技术的日益完善和开展,为了适应快节奏的现代社会对生活品质的要求,单片机的应用在不断走向深入。它的应用比定导致传统的控制技术从根本上发生变革。也就是说单片机应用的出现是对传统控制技术的革命。它在工业控制、数据采集、智能化仪表、机电一体化、家用电器等领路得到了广泛应用,极大的提高了这些领域的技术水平和自动化控制。实现智能化离不开运算和控制单元,本系统采用MCU(STC12C5A60S2)作为主控器件,单片机应用系统由硬件和软件组成。硬件由单片机扩展的存储器、输入/出设备以及各种实现单片机系统控制要求的接口电路和有关的外围电路芯片或部件组成;软件由单片机应用系统实现其特定控制功能的各种工作程序和管理序组成。在单片机应用系统开发的过程中,应不断调整软、硬件,协调地进展软、硬件设计,以提高工作效率,当系统硬件和软件严密配合、协调一致,就可以组成高性能的单片机应用系统。因此单片机的开发应用已成为高新技术工程领域的一项重大工程。因此了解单片机知识,掌握单片机的应用技术具有重大的意义。本文主要从计算机的应用上来实现智能家居智能化的管理,控制家电的运行。正文:4.1主要容:当我们不在家时,我们可以用手机控制家里的大小用电器,让窗帘翻开、让灯翻开、让收音机翻开。当然当你手机没有电时,你还可以也可以拿起一个遥控对家里各种器件进展控制。4.1.1系统总设计:单片机红外发送单片机单片机红外发送单片机GSM模块900-BGSM模块900-B手机图1.1系统框图4.1.2GSM模块900-B应用分析:首先用GSM模块连接单片机,然后翻开GSM的电源,GSM模块搜索网络,,这时会模块并连接。因为GSM模块是以串口连接单片机的,需要翻开端口才可以连接,串口配置为:波特率9600,无校验,然后将数据通过手机短信的形式发送给GSM模块,然后模块再将数据传送给单片机,经过红外发射短路发射控制家用的电器。图1.2GSM模块与单片机数据传送图图1.3GSM模块构造图〔1〕、GSM模块的工作状态在应用方面GSM模块是用于单片机跟电脑配对通讯。使用方法是把GSM模块的通信线R*DT*D连接到单片机,然后用手机或者电脑给GSM模块发AT,并配对连接。如果是使用手机,。。。。使用电脑连接后会自动分配口,一般会出现固定一个口是可以通信。如果是想利用电脑连接模块,用GSM串口调试助手软件。给GSM模块发AT指令。(2)、如何进展AT指令操作GSM模块出厂时参数根本固定,用电脑进展AT指令,需要用一根USB转TTL线连接到模块,USB的T*D、R*D、直接连接到模块的T*D、R*D。在GSM模块的指示灯闪烁的情况下进展。也可以通过连接到单片机设置,单片机的R*D、T*D直接连接到模块R*D、T*D。然后再模块没有配对连接的情况下〔通过GSM串口调试助手软件可以看到返回的代码〕,直接通过串口发送AT指令对应的字符即可。〔3〕、GSM跟单片机的连接的调试这一步是最难的一步,需要经过串口跟电脑的连接,然后看GSM串口调试助手软件是否有指令返回,如果有AT指令,就证明GSM模块是好的,然后再跟单片机连接,单片机晶振选用11.0592MHz,单片机的R*D、T*D直接连接到模块R*D、T*D。在GSM模块连接单片机时,同时启动GSM模块的电源,这是GSM模块先注册网络,GSM模块板上有一颗黄色的led灯会一直闪烁,如果已经注册网络了,黄色的led灯会隔一会闪烁,这时如果看到1602LCD屏会有linksuccess时,证明GSM模块已经跟单片机连接上,如果还是没有连上,还要经过GSM串口调试助手软件给GSM模块发AT指令。、AT指令的应用给TE指示新消息:AT+MI举例:TE指示新消息AT+MI=2,1NOTE:将短信存储到ME或SIM卡后,再给出新短信指示OK+CMTI:"SM",1NOTE:显示新短信指示AT+MI=2,2NOTE:收到短信,直接给出短信容OKTESTSMS格式:AT+CMGF设置命令用于指定短消息的输入和发送的格式。AT+CMGF=1NOTE:设置短信为文本方式OKAT+CMGL="ALL"NOTE:列举当前存储单元中的所有短信TEST显示文本格式参数:AT+CSDH,使用设置命令,可控制是否在文本模式下的结果码中显示详细的头信息举例:设置不同的CSDH值AT+CSDH=1OKAT+CMGR=5TESTOKAT+CSDH=0OKAT+CMGR=5TESTOK删除消息:AT+CMGD使用设置命令,可删除优选消息存储器<mem1>中,位置参数为<inde*>的消息。举例:删除短信AT+CMGD=1NOTE:删除第一条短信OKAT+CMGD=1,4NOTE:删除当前存储器中全部短信OK发送消息:AT+CMGS使用设置命令,可将SMS〔SMS-SUBMIT〕从TE发送到网络侧。发送成功后,消息参考值<mr>将返回给TE。在接收到非请求发送状态报告结果码时,使用该取值可进展消息识别。举例:发送文本方式的短信AT+CMGF=1NOTE:设置以文本方式发送短信OKNOTE:输入对方>SMSNOTE:输入短信容,以ctrl-Z发送;ESC取消+CMGS:35OK举例:发送和接收PDU方式的短信(具体编码格式,请参考GSM04.11和03.40)AT+CMGF=0OKAT+CMGS=16+CMGS:35OKAT+CMGR=8NOTE:读取PDU短信+CMGR:0,,22OKPDU编码解析:4.1.4红外传送应用分析:由发射模块与接收模块两局部组成。发送模块先由键盘操作键值,以二进制信号的形式,传送给单片机,然后单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收模块普遍采用价格廉价,性能可靠的一体化红外接收头(如HS0038,它接收红外信号频率为38KHz,周期约为26us)接收红外信号,它同时对信号进展放大、检波、整形,得到TTL电平的编码信号,再传送给单片机,经单片机解码并由数码管显示接收到的数据。系统的构成框图如图1.4。键盘按钮键盘按钮单片机红外发射电路红外接收头单片机液晶屏图1.4红外收发器系统的构成框图〔1〕、红外发射原理要对红外遥控器所发的信号进展解码,必须先理解这些信号。
a)波形首先来看看,当我们按下遥控器时,红外发射器是发送了一个什么样的信号波形,如下列图:图1.5红外发送波形图由上图所示,当一个键按下超过22ms,振荡器使芯片激活,将发射一组108ms的编码脉冲(由位置1所示)。如果键按下超过108ms仍未松开,接下来发射的代码〔连发代码由位置3所示〕将仅由起始码〔9ms〕和完毕码〔2.5ms〕组成。下面把位置1的波形放大:
图1.6红外发送波形图由位置1的波形得知,这108ms发射代码由一个起始码〔9ms〕,一个结果码〔4.5ms〕,低8位地址码〔用户编码〕〔9ms~18ms〕,高8位地址码〔用户编码〕〔9ms~18ms〕,8位数据码〔键值数据码〕〔9ms~18ms〕和这8位数据的反码〔键值数据码反码〕〔9ms~18ms〕组成。b)编码格式遥控器发射的信号由一串0和1的二进制代码组成.不同的芯片对0和1的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码。*S-091遥控板的0和1采用PWM方法编码,即脉冲宽度调制。下列图为一个发射波形对应的编码方法:
放大0和1的波形如下列图:这种编码具有以下特征:以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的"0〞;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的"1〞。〔2〕、红外接收原理a)波形红外接收头将38K载波信号过虑,接收到的波形刚好与发射波形相反:放大,位定义0和位定义1波形如下:〔3〕、解码原理及算法注:代码宽度算法:16位地址码的最短宽度:1.12×16=18ms16位地址码的最长宽度:2.24ms×16=36ms可以得知8位数据代码及其8位反代码的宽度和不变:〔1.12ms+2.24ms〕×8=27ms所有32位代码的宽度为〔18ms+27ms〕~(36ms+27ms)4.2详细设计4.2.1硬件设计核心器件:GSM900-B通信模块,单片机系统采用STC89C52芯片,晶振选用11.0592MHz,12.000MHZ。辅助器件:〔1〕电源电压采用5V1.2A。〔2〕红外发射管4.2.2单片机最小系统:图5.2.1单片机最小系统单片机最小系统以为STC89C52核心,外加时钟和复位电路,电路构造简单,抗干扰能力强,本钱相对较低,非常符合本设计的所有要求.STC89C52单片机系列是在MCS-52系列的根底上开展起来的,是当前8位单片机的典型代表,采用CHMOS工艺,即互补金属氧化物的HMOS工艺,CHMOS是CMOS和HMOS的结合,具有HMOS高速度和高密度的特点,还具有CMOS低功耗的特点.时钟电路在单片机的外部通过*TAL1,*TAL2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器.本系统采用的为11.0592MHz的晶振,一个机器周期为1us,C1,C2为30pF。复位电路分为上电自动复位和按键手动复位,RST引脚是复位信号的输入端,复位信号是高电平有效.上电自动复位通过电容C3和电阻R2来实现,按键手动复位是图中复位键来实现的。以下是总电路图如图2.4总电路图2.42.2软件设计本系统的软件包括主程序,显示程序,I/O口扩展输出和中断程序四局部。主程序:设置堆栈,定时器初始化,中断系统初始化,显示缓冲区赋初值,设置状态标志,状态切换。具体流程如下,具体源程序见附录2。2.3主程序流程图图2.4中断效劳程序框图4.3调试〔1〕翻开Keil程序,执行菜单命令"Project〞,然后,"NewProject〞创立"gsmhongwai.〞工程,并选择单片机型号为AT89C51。〔2〕执行菜单命令"File〞,然后,"New〞创立文件,输入汇编源程序,保存为"gsmhongwai.c〞在"Project〞栏的File工程管理窗口中右击文件组,选择"AddFilestoGroup‘SourceGroup1’〞,将源程序"gsmhongwai.c〞添加到工程中。〔3〕执行菜单命令"Project",然后,"OptionsforTarget‘Target1’〞,在弹出的对话框中选择〞Output〞选项卡,选中"CreateHE*File〞。在"Debug〞选项卡中,选中"Use:ProteusVSMSimulator〞。〔4〕执行菜单命令"Project〞,然后,"BuildTarget〞,编译源程序。如果编译成功,则在〞OutputWindow〞窗口中显示没有错误,并创立了"gsmhongwai.he*〞文件。〔5〕在已绘制好原理图的ProteusISIS菜单栏中,执行菜单命令"Debug〞,然后,"UseRemoteDebugMonitor〞将该项选中,使〞Debug〞选中"Start/StopDebugSession〞,或直接单击图标。〔6〕在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需在设置断点语名的空白处双击鼠标左键,可设置断点;再次双击,可取消该断点。〔7〕设置好断点后,在Keil中按F5键运行程序。4.4硬件电路优化和扩展4.4.1电路优化:为了简化电路完美和不被手机没电影响,使用了红外遥控,利用了红外可以减少显现实中过多的线路,产生短路和平安性等问题,并可以防止在手机没电时无法对电器的控制。4.4.2电路扩展:〔1〕DVD的控制在播放着音乐的时候,我们总会时不时的换歌,加大或减少声量。现实中只要拿起遥控对DVD机按几下就可以进展换歌以及声量的改变,但对于我们无法需找这样的设备,我们可以用手机对GSM通信模块发短信,实现控制〔2〕家用电器及LED灯控制用户可以在户外通过任意一部手机,根据短信提示对家用电器(如电饭煲、电暖风、空调、电热水器等)进展远程开启、关闭、延时开/关等控制的设定。该系统具有本钱低、功能强、易扩展等优点。如果你在外面,忘记关灯,你可以用手机短信控制家里的灯,实现亮灭,节省能源,起到环保的作用。现实中在床上躺着看电视,当我们想要睡觉时又要从床里起来关掉电灯;为了解决这种问题我们必然采用智能设备。对于电灯的控制我们采用了继电器,这样就解决了低压控制高压的问题。对于窗帘、窗户、门等的控制我们采用了电机。这样就实现家电智能化的特性五、完毕语:通过本次毕业设计,对单片机有了深一层的了解和掌握,对I/O口的扩展,中断,定时/计数器等应用有了更深刻的体会。程序调试过程,使我们平时所学的理论和实践相结合,对以前没有学习过的GSM模块进展一步步的去探索,对GSM模块的AT指令有了初步的了解,确实提高了自己的实操能力,从实践探索中找到学习的方法其实,我们在开场做设计时,难度很大,很迷茫。特别对GSM模块的功能一点都不怎么了解,特别在GSM模块与单片机连接的过程中,我们遇到的难题很多,我们不断的去积累经历,通过在黄媛婕教师帮助下,理清了思路,总结经历,分别对模块各功能测试,一步步的调整了单片机的晶振,我们也考虑到单片机和GSM串口电平不稳定的问题。同时,在网上查阅资料,攻克了设计中的道道难题。到毕业设计的后阶段我们在做红外发射这一块也遇到了不少难题,第一我们对遥控进展解码,我们解出遥控的编码是错误的,让后我们用示波器对遥控进展解码,我们的时序错误了,所以控制不了家用电器,这一步我们学习到电子知识的精准性,一点都不能误差,还有我们的模块对电源的要求挺高的,我们也在这里也摸索了,最后我们用到台式电脑的USB电源是最稳定的。最后经过黄媛婕教师的耐心指点和连续的奋战才完成。本次设计我们才能顺利完成,算是有了很大的收获。总结的感受有以下几方面:〔1〕稳固了课本上的知识。通过本次毕业设计,我不但对单片机有了更为深入的了解,而且对GSM模块的使用有了很大程度的认识,对一个课题如何去设计和实现功能,画流程图,编程序等,怎样去解决技术上问题,在一定程度上学会了推理的方法,一步步的提高探索能力,对以后的工作启到一定帮助。〔2〕在本次设计中,我们进一步加强了自己的动手能力和运用专业知识的能力,从中学习到如何去思考和解决问题方法,以及如何灵活地掌握改变方法去实现设计方案;特别是深刻体会到的是软硬件结合的重要性,对整个设计启到了一个核心容。以及两者的联系和配合作用。软硬件结合是我们设计重要组成局部。〔3〕通过本次设计,让我了解到智能控制技术对当今人们生活影响的重要性。方便了人们的生活,同时这次做设计的经历也使我们受益匪浅。让我知道了做任何事情都应脚踏实地一步步的去探索,保持积极的态度地去做。不断的学习新的知识,开阔自己的知识面。本次设计中我们用自己学到的知识完成代码,对单片机串口的设计也有了新的认识,特别对GSM通信模块的运用,还有在GSM模块中,学习许多AT指令,也在毕业设计中运用许多指令,从学习中去应用,在设计过程中了解到许多流程和该注意的事项,增强了电子产品开发的意识。对以后的就业有一定的帮助,促进我们以后更好的学习,锻炼了自身的能力。六、参考文献:[1]迎新等、单片机初级教程[M]第二版.:航空航天大学,2006.8[2]黎.基于C语言单片机应用技术与Proteus仿真[M].:中南大学,2012.8[3]何利民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].:航空航天大学,2003.[4]立峰王宝兴.单片机原理及应用技术[M]第一版.大学.2006[5]胡乾斌.单片机原理与应用[M]第二版.华中科技大学.2006[6]自美.电子线路设计.实验.测试[M]第一版.华中科技大学,2000.七、致词:本设计从开题到方案的设计和具体电路试验的实施始终是在指导教师黄媛婕教师的精心指导和周密安排下进展的。感他们长期在学习和生活中给予我的帮助,使我们受益非浅,同时,培养了我处理问题和我解决问题的能力。此外,感同有黄媛婕教师三年来对我的关心和帮助,也感我在参加各类比赛的队友在合作的过程中给我信心和勇气,使我跨过一道道难关,和积累了很多实际经历。感在大学期间关心和支持我的所有教师和朋友。大学时光是精彩却又短暂,是人生一段美好的回忆,时间如梭,转眼毕业在即。回想在大学求学的三年,心中充满无限感谢和留恋之情。带着几分留恋我将要离开这里。感职业技术学院三年来对我精心培养。在此我要特别感的就是黄媛婕教师。在本次毕业设计中,她给了我细心的指导和帮助,同时也很感我的同学对我的帮助,让我更好的了解和掌握毕设的知识。在这个毕业设计中出现的各种大小问题黄教师耐心帮我解决和讲解还有提供一些解决问题的方法。让我能在不断的进步和各方面素质有所提高,使我对于单片机有了更深刻的认识,还有对课外知识学习方法的了解,并最终得以完成作品和毕业论文。三年以来在知识的海洋有幸在各位教师的指引下和教育下,我收获了很多。三年中对我专业课的讲解,使我更加深入的了解了电子技术专业所开设的各门专业课程重要性。对我以后工作启到一定的帮助,教师们高深精湛的造诣与严谨的治学态度将永远鼓励着我。在此,谨向各位教师们致以衷心的感和崇高的敬意!最后,感在百忙之中给我审稿和评议本人论文辩论的诸位教师以及提供辅助软件的Keil、Pretues两大公司表示感!没有你们也同样会让我感到心有余而力缺乏的。由于本人知识有限,此毕业设计有缺乏之处,还望各位教师体谅和建议。八、附录:1、元件清单元件名称型号数量电阻1001个电阻101个电阻10K2个电阻1K2个电解电容10uF2个瓷片电容30pF4个三极管80501个GSM模块GSM900-B1个晶振11.0592MHz2个晶振12.0000MHZ1个红外发射管/1个单片机STC89C52RC2片点触开关/2个导线/假设干程序清单GSM模块接收短信程序voidmain(void) { voidmain(void) { init1602();Serial_Init();//初始化串口CLR_Buf();//去除缓存内容//LED3=1;Delay_ms(800);//延时write_(0*01);write_str("linking...",0,10);Delay_ms(800);Send_ASCII("AT");Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符while(!Hand("OK"))//判断是否握手成功,如果不成功延时一会,再发送AT握手指令{Send_ASCII("AT");//发送联机指令Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(600);//延时write_str("linking123...",0,13);}write_str("linksuccess",0,12); CLR_Buf();//去除缓存内容Delay_ms(Delay_Time);//延时Send_ASCII("AT+MI=2,1");//设置当有新短信到来时提示Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(Delay_Time);/延时while(!Hand("OK"))//等待设置成功{//while(!Hand("ERROR"))Send_ASCII("AT+MI=2,1");//设置当有新短信到来时提示Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(Delay_Time);//延时}CLR_Buf();//去除缓存内容Delay_ms(Delay_Time);//延时Send_ASCII("AT+CMGF=1");//文本(TE*T)模式#include<reg52.h>#include<string.h>#defineucharunsignedchar#defineuintunsignedint#defineBuf_Ma*140//缓存长度200#defineDelay_Time2000//延时长度sbitIGT=P1^0;//点火信号sbitP2_0=P2^0;//点火信号sbitP1_6=P1^6;//点火信号sbitP1_7=P1^7;//点火信号unsignedchari=0,j=0;//定义缓存指针uchardd;ucharflag=0;unsignedcharNum_Receive_add;unsignedcharidataRec_Buf[Buf_Ma*];//定义缓存数组unsignedcharMima[]="dz**";unsignedcharNum_Receive[11]={0*30};unsignedcharNum1[12]={0};voidSerial_Init(void);//声明串口初始化函数voidSend_ASCII(unsignedchar*b);//声明发送字符(ASCII码)函数voidDelay_ms(unsignedinttime);//声明延时函数voidCLR_Buf(void); //声明去除缓存内容voidSend_He*(unsignedcharb);//声明发送字符(十六进制)函数bitHand(unsignedchar*a);//声明判断缓存中是否含有指定的字符串函数voidCall(unsignedchar*Num);voidMessage(void);voidwrite_data(uchardate);voidwrite_str(uchar*str,bitline,uintm);voidwrite_(uchar);//写指令到1602voidinit1602();e*ternvoidSecond_Serial_Port_Send(unsignedchari);/**********************************主函数******************************/-.zSend_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(Delay_Time);//延时while(!Hand("OK"));//等待设置成功CLR_Buf();//去除缓存内容Delay_ms(Delay_Time);//延时Send_ASCII("AT+CSDH=0");Send_He*(0*0d);//发送回车符Send_He*(0*0a);/发送换行符Delay_ms(Delay_Time);//延时while(1){if(strstr(Rec_Buf,"+CMTI")!=NULL)//假设缓存字符串中含有"+CMTI"就表示有新的短信{CLR_Buf();//去除缓存内容Delay_ms(Delay_Time);//延时Send_ASCII("AT+CMGR=1");//发送读取信息指令Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(Delay_Time);//延时while(!Hand("OK"));//等待设置成功for(j=0;j<11;j++)//获取来短信{Num_Receive[j]=Rec_Buf[Num_Receive_add];Num_Receive_add++;}write_(0*01);write_str(Num_Receive,0,11);Delay_ms(Delay_Time);//延时if(flag==1){flag=0;if(strstr(Rec_Buf,"aa")!=NULL)//{ while(P1_7!=0){P1_6=0; P2=0*01;} P1_6=1; write_(0*01);write_str("aasuccess",1,11); }elseif(strstr(Rec_Buf,"ab")!=NULL)// { while(P1_7!=0){P1_6=0; P2=0*02;}P1_6=1; write_(0*01);write_str("absuccess",1,11);}//elseif(strstr(Rec_Buf,"ac")!=NULL)//如果信息内容是"open2"{while(P1_7!=0){P1_6=0; P2=0*03;} write_(0*01);write_str("acsuccess",1,11); }//点亮LED8指示灯elseif(strstr(Rec_Buf,"ad")!=NULL)//如果信息内容是"close2"{ while(P1_7!=0){P1_6=0; P2=0*04;write_(0*01);write_str("adsuccess",1,11);}//熄灭LED8指示灯 } CLR_Buf();//去除缓存内容Message();//发送设置成功Delay_ms(Delay_Time);//延时Send_ASCII("AT+CMGD=1");//删除读取后的信息Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(Delay_Time);//延时 -.zwhile(!Hand("OK"));//等待设置成功CLR_Buf();//去除缓存内容while(!Hand("OK"));//等待设置成功CLR_Buf();//去除缓存内容}}}/***************************串口初始化函数*****************************//*函数原型:voidSerial_Init(void)/*函数功能:串口初始化/*输入参数:无/*输出参数:无/**********************************************************************/voidSerial_Init(void)//串口初始化函数{TH1=0*FD;TL1=0*FD;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;}/****************************串口中断处理函数**************************//*函数原型:voidSerial_Int(void)/*函数功能:串口中断处理/*输入参数:无/*输出参数:无/**********************************************************************/voidSerial_Int()interrupt4{ ES=0;//关串口中断,防止中断嵌套if(TI) //如果是发送中断,则不做任何处理{TI=0;//去除发送中断标志位}if(RI)//如果是接送中断,则进展处理{RI=0;//去除接收中断标志位Rec_Buf[i]=SBUF;//将接收到的字符串存到缓存中 if(Rec_Buf[i]==0*36&&Rec_Buf[i-1]==0*38)//&&Rec_Buf[i-2]==0*2b)//找到来短信{Num_Receive_add=i+1;}if(Rec_Buf[i]==Mima[3]&&Rec_Buf[i-1]==Mima[2]&&Rec_Buf[i-2]==Mima[1]&&Rec_Buf[i-3]==Mima[0])//找到密码{flag=1;}if(Rec_Buf[i]==0*0D&&Rec_Buf[i]==0*0A)i-=1;i++;//缓存指针向后移动if(i>140)//如果缓存满,将缓存指针指向缓存的首地址{i=0;}}ES=1; //开启串口中断}/****************************发送字符(ASCII)函数***********************//*函数原型:voidSend_ASCII(unsignedchar*b)/*函数功能:发送字符(ASCII码)/*输入参数:unsignedchar*b/*输出参数:无/**********************************************************************/voidSend_ASCII(unsignedchar*b){ES=0;//关串口中断for(b;*b!='\0';b++){SBUF=*b;while(TI!=1);//等待发送完成TI=0;//去除发送中断标志位} ES=1;//开串口中断}{Rec_Buf[k]=0;{Rec_Buf[k]=0;}i=0;//接收字符串的起始存储位置}*************************发送字符(十六进制)函数********************//*函数原型:voidSend_He*(unsignedcharc)/*函数功能:发送字符(十六进制)/*输入参数:unsignedcharc/*输出参数:无/*调用模块:无/******************************************************************/voidSend_He*(unsignedcharc){ES=0;//关串口中断SBUF=c;while(TI!=1);//等待发送完成TI=0;//去除发送中断标志位 ES=1;//开串口中断}/*****************判断缓存中是否含有指定的字符串函数******************//*函数原型:bitHand(unsignedchar*a)/*函数功能:判断缓存中是否含有指定的字符串/*输入参数:unsignedchar*a指定的字符串/*输出参数:bit1含有0不含有/*调用模块:无/*******************************************************************/bitHand(unsignedchar*a){if(strstr(Rec_Buf,a)!=NULL)return1;elsereturn0;}voidMessage(void){Send_ASCII("AT+CMGF=1");//文本(TE*T)模式voidCall(unsignedchar*Num){ES=0;//关串口中断Send_ASCII("ATD");Send_He*(0*22);Send_ASCII(Num);Send_He*(0*22);Send_ASCII(";");Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(Delay_Time); ES=1;//开串口中断}/****************************timems延时函数***************************//*函数原型:Delay_ms(unsignedinttime)/*函数功能:延时Timems/*输入参数:time/*输出参数:无/**********************************************************************/voidDelay_ms(unsignedinttime){unsignedcharj;for(;time>0;time--){j=1500;while(j--);}}/**************************去除缓存数据函数****************************//*函数原型:voidCLR_Buf(void)/*函数功能:去除缓存数据/*输入参数:无/*输出参数:无/*调用模块:无/**********************************************************************/voidCLR_Buf(void){unsignedchark;for(k=0;k<Buf_Ma*;k++)//将缓存内容清零Send_He*(0*0d);//发送回车符Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符Delay_ms(Delay_Time);//延时while(!Hand("OK")); //等待设置成功CLR_Buf();//去除缓存内容Send_ASCII("AT+CMGS=");Send_He*(0*22);Send_ASCII(Num_Receive);Send_He*(0*22);Send_He*(0*0d);//发送回车符Send_He*(0*0a);//发送换行符while(!Hand(">"));Delay_ms(Delay_Time);//延时CLR_Buf();//去除缓存内容 Send_ASCII("SetSuccessed"); Delay_ms(Delay_Time);//延时Send_He*(0*1a);while(!Hand("OK")); //等待设置成功 CLR_Buf();//去除缓存内容}液晶1602显示模块程序write_data(str[num]);Delay1(1);write_data(str[num]);Delay1(1);}}}voidinit1602(){en=0;write_(0*38);write_(0*0c);write_(0*06);//write_(0*01);显示清屏}#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]="ILIKEMCU!";ucharcodetable1[]=".T*MCU.";sbiten=P3^5;sbitrs=P3^7;//e*ternvoidDelay1(uintz);voidDelay1(uintz){uint*,y;for(*=z;*>0;*--)for(y=110;y>0;y--);}voidwrite_(uchar){rs=0;P0=;Delay1(5);en=1;Delay1(5);en=0;}voidwrite_data(uchardate){rs=1;P0=date;Delay1(5);en=1;Delay1(5);en=0;}voidwrite_str(uchar*str,bitline,uintm){ucharnum;if(line==0){write_(0*80+0*01);//数据指针设置for(num=0;num<m;num++){ -.z#include<reg52.h>staticbitOP;//红外发射管的亮灭staticunsignedintcount;//延时计数器#include<reg52.h>staticbitOP;//红外发射管的亮灭staticunsignedintcount;//延时计数器staticunsignedintendcount;//终止延时计数staticunsignedcharflag;//红外发送标志chariraddr1,t;//十六位地址的第一个字节chariraddr2,b,num;//十六位地址的第二个字节sbitP0_4=P3^4;voidSendIRdata(unsignedcharjianzhima,unsignedcharyonghuma1,unsignedcharyonghuma2);voiddelay1();unsigned int k;voidjianzhidiaoyong(unsignedcharjianzhima,unsignedcharyonghuma1,unsignedcharyonghuma2){for(k=0;k<1;k++){delay1();SendIRdata(jianzhima,yonghuma1,yonghuma2);}}//定时器0中断处理voidtimeint(void)interrupt1{TH0=0*FF;TL0=0*E6;//设定时值为38K也就是每隔26us中断一次count++;if(flag==1){OP=~OP;}else{OP=0;}P0_4=OP;}voidSendIRdata(unsignedcharjianzhima,unsignedcharyonghuma1,unsignedcharyonghuma2){inti;charirdata; //发送9ms的起始码endcount=210;flag=1;count=0;do{}while(count<endcount);//发送4.5ms的结果码endcount=117;flag=0;count=0;do{}while(count<endcount);//发送十六位地址的前八位irdat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产安全检查标准及问题记录单
- 用户反馈处理结果告知8篇范本
- 全体职工守法诚信承诺函(7篇)
- 项目经理团队协作从理论到实践指导书
- 严格遵循规则操作承诺书7篇
- 公共场所卫生清洁维护保证承诺书6篇
- 新疆伊宁市第七中学重点达标名校2026届初三热身考试语文试题含解析
- 广东省深圳市福田片区重点中学2025-2026学年初三第二次检测试题英语试题试卷含解析
- 人才招聘录用管理诚信承诺书范文6篇
- 徐州市重点中学2026届初三下学期第二次周练数学试题试卷含解析
- 2026年山东省新动能基金管理有限公司校园招聘笔试模拟试题及答案解析
- 中国艺术研究院社会招聘试题
- 2026年教育局思想政治工作科工作计划
- 2025年安徽卫生健康职业学院单招职业适应性测试试题及答案解析
- 学校校园门口最小单元应急防暴演练预案方案及总结材料
- 医保村卫生室管理制度
- 陕西从优 秀村干部中考录乡镇公务员考试真题
- 2025年军事设施建设与管理规范
- 儿科学营养性vitD缺乏
- “党的二十届四中全会精神”专题题库及答案
- 厂房基础注浆加固施工方案
评论
0/150
提交评论