基于单片机的CAN实验系统设计.doc

上传人:wj 文档编号:4866214 上传时间:2023-05-07 格式:DOC 页数:29 大小:2.09MB
下载 相关 举报
基于单片机的CAN实验系统设计.doc_第1页
第1页 / 共29页
基于单片机的CAN实验系统设计.doc_第2页
第2页 / 共29页
基于单片机的CAN实验系统设计.doc_第3页
第3页 / 共29页
基于单片机的CAN实验系统设计.doc_第4页
第4页 / 共29页
基于单片机的CAN实验系统设计.doc_第5页
第5页 / 共29页
基于单片机的CAN实验系统设计.doc_第6页
第6页 / 共29页
基于单片机的CAN实验系统设计.doc_第7页
第7页 / 共29页
基于单片机的CAN实验系统设计.doc_第8页
第8页 / 共29页
基于单片机的CAN实验系统设计.doc_第9页
第9页 / 共29页
基于单片机的CAN实验系统设计.doc_第10页
第10页 / 共29页
基于单片机的CAN实验系统设计.doc_第11页
第11页 / 共29页
基于单片机的CAN实验系统设计.doc_第12页
第12页 / 共29页
基于单片机的CAN实验系统设计.doc_第13页
第13页 / 共29页
基于单片机的CAN实验系统设计.doc_第14页
第14页 / 共29页
基于单片机的CAN实验系统设计.doc_第15页
第15页 / 共29页
基于单片机的CAN实验系统设计.doc_第16页
第16页 / 共29页
基于单片机的CAN实验系统设计.doc_第17页
第17页 / 共29页
基于单片机的CAN实验系统设计.doc_第18页
第18页 / 共29页
基于单片机的CAN实验系统设计.doc_第19页
第19页 / 共29页
基于单片机的CAN实验系统设计.doc_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的CAN实验系统设计.doc

《基于单片机的CAN实验系统设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的CAN实验系统设计.doc(29页珍藏版)》请在冰点文库上搜索。

基于单片机的CAN实验系统设计.doc

机电与车辆学院毕业设计(论文)

题目:

基于单片机的CAN实验系统设计

专业:

班级:

姓名:

学号:

指导教师:

日期:

2012年5月29日

目录

摘要 3

前言 4

1总体设计方案 4

1.1设计任务 4

1.2总体CAN网络设计框图 5

1.3CAN节点结构 6

2系统的硬件设计 7

2.1电源模块设计 7

2.2单片机最小系统 8

2.3MAX232组成的单片机和PC机通信电路 9

2.4看门狗电路设计 10

2.5键盘输入电路模块 11

2.6显示电路模块 12

2.7扩展ROM功能模块 13

2.8CAN通信模块 13

3系统的软件设计 16

3.1CAN控制器初始化函数CANINI 16

3.2CAN接收函数CANREC 17

3.3CAN发送函数TDATA 17

3.4主程序流程图 18

3.5总程序清单 19

4总结 27

4.1结束语 27

4.2致谢 27

5英文摘要 28

参考文献:

28

符录一:

总电路图 29

基于单片机的CAN实验系统设计

摘要:

现场总线是自动化技术发展的热点,它的出现标志着工业控制技术领域进入了一个新时代。

本设计主要以AT89S51单片机为核心元件,再用SJA1000作为CAN的控制器和82C250作为CAN的收发器,从而组成CAN最小系统,完成CAN报文的发送和接收。

设计中还要求输入和输出功能,在此设计中输入设备由两个开关和一个八位拨码开关组成,两个按钮开关主要是用来控制CAN报文的发送和接收,八位拨码开关主要是完成CAN节点ID的输入,输出设备由一个7段LED数码管组成其功能是显示已发送CAN报文的个数。

关键词:

现场总线CAN总线单片机

前言

CAN(ControllerAreaNetwork)总线作为现场总线的一个分支,以其独特的设计思想、优良的性能和极高的可靠性越来越受到工业界的青睐。

