4 主控制器软件设计
系统的软件设计是整个系统功能实现的关键所在,软件设计的优劣直接影响系统的性能,在相同硬件基础上设计的软件功能差异可以很大。由于本次设计要频繁的对数据进行读写和处理大量的数据,占用了CPU的大量资源,因此在优化软件设计的同时,还要注重核心芯片的选择。
系统软件设计根据功能要求软件控制模块可分为。上电后系统开始运行,系统先调用初始化,对各个接口状态进行自检,对各个控制寄存器赋初值,然后进入循环等待操作命令的到来并执行命令。系统处于循环状态运行时则调用通讯子程序工作,接收控制计算机发送的控制命令,同时向教室控制器进行转发;系统中断时调用定时中断服务子程序。主控制器程序运行框图如图4所示。
4.1 通讯子程序设计
系统采用RS-485总线式网络结构,主从式通信方式,即主控制器以查询的方式与各子控制器通信,子控制器相互间不直接通信,而是通过主控制器,间接的相互通信。同时,数据的交换过程(包括建立连接和交换数据)采用一问一答的方式,主控制器询问了子控制器,子控制器才给予应答,收到应答后,数据交换才继续进行下去。这样的方式可以避免多个子控制器间没有次序的数据通信,扰乱整个网络上数据的传输。系统多机通信按以下协议进行:

图4 主控制器程序运行框图
(1) 首先初始化,使所有从机处于接收地址帧状态,即使SM2=1。
(2) 主机先置TB8=1,发一帧地址信息,主机发出信息后马上启动一个等待状态定时器(定时几十ms)。
(3) 从机接收到地址帧后,各自产生串口接收中断将接收到的地址与本机地址比较,地址相符的从机使SM2=0,处于接收数据状态,并屏蔽串口中断,然后发回本机地址作为确认信号,其余从机不进行任何动作,继续监听地址。
(4) 主机收到对应从机地址后,令TB8=0,开始发送数据信号,主机与对应从机通信建立。此时其他从机均无中断响应,若主机长时间未能接收到数据,而导致等待状态定时器中断,此时主机应强制退出与该从机的通信,并使从机复位。
(5) 通信建立后,主机连续发送数据帧和校验帧,从机接收后进行数据校验,数据错误接受错误则返回错误码,主机重新发送数据,重复三次,若三次均出错则报上位机系统出错;若数据发送正确,则返回地址继续进行通信。
(6) 通信结束后,主从机复位。主机使TB8=1,回到发送地址状态;从机使SM2=1,并打开串口中断,回到接收地址状态。
4.2 实时时钟子程序设计
实时时钟子程序设计能向控制计算机提供系统运行时间。同时提供定时功能,当定时时间达到时,实时时钟芯片DS 12887产生一个低电平触发单片机中断程序,完成定时操作功能。DS 12887状态寄存器的参数设置如下:状态寄存器A置为20H,表示开启时钟并禁止SQW管脚输出方波。状态寄存器B置为26H, 表示允许闹钟中断,禁止其他中断;二进制数据表示;采取24小时格式;禁止方波输出和夏令时服务。
本文作者创新点
本文设计了基于单片机控制的智能教室控制系统的主控制的外围电路。采用了DS12887芯片,对系统时间模块进行了设计。重点讨论了主控制器的通讯模块设计,对RS-485总线在通信节点扩展方面进行了全新的设计。同时对主控制器进行了软件设计。
参考文献:
[1] 郝铭,刘景泰,卢桂章.基于RS485总线分布式智能控制系统的设计与实现[J].自动化与仪表,2005,(2): pp. 23-25
[2] 刘富强.单片机在多媒体系统中多功能控制卡的应用研究[[J].东南大学学报,1998年第三期,p66-70
[3] 张小梅,陆俊,彭冰沁,刘宏. 嵌入式智能家居控制系统的设计与实现[J]. 微计算机信息, 2007, 1-2: pp.55-56.
[4] 姜地..RS-485多机通讯技术[J].中国科技信息,2006,(17):126-129