GSM家电控制系统的设计_第1页
GSM家电控制系统的设计_第2页
GSM家电控制系统的设计_第3页
GSM家电控制系统的设计_第4页
GSM家电控制系统的设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

GSM家电控制系统的设计GSM家电控制系统的设计GSM家电控制系统的设计GSM家电掌握系统的设计(梁伟源)摘要GSM网络技术的远程设备监控系统中,数据的牢靠传输是一个关键问题.设计了利用GSM网络进行远程数据传输的技术方案,给出了硬件结构和软件组成。数据由以AT89S52单片机为核心的数据采集终端采集,通过向GSM模块发送AT指令完成数据信息的传输.通过软硬件设计和调试实验,数据传输牢靠,运行状态稳定,可应用于数量多、掩盖面广的设备远程实时监控系统中,具有宽阔的应用前景。GSM模块,协作AT89S52单片机,还有继电器,那么就可以用手机法短信来掌握家用电器,比如,日光灯,电视,空调等。热释电人体红外感应器,GSM模块,以及AT89S52单片机,可以实现,当有小偷闯入家里,可以通过GSM模块发短信或打电话通知我们.关键词:GSM模块;AT89S52;单片机;人体红外感应器;DS18B20;字符液晶1602;红外接收头1838ﻬTheDesignofGSMApplianceControlSystemAbstractRemotedevicemonitoringsystemoftheGSMnetworktechnology,thereliabletransmissionofdataisakeyissue.UsetheGSMnetworkforremotedatatransmission,giventhehardwareand

softwarecomponents.ThedatacollectedbythemicrocontrollerAT89S52asthecoredatacollectionterminals,tocompletethetransmissionofdatatosendATcommandstotheGSMmodule。Hardwareandsoftwaredesignanddebuggingexperiments,thedatatransmissionisreliable,stablerunningstate,canbeappliedtoanumber,coverawiderangeofequipment,remotereal-timemonitoringsystemhasbroadapplicatispects。GSMmodulewithAT89S52microcontroller,aswellasrelay,thenyoucanusethephonemethodSMStocontrolhouseholdappliancessuchasfluorescentlights,TV,air-conditioning.Infraredsensor,GSMmodule,andthemicrocontrollerAT89S52canbeachieved,whenthievesbrokeintothehome,youcansendtextmessagesthroughGSMmoduleorbytelephonetoinformus。Keywords:GSMmodule;AT89S52is;microcontroller;Infrared

sensor;DS18B20;LCD1602;infraredreceiver1838ﻬ目录TOC\o"1-3"\h\z\uHYPERLINK1ﻩ绪论ﻩPAGEREF_Toc323895835\h1HYPERLINK\l"_Toc323895836"1.1ﻩ项目背景 PAGEREF_Toc323895836\h1HYPERLINK1.2ﻩ项目的主要任务ﻩPAGEREF_Toc323895837\h1HYPERLINK\l"_Toc323895838"2 简介ﻩPAGEREF_Toc323895838\h2HYPERLINK\l”_Toc323895839"2.1 硬件的总体方案 PAGEREF_Toc323895839\h2HYPERLINK\l”_Toc323895840"2.2 软件的总体的设计方案ﻩPAGEREF_Toc323895840\h2HYPERLINK\l"_Toc323895841"3 硬件设计 PAGEREF_Toc323895841\h5HYPERLINK\l”_Toc323895842"3。1 AT89S52的功能特性描述 95842\h5HYPERLINK\l”_Toc323895843"3.2 GSM模块 PAGEREF_Toc323895843\h8HYPERLINK\l"_Toc323895844”3.3ﻩ18B20温度传感器ﻩPAGEREF_Toc323895844\h9HYPERLINK\l"_Toc323895845"3.4ﻩ1838红外接收头 PAGEREF_Toc323895845\h11HYPERLINK\l"_Toc323895846"3。5 1602字符液晶显示器ﻩPAGEREF_Toc323895846\h12HYPERLINK3。6ﻩ热释电人体红外感应模块ﻩPAGEREF_Toc323895847\h14HYPERLINK\l"_Toc323895848”4ﻩ软件设计 PAGEREF_Toc323895848\h16HYPERLINK\l"_Toc323895849”4.1 GSM的核心程序 PAGEREF_Toc323895849\h16HYPERLINK\l"_Toc323895850”4。2ﻩ字符液晶1602读写核心程序 PAGEREF_Toc323895850\h19HYPERLINK\l”_Toc323895851"4。3ﻩ温度传感器18b20函数 PAGEREF_Toc323895851\h22