CAN从最初的汽车行业发展为现在工业中必不可少的现场总线之一。

比如发动机管理系统、变速箱控制器、仪表装备、电子主干系统中均嵌入了CAN控制装置。

控制局域网CAN为串行通信协议,能有效地支持具有很高安全等级的分布实时控制。

CAN的应用范围很广,从高速的网络到低价位多路配线都可使用CAN。

在汽车的电子行业里,使用CAN连接发动机控制单元、传感器、防滑系统等,其传输速度可达1Mbps。

同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气窗等,用以代替接线配线装置。

单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域。

AT89S51单片机上集成了控制及信号处理等所需要的几乎所有的模块,以其低功耗,端口可灵活配置,支持JTAG端口可在线调试等特点将广泛应用在工业控制、通信及可便携电子产品中。

本文将目前发展最为热的两个行业相结合,设计了一款以单片机为核心控制器件、基于CAN总线协议的实验开发板。

本实验开发板即适合学习单片机相关知识,也适合学习CAN总线,是一款初学电子设计者是最佳学习器件。

在系统设计中综合运用了本科期所学的各类知识,如低频电子线路、模拟电字电路、数字电子电路、单片机、计算机网络、Protel、程序的编写、电路的仿真调试、原理图的绘制和布线等专业知识。

我通过此毕业设计将本科所学的专业知识又重新复习了一遍,为以后走向工作岗位,完成用人单位交给我的任务打下了坚实的基础。

1总体设计方案

1.1设计任务

本课题要求应用所学的专业知识如模拟电子技术、数字电子技术、传感器、单片机等内容,完成基于单片机的CAN实验系统的硬件和软件的设计,硬件电路的搭建,硬件和软件的仿真与调试,实现检测、控制和显示功能。

本设计主要以AT89S51单片机为核心元件,再用SJA1000作为CAN的控制器和82C250作为CAN的收发器,从而组成CAN最小系统,完成CAN报文的发送和接收。

设计中还要求输入和输出功能,在此设计中输入设备由两个开关和一个八位拨码开关组成,两个按钮开关主要是用来控制CAN报文的发送和接收,八位拨码开关主要是完成CAN节点ID的输入,输出设备由一个7段LED数码管组成其功能是显示已发送CAN报文的个数。

另外为了扩展AT89C51的ROM,本设计中用一片24C08EEPROM充当片外ROM以两加AT89S51的内存。

为了保证整个系统的可靠性本设计采用硬件看门狗电路来访止程序跑飞,其中硬件看门狗电路由一片DS1232来完成对单片机和CAN控制器SJA1000的复位工作。

设计任务还包括以下方面:

1、基于单片机的CAN实验系统的硬件电路设计;

2、基于单片机的CAN实验系统通信功能及部分实验项目的软件设计;

1.2总体CAN网络设计框图

本设计中CAN总线网络基本构成如下图1.2所示:

120Ω

CAN节点1

CAN节点2

CPU

PC

CAN控制器

CAN收发器

CAN控制器

CPU

CAN收发器

CPU

PC

120Ω

图1.2CAN网络基本结构

※传输线

●CAN总线网络中的传输线可以是普通明线、双绞线、同轴电缆和光纤,本设计中为了方便简单才用普通明线。

※终端电阻

●高频信号传输时,信号波长相对传输线较短,信号在传输线终端会形成反射波,干扰原信号,所以需要在传输线末端加终端电阻,使信号到达传输线末端后不反射。

※各部分作用说明

●PC机是用来与CPU通信,可以完成对CPU程序的烧写和数据的传输

●CPU是用来对CAN控制器的初始化和CAN通信过程的控制以及显示等功能

●CAN控制器是整个CAN网络的核心器件,主要用来完成CAN协议的解析、CAN报文的形成等一细系列复杂的工作。

●CAN收发器是将CAN报文转成差动电平发送到CAN总线上和从CAN总线上接收CAN报文传给CAN控制器。

