毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

单片机路灯控制系统组群控制件 第8页

更新时间:2010-4-11:  来源:毕业论文
单片机路灯控制系统组群控制件 第8页
命令帧,T2的大小都应该是一样的,都是利用时间间隙T1发送收方信息帧,延时的时间是相同的。然而,对于T1而言,情况就有所不同,因为下位机模块先发送数据帧时,利用T1的间隙时间上位机模块发送的命令帧可能较少,因此当下位机模块先发送数据帧时所定义的T1应该小于当上位机模块先发送命令帧时所定义的T1,因为当上位机模块先发送命令帧时,利用T1的间隙时间下位机模块发送的数据帧可能比较多。
4 程序的设计
3.41  主函数的设计思路
开机上电后,程序在主函数中运行,单片机和GSM模块分别进行初始化。单片机的初始化包括设置串口工作方式、波特率,并初始化变量参数和标志位。GSM模块初始化包括重新启动、关闭回显、设置在TEXT模式下在返回值中不显示详细的头信息、选择短信格式为TEXT模式、开发串口中断准备接收数据。为了使模块能对返回的参数采取不同步骤,程序设置了可以位寻址的标志位,分布在在单片机89C52的位寻址区2EH和2FH两个字节单元中,如表9所示。  
  表9 标志位列表
标志位 含义 位地址
f_inited 初始化完成 7EH
f_sending 有数据块发送 7CH
f_ack 发确认帧 74H
f_nack 发非确认帧 73H
f_sended 发送成功 79H
f_read_sms 可以阅读短信息 7FH
f_deleting 删除短信息 78H
f_ready 见表5 7AH
f_geti2c 见表5 77H
主函数是一个不断遍历E2PROM寻找需要发送的数据块,和判断是否需要向上位机模块发送应答帧的循环过程。前者是通过不断遍历位寻址区查寻标志位f_sending、f_ack 、f_nack是否被置为1来实现的。后者是当接收到上位机模块的短信数据时所需执行的操作指令。一旦遍历到数据块需要发送,或者实时接收到了上位机模块发送来的短信数据,主函数将快速转到时钟中断服务程序来调用SHELL函数,完成数据块或者应答帧的发送。实际上无论是数据块的发送还是应答帧的发送,都是针对GSM模块不同返回参数的处理过程。另外,主函数在完成单片机和GSM模块的初始化后,将立即开放串口中断,实时接收GSM模块返回的参数以及上位机模块发来的短信数据。
系统运行时,上位机模块首先发送一个应答帧给下位机模块,从而启动下位机模块的运行。应答帧可以是确认帧,也可以是非确认帧,这可以事先约定。程序的开头检验是否收到应答帧,有两个意图。其一,当系统启动时作为下位机模块的启动信号;其二,当下位机模块正常运行时,在发送完短信后,下位机模块需要判断上位机模块是否收到了短信,判断的依据就是上位机模块是否返回应答帧。根据应答帧的内容,下位机模块将决定是继续发送下一帧数据还是重新发送上一帧。按照双方通信约定的协议,如果超过了最大延时T1,下位机模块也将重发上一帧,重发的过程也是时钟中断服务程序调用SHELL函数的过程。
3.42   GSM返回参数的处理-SHELL函数
   SHELL函数是进入时钟中断程序时被调用的,该函数是对GSM模块返回参数进行处理的函数。根据系统设计的要求,需要对GSM模块进行下列操作:呼叫对方模块号码、发送数据、阅读短信、删除短信。基于以上操作指令,如果操作成功GSM模块会分别返回不同的参数:>、+CMGS、+CMGR、OK,根据接收到的不同参数,下位机模块将转向不同的操作步骤,判断并改变标志位的值。比如,如果某时刻接收到>,这表明呼叫对方模块号码获得成功,接下来需要发送数据,这时SHELL函数将检查发送不同数据所代表的标志位f_sending、f_ack、f_nack,从而决定需要发送何种类型的数据。如果f_sending=1,需要发送E2PROM中的某个数据块;如果f_ack=1,需要发送确认帧,告诉对方已经成功接收到了对方发送的数据;如果f_nack=1,需要发送非确认帧,表明本方接收到的数据是错误的,并等待对方重新发送上一帧数据。需要说明的是,在同一时刻这三个标志位只有其中之一等于1,这是双方通信的半双工协议所强行约定的。对于其余三个返回参数,处理思想基本类似,在此不一一罗列。
如果操作失败,模块返回ERROR,也有三种可能的情况,分别是发短信出错、阅读短信出错、删除短信出错。SHELL函数将检查上述操作的标志位是否为1,并根据标志位的情况重新发送该AT指令。
还有一个返回参数比较特殊,即在等待接收返回参数的过程中接收到了+CMTI。这不是本方主动操作获得的返回参数,而是表明上位机模块此刻有短信数据到来。SHELL函数将首先提取短信数据在SIM卡中的存放序号,并将此序号存放到单片机2的指定单元中,然后根据序号发送阅读短信指令。
如果没有接收到任何GSM模块返回的参数,即字符缓冲区中字符个数为0,发生这种情况有两种可能。其一,当单片机和模块初始化完毕后,如果首次遍历E2PROM时发现有数据块需要发送,SHELL函数将会呼叫对方号码,试图建立连接,准备发送数据。因为在呼叫对方号码之前,下位机模块没有进行任何AT指令操作,模块也就不会返回任何参数,这是情况之一。其二,当下位机模块发送完数据块后,在等待对方应答帧的过程中,如果在最大的延时范围内没有收到对方的应答帧,SHELL函数也将会呼叫对方号码,准备重新发送上一数据块,超时重发机制在这里得到了反映。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

单片机路灯控制系统组群控制件 第8页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。