毕业论文-基于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。毕业论文-基于gsm的远程报警系统的设计
相关推荐
典型 的中型机有 SIEMENS 公司的 S7300 系列、 OMRON 公司的 C200H 系列。 大型机 ( I/O 点数在 1024 点以上) 典型的大型 PLC 有 SIEMENS 公司的 S7400、 OMRON 公司的 CVM1 和 CS1 系列。 二、 按结构形式分 : 根据 PLC 结构形式的不同, PLC 主要可分为整体式和模块式两类。 整体式结构 微型和小型 PLC
1、产定肥、因缺补缺、有机无机相结合、氮磷钾平衡施用的原则。 一是要测土。 测土是测土配方施肥的前提,通过对土壤养分分析测定,较准确地掌握土壤养分状况及供肥性能,为配方施肥提供科学依据;二是要配好配方。 配方是施肥的关键。 在测土的基础上,根据土壤特性、栽培习惯、作物的需肥规律、生产水平和气候等条件,结合上年的产量水平,确定目标产量,再根据肥料的效应,提出氮、磷、钾的最适用量和最佳比例
1、稻恶苗病和干尖线虫病是因种子带菌而造成植株感染发病的种传病害,只有在水稻播种前通过种子消毒,才能有效控制这两种病害的发生。 播种前对水稻种子进行消毒处理是一项事半功倍和经济有效的方法,其关键是选择对口种子处理药剂和正确掌握其使用技术。 根据我省近年大面积推广应用的结果,水稻种子处理药剂以选用使百克乳油或的确灵可湿性粉剂或稻种清可湿性粉剂为佳。 具体使用方法如下
压,常用的为 24V。 底板或机架 大多数模块式 PLC 使用底板或机架,其作用是:电气上,实现各模块间的联系,使CPU 能访问底板上的所有模块,机械上,实现各模块间的连接,使各模块构成一个整体。 PLC 的外部设备 外部设备是 PLC 系统不可分割的一部分,它有四大类 : 1) 编程设备:有简易编程器和智能图形编程器,用于编程、对系统作一些设定、监控 PLC 及 PLC 所控制的系统的工作状况
1、稻对水分条件要求比较严格,不同生育期需水量也不同。 为保证水稻稳产高产,应针对不同生育期,实行科学的水量管理。 1、分蘖期浅水勤灌。 分蘖期浅水勤灌,使水稻植株茎部透光良好,阳光可直接照射到稻株茎部,提高水温和土温,增加土壤中氧气,促使根系发育,提高吸肥能力,促进早分蘖,提高分蘖成穗率。 灌水的深度,要根据天气情况,般 35 厘米,阴雨天应浅水层。 高温干旱天气稍深为宜。 2、足苗期排水晒田
、扶起倒苗。 应及时将灌护苗水时,引起的倒苗扶起,使其直立生长。 二、灌护苗水。 在水稻插秧后至返青期灌护苗水,水层为苗高的三分之二,可以保护苗不被风吹倒,不使稻苗萎蔫。 三、防止冻害。 注意听天气预报,当气温接近摄氏零度,将有霜冻发生时,必须为水稻苗灌深水,从而保护水稻苗不遭受冻害。 四、插秧后的灭草。 插秧后 3,当秧苗返青后灌 3 厘米的水层,进行灭草时,采用药剂灭草,即每亩水稻用