HYPERLINK\l”_Toc323895852"5 总结 PAGEREF_Toc323895852\h25HYPERLINK\l”_Toc323895853”致谢 PAGEREF_Toc323895853\h26HYPERLINK二极管,HYPERLINK"http://baike。baidu。com/view/907765.htm"\t”_blank"放大器,限副器,带通滤波器,HYPERLINK"http://baike。ba/view/618186.htm”\t”_blank”积分电路,比较器等。红外监测二极管监测到红外信号。3然后把信号送到放大器和限幅器,限幅器把脉冲幅度掌握在肯定的水平,而不论红外放射器和接收器的距离远近。4信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出。5凹凸电平,还原动身射端的信号波形。注意输出的凹凸电平和放射端是反相的,这样的目的是为了提高接收的灵敏度。红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。依据放射端调制载波的不同应选用相应解调频率的接收头。红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供电脚上须加上滤波电容,一般在22uf以上.有的厂家建议在供电脚和电源之间接入330欧电阻,进一步降低电源干扰。

图3—71838红外接收头接入示意图1838红外接收头接入图3-7看出,这个器件只需要一个104的电容以及一个100欧的电阻即可完成红外接受的工作.当这红外接受头接收到启始码的时候就开头工作,直到接受到结束码时,结束工作。1602字符液晶显示器图3—81602字符液晶显示屏引脚示意图图3—81602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线.VCC(15脚)和地线GND(16脚),其掌握原理与14脚的LCD完全一样。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的HYPERLINK"http://baike.baidu.com/view/545607。htm"点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。由于1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。ﻫ以下是1602的16进制ASCII码表:

表3—116进制ASCII码表

读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。图3-91602字符液晶显示屏接入示意图图3—91602字符液晶16引脚为背光负极,用PNP来充当开关。而引脚7到14(P0.0到P0。7)是液晶的数据位,而引脚1为电源地,而引脚2为电源正。引脚4为数据/命令选择,引脚5为读写选择,引脚6则为信号使能位.热释电人体红外感应模块图3-10热释电人体红外感应模块示意图

这个热释电人体红外感应模块也就只有3个引脚如图3-10,其中的其次个引脚为信号的输出引脚用于输出数据。热释电红外传感器是一种能检测人或动物放射的红外线而输出电信号的传感器。早在1983年,有人提出过利用热释电效应探测红外辐射,但并未受到重视,直到六十年月,随着激光、红外技术的飞快进展,才又推动了对热释电效应的讨论和对热释电晶体的应用[12]。热释电晶体已广泛用于红外光谱仪、红外遥感以及热辐射探测器,它可以作为红外激光的一种较抱负的探测器。它目标正在被广泛的应用到各种自动化掌握装置中.除了在我们熟知的楼道自动开关、防盗报警上得到应用外,在更多的领域应用前景看好.比如:在房间无人时会自动停机的空调机、饮水机。电视机能推断无人观看或观众已经睡觉后自动关机的机构.开启监视器或自动门铃上的应用。结合摄影机或数码照相机自动记录动物或人的活动等。您可以依据自己的奇思妙想,结合其它电路开发出更加优秀的新产品或自动化掌握装置.模块的接入示意图如下:图3-11热释电人体红外感应模块接入示意图这个热释电红外人体感应器如图3-11,接入的方法比较简洁,首先是充当电源的两个引脚分别是电源正和地,还有另外的一个引脚只是负责输出,当有人接近时,引脚2会自动地拉低.当单片机识别到后,做出处理即可。

软件设计软件设计对于整个设计来说,是格外重要的,格外是GSM的收发程序,这是本设计的核心部分,由于整个设计最关键的模块是GSM模块,而GSM模块的应用需要我们掌握GSM的AT指令,所以软件的设计比较耗费时间,光AT的指令就不下30条,但常用的指令也不多,但难度大。单片机还有他的指令所以,要灵敏运用好这些指令才是完成本次设计的王道。下面我就尽挑重点来讲解如何用GSM来收发短信,以及如何用字符液晶1602来显示字符,而且还会通过DS18B20温度传感器来实测温度,然后显示在18b20上面。GSM的核心程序图4—1发送短信函数流程图(左)图4-2读取短信函数流程图(右)GSM短信接收程序如下:

voidCMGF()//Send

an

