微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线的分布式显示控制系统

基于CAN总线的分布式显示控制系统

时间:11-28 来源:互联网 点击:
  CAN(Controller Area Network) 即控制器局域网络,是一种全数字化、多主和双向的现场总线CAN总线数据通信具有很高的可靠性、实时性和灵活性,越来越广泛地应用于各种工业现场。本分布式显示控制系统采用CAN控制器SJA1000实现各节点间远距离串行通信,得到了很好的效果。系统结构如图1所示。


主机负责监控各个从机,向从机发布指令,并接收处理从机传来的检测数据。从机执行主机的指令,显示运行信息,向主机传送检测数据。CAN接口电路负责各节点间的串行通信。两只125Ω电阻作为CAN线路的匹配电阻。本文着重介绍CAN总线的设计使用以及点阵显示电路的设计原理,其他功能电路的介绍从略。
CAN总线硬件设计
CAN接口电路如图2所示, SJA1000是PHILIPS公司生产的独立CAN通信控制器,SJA1000集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,该控制器具有多主结构、总线访问优先权、硬件滤波等特点。PCA82C250是CAN 协议控制器和物理总线的接口,它可以提供总线的差动发送能力和接收能力,高速应用可达1M baud,最多可挂110个节点。

CAN总线初始化设计
要使SJA1000正常工作,必须先对其作初始化,这是一个重点。对SJA1000的操作是由读写其片内的控制寄存器实现的。待SJA1000硬件复位完成后,单片机就可以初始化SJA1000,初始化程序如下: INITISJA1000:
RESET:
CONFIG:
OPERATE_MODE:
CONFIG1:
CLR EX0 ;关中断
MOV DPTR , #0000H
MOV A , #01H
MOVX@DPTR, A ;设置复位请求标志
MOV A , #40H
MOV DPTR , #001FH
MOVX @DPTR , A ;CDR=40H
MOV A , #13H
MOV DPTR , #0004H
MOVX @DPTR , A ;设ACR接受代码=13H
MOV A , #00H
MOV DPTR , #0005H
MOVX @DPTR , A ;接受屏蔽寄存器(AMR)=00H
MOV A , #01H
MOV DPTR , #0006H
MOVX @DPTR , A ; BTR0=01H
MOV A , #1CH
MOV DPTR , #0007H
MOVX @DPTR , A ; BTR1=1CH
MOV A , #1AH
MOV DPTR , #0008H
MOVX @DPTR , A ; OCR=1AH
MOV A , #00001100B
MOV DPTR , #0001H
MOVX @DPTR , A ; GTS=0, CDO=1, RRB=1
MOV DPTR , #0000H
MOV A , #00011010B
MOVX @DPTR , A ;进入工作模式
SETB EX0 ;开中断
RET
#p##e#
这里SJA1000的首地址是0000H。只有SJA1000进入复位工作模式,才可以初始化相应的寄存器。时钟分频寄存器(CDR)设定值为40H,表示选BasicCAN工作模式,忽略CAN输入比较器和不用TX1输出做专用接收中断输出。接收代码寄存器(ACR)和接收屏蔽寄存器(AMR)组成接收过滤器,接收代码位(AC.7-AC.0),接收屏蔽位(AM.7-AM.0)和信息识别码的八位(ID.10-ID.3)满足下述方程,该信息才会被接收:
[(ID.10-ID.3)≡(AC.7-AC.0)] ∨(AM.7-AM.0)≡11111111
总线时序寄存器0(BTR0)可决定波特率预置值和同步跳转宽度的值,BTR0=01H表示波特率设为250Kbps(用16M晶振)。总线时序寄存器1(BTR1)决定位周期宽度,采样点位置和在每个采样点的采样次数。系统中各节点的BTR0、BTR1应设为相同,否则不能互相通信。输出控制寄存器OCR决定了不同输出驱动配置的建立。设置完这些寄存器后,要将SJA1000设为正常工作模式,并按需要使能其相应的中断位。SJA1000中各控制寄存器的详细说明和用法可参考文献1。
CAN总线通信程序设计
各节点间的通信可采用中断方式或查询方式,本控制系统采用中断方式通信。各个节点之间的指令、数据交换通过下面这个子程序模块完成的。
显示电路各节点的一个重要组成部分是显示电路。作为人机交互界面,显示电路告诉人们系统当前运行信息。显示电路结构图如图3所示。

单片机的任务是根据上位主机的命令产生显示数据及控制信号。16行×64列的LED显示点阵由点阵块组成。显示电路采用1/16扫描方式,显示点阵的一行对应一路行选通信号,各行的同一列共用一个列选通信号,这样既满足显示要求,又可以简化电路。行驱动电路主要由74HC163、74HC138、Si4953组成,用以产生行选通信号。74HC163和74HC138构成行译码器,在单片机的控制下,从第一行开始按顺序选通显示点阵各行;Si4953是P沟道MOSFET管,作用是提高行信号的驱动能力。在选通某一行后,该行上各个LED是点亮还是熄灭,由各自的列选通信号决定,其它行的LED则全熄灭。显示电路以这样方法逐行扫描显示点阵,只要整个扫描周期足够快,人们就感觉不到显示闪烁。
驱动电路由74HC595级联组成,前一片74HC595的Q,H引脚连接下一片的SER引脚,各片的SRCLK、SRCLR、RCLK引脚分别并联。单片机的RXD口输出显示数据给第一片74HC595的SER引脚;TXD口发出移位脉冲将串行数据逐

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top