[毕业论文]基于单片机的照明控制系统(7)

2019-03-06 08:13

中断程序入口初始化接收主机发送的地址N与本机地址相符吗Y向主机发送本机地址接收主机发送的数据将数据写入DS1302芯片读出DS1302芯片的数据时间到了吗Y关闭照明灯N返回

图4.11 单独定时控制从机控制程序流程图

4.5 RS485通信程序设计

由于RS485总线是异步半双工的通信总线,在某一个时刻总线只可能呈现一种状态,所以这种方式一般适用于主机对从机的查询方式通信。在通信中,主机与各个从机进行通信,必须能对各个从机进行

识别,这一识别功能是利用串口控制寄存器SCON的SM2位实现的。当串口以方式3工作时,发送和接收的每一帧信息都是11位,其中第9位数据位是可编程的,通过对SCON寄存器的TB8位置1或置0,以区别发送的是地址帧还是数据帧(规定地址帧的第9位为1,数据帧的第9位为0)。若从机的控制位SM2被设为1,则当接收的是地址帧时,数据装入SBUF,并置RI=1,向CPU发出中断申请,若接收的是数据帧,则不产生中断,信息被抛弃。若SM2被设为0,则无

论是地址帧还是数据帧都将产生RI=1中断标志,数据装入SBUF。利用这一功能,可以按照如下步骤进行数据通信:

(1) 将所有SM2位置1,使其处于只接收地址帧的状态。

(2) 主机发送一帧地址信息,其中前8位数据位表示通信的从机地址,第9位为1,表示当前帧为地址帧。

(3) 从机接收到地址帧后,如果是广播地址帧,则所有从机都将其SM2位置0,准备接收主机发送的数据或命令;如果不是广播地址帧,则将本机地址与帧中地址进行比较。如果地址相同,则将其SM2位置0,并发送本机地址帧,然后准备接收数据。如果地址不同,则丢弃当前数据,SM2位不变。

(4) 主机发送数据帧,相应的从机接收,其他从机则不受影响。

(5) 当主机需要与其他从机通信时,可以再次发出地址帧寻呼从机,重复这一过程。 主机在发送数据时,按照表4-2的数据格式进行传输。

表4-2字节数n数据1数据2数据n字节奇偶校验

在程序中,第9位发送数据位SCON中的TB8位,第9位接收数据位为SCON的RB8位,因此,发送数据前,可以通过对TB8位置1或0来确定要发送的是地址帧还是数据帧。而接收数据时,对地址帧的判断则是通过读取RB8位来获得的,RB8=1,当前帧为地址帧,RB8=0,当前帧为数据帧。

单片机的串口工作在方式3下,其波特率由定时器1(T1)的溢出率决定,计算公式为:

波特率=SMOD232T1的溢出率

定时器T1的溢出率的计算公式为:

溢出率=则波特率的公式变为:

