基于单片机的CAN实验系统设计(共30页)

上传人:文**** 文档编号:57840329 上传时间:2022-02-24 格式:DOC 页数:30 大小:1.34MB
收藏 版权申诉 举报 下载
基于单片机的CAN实验系统设计(共30页)_第1页
第1页 / 共30页
基于单片机的CAN实验系统设计(共30页)_第2页
第2页 / 共30页
基于单片机的CAN实验系统设计(共30页)_第3页
第3页 / 共30页
资源描述:

《基于单片机的CAN实验系统设计(共30页)》由会员分享,可在线阅读,更多相关《基于单片机的CAN实验系统设计(共30页)(30页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上机电与车辆学院毕业设计(论文)题 目:基于单片机的CAN实验系统设计专 业: 班 级: 姓 名: 学 号: 指导教师: 日 期: 2012年5月29日 目 录基于单片机的CAN实验系统设计摘要:现场总线是自动化技术发展的热点,它的出现标志着工业控制技术领域进入了一个新时代。本设计主要以AT89S51单片机为核心元件,再用SJA1000作为CAN的控制器和82C250作为CAN的收发器,从而组成CAN最小系统,完成CAN报文的发送和接收。设计中还要求输入和输出功能,在此设计中输入设备由两个开关和一个八位拨码开关组成,两个按钮开关主要是用来控制CAN报文的发送和接收,八位

2、拨码开关主要是完成CAN节点ID的输入,输出设备由一个7段LED数码管组成其功能是显示已发送CAN报文的个数。关键词:现场总线 CAN总线 单片机 前言 CAN(Controller Area Network)总线作为现场总线的一个分支,以其独特的设计思想、优良的性能和极高的可靠性越来越受到工业界的青睐。CAN从最初的汽车行业发展为现在工业中必不可少的现场总线之一。比如发动机管理系统、变速箱控制器、仪表装备、电子主干系统中均嵌入了CAN控制装置。控制局域网CAN为串行通信协议,能有效地支持具有很高安全等级的分布实时控制。CAN的应用范围很广,从高速的网络到低价位多路配线都可使用CAN。在汽车的

3、电子行业里,使用CAN连接发动机控制单元、传感器、防滑系统等,其传输速度可达1Mbps。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气窗等,用以代替接线配线装置。单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域。AT89S51单片机上集成了控制及信号处理等所需要的几乎所有的模块,以其低功耗,端口可灵活配置,支持JTAG端口可在线调试等特点将广泛应用在工业控制、通信及可便携电子产品中。本文将目前发展最为热的两个行业相结合,设计了一款以单片机为核心控制器件、基于CAN总线协议的实验开发板。本实验开

4、发板即适合学习单片机相关知识,也适合学习CAN总线,是一款初学电子设计者是最佳学习器件。在系统设计中综合运用了本科期所学的各类知识,如低频电子线路、模拟电字电路、数字电子电路、单片机、计算机网络、Protel、程序的编写、电路的仿真调试、原理图的绘制和布线等专业知识。我通过此毕业设计将本科所学的专业知识又重新复习了一遍,为以后走向工作岗位,完成用人单位交给我的任务打下了坚实的基础。1 总体设计方案1.1设计任务 本课题要求应用所学的专业知识如模拟电子技术、数字电子技术、传感器、单片机等内容,完成基于单片机的CAN实验系统的硬件和软件的设计,硬件电路的搭建,硬件和软件的仿真与调试,实现检测、控制

5、和显示功能。 本设计主要以AT89S51单片机为核心元件,再用SJA1000作为CAN的控制器和82C250作为CAN的收发器,从而组成CAN最小系统,完成CAN报文的发送和接收。设计中还要求输入和输出功能,在此设计中输入设备由两个开关和一个八位拨码开关组成,两个按钮开关主要是用来控制CAN报文的发送和接收,八位拨码开关主要是完成CAN节点ID的输入,输出设备由一个7段LED数码管组成其功能是显示已发送CAN报文的个数。 另外为了扩展AT89C51的ROM,本设计中用一片24C08EEPROM充当片外ROM以两加AT89S51的内存。为了保证整个系统的可靠性本设计采用硬件看门狗电路来访止程序跑

6、飞,其中硬件看门狗电路由一片DS1232来完成对单片机和CAN控制器SJA1000的复位工作。设计任务还包括以下方面:1、基于单片机的CAN实验系统的硬件电路设计; 2、基于单片机的CAN实验系统通信功能及部分实验项目的软件设计;1.2总体CAN网络设计框图本设计中CAN总线网络基本构成如下图 1.2所示:120CAN节点1CAN节点2CPUPCCAN控制器CAN收发器CAN控制器CPUCAN收发器CPUPC120 图 1.2 CAN网络基本结构传输线CAN总线网络中的传输线可以是普通明线、双绞线、同轴电缆和光纤,本设计中为了方便简单才用普通明线。终端电阻高频信号传输时,信号波长相对传输线较短

7、,信号在传输线终端会形成反射波,干扰原信号,所以需要在传输线末端加终端电阻,使信号到达传输线末端后不反射。各部分作用说明PC机是用来与CPU通信,可以完成对CPU程序的烧写和数据的传输CPU是用来对CAN控制器的初始化和CAN通信过程的控制以及显示等功能CAN控制器是整个CAN网络的核心器件,主要用来完成CAN协议的解析、CAN报文的形成等一细系列复杂的工作。CAN收发器是将CAN报文转成差动电平发送到CAN总线上和从CAN总线上接收CAN报文传给CAN控制器。1.3 CAN节点结构本设计中CAN系统节点的基本结构如图 1.3所示: 图 1.3 CAN节点基本结构总体说明 本设计主要由以下部分

8、机构成:微控制器89S51、CAN总线通信接口部分、CAN节点ID及按键输入部分、PC机通信部分、数码显示部分、EEPROM存储器等。 CAN总线通信接口部分采用的CAN通信控制器为SJA1000,CAN总线驱动器为82C250。为了使电路尽量简单,电路中没有采用光耦进行电气隔离。SJA1000的AD0AD7连接到89S51单片机的P0中,CS连接到89S51的P2.1,P2.1为0的CPU片外存储器地址可选中SJA1000,CPU通过这些地址对SJA1000执行相应的读/写操作。SJA1000的RD、WR。ALE分别与89S51的对应引脚相连,INT接89S51的INT0,89S51也可通过

9、中断方式访问SJA1000。 CAN节点ID输入电路部分由一片74LS244、一个81K的排阻我一个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芯片,可用于存

10、储系统的初始化参数或用户自定义数据。DS1232提供系统所需的高低电平复位信号。2 系统的硬件设计2.1 电源模块设计 本设技中的电源由220V交流电供给,经过降压、整流、滤波、稳压、滤波得到稳定的+5V电源。总电路如图 2.1所示:图2.1 电源模块电路供电 整个电路由220V、50Hz市电供电,方便、价廉。降压 220V、50Hz交流电通过10:1的变压器达到降压的效果。 图中电压表测量的是电压的有效值,。 通过10:1降压后理论上应得到峰值为22V的交流电压,实际中只得到峰值为 的电压,这是由于变压器自身的阻抗所导致的。滤波 C1为稳压器输入侧的滤波电容,其作用是将整流桥输出的直流脉动电

11、压转换成纹波较小的直流电压。C1滤波电容在工作中由充电和放电两部分组成。为了取得比较好的滤波效果,要求电容的放电时间常数大于充电周期(35)倍。对于桥式整流电路,电容的充电周期为交流电的半周期,放电时间常数为RLC,因此C1滤波电容值可以采用以下方法估算C(35)T/2RL得到C13300uF。 C2、C3作用是减少纹波、消振、抑制高频脉冲干扰,可采用0.10.47uF的陶瓷电容。 C4为稳压器输出侧滤波电容,起到减少纹波的作用,根据经验,一般电容值选取47470uF。稳压 7805为三端固定式稳压器,输出电压为+5V 稳压器的输入电压V有一定的范围,V可由下式确定:VminVVmaxVmin

12、为稳压器的最小输入电压,Vmax为稳压器最大输入电压。7805和Vmax分别为7.2V和35V。过流保护和电源指示 FU1为熔断器,防止系统电流过大烧坏电路 D1为发光二极管,起指示电源作用 R1为限流电阻,保护LED不被烧坏2.2 单片机最小系统 整个系统的控制核心部分由一片AT89S51单片机组成,其最小系统如图 2.2所示:图 2.2 单片机最小系统单片机的选择 AT89S51为 ATMEL所生产的可电气烧录清洗的8051相容单芯片,其内部程序代码容量为4KBD的FLASH,市场上容易买到。 AT89S51主要功能列举如下: 为一般控制应用的 8 位单芯片 晶片内部具时钟振荡器(传统最高

13、工作频率可至 12MHz) 内部程式存储器(ROM)为 4KB 内部数据存储器(RAM)为 128B 外部程序存储器可扩充至 64KB 外部数据存储器可扩充至 64KB 32 条双向输入输出线,且每条均可以单独做 I/O 的控制 5 个中断向量源 2 组独立的 16 位定时器 1 个全多工串行通信端口 8751 及 8752 单芯片具有数据保密的功能 单芯片提供位逻辑运算指令复位电路 单片机最小系统中采用上电自动复位和手动复位相接合。上电后由于电容的充电作用使单片机RSET引脚不会立即变成高电平,刚开始处于低电平状态完成复位工作,电容充电完成后RSET回到高电平,单片机正常工段。或者人工手动按

14、下复位开关也可完成复位工作。时钟电路 单片机的时钟由外部晶振提供,晶振可提供非常稳定的保证单片机的正常工段。 晶振周期之所以选用11.0592Hz是因为最小晶振频率=波特率3842SMOD这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。电源电路 单片机的电源由前面的稳压电路提供,电压为+5V。二极管作用 在单片机短暂下电又上电时,可以让复位电容迅速放电,然后让单片机复位。如果没有这个二极管,电容不能迅速放电,再上电时不能保证单片机正确复位。2.3 MAX232组成的单片机和PC机通信电路 MAX232组成的单片机和PC机串口通信电路如图2.3 所示图2.3 PC通信

15、接口 如图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公司生产的微处理

16、器监控电路,采用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相连时,

17、只有当VCC跌落至4.5V以下时才产生 RST和RST信号。当电源恢复正常后, RST和RST信号至少保持250ms,以保证微处理器的正常复位。 在DS1232内部集成有看门狗定时器,当DS1232的ST端在设置的周期时间内没有有效信号到来时,DS1232的RST和RST端将产生复位信号以强迫微处理器复位。这一功能对于防止由于干扰等原因造成的微处理器死机是非常有效的。看门狗定时器的定时时间由DS1232的TD引脚确定。看门狗定时器的周期输入信号ST可以从微处理器的地址信号、数据信号或控制信号中获得,不论哪种信号都必须能够周期性的访问DS1232,本设计中使用ALE信号。2.5 键盘输入电路模块

18、 系统键输入电路如图2.5所示:图2.5 键盘输入电路键盘输入组成 键盘输入由一片74LS244、一个810K的排电阻、一个或门和一个8位拨动开关构成,74LS244的驱动输出端也与AT89S51的P0口相连,其2G引脚与AT89S51的P2.0脚相连。CPU通过P0中可读入用户设定的CAN节点ID值。读入8位值,低四位为节点自身ID,高四位为点到点通信接收节点的ID,ID为0000H时表示广播,所以只能设定15个ID。上拉电阻的作用 810K的上拉电阻保证了开关的电平的正确输入,当拨码开关打到左边时单片机可从74LS244端中读入1,当拨码开关打到右边时单片机可从74LS244端中读入0。若

19、不加上拉电阻拨码开关打到右边时读入电平将不能确定。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功能模块

20、 EEPROM功能模块电路如图2.7所示:图2.7 EEPROM扩展ROM模块电路24C08引脚说明 A0A2:地址输入; SDA:串行地址/数据的I/O; SCL:串行时钟输入; WP:写保护输入;24C08简介24C08是电可擦除PROM,采用10248bit的组织结构及两线串行接口,遵循IIC总线协议。电压可允许低至1.8V,待机电流和工作电流分别为1uA和1mA.24C08具有页写能力,每页为16字节。24C08作用 扩展EEPROM主要是为了储存单片机常用的一些参数,如初始化SJA1000的参数等常数。2.8 CAN通信模块 CAN通信模块如图2.8.1所示:图2.8.1 CAN通信

21、模块SJA1000简介SJA1000独立CAN控制器是PHILIPS公司PCA82C200CAN控制器(BasicCAN)的替代产品,它在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN,SJA1000完全支持具有很多新特性的CAN2.0B协议。SJA1000的工作模式通过其内部的时钟分频寄存器(CDR)中的CAN模式位来选择,硬件复位时默认模式是BasicCAN工作模式。SJA100可以支持多种微处理器的时序特性,如Intel模式或Motorola模式。SJA1000与微处理器的接口于非常简单,微处理器以访问外部存储器的方式来访问SJA1000。在设计接口电路时,SJ

22、A1000的片选地址应与其它外部存储器的片选地址在逻辑上无冲突。SJA1000有2种模式可以供微处理器访问其内部寄存器,2种模式下的访问是有区别的。这2种模式分别是复位模式和工作模式。当硬件复位、或控制器掉线、或置位复位请求时,SJA1000进入复位模式。当清除其内部控制寄存器(CR)中的复位请求位时,SJA1000进入工作模式。有些内部的寄存器只能在复位模式下访问,有些寄存器只能在工作模式下访问,而有些寄存器在这2种模式下都可以访问。SJA1000内部寄存器分布于031连续的地址空间中,包括控制段和信息缓冲区。控制段在初始化载入时可被编程来配置通讯参数(例如,波特率、位定时序等)。微控制器也

23、是通过这个段来控制CAN总线上的通讯状态。信息缓冲区分为发送缓冲区和接收缓冲区。微处理器将要发送的信息写入发送缓冲区,然后启动发送命令后,可进行报文的发送。符合接收条件的接收到的信息放入接收缓冲区,微处理器可以读出这些信息并处理。SJA1000内部结构框图 SJA1000内部结构框图如图2.8.2所示:图2.8.1 SJA1000内部结构框图SJA1000引脚说明SJA1000引脚功能如表2.8.3所示:符号引脚说明AD7-AD02,1,28-23多路复用的地址/数据总线ALE/AS3ALE输入信号(Intel模式),AS输入信号(Motorola模式) CS4片选输入,低电平允许访问SJA1

24、000RD(E)5RD信号(Intel模式)或E使能信号(Motorola模式)WR6WR信号(Intel模式)或RD/(WR)信号(Motorola模式)CLKOUT7SJA1000产生的提供给控制器的时钟输出信号Vss18接地XTAL19输入到振荡器放大电路,外部震荡信号由此输入XTAL210振荡放大电路输出,时外部震荡信号时必须开路MODE11模式选择输入:1=Intel模式 0=Motorola模式VDD312输出驱动的+5V电压源TX013从CAN输出驱动器0输出到物理线路上TX114从CAN输出驱动器1输出到物理线路上Vss315输出驱动器接地INT16中断输出,用于向微控器发出中

25、断信号RST17复位输入,低电平有效,用于复位CAN接口VDD218输入+5V的比较电源RX0,RX119,20从物理的CAN总线输入到SJA1000输入比较器VSS221输入比较器接地端VDD122逻辑电路的+5V电压源表2.8.3 SJA1000引脚功能82C250简介82C250是CAN控制器与物理总线之间的接口,它最初是为汽车中的高速应用(达1Mbps)而设计的。器件可以提供对总线的差动发送和接收功能。82C250的主要特性如下: 完全和 ISO11898 标准兼容 高速(高达1Mbaud) 在自动化环境中总线保护瞬变 斜率控制降低射频干扰(RFI) 不同的接收器都具有宽共模范围有很强

26、的抗电磁干扰EMI 的能力 热保护 对电池和地的短路保护 低电流备用模式 一个没有上电的节点不干扰总线 至少可挂110个节点82C250功能框图 82C250功能框图如图2.8.4所示:图2.8.4 82C250功能框图 82C250引脚说明82C250引脚功能如表2.8.5所示:标记管脚功能描述TXD1发送数据输入GND2接地VCC3提供电压RXD4接收数据输入Vref5参考电压输出CANL6低电平CAN电压输入/输出CANH7高电平CAN电压输入/输出RS8Slope电阻输入 表 2.8.5 82C250引脚说明3 系统的软件设计3.1 CAN控制器初始化函数CANINI该函数主要对SJA

27、1000进行初始化,设置SJA1000的工作模式、通信波特率、验收滤波器、输出方式等。初始化完成后,命令SJA1000转入工作状态,并检测其是否真正进入工作状态,如果有误则报警。函数流程图如图 3.1所示:图 3.1 CAN控制器初始化流程图 3.2 CAN接收函数CANREC 该函数读取SJA1000接收缓冲区中的有效数据,并将接收到的数据存入相应的数据区。接收报文完毕后释放接收缓冲区,函数流程图如图 3.2所示: 图 3.2 CAN接收函数流程图3.3 CAN发送函数TDATA 该函数首先检查控制器是否还在处理上一帧报文,如果已完成上一帧报文的发送,则向SJA1000发送缓冲区写入待发送的

28、报文,并向SJA1000发启动发送命令,将报文发送出去。函数流程图如图 3.3 所示:图 3.3 CAN发送函数流程图3.4 主程序流程图 该函数主要用来调用其它函数完成相应工作,其中包括初始化变量标志位、初始化SJA1000、监控按键、显示等工作。具体流程图如图 3.4所示:图 3.4 总程序流程图3.5 总程序清单 IDADDR EQU 0200H ;CAND控制品SJA1000片外存储器起始地址为0100HMODE EQU 0100H ;74LS244片外存储器地址为0200HCMR EQU 0101H ;AT89S51晶振为12MHzSR EQU 0102HIR EQU 0103HIE

29、R EQU 0104HBTR0 EQU 0106HBTR1 EQU 0107HOCR EQU 0108HALC EQU 010BHECC EQU 010CHEWLR EQU 010DHRXERR EQU 010EHTXERR EQU 010FHTXB EQU 0110HRXB EQU 0110HRXCMD EQU 0115HRTRDLC EQU 0110HACR EQU 0110HAMR EQU 0114HRMC EQU 011DHRBSA EQU 011EHCDR EQU 011FHCBFRTP EQU 30H ;CPU接收或发送报文缓冲区首地址FRNUM EQU 40H ;接收报文数REC

30、OK BIT 00H ;接收报文标志,RECOK为1表示收到一帧有效报文RFRM BIT 01H ;回送报文标志,RFRM为1表示该帧接收的报文应该返回PUSHK1 BIT 02H ;按K1键标志,PUSHK1为1表示K1键按下PUSHK2 BIT 03H ;按K2键标志,PUSHK2为1表示K2键按下 ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#6FH ;SP初始化 MOV R0,#6FH CLR A ;清零片内RAM,初始化变量和标志CLAIR: MOV R0,A DJNZ R0,CLAIR ;SJA1000初始化 LCALL CANINI MOV

31、 P1,#0FFH MOV IE,#00H ;采用查询方式工作,关闭所有中断 MOV SCON,#00H ;串行中选用移位寄存器方式,用于显示;主程序监控流程MLOOP: LCALL KEYIN ;按键扫描 JNB PUSHK1,LOOP1 LCALL TSDATA ;K1键按下,发送一帧点到点报文 CLR PUSHK1LOOP1: JNB PUSHK2,LOOP2 LCALL TSDATA ;K2键按下,发送一帧点到点报文 CLR PUSHK2LOOP2: LCALL CANREC JNB RECOK,LOOP3 LCALL DISP ;数码管显示加1后的接收报文数 CLR RECOK JN

32、B RFRM,LOOP3 LCALL TRDATA ;返回接收到的报文 CLR RFRMLOOP3: SJMP MLOOP;CAN控制器查询接收子程序CANREC: MOV DPTR,#SR ;状态寄存器地址 MOVX A,DPTR ANL A,#0C3H ;读取总线关闭、错误状态、接收溢出、有数据等位状态 JNZ PROC0 RET ;无上述状态,结束PROC0: JNB ACC.7,PROCIBUSERR: MOV DPTR,#IR ;IR中断寄存器,出现总线关闭 MOVX A,DPTR ;读中断寄存器,清除中断位 MOV DPTR,#MODE ;方式寄存器地址 MOV A,#08H MO

33、VX DPTR,A ;将方式寄存器复位请求位清0 RET NOPPROCI: MOV DPTR,#IR ;总线正常 MOVX A,DPTR ;读取中断寄存器,清除中断位 JNB ACC.3,OTHEROVER: MOV DPTR,#CMR ;数据溢出 MOV A,#0CH MOVX DPTR,A ;在命令寄存器中清除数据溢出和释放接收缓冲区 RET NOPOTHER: JB ACC.0,RECE ;IR.0=1,接收缓冲区有数据 LJMP RECOUT ;IR.0=0,接收缓冲区无数据,退出接收 NOPRECE: MOV DPTR,#RXB ;读取并保存接收缓冲区的数据 MOV R1,#CBF

34、RTP ;CPU片内接收缓冲区首地址 MOVX A,DPTR ;读取数据帧格式字 MOV R1,A ;保存 ANL A,#0FH ;截取低4位是数据场长度(08) ADD A,#4 ;加4个字节的标识符(ID) MOV R6,ARDATA0: INC DPTR INC R1 MOVX A,DPTR MOV R1,A DJNZ R6,RDATA0 ;循环读取与保存;若接收ID前两个字节为5555表明是对方返回的报文,RFRM保持清0,接收报文不回送 MOV A,CBFRTP+1 CJNE A,#55H,RDATA1 MOV A,CBFRTP+2 CJNE A,#55H,RDATA1 SJMP R

35、DATA2RDATA1: SETB RFRM ;若接收ID前两个字节不是5555则应返回该帧报 ;文,FRRM置1 RDATA2: INC FRNUM ;接收报文加1 MOV A,FRNUM CJNE A,#10,RDATA3 MOV FRNUM,#0 ;接收报文满10时,又从0开始计数RDATA3: SETB RECOK ;接收报文标志置1 MOV DPTR,#CMR MOV A,#04H ;释放CAN接收缓冲区 MOVX DPTR,ARECOUT: MOV DPTR,#ALC ;释放仲裁丢失捕捉寄存器和错误捕捉寄存器 MOVX A,DPTR MOV DPTR,#ECC MOVX A,DPT

36、R NOP RET;按设定ID值向指定节点发送一帧报文TSDATA: MOV CBFRTP,#88H MOV DPTR,#IDADDR MOVX A,DPTR ;从74LS244读入节点设置的ID值 ANL A,#0F0H ;高半字节为接收节点ID MOV CBFRTP+1,#0 MOV CBFRTP+2,A MOVX A,DPTR ;从74LS244读入节点设置的ID值 ANL A,#0FH ;低半字节为节点自身ID MOV CBFRTP+3,#0 MOV CBFRTP+4,A LCALL TDATA RET;向CAN总线上其他节点发送一帧广播报文TBDATA: MOV CBFRTP,#88

37、H MOV CBFRTP+1,#0 ;广播报文ID为0000H MOV CBFRTP+2,#0 MOV DPTR,#IDADDR MOVX A,DPTR ;从74LS244读入节点设置的ID值 ANL A,#0FH ;低半字节为节点自身ID MOV CBFRTP+3,#0 MOV CBFRTP+4,A LCALL TDATA RET;向发送报文节点返回接收到的报文TRDATA: MOV CBFRTP+1,#55H ;返回报文给发送节点时,将前两个字节的ID设置为5555H MOV CBFRTP+2,#55H ;5555H可作为判断接收报文是否返回报文的标志 LCALL TDATA RET;CA

38、N控制器发送子程序TDATA: MOV DPTR,#SR MOVX A,DPTR JB ACC.4,TDATA ;判断是否正在接收,1:一正在接收TS20: MOVX A,DPTR JNB ACC.3,TS20 ;判断先前发送是否成功,1:成功TS21: MOVX A,DPTR JNB ACC.2,TS21 ;判断发送缓冲区是否锁定,0:锁定TS22: MOV DPTR,#TXB ;将CPU报文发送缓冲区数据送往CAN发送缓冲区 MOV R1,#CBFRTP MOV A,R1 MOVX DPTR,A ANL A,#0FH ADD A,#4 MOV R6,AMTBS: INC R1 INC DP

39、TR MOV A,R1 MOVX DPTR,A DJNZ R6,MTBS MOV DPTR,#CMR MOV A,#01H MOVX DPTR,A ;启动发送 RET;CAN控制器初始化子程序CANINI: MOV DPTR,#MODE ;方式寄存器 MOV A,#01H ;进入复位模式,对SJA1000进行初始化 MOVX DPTR,A MOV DPTR,#CMR ;时钟分频寄存器 MOV A,#88H ;选择PeliCAN模式,关闭时钟输出CLKOUT MOVX DPTR,A MOV DPTR,#IER ;中断允许寄存器 MOV A,#0DH ;开放发送中断、溢出中断和错误警告中断 MOV

40、X DPTR,A MOV DPTR,#AMR ;接收屏蔽寄存器 MOV R6,#4 MOV A,#0 ;接收屏蔽寄存器都参与滤波AMRINI: MOVX DPTR,A ;接收屏蔽寄存器器赋值 INC DPTR DJNZ R6,AMRINI MOV DPTR,#IDADDR MOVX A,DPTR ;从74LS244读入节点设置的ID值 ANL A,#0FH ;低半字节为节点自身ID MOV R6,A MOV DPTR,#ACR ;接收代码寄存器 MOV A,#0 ;ACR0和ACR1存储接收广播报文时用的ID为0000H MOVX DPTR,A ;接收代码寄存器ACR0初值 INC DPTR

41、MOVX DPTR,A ;接收代码寄存器ACR1初值 INC DPTR ;ACR2和ACR3存储接收数据报文时用的ID为节点自身ID MOVX DPTR,A ;接收代码寄存器ACR2初值 INC DPTR MOV A,R6 MOVX DPTR,A ;接收代码寄存器ACR3初值 MOV DPTR,#BTR0 ;总线定时寄存器0 MOV A,#07H MOVX DPTR,A MOV DPTR,#BTR1 ;总线定时寄存器1 MOV A,0FFH ;设置波特率40kbps MOVX DPTR,A MOV DPTR,#OCR ;输出控制寄存器 MOV A,#0AAH MOVX DPTR,A MOV D

42、PTR,#RBSA ;接收缓存器起始地址寄存器 MOV A,#0 ;设置接收缓存器FIFO起始地址为0 MOVX DPTR,A MOV DPTR,#TXERR ;发送错误计数寄存器 MOV A,#0 ;消除发送错误计数寄存器 MOVX DPTR,A MOV DPTR,#ECC ;错误代码捕捉寄存器 MOVX A,DPTR ;清除错误代码捕捉寄存器 MOV DPTR,#MODE ;方式寄存器 MOV A,#00H ;设置双滤波接收方式,并返回工作状态 MOVX DPTR,A RETKEYIN: ORL P1,#0C0H MOV A,P1 ANL A,#0C0H ;从P1.6和P1.7读入K1和K

43、2的状态 CJNE A,#0C0H,KEYIN1 ;有键按下转KEYIN1 NOP RETKEYIN1: LCALL D20MS ;延时20ms,去抖动 MOV A,P1 ANL A,#0C0H CJNE A,#0C0H,KEYIN2 RETKEYIN2: CJNE A,#00H,KEYIN21 SJMP KEYIN3 ;若K1我K2同时按下,本次按键无效KEYIN21: MOV C,ACC.6 ;将按键状态保存在PUSHK1和PUSHK2标志中 MOV PUSHK1,C MOV C,ACC.7 MOV PUSHK2,CKEYIN3: MOV A,P1 ANL A,#0C0H CJNE A,#

44、0C0H,KEYIN3 ;判断按键是否释放 RETD20MS: MOV R7,#200 ;延时20ms(fosc=12MHz)DAY1: MOV R6,#50DAY2: DJNZ R6,DAY2 DJNZ R7,DAY1 RETDELAY: MOV R6,#250 ;延时1msDE1: NOP NOP DJNZ R6,DE1 RET;显示当前接收报文数(1位表示)DISP: MOV A,FRNUM ;将当前接收报文数送入A中 MOV DPTR,#LEDTAB MOVC A,A+DPTR ;查表得笔型码 MOV SBUF,A ;将笔型码送入74LS164中,马动显示 JNB T1,$ CLR T

45、1 RET;LED显示笔型码表(共阴极数码管)LEDTAB: DB 0FCH,60H,0DAH,0E2H,66H ;0,1,2,3,4 DB 0B6H,0BEH,0E0H,0FEH,0F6H ;5,6,7,8,9 NOP RET END4 总结4.1 结束语 本设计主要以AT89S51单片机为核心元件,再用SJA1000作为CAN的控制器和82C250作为CAN的收发器,从而组成CAN最小系统,完成CAN报文的发送和接收。设计中还要求输入和输出功能,在此设计中输入设备由两个开关和一个八位拨码开关组成,两个按钮开关主要是用来控制CAN报文的发送和接收,八位拨码开关主要是完成CAN节点ID的输入,

46、输出设备由一个7段LED数码管组成其功能是显示已发送CAN报文的个数。本文将目前发展最为热的两个行业相结合,设计了一款以单片机为核心控制器件、基于CAN总线协议的实验开发板。本实验开发板即适合学习单片机相关知识,也适合学习CAN总线,是一款初学电子设计者是最佳学习器件。在系统设计中综合运用了本科期所学的各类知识,如低频电子线路、模拟电字电路、数字电子电路、单片机、计算机网络、Protel、程序的编写、电路的仿真调试、原理图的绘制和布线等专业知识。我通过此毕业设计将本科所学的专业知识又重新复习了一遍,为以后走向工作岗位,完成用人单位交给我的任务打下了坚实的基础。本课题要求应用所学的专业知识如模拟电子技术、数字电子技术、传感器、单片机等内容,完成基于单片机的CAN实验系统的硬件和软件的设计,硬件电路的搭建,硬件和软件的仿真与调试,实现检测、控制和显示功能。使学生了解和掌握应用电子系统设计开发的内容、过程、步骤和方法。为将来从事电子产品设计、制造等方面工作打下一定基础。由于时间和篇幅的原因本设计中的一些细节内容没有详细的设计和介绍,如:扩展的ROM为24C08,24C08遵循的是IIC总线,要想驱动它还需要另外编写IIC总线驱动程序,因为本设计主要部分是CAN总线,所以24C08的驱动程序也就没有给出!再如本设计中的下载口是通过DB9与PC机连接的,而驱动DB9又需要一个RS23

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!