- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嘉兴学院电气专业毕业设计论文第2部分.
4软件部分的设计
基于第三章的硬件设计,本章主要介绍包括通信协议的制定和单片机具体代码的实现。在整个程序上,主要划分为以下的几个模块:
图4-1 程序总体框图
.1 android客户端和网关蓝牙通信协议
在此次的设计中,为了保证和客户端的成功通讯,需要制定数据传输协议。通过这个数据通信协议,实现android客户端通过蓝牙与网关进行数据通信的底层操作。数据传输以信息帧格式传输,且帧长度为定长信息。
4.1.1帧定义
系统中共有三种帧格式,根据类型不同帧的格式也不同,具体定义如下:
命令帧
表4-1 命令帧说明
同步帧
2Byte 帧类型
1Byte 信息帧1
2Byte 信息帧2
2Byte 结束字
1Byte 0xF5 0x5F 0x30 命令信息1
0x01 返回回复帧
0x10 返回数据帧 命令信息2
2272地址
控制命令 0x55 类型 类型值 说明 命令 0x30 命令信息,由android客户端发给网关 回复 0x35 命令响应,由网关发给android客户端 数据 0x39 传输数据信息,网关执行命令后得到的结果数据 .2软件流程图
主程序流程图如下所示:一旦发生报警,网关接收来自无线的数据,执行报警处理,将数据从蓝牙发送出去。此外,可以调用无线发射程序,实现对终端设备的控制。
图4-2 主程序流程图
主程序具体的代码实现如下:
void main(void)
{
init_sys();
UART1_SendFrame(0xf7,0x11,0x11,0x11,0x11,0x11); //系统开始工作
while(1)
{
if(R_D0==1||R_D1==1||R_D2==1||R_D3==1)
{
UART1_SendFrame(0x39,P2,0xFF,0x11,0x11,0x55); //警报处理 F5 5F 39 01 FF 11 11 55
}
Com_task();
}
}
无线发射程序流程图:无线发射程序比较简单,主要是一个设置地址值和设置发射数据的过程,具体的流程如下所示:
图4-3 无线发射程序流程图
串行中断服务程序流程图:串行服务程序,是实现通信协议的关键部分。我们设计的通信协议采用定长的数据帧传输,每帧数据长度为8位。
图4-4 串行通讯服务程序
具体代码实现如下:
void Com_Ser() interrupt 4 using 0
{
static bit FindFrameHead=0;
static unsigned char Last_SBUF;
if(RI)
{
RI=0;
Com_ROK=0;
if(FindFrameHead) //frame head?
{
RevData[Rev_i]=SBUF;
Rev_i++;
if(Rev_i=7)
{
FindFrameHead=0;
Com_ROK=1;
}
}
else if((SBUF==0x5f)(Last_SBUF=0xf5))
{ FindFrameHead=1;
RevData[0]=0xf5;
RevData[1]=0x5f;
Rev_i=2;
}
Last_SBUF=SBUF;
}
else if(TI)
{ if(Send_i7)
{Send_i++;
SBUF=Senddata[Send_i];
}
else
{
Com_SOK=1;
}
TI=0;
}
}
嘉兴学院本科生毕业设计
android@home家庭通讯网关的设计
主程序
无线发射模块程序
无线接收模块程序
串行通讯任务处理程序
文档评论(0)