1.3CAN节点结构

本设计中CAN系统节点的基本结构如图1.3所示:

图1.3CAN节点基本结构

※总体说明

●本设计主要由以下部分机构成:

微控制器89S51、CAN总线通信接口部分、CAN节点ID及按键输入部分、PC机通信部分、数码显示部分、EEPROM存储器等。

●CAN总线通信接口部分采用的CAN通信控制器为SJA1000,CAN总线驱动器为82C250。

为了使电路尽量简单,电路中没有采用光耦进行电气隔离。

SJA1000的AD0~AD7连接到89S51单片机的P0中,CS连接到89S51的P2.1,P2.1为0的CPU片外存储器地址可选中SJA1000,CPU通过这些地址对SJA1000执行相应的读/写操作。

SJA1000的RD、WR。

ALE分别与89S51的对应引脚相连,INT接89S51的INT0,89S51也可通过中断方式访问SJA1000。

●CAN节点ID输入电路部分由一片74LS244、一个8×1K的排阻我一个8位拨动开关构成。

74LS244的驱动输出也与89S51的P0口相连,其2G引脚与89S51的P2.0脚相连。

CPU通过P0口可读入用户设定的CAN节点ID值,在实验系统中另设计了两个按键K1和K2,分别接在89S51的P1.6和P1.7上。

K1键启动点到点通信,按设定ID向指定节点发送一帧报文,K2键发送一帧广播报文,每个接收该报文均应返还该报文。

●实验系统数码显示部分由一片74LS164和一个,数码管所构成,可用于显示通信次数(或其它内容)。

24C08是容量为1KB的EEPROM芯片,可用于存储系统的初始化参数或用户自定义数据。

DS1232提供系统所需的高低电平复位信号。

2系统的硬件设计

2.1电源模块设计

本设技中的电源由220V交流电供给,经过降压、整流、滤波、稳压、滤波得到稳定的+5V电源。

总电路如图2.1所示:

图2.1电源模块电路

※供电

●整个电路由220V、50Hz市电供电,方便、价廉。

※降压

●220V、50Hz交流电通过10:

1的变压器达到降压的效果。

●图中电压表测量的是电压的有效值,。

●通过10:

1降压后理论上应得到峰值为22V的交流电压,实际中只得到峰值为的电压,这是由于变压器自身的阻抗所导致的。

※滤波

●C1为稳压器输入侧的滤波电容,其作用是将整流桥输出的直流脉动电压转换成纹波较小的直流电压。

C1滤波电容在工作中由充电和放电两部分组成。

为了取得比较好的滤波效果,要求电容的放电时间常数大于充电周期(3~5)倍。

对于桥式整流电路,电容的充电周期为交流电的半周期,放电时间常数为RLC,因此C1滤波电容值可以采用以下方法估算

C>(3~5)T/2RL得到C1≈3300uF。

●C2、C3作用是减少纹波、消振、抑制高频脉冲干扰,可采用0.1~0.47uF的陶瓷电容。

●C4为稳压器输出侧滤波电容,起到减少纹波的作用,根据经验,一般电容值选取47~470uF。

※稳压

●7805为三端固定式稳压器,输出电压为+5V

●稳压器的输入电压V有一定的范围,V可由下式确定:

Vmin≤V≤Vmax

Vmin为稳压器的最小输入电压,Vmax为稳压器最大输入电压。

7805和Vmax分别为7.2V和35V。

※过流保护和电源指示

●FU1为熔断器,防止系统电流过大烧坏电路

●D1为发光二极管,起指示电源作用

●R1为限流电阻,保护LED不被烧坏

2.2单片机最小系统

整个系统的控制核心部分由一片AT89S51单片机组成,其最小系统如图2.2所示:

图2.2单片机最小系统

※单片机的选择

●AT89S51为ATMEL所生产的可电气烧录清洗的8051相容单芯片,其内部程序代码容量为4KBD的FLASH,市场上容易买到。