SMS

command(发出一条短消息命令)发送短信函数{unsignedchari=0;unsignedcharcodemode[]=”AT+CMGF=0";//AT+CMGF指令用于选择短信息格式GSM指令while(mode[i]!='\0’){SBUF=mode[i];while(TI==0);//TI是指单片机SFR中SCON(SerialControlRegister)串行口掌握寄//存器的一位//而且是被硬件置位的。当单片机发送完一帧数据后,该数据位由硬件置1.TI=0;i++;}SBUF=0X0D;//代表回车键ASCII码while(TI==0);TI=0;//清零SCON的TI位SBUF=0X0A;//代表换行键ASCII码while(TI==0);TI=0;}voidCMGR()//ReadSMSmessage(读短消息)读取短信函数{unsignedchari=0;unsignedcharcodemode2[]=”AT+CMGR=1";//采纳文本格式发送,//如用PDU格式,则AT+CMGF=0while(mode2[i]!='\0'){SBUF=mode2[i];while(TI==0);/TI是指单片机SFR中SCON(SerialControlRegister)串行口掌握寄存器的一位//而且是被硬件置位的。当单片机发送完一帧数据后,该数据位由硬件置1。TI=0;i++;

}SBUF=0X0D;//回车键的ASCII码while(TI==0);TI=0;SBUF=0X0A;//换行的ASCII码while(TI==0);TI=0;}图4-3新收到信息短信函数流程图(左)图4-4删除短信函数流程图(右)voidCNMI()//New

SMS

message

indications(显示新收到的短消息)函数{unsignedchari=0;

unsignedcharcodemode1[]="AT+CNMI=2,1";while(mode1[i]!='\0'){SBUF=mode1[i];while(TI==0);TI=0;i++;}SBUF=0X0D;while(TI==0);TI=0;SBUF=0X0A;while(TI==0);TI=0;}voidCMGD()Delete

SMS

