首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM的智能家居监控系统设计(2)

基于ARM的智能家居监控系统设计(2)

 3系统软硬件设计
  下位机软件设计主要可分为数据采集模块、通信模块、键盘及LCD控制模块、开关量输出控制模块。限于篇幅只介绍数据采集模块的具体实现方式。ARM微控制器应用轮询方式进行模拟量和开关量的采集。通过设置定时器/计数器0中断,每次中断时间20毫秒,用于模拟量(AI)采样定时;定时器/计数器1中断,中断时间250毫秒,每次中断时扫描开关量输入(DI)状态.主程序开始时进行定时/计数器0,定时/计数器1,AD,DI等的初始化,初始化主要是设置定时器的中断方式(设置定时器0溢出中断,定时器1比较中断),外部中断INT0,INT1中断方式(INT0下降沿产生异步中断请求,INT1上升沿产生异步中断请求);AD,DI处于可以接收模拟量和开关量的状态,然后程序进入循环状态,等待上位机控制信息的到来,如果有控制信息到来便把相应的标志位置 1,主程序跳转到相应的服务程序产生相应操作。
  l 定时器0中断服务程序
  定时器0中断主要完成模拟量的数据采集与平均值计算,其程序流程图如图2所示,具体为:定时器0中断时间为20毫秒,用于AD采样计时;当AD采样次数满 15次后判断采样结束标志,如果采样结束则计算平均值然后在LCD上进行显示后,产生AD中断,最后中断返回。
  l 定时器1中断服务程序
  定时器1主要完成扫描开关量输入状态,其中断程序流程图如图3所示.具体为:中断时间为250毫秒,如果有开关量输入,则置开关量输入标志为1,然后中断返回。


  图2定时/计数器0中断服务程序流程图



  图3定时/计数器1中断服务程序流程图


  上位机监控管理软件设计采用分层结构,三个功能模块从下至上依次分布在三层之中.由下向上三层依次为底层,通信层和图形用户界面层(GUI层),如图4所示:


  图4 上位机软件层次结构


  系统设计在底层之上加通信层,这样就可以完成本系统自定义的通信协议,由于系统要完成数据采集功能,这里的通信层也包括了数据处理模块,这样做可以简化一些设计,减小代码编写量.通信层之上是图形用户界面层(GUI层),这层的功能是把数据流从通信层中读出来,以图形方式向用户表示,这样在用户使用系统的时候就会感到自由清晰,很好地完成工作。
  本系统主要应用的是串行通信协议,这个协议是定义在物理层之上的,其具体协议行为发生在底层,我们不必关心它,只需对它的设置参数进行相应的设置.另外,为完成系统的功能要求还须自定义一个数据帧或命令帧格式.所以这里通信层中的通信协议包括了两方面的内容:一个是串行端口参数设置,另一个就是自定义的数据帧或命令帧。
  串行端口设置参数主要有以下几个:波特率、数据位、奇偶校验位、停止位以及编码方式.本系统中的波特率设置为19200($2.0300) bit/s;数据位设置为8位;由于通信距离较近所以没有奇偶校验;停止位设为1位;编码方式采用ASCII码方式。这里的设置通过对Visual Basic 2005中SerialPort类中的公共属性BaudRate、DataBits、Parity、StopBits、Encoding的设置即可完成。
  Visual Basic 2005 中的SerialPort类用于控制串行端口文件资源.它具有如下特性:提供同步 I/O 和事件驱动的 I/O,对管脚和中断状态的访问以及对串行驱动程序属性的访问。
  4 结论
  基于ARM核心的微控制器无论在运算速度还是系统实现成本上都优于传统的8位单片机。本文利用NXP公司ARM7微控制器LPC2478设计完成了家居网络的底层监控系统。本系统充分利用LPC2478的丰富片上资源,如LCD控制器、CAN总线接口,辅之简单的外围电路实现监控系统的硬件部分。整个监控电路板的实现成本及功耗体积相比8位单片机实现方案,大大缩小,很适合家居智能化的工程实施。另外本文还提出了PC机监控管理软件的通信层结构及实现细节,可以为家居智能化改造提供技术基础。
继承事业,薪火相传
返回列表