●AT89S51主要功能列举如下:

■为一般控制应用的8位单芯片

■晶片内部具时钟振荡器(传统最高工作频率可至12MHz)

■内部程式存储器(ROM)为4KB

■内部数据存储器(RAM)为128B

■外部程序存储器可扩充至64KB

■外部数据存储器可扩充至64KB

■32条双向输入输出线,且每条均可以单独做I/O的控制

■5个中断向量源

■2组独立的16位定时器

■1个全多工串行通信端口

■8751及8752单芯片具有数据保密的功能

■单芯片提供位逻辑运算指令

※复位电路

●单片机最小系统中采用上电自动复位和手动复位相接合。

上电后由于电容的充电作用使单片机RSET引脚不会立即变成高电平,刚开始处于低电平状态完成复位工作,电容充电完成后RSET回到高电平,单片机正常工段。

或者人工手动按下复位开关也可完成复位工作。

※时钟电路

●单片机的时钟由外部晶振提供,晶振可提供非常稳定的保证单片机的正常工段。

●晶振周期之所以选用11.0592Hz是因为 最小晶振频率=波特率×384×2SMOD这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。

※电源电路

●单片机的电源由前面的稳压电路提供,电压为+5V。

※二极管作用

●在单片机短暂下电又上电时,可以让复位电容迅速放电,然后让单片机复位。

如果没有这个二极管,电容不能迅速放电,再上电时不能保证单片机正确复位。

2.3MAX232组成的单片机和PC机通信电路

MAX232组成的单片机和PC机串口通信电路如图2.3所示  

图2.3PC通信接口              

●如图2.3所示的串口通信电路,其中D3、D4两个二极管可以用来简单的指示此时是否有通信正在进行。

串口通信的数据传输过程如下:

MAX232的11脚T1IN接单片机TXD端P3.1,TTL电平从单片机的TXD端发出,经过MAX232转换为RS-232电平后从MAX232的14脚T1OUT发出,再连接到系统板上的串口座的第2脚RXD,至此计算机端接收到数据。

PC机发送数据时从PC机串口座上的第3脚TXD端发出数据,再逆向流向单片机的RXD端P3.0接收数据。

2.4看门狗电路设计

看门狗电路如图2.4所示

图2.4看门狗电路

※DS1232引脚功能

●DS1232是由美国DALLAS公司生产的微处理器监控电路,采用8脚DIP封装,如图所示。

各引脚功能如下:

 

■PBRST:

按钮复位输入端

■TD:

看门狗定时器延时设置端  

■TOL:

5%或10%电压监测选择端  

■GND:

电源地  

■RST:

高电平有效复位输出端  

■RST:

低电平有效复位输出端  

■ST:

周期输入端  

■Vcc:

电源

※工作原理

●DS1232能够实时监测向微处理器供电的电源电压,当电源电压VCC低于预置值时,DS1232的第5脚和第6脚输出互补复位信号RST和RST,其中5脚接单片机RESET,6脚接SJA1000的RESET。

预置值通过第3脚(TOL)来设定;当TOL接地时,RST和RST信号在电源电压跌落至4.75V以下时产生;当TOL与VCC相连时,只有当VCC跌落至4.5V以下时才产生RST和RST信号。

当电源恢复正常后,RST和RST信号至少保持250ms,以保证微处理器的正常复位。

●在DS1232内部集成有看门狗定时器,当DS1232的ST端在设置的周期时间内没有有效信号到来时,DS1232的RST和RST端将产生复位信号以强迫微处理器复位。

这一功能对于防止由于干扰等原因造成的微处理器死机是非常有效的。

看门狗定时器的定时时间由DS1232的TD引脚确定。

  ●看门狗定时器的周期输入信号ST可以从微处理器的地址信号、数据信号或控制信号中获得,不论哪种信号都必须能够周期性的访问DS1232,本设计中使用ALE信号。

2.5键盘输入电路模块

系统键输入电路如图2.5所示:

图2.5键盘输入电路