波特率=fosc32k的初值 )÷( 2 - T1

SMOD232×fosc32k的初值 )÷( 2 - T1

系统所采用的晶振频率为11.0592MHz,T1工作在模式3下,波特率=9600b/s。

4.5.1 主机部分通信程序设计

系统中的主机通信程序分为4个部分,分别为预定义及全局变量部分、程序初始化部分、数据通信流程和发送数据部分。主机的数据通信的基本流程如下:

(1) 主机首先向所有从机发送地址帧对要通信的从机进行呼叫,发送地址帧时需将TB8位置1。

(2) 发送地址帧后,如果发送的是广播地址帧,则不需要从机应答,待延迟一段时间后,调用发送函数发送数据;如果发送的是非广播地址帧,主机则要接收应答,若应答信号中的地址与前面发送的地址并不相同,主机将重新发送地址帧呼叫,否则调用发送函数发送数据。

(3) 发送完数据后,主机等待从机的校验信号,如果接收到0X0F数据,表示发送成功,通信结束,否则主机将重新发送数据,直至发送成功。 该部分程序对应的流程图如图4.12所示。

开始发送地址帧等待从机应答N是广播地址吗Y应答信息与发送的地址相符吗YN调用发送函数发送数据等待从机应答N发送成功吗Y结束 图4.12 主机数据通信流程图

4.5.2 从机部分通信程序设计

从机通信程序也被分为预定义及全局变量部分、程序初始化部分、数据通信流程和接收数据部分4个部分。从机部分的数据通信过程受主机控制,其基本的流程如下:

(1) 初始化完成后,从机设置SM2位为1,串口只接收第9位数据位为1的地址帧,数据帧将被直接抛弃。

(2) 如果串口有数据接收(收到地址帧),则从机会将该帧中的地址信息先与广播地址进行比较,如果是广播地址,则做好接收数据的准备,如果是其它地址,则与本机地址比较,如果相同,则发送应答信息,应答信息内容应为本机地址,否则丢弃当前数据,从机继续处于等待呼叫状态。

(3)程序调用接收函数接收主机发送的数据部分并作出应答,接收到的数据保存至Buf指向的缓冲区中。如果接收函数返回0xff,表示数据校验失败,程序等待主机重新发送数据。如果函数返回值为0xfe,表示从机在数据接收过程中发现主机发送地址帧,程序将放弃当前接收过程,将SM2位重新置1,开始下一通信过程。如果函数返回0,表示数据被成功接收,向主机发送成功信号,随后,程序将SM2位置1,重新开始下一个数据通信流程。

该部分程序对应的流程图如图4.13所示。

开始将SM2位置为1只接收地址帧串口有数据接收N是广播地址吗Y接收的地址与本机地址相同吗Y发送应答信号信号内容为本机地址调用接收函数接收数据Y接收函数返回值为0xffNY接收函数返回值为0xfeN向主机发送成功信号 图4.13 从机数据通信流程图

6 无线数传通信程序设计

这里所设计的无线数据传输系统是采用主从式通信方式,主控制器设为主站,所有分控制器设为从站,所有从站都编一个唯一的地址。通信的协调完全由主站控制,主站先发送地址帧,所有从站都接收,如果是接收的是广播地址码,则所有从站都做好接收主机发送数据或命令的准备,然后主机发送数据或命令;如果接收的是其它地址码,则从站将接收到的地址帧与本地地址码相比较,若不同则将数据全部丢掉,不做任何响应;若地址码相同,则证明是呼叫本站,从站将自己的地址码发送回去,主站收到自己刚发出去的地址码后,接着发送数据或命令。这些工作都需要通信协议来完成,可保证在任何一个瞬间,通信网中只有一个模块处于发送状态,避免相互干扰。

SRWF-1模块在使用之前要进行无线信道、接口类型、接口速率、接口参数等的设定,

在设置完成后便可以进行数据传输,当模块收到单片机发来的第一个数据后自动进行无线网络连接、数据同步等工作,因此第一个数据将在5个字节时间延迟后从接收方串口输出。如要传送1个数据帧,此时间延迟将逐渐减少。当最后一个数据被发送后,模块将处于等待状态直到模块所设置的接收等待时间延迟之后,模块将自动通知所有接收设备断开无线网络连接、转入空闲状态。

当发送方最后一个数据被发送后需延迟6-8个字节才能接收空中其他模块的数据。其他模块在此时间内也不能向空中发射数据,即使有用户数据输入也是被缓冲在模块中,而没有发送到无线链路中,以避免引起数据通讯混乱。

无线数传的通信协议与流程基本上与RS485通信程序相同,因此主机和从机的数据通信程序流程图分别如图4.12与4.13所示。

4.7 本章小结

本章主要阐述了照明控制系统的软件设计,该系统的软件程序主要由照明启停控制程序、照明亮度控制程序、照明定时控制程序、人机交互程序、串行通信程序等组成。而照明启停控制、亮度控制以及定时控制程序又分为全部控制和单独控制两部分,人机交互程序由键盘扫描程序与LED显示程序组成,而串行通信程序由RS485通信程序和无线数传程序组成。在这里分别对每个子程序的工作流程、工作原理以及过程都做了详细的论述。


[毕业论文]基于单片机的照明控制系统(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:旅游保险项目可行性研究报告(目录) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: