毕业论文-基于gsm的远程报警系统的设计内容摘要:

多的弯路。 在你们那里我学到了很多的知识。 再次感谢。 我以后也会和你们一样,把自己觉得好的东西都共享出来。 最后把我觉得最应该感谢我的父母及亲人,是他们的辛勤劳作让我有了学习的机会。 特别是在过去的四年当中,他们一如既往的支持我的学习事务。 在此表示深深的感谢。 XXXX 大学本科毕业设计 12 附 录 附录 一 设计 电路原理图和 PCB 图 图 9 电路原理图 图 10 已布线的 pcb图 XXXX 大学本科毕业设计 13 附录 二 部分 设计源代码 /*LCD 端口定义 */ define DATADIRECTION TRISD /*DATAVALUEDIRECTION 控制 LCD IO 口方向 */ define DATAVALUE PORTD /*定义 DATAVALUEVALUE 为 LCD1602 数据 IO口 */ define CONTROLDIRECTION TRISE /*DATAVALUEDIRECTION 控制 LCD1602 数据 IO 口方向 */ define RS RE0 /*LCD1602 数据,命令控制, 1 为数据, 0为命令 */ define RW RE1 /*LCD1602 读写控制 ,1 为读, 0为写 */ define EN RE2 /*LCD1602 使能控制, 1为使能, 0 为禁止 */ void LcdWriteCommand(unsigned char mand)。 /*LCD1602 写命令 */ void LcdWriteChar(unsigned char data)。 /*LCD1602 显示字符 */ void LcdInit()。 /*LCD1602 初始化 */ void LcdDisplayString(const unsigned char str[],unsigned char len,unsigned int time)。 Void LcdClear()。 /*清屏 */ Void LcdDelay(unsigned int n)。 /*LCD1602 延时 n个 10ms*/ Void LcdDelayNMs(unsigned int n) /*LCD1602 延时 n个 10ms*/ { unsigned int i。 for(。 n0。 n) { for(i=100。 i0。 i)。 } } Void LcdWriteCommand(unsigned char mand) /*LCD1602 写命令 */ { DATAVALUE=mand。 RS=0。 RW=0。 EN=0。 LcdDelayNMs(10)。 EN=1。 XXXX 大学本科毕业设计 14 } void LcdWriteChar(unsigned char data) /*LCD1602 显示字符 */ { DATAVALUE=data。 RS=1。 RW=0。 EN=0。 LcdDelayNMs(10)。 EN=1。 } void LcdClear() /*清屏 */ { LcdWriteCommand(0x01)。 LcdWriteCommand(0x80)。 } void LcdInit() /*LCD1602 初始化 */ { ADCON1=0X07。 //设定 RA 口、 RE 口为变通数字端口 DATADIRECTION=0x00。 CONTROLDIRECTION=0X00。 LcdWriteCommand(0x01)。 LcdWriteCommand(0x38)。 LcdWriteCommand(0x0c)。 LcdWriteCommand(0x06)。 LcdWriteCommand(0x01)。 LcdWriteCommand(0x80)。 } void LcdDisplayString(const unsigned char str[],unsigned char len,unsigned int time) { unsigned char i=0。 char flag=0x40。 XXXX 大学本科毕业设计 15 unsigned char position=0x80。 //LcdWriteCommand(0x01)。 //LcdWriteCommand(0x80)。 //LcdWriteChar(39。 39。 )。 for(i=0。 ilen。 i++) { if(((i%16==0)amp。 amp。 (i0))) { position=position+flag。 LcdWriteCommand(position)。 flag=flag。 if(i%32==0) { LcdDelayNMs(time)。 LcdWriteCommand(0x01)。 LcdWriteCommand(0x80)。 //LcdWriteChar(39。 39。 )。 } } if((str[i]!=39。 \039。 )amp。 amp。 (str[i]!=39。 \r39。 )amp。 amp。 (str[i]!=39。 \n39。 )) LcdWriteChar(str[i])。 } } /*GSM模块 函数定义 */ include define IGTDIRECTION TRISA0 define IGT RA0 define M 2 //向 GSM 发送命令 define N 6 const unsigned char gsmmand[M][N]= { XXXX 大学本科毕业设计 16 ATE0\r, AT\r, }。 /*发送命令 AT\r后回显 OK*/ /*发送命令 ATE0\r后回显 OK*/ /*发送命 令 AT+CSQ\r后回显 +CSQ: 29,99 OK*/ /*发送命令 AT+CMGF=0\r后回显 OK*/ const unsigned char mandmi[]=AT+CNMI=1,1,0,0,1\r。 /*发送命令 AT+CNMI=1,1,0,0,1\r后回显返回信息 OK. 若收到短信则显示 +CMTI: SM,2 2 表示手机内短信数量 */ const unsigned char mandcmgs[] = AT+CMGS=025\r。 const unsigned char smscontent[] ={0X30,0X30,0X31,0X31,0X30, 0X30,0X30,0X44,0X39,0X31, 0X36,0X38,0X35,0X31,0X38, 0X39,0X30,0X32,0X38,0X31, 0X33,0X38,0X66,0X31,0X30, 0X30,0X30,0X38,0X30,0X31, 0X30,0X41,0X36,0X37,0X30, 0X39,0X35,0X43,0X30,0X46, 0X35,0X30,0X37,0X37,0X35, 0X31,0X36,0X35,0X34,0X46, 0X42,0X35,0X1A,39。 \r39。 ,39。 \039。 }。 /*const unsigned char smscontent[] ={0X30,0X30,0X31,0X31,0X30, 0X30,0X30,0X44,0X39,0X31, 0X36,0X38,0X35,0X31,0X38, 0X39,0X30,0X32,0X38,0X31, 0X33,0X38,0X66,0X31,0X30, 0X30,0X30,0X38,0X30,0X31, 0X30,0X41,0X36,0X37,0X30, 0X39,0X35,0X43,0X30,0X46, XXXX 大学本科毕业设计 17 0X35,0X30,0X37,0X37,0X35, 0X31,0X36,0X35,0X34,0X46, 0X42,0X35,0X1A,39。 \r39。 ,39。 \039。 }。 //*********************************gms 相关函数定义 *************************// void GSMDelayNMs(unsigned int n) { unsigned int d=100。 for(。 n0。 n) { d=100。 do{。 }while(d)。 } } void GSMSendCommand(const unsigned char gsmmand[]) { LcdDisplayString(gsmmand,strlen(gsmmand),1000)。 GSMDelayNMs(1000)。 ClearBuffer(receivestr,BACKMESSAGE_MAXLENGTH)。 timeoutset=5。 timeout=0。 RCIF=0。 RCIE=1。 receivestrlen=0。 T0IF=0。 T0IE=1。 Tmr0TimerStart(0)。 UsartSendString(gsmmand,strlen(gsmmand))。 while(timeouttimeoutset)。 T0IF=0。 T0IE=0。 RCIF=0。 XXXX 大学本科毕业设计 18 RCIE=0。 LcdClear()。 //清屏 LcdDisplayString(receivestr,receivestrlen,1000)。 GSMDelayNMs(1000)。 } //启动 GSM void GSMStart(void) { ADCON1=0X07。 IGTDIRECTION=0。 IGT=0。 GSMDelayNMs(300)。 IGT=1。 } void GSMInit() { unsigned char i=0。 LcdInit()。 //LCD1602 初始化 LcdClear()。 //清屏 LcdDisplayString(lcd1602 ready!,strlen(lcd1602 ready!),1000)。 GSMDelayNMs(1000)。 UsartInit(9600)。 //串口初始化, baud 为串口波特率 GSMStart()。 LcdClear()。 //清屏 LcdDisplayString(GSMStart!,strlen(GSMStart!),1000)。 GSMDelayNMs(1000)。 RCIF=0。 RCIE=0。 PEIE=1。 XXXX 大学本科毕业设计 19 GIE=1。 for(i=0。 iM。 i++) { LcdClear()。 //清屏 GSMSendCommand(gsmmand[i])。 } } void GSMSendSms(const unsigned char smscontent[]) { unsigned char i=0。 const unsigned char * p。 unsigned char SK[]=。 unsigned char timercount=0。 LcdClear()。 //清屏 LcdDisplayString(mandcmg。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。