※键盘输入组成

●键盘输入由一片74LS244、一个8×10K的排电阻、一个或门和一个8位拨动开关构成,74LS244的驱动输出端也与AT89S51的P0口相连,其2G引脚与AT89S51的P2.0脚相连。

CPU通过P0中可读入用户设定的CAN节点ID值。

读入8位值,低四位为节点自身ID,高四位为点到点通信接收节点的ID,ID为0000H时表示广播,所以只能设定15个ID。

※上拉电阻的作用

●8×10K的上拉电阻保证了开关的电平的正确输入,当拨码开关打到左边时单片机可从74LS244端中读入1,当拨码开关打到右边时单片机可从74LS244端中读入0。

若不加上拉电阻拨码开关打到右边时读入电平将不能确定。

※74LS244作用

●74LS244为8位缓冲器,1G和2G为使能端,当两引脚都为低电平时允许单片机读取数据。

※或门作用

●4071或门接P20和单片机RD引脚,当这两个引脚都为0时单片机才能将拨码开关数值读入。

2.6显示电路模块

系统显示电路如图2.6所示:

图2.6显示电路

※7段数码管

●系统显示部分由一片74LS164和一片7段LED数码管组成,此部分用于显示系统发送报文的个数,当数字超过9时回到0。

※74LS164移位寄存器

●74LS164为移位过寄存器,主要作用是通过单片机串行输入来驱动数码管从而节省单片机的引脚个数。

2.7扩展ROM功能模块

EEPROM功能模块电路如图2.7所示:

图2.7EEPROM扩展ROM模块电路

※24C08引脚说明

●A0~A2:

地址输入;

●SDA:

串行地址/数据的I/O;

●SCL:

串行时钟输入;

●WP:

写保护输入;

※24C08简介

●24C08是电可擦除PROM,采用1024×8bit的组织结构及两线串行接口,遵循IIC总线协议。

电压可允许低至1.8V,待机电流和工作电流分别为1uA和1mA.24C08具有页写能力,每页为16字节。

※24C08作用

●扩展EEPROM主要是为了储存单片机常用的一些参数,如初始化SJA1000的参数等常数。

2.8CAN通信模块

CAN通信模块如图2.8.1所示:

图2.8.1CAN通信模块

※SJA1000简介

●SJA1000独立CAN控制器是PHILIPS公司PCA82C200CAN控制器(BasicCAN)的替代产品,它在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN,SJA1000完全支持具有很多新特性的CAN2.0B协议。

SJA1000的工作模式通过其内部的时钟分频寄存器(CDR)中的CAN模式位来选择,硬件复位时默认模式是BasicCAN工作模式。

●SJA100可以支持多种微处理器的时序特性,如Intel模式或Motorola模式。

SJA1000与微处理器的接口于非常简单,微处理器以访问外部存储器的方式来访问SJA1000。

在设计接口电路时,SJA1000的片选地址应与其它外部存储器的片选地址在逻辑上无冲突。

●SJA1000有2种模式可以供微处理器访问其内部寄存器,2种模式下的访问是有区别的。

这2种模式分别是复位模式和工作模式。

当硬件复位、或控制器掉线、或置位复位请求时,SJA1000进入复位模式。

当清除其内部控制寄存器(CR)中的复位请求位时,SJA1000进入工作模式。

有些内部的寄存器只能在复位模式下访问,有些寄存器只能在工作模式下访问,而有些寄存器在这2种模式下都可以访问。

●SJA1000内部寄存器分布于0~31连续的地址空间中,包括控制段和信息缓冲区。

控制段在初始化载入时可被编程来配置通讯参数(例如,波特率、位定时序等)。

微控制器也是通过这个段来控制CAN总线上的通讯状态。

信息缓冲区分为发送缓冲区和接收缓冲区。

微处理器将要发送的信息写入发送缓冲区,然后启动发送命令后,可进行报文的发送。