message(删除SIM卡内存的短消息)函数{unsignedchari=0;unsignedcharcodemode3[]="AT+CMGD=1”;while(mode3[i]!='\0'){SBUF=mode3[i];while(TI==0);TI=0;i++;}SBUF=0X0D;while(TI==0);TI=0;SBUF=0X0A;while(TI==0);TI=0;}字符液晶1602读写核心程序字符液晶1602的读时序图和读时序图如图4-5以及图4—6。

图4—5字符液晶1602的读时序图图4—6字符液晶1602写时序图①当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

②当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

发现了么,写指令和写数据,差别仅仅在于RS的电平不一样而已。下面给出了字符液晶的写数据函数以及写命令函数。voidwrite_data(unsignedchardate)//液晶写数据函数write_data{lcdrs=1;//写数据而lcdrs=P1^0lcdrw=0;//lcdrw=P1^1P2=date;

delay(5); //初始化lcden=1;//lcden=P1^2delay(5);lcden=0;//lcden=P1^2} voidwrite_com(unsignedcharcom){lcdrs=0;//写指令而lcdrs=P1^0lcdrw=0;//lcdrw=P1^1P2=com;delay(5);//初始化lcden=1;//lcden=P1^2delay(5);lcden=0;//lcden=P1^2}图4—7液晶写命令函数(左)图4—8液晶写数据函数(右)从上面图4-7以及图4—

8可以看出液晶写命令函数和液晶写数据函数在程序的结构上并没有太大的区分,区分只在于液晶写命令函数的lcdrs=0,lcdrw=0;液晶写数据函数lcdrs=1;lcdrw=0还有的就是赋值给P2端口的值不同。下面的是液晶初始化程序。voidinit2(){lcden=0;write_com(0x38);//必须的初始化write_com(0x0f);//功能指令write_com(0x06);//输入模式write_com(0x01);//清屏}下面是字符液晶1602的指令表表4—1字符液晶1602的指令表指令RSRWD7D6D5D4D3D2D1D01清屏00000000012光标返回000000001*3输入模式00000001I/DS4显示掌握0000001DCB5光标/字符移位000001S/CR/L**6功能00001DLNF**7置字符发生器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志和地址01BF计数器地址10写数据到指令7.8所设地址10要写的数据11从指令7.8所设的地址读数据11读出的数据由表4—1中可以看出0x01指令为清屏指令,0x06为输入模式。温度传感器18b20函数以下是18B20的读写时序图,从读写时序图即可了解读以及写的时序。从而依据时序编写出符合的读、写程序。主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开头后的15μs内允许数据线拉到高电平。主机要生成一个写0时间隙,必须把数据线拉到低电平并保持60μs。读时间隙,当从DS1820读取数据时,主机生成读时间隙。当主机把数据线从高高平拉到低电平常,写时间隙开头。数据线必须保持至少1μs

;从DS1820输出的数据在读时间隙的下降沿消灭后15μs内有效。图4-9读写时序图因此,主机在读时间隙开头后必须停止把I/O脚驱动为低电平15μs,以读取I/O脚状态。在读时间隙的结尾,I/O引脚将被外部上拉电阻拉到高电平。全部读时间隙必须最少60μs,包括两个读周期间至少1μs的恢复时间。以下是18b20的初始化的程序.voidinit()//初始化ds1820{DQ=1;//DQ复位delay(8);//稍做延时DQ=0;//单片机将DQ拉低

delay(90);//精确延时大于480usDQ=1;//拉高总线delay(8);delay(100);DQ=1;}Read(void)//读一个字节{unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i-—){DQ=0;//给脉冲信号dat〉>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay(4);}return(dat);}Write(unsignedchardat)//写一个字节{unsignedchari=0;for(i=8;i〉0;i——){DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat>>=1;}}

总结通过这次的毕业设计的完成,我自己觉得对通信方面的一些协议又大致的了解了,最重要的是能够很好的培育了自己的动手能力,以及自己解决困难的能力,这次毕业设计最为困难的是在GSM模块的收发程序的编程上,当自己对GSM模块的一些协议一概不通,到自己可以编写程序的时候,那种成就感是格外微妙的,因此,我自己对程序的编写很热充.通过历时一个多月的软硬件的组合以及编写,对自己的耐力也需要很高的要求.而指导老师的指导以及帮助也是格外的重要.自己重来没有遇到过这么有难度的编程,以前的编程基本上都有一些例程,或参考的资料也格外多,但这次的毕设,从编程的困难程度,以及参考资料的稀有来说都是对自己都是一次挑战。这个毕业设计解决了如下的一些问题.利用GSM模块,通过手机发送短信,从而可以掌握日光灯,还有一点就是通过GSM模块,以及热释电人体红外感应器,实现,当有人闯入家里,感应器感应到了,单片机处理,然后GSM模块发送短信到自己手机上。

致谢首先,通过这个毕业设计,发现自己对通信行业有了大致的了解,无论在硬件实现以及软件编程方面都有了较大的提升,虽然在实现GSM的收发短信这一项,花费的时间是比较多,由于在编程方面有很大的困难,但最终还是可以克服。最后,在这个设计上,指导老师热心对我进行了指导,格外是罗小蓉以及文毅老师的热心指导,在这个设计中起到了很重要的作用。值此高校毕业之前,谨向我的指导老师致以最真诚的谢。

参考文献牛丹,买和木提,周澄,翁多杰.单片机掌握GSM模块实现短信收发的技术及应用[J].《仪器仪表与分析监测》2008年第4期.段荣霞,崔少辉。单片机与GSM模块通信技术的讨论应用天地[J].2012年1月第31卷第1期.柏业超,杨波,张兴敢.基于GSM模块TC35的智能门控安防系统设计[J].电子测量技术,第31卷第1期2008年1月.王骐,何嘉斌.单片机掌握GSM模块实现短信收发的软件设计[J].单片机与嵌入式系统应用,2005(1):63266.杨忠明,刘付江.GSM模块的AT命令集算法讨论[J].广东科技2008.04.总第185期.李全利。单片机原理及接口技术[M].北京:高等教育出版社,2009.覃景繁,欧阳景正.一种新的变步长自适应滤波算法[J].数据采集与处理,1997,12(3):1712194.叶丹霞,王家礼.GSM模块TC35及在远程监控系统中的应用[J],《现代电子技术》2005年第5期总第196期.陈小勇.GSM模块和单片机设计的防盗监控系统科技资讯[J]。2009NO.12.贺大松.汽车纵向防撞报警系统开发[D].电子科技高校,2008.承晓。基于STC12C54XX的自学习遥控系统实现[J].科技广场,2010年.李清生.热释电红外线传感器[J]。电气时代,2004年。马士宝,张国玉,孙向阳,高玉军,王微微。基于GSM模块的无线报警系统设计[J].第32卷第1期2009年3月.叶锋.基于GSM模块的消防监控系统短信平台的设计江汉高校学报(自然科学版)[J].第35卷第4期2007年12月.孙宁,赵印,刘欣慰,汪贝,杨伟.基于GSM模块的远程温湿度监控系统世界科技讨论与进展[J].2008年12月第30卷第6期。李杰,吴学英.用单片机掌握GSM模块的一种方法[J],电子世界2004年11期。苗雨。基于GSM模块实现短信发送计算机工程应用技术.刘主链,宋跃,何志辉,王卓浩。无线模块与GSM实现的智能远程家居掌握系统计算机测量与掌握[J]。2011年9月19日.

DikinDA,StankovichS,ZimneyEJ,etalPreparationandcharacterizationofgrapheneoxidepaper[J].Nature2007.ChetanaNKeltcher,KevinJ,McGrath,etal.TheAMDopteronprocessorformultiprocessorservers[J]。IEEEMicro,2003,(3-4):66-76.附录设计的全部程序#include<reg52。h>#include<string.h>#definen64charresbuf[n];unsignedcharp=0,i,k;charcodeSM[]=”SM”;charcodeok[]="0031”;unsignedchar*m,*s;unsignedcharflag=1,flag2=1,flag3=1,flag4=1,flag5=1,flag6=1;sbitjidian=P1^5;sbitled4=P0^4;sbitled0=P0^0;sbitled1=P0^1;sbitled2=P0^2;sbitled3=P0^3;sbitthief=P0^5;sbitin1=P1^6;sbitin2=P1^7;sbitanjian1=P3^7;sbitanjian2=P3^6;/**************led初始化*************/sbitlcden=P1^2;sbitlcdrs=P1^0;sbitlcdrw=P1^1;//sbitkai=P2^6;sbitDQ=P1^3;unsignedcharnum;

unsignedcharcodetable[]="Temperature";unsignedchardatadisdata[4];unsignedchartab[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};/*************红外初始****************/#definec(x)(x*110592/120000)sbitIr_Pin=P1^4;unsignedchardeposit[4];//缓冲区unsignedcharir_data[4];//用于保存解码结果/***************GSM初始*******************/voidinit3(){TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd; TL1=0xfd; TR1=1;ﻩREN=1;ﻩSM0=0;ﻩSM1=1;ﻩEA=1;ﻩES=1;}/********************延时*******************/voiddelay2(unsignedintz){unsignedintx,y;for(x=110;x〉0;x-—)for(y=z;y>0;y--);}voiddelay1(unsignedintz){unsignedintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddelay(unsignum)//延时函数

{while(--num);}/************红外函数*****************/unsignedintIr_Get_Low(){TL1=0;TH1=0;TR1=1;while(!Ir_Pin&&(TH1&0x80)==0);TR1=0;returnTH1*256+TL1;}voiddo_something(){if((deposit[0]==0x0c)&&(deposit[1]==0x00)){ﻩif(flag3==1) { flag3=0;ﻩjidian=0;ﻩ} elseﻩ{ jidian=1; flag3=1;ﻩ}}if((deposit[0]==0x08)&&(deposit[1]==0x01)){if(flag6==1) {ﻩflag6=0;ﻩin1=0; in2=1; }

ﻩelseﻩ{ﻩflag6=1;ﻩin1=0; in2=0; }}}//=============================================================unsignedintIr_Get_High(){TL1=0;TH1=0;TR1=1;while(Ir_Pin&&(TH1&0x80)==0);TR1=0;returnTH1*256+TL1;}/******************短息接收的函数**************/voidCMGF(){unsignedchari=0;unsignedcharcodemode[]="AT+CMGF=0";while(mode[i]!='\0'){SBUF=mode[i];while(TI==0);TI=0;i++;}SBUF=0X0D;while(TI==0);TI=0;SBUF=0X0A;

while(TI==0);TI=0;}voidCMGR(){unsignedchari=0;unsignedcharcodemode2[]="AT+CMGR=1";while(mode2[i]!='\0'){SBUF=mode2[i];while(TI==0);TI=0;i++;}SBUF=0X0D;while(TI==0);TI=0;SBUF=0X0A;while(TI==0);TI=0;}voidCNMI(){unsignedchari=0;unsignedcharcodemode1[]="AT+CNMI=2,1";while(mode1[i]!='\0’){SBUF=mode1[i];while(TI==0);TI=0;i++;}SBUF=0X0D;while(TI==0);TI=0;SBUF=0X0A;

while(TI==0);TI=0;}voidCMGD(){unsignedchari=0;unsignedcharcodemode3[]="AT+CMGD=1";while(mode3[i]!=’\0'){SBUF=mode3[i];while(TI==0);TI=0;i++;}SBUF=0X0D;while(TI==0);TI=0;SBUF=0X0A;while(TI==0);TI=0;}/**************短信的发送函数****************/voidCMGF1(){unsignedchari=0;unsignedcharcodemode[]=”AT+CMGF=1”;while(mode[i]!='\0'){SBUF=mode[i];while(TI==0);TI=0;i++;}SBUF=0X0D;while(TI==0);TI=0;

}voidCMGS(){unsignedcharj=0;unsignedcharcodetable[]="AT+CMGS=15900080283";while(table[j]!='\0'){SBUF=table[j];while(TI==0);TI=0;j++;}SBUF=0X0D;while(TI==0);TI=0;}voidwhat(){unsignedcharz=0;unsignedcharcodetemp[]=”thief";while(temp[z]!=’\0'){SBUF=temp[z];while(TI==0);TI=0;z++;}SBUF=0X0D;while(TI==0);TI=0;delay2(1000);SBUF=0X1A;}/**************液晶与18b20函数***********/voidwrite_com(unsignedcharcom)

{lcdrs=0;//写指令lcdrw=0;P2=com;delay(5);//初始化lcden=1;delay(5);lcden=0;}voidwrite_data(unsignedchardate){lcdrs=1;//写数据lcdrw=0;P2=date;delay(5);ﻩ//初始化lcden=1;delay(5);lcden=0;}voidinit2(){lcden=0;//kai=0;num=0;write_com(0x38);//必须的初始化write_com(0x0f);write_com(0x06);write_com(0x01);}/******************************/unsignedintt=0;voidinit()//初始化ds1820{DQ=1;//DQ复位delay(8);//稍做延时

DQ=0;//单片机将DQ拉低delay(90);//精确延时大于480usDQ=1;//拉高总线delay(8);delay(100);DQ=1;}Read(void)//读一个字节{unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat〉〉=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay(4);}return(dat);}Write(unsignedchardat)//写一个字节{unsignedchari=0;for(i=8;i〉0;i--){DQ=0;DQ=dat&0x01;delay(5);

DQ=1;dat>>=1;}}temper(void){unsignedchara=0;unsignedcharb=0;init();Write(0xCC);//跳过读序号列号的操作发送指令0xccWrite(0x44);//启动温度转换发送指令0x44init();Write(0xCC);//跳过读序号列号的操作Write(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度发送指令0xbea=Read();//读取温度值低位b=Read();//读取温度值高位t=b;t<<=8;//值左移8位t=t|a;//合并凹凸位数值t=t*(0。625);//温度扩大10倍,精确到1位小数return(t);}voiddisplay_temper(unsignedinti){disdata[0]=i/1000;//百位数disdata[1]=i%1000/100;//十位数disdata[2]=i%100/10;//个位数disdata[3]=i%10;//小数位}/************以下是主程序*************/voidmain(){unsignedintchange;

init2();init();init3(); P0=0xfe;/**********无限循环****************/while(1){led4=1;delay2(500);led4=0;delay2(500);/**********情况一***红外接收***********/if(anjian1==0&&anjian2==0){ unsignedinttemp;chari,j;TMOD=0x11;led3=0;EA=1;while(anjian1==0&&anjian2==0){restart:while(Ir_Pin);temp=Ir_Get_Low();if(temp<c(8500)||temp>c(9500))continue;//引导脉冲低电平9000temp=Ir_Get_High();if(temp〈c(4000)||temp>c(5000))continue;//引导脉冲高电平4500for(i=0;i〈4;i++)//4个字节for(j=0;j〈8;j++)//每个字节8位{temp=Ir_Get_Low();if(temp〈c(200)||temp>c(800))gotorestart;temp=Ir_Get_High();if(temp<c(200)||temp>c(2000))gotorestart;ir_data[i]>>=1;if(temp>c(1120))ir_data[i]|=0x80;

}deposit[0]=ir_data[2]&0x0f;deposit[1]=(ir_data[2]/16)&0x0f;deposit[2]=ir_data[3]&0x0f;deposit[3]=(ir_data[3]/16)&0x0f;//显示结果do_something();}}/****************情况一END**********

温馨提示

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

评论

0/150

提交评论