符合接收条件的接收到的信息放入接收缓冲区,微处理器可以读出这些信息并处理。

※SJA1000内部结构框图

●SJA1000内部结构框图如图2.8.2所示:

图2.8.1SJA1000内部结构框图

※SJA1000引脚说明

●SJA1000引脚功能如表2.8.3所示:

符号

引脚

说明

AD7-AD0

2,1,28-23

多路复用的地址/数据总线

ALE/AS

3

ALE输入信号(Intel模式),AS输入信号(Motorola模式)

CS

4

片选输入,低电平允许访问SJA1000

RD(E)

5

RD信号(Intel模式)或E使能信号(Motorola模式)

WR

6

WR信号(Intel模式)或RD/(WR)信号(Motorola模式)

CLKOUT

7

SJA1000产生的提供给控制器的时钟输出信号

Vss1

8

接地

XTAL1

9

输入到振荡器放大电路,外部震荡信号由此输入

XTAL2

10

振荡放大电路输出,时外部震荡信号时必须开路

MODE

11

模式选择输入:

1=Intel模式0=Motorola模式

VDD3

12

输出驱动的+5V电压源

TX0

13

从CAN输出驱动器0输出到物理线路上

TX1

14

从CAN输出驱动器1输出到物理线路上

Vss3

15

输出驱动器接地

INT

16

中断输出,用于向微控器发出中断信号

RST

17

复位输入,低电平有效,用于复位CAN接口

VDD2

18

输入+5V的比较电源

RX0,RX1

19,20

从物理的CAN总线输入到SJA1000输入比较器

VSS2

21

输入比较器接地端

VDD1

22

逻辑电路的+5V电压源

表2.8.3SJA1000引脚功能

※82C250简介

●82C250是CAN控制器与物理总线之间的接口,它最初是为汽车中的高速应用(达1Mbps)而设计的。

器件可以提供对总线的差动发送和接收功能。

82C250的主要特性如下:

■完全和ISO11898标准兼容

■高速(高达1Mbaud)

■在自动化环境中总线保护瞬变

■斜率控制降低射频干扰(RFI)

■不同的接收器都具有宽共模范围有很强的抗电磁干扰EMI的能力

■热保护

■对电池和地的短路保护

■低电流备用模式

■一个没有上电的节点不干扰总线

■至少可挂110个节点

※82C250功能框图

●82C250功能框图如图2.8.4所示:

图2.8.482C250功能框图

※82C250引脚说明

82C250引脚功能如表2.8.5所示:

标记

管脚

功能描述

TXD

1

发送数据输入

GND

2

接地

VCC

3

提供电压

RXD

4

接收数据输入

Vref

5

参考电压输出

CANL

6

低电平CAN电压输入/输出

CANH

7

高电平CAN电压输入/输出

RS

8

Slope电阻输入

表2.8.582C250引脚说明

3系统的软件设计

3.1CAN控制器初始化函数CANINI

该函数主要对SJA1000进行初始化,设置SJA1000的工作模式、通信波特率、验收滤波器、输出方式等。

初始化完成后,命令SJA1000转入工作状态,并检测其是否真正进入工作状态,如果有误则报警。

函数流程图如图3.1所示:

图3.1CAN控制器初始化流程图

3.2CAN接收函数CANREC

该函数读取SJA1000接收缓冲区中的有效数据,并将接收到的数据存入相应的数据区。

接收报文完毕后释放接收缓冲区,函数流程图如图3.2所示:

图3.2CAN接收函数流程图

3.3CAN发送函数TDATA

该函数首先检查控制器是否还在处理上一帧报文,如果已完成上一帧报文的发送,则向SJA1000发送缓冲区写入待发送的报文,并向SJA1000发启动发送命令,将报文发送出去。

函数流程图如图3.3所示:

图3.3CAN发送函数流程图

3.4主程序流程图

该函数主要用来调用其它函数完成相应工作,其中包括初始化变量标志位、初始化SJA1000、监控按键、显示等工作。

具体

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2