资源描述
北京邮电大学毕业设计
CAN总线通信研究与软件设计
摘 要
现场总线,又称现场网络,是一种工业数据通信总线。在当今时代,现场总线的发展速度非常之快,它的出现为工业的发展提供了非常好的技术保障,为分布式控制系统中的各个节点之间的数据通信提供了非常好的技术保障。CAN总线是一种半双工通信的串行通信网络,属于现场总线的一种,它的数据通信功能强大,能够有效的支持分布式控制或实时控制系统。相比与其它现场总线,CAN总线具有通信快、效率高、易实现、可靠性高等优势,现在已经在很多领域中都得到了应用。
本文主要研究CAN总线通信技术的原理及其技术特点,研究了CAN通信的具体流程,包括初始化流程以及发送接收数据流程。运用C语言编写相关单片机程序以及CAN的通信程序实现通信。
本次软件设计是在keil4开发环境下进行的,主要编写了串口程序,SPI接口程序以及CAN的初始化、发送和接收数据程序,并与相关硬件设计结合,实现两个CAN节点之间的相互的数据通信。
关键词:现场总线;CAN总线;软件设计;通信
CAN bus communication research and software design
Abstract
Field bus, also called the network, is a kind of industrial data communication bus. In today's era, the development of field bus speed is very fast, it provides a very good technical support for the development of industry, for data communication between each node in distributed control system provides a very good technical support. CAN bus is a half-duplex communication serial communication network, belongs to a kind of fieldbus, it has powerful data communication function, CAN effectively support distributed control or real-time control system. Compared with other field bus, CAN bus communication is fast, high efficiency, easy realize and high reliability advantages, now has been applied in many fields.
In this paper, the principle of the CAN bus communication technology and its technical characteristics, research the CAN communication process, including the initialization process and the process to send and receive data. Using C language to write the microcontroller program, and CAN communication program to realize communication.
The software design is under the environment of keil4 development, mainly to write a serial program, SPI interface program and CAN the initialization, send and receive data, and combined with relevant hardware design, the two CAN achieve data communication between nodes.
Key words: The fieldbus;CAN bus; The software design;Communication;
ii
目 录
摘 要 i
Abstract ii
1 绪论 1
1.1 课题背景 1
1.2 选题目的 1
1.3 选题意义 1
1.4 本文结构 2
2 相关技术介绍 3
2.1 CAN总线介绍 3
2.1.1 CAN总线技术简介 3
2.1.2 CAN总线的发展概况 4
2.1.3 CAN总线的特点 4
2.1.4 CAN总线协议介绍 5
2.2 单片机介绍 6
2.2.1 单片机硬件特性 7
2.2.2 单片机发展状况 7
2.2.3 单片机设计 8
2.3 开发环境及开发语言介绍 10
2.3.1 keil uvision4开发环境简介 10
2.3.2 开发语言介绍 11
3 系统设计 13
3.1 设计目的 13
3.2 设计原理及方案 13
3.2.1 CAN总线通信原理 13
3.2.2 软件设计方案 13
3.3 软件设计流程图 14
3.3.1 主程序流程图 14
3.3.2串口设计流程图 15
3.3.2 CAN初始化流程图 16
3.3.3 发送数据子程序流程图 18
3.3.4 接收数据子程序流程图 18
4 系统实现 20
4.1 串口实现 20
4.2 SPI接口实现 21
4.3 MCP2515初始化 24
4.4 CAN发送和接收数据实现 26
5 测试及设计成果分析 29
5.1 硬件连接 29
5.2 下载程序到单片机 29
5.3 结果分析 31
结 论 34
参考文献 35
致 谢 36
外文原文 37
中文翻译 44
1 绪论
1.1 课题背景
在现如今科技日益发达的时代,现场总线通信技术已经得到了快速发展,在各个领域中都得到了广泛应用与好评,在这其中,尤其以CAN总线为典型代表。CAN中文名称为控制器局域网,是目前世界上应用领域最广的现场总线之一。CAN作为一种全双工通信的串行数据通讯总线,具有其它现场总线不具有的优势:通信速率高,有独特的设计和自己的规范,具有较高抗电磁干扰性,最重要的一点是它能够检测出在数据通讯中产生的任何错误。即使当信号传输距离非常远,比如达到10公里甚至以上时,CAN的传输速率仍可达到惊人的50kbps。CAN拥有先进的技术,并且可靠性高、功能完善、实用性强,目前在各个自动化控制领域中都以离不开CAN,比如:交通运输业、汽车业、工业控制、电力系统、自动控制等都已经随处可见CAN的应用。
在20世纪80年代初期,欧洲汽车产业发展迅猛,当时为了解决汽车控制装置之间的数据传输问题,德国一家名为博世的公司提出了CAN总线这一技术,解决了设备间的通信问题。在当时,由于汽车业发展迅速,使用汽车的用户越来越多,人们对于汽车的功能需求也越来越复杂,而要想实现这些功能,就必须解决信号线需求庞大以及电子装置间复杂的通信等问题。因此博世公司在这个构想的基础上设计出了一种通信总线,并取名为CAN总线。CAN总线刚刚问世不久,英特尔公司就生产出了第一个CAN控制器,此后经过不断地发展,CAN已经有了自己的国际标准,并且已经在很多领域都取得了广泛的应用。
1.2 选题目的
CAN总线是德国博世公司为解决汽车控制设备之间的数据通信而开发的一种串行数据通信协议,它采用全双工通信技术,通信距离远,通信速率高,速率最高可达到1Mbps。由于CAN的高性能和它的可靠性,CAN已经在越来越多的领域中使用和发展,利用CAN总线进行数据通信非常便捷快速稳定,CAN总线发展的如此迅速,研究CAN总线对它的进步有很大的意义,因此本文就针对CAN总线通信进行研究和探讨。
本次毕业设计CAN总线通信系统设计主要实现两个CAN节点之间的数据通信功能。通过进行这个设计来深入的了解和掌握基于单片机的CAN总线的通信原理及通信功能,体验CAN数据通信的强大以及它的高效、便捷等优点。
1.3 选题意义
现场总线通信是现今各个领域中应用广泛且通信效果好的一种通信技术,生命力强大。现场总线是一种能够进行双向数据通信的、网络智能化的通信技术。现场总线通信系统采用双绞线、多回路的全数字化信息进行数据传输,大大节省了整个系统的成本,提高了整个系统的可靠性和抗干扰能力。另外,现场总线还具有可互连和可互操作的优点,可对各个设备的通信进行很好地梳理。这更加提高了它的通信功能和通信的实时性。现场总线通信已经成为了非常普遍的通信技术。
CAN总线即是一种现场总线,具有现场总线的优点,同时又具有自身的优势。CAN总线具有成本低、效率高、实时性高和可靠性高的特点,这些特点使其已经成为在全世界范围内得到广泛使用的现场总线之一。由于CAN总线具有先进的通信技术,它的应用已经不再局限于汽车工业,而是已经被广泛应用到交通运输、医疗等各个领域。
研究CAN总线通信对我们更深入的了解CAN总线,掌握CAN总线的通信原理和通信协议,进一步的学习CAN总线,设计成一个CAN总线的通信系统有很大的帮助。研究CAN总线通信让我们了解CAN总线在各个生活领域当中的具体应用都具有非常大的价值,让我们对CAN总线目前的发展状况有明确的认识,这更有利于CAN总线通信技术今后的发展,有利于工业控制系统在计算机领域中的发展。
1.4 本文结构
本文拟从以下几个方面介绍CAN总线通信系统及本次相关设计:
1. 第一章是绪论,介绍课题背景、选题目的以及选题意义。
2. 第二章是对本次设计所用到的相关技术和原理的介绍,包括CAN总线的基本概念、CAN总线特点以及CAN总线在当今国内外的发展现状进行介绍,本次设计使用的单片机设计部分简单介绍,还有对本次软件开发环境及相关技术的介绍。
3. 第三章分析CAN总线通信原理、本次软件设计方案以及软件设计的流程图。
4. 第四章是本次软件设计的具体模块设计,包括串口设计,SPI设计以及CAN通信设计。
5. 第五章是本次设计的设计成果展示。
2 相关技术介绍
2.1 CAN总线介绍
CAN是指控制器局域网络,是由著名的德国博世公司在研发汽车通信设备时想象出来并开发成的一种通信协议,CAN属于现场总线的一种,随着不断发展,现如今CAN已经有了自己的国际标准,这是相比于其它总线的一个巨大优势,CAN已经成为当今世界各个领域中应用最广泛的现场总线之一。CAN总线通信协议的发展非常迅速,已经成为北美和西欧在汽车计算机和嵌入式工业领域中的主要通信协议,在欧洲已经发展为汽车网络的标准协议。
在上世纪80年代,随着工业技术的不断发展,汽车工业得到了快速的发展,人们对汽车的使用越来越多,功能需求也越来越广,这就出现了一系列问题,比如电子控制系统间的数据通信问题、线束多的问题等,为了解决这些问题适应广大汽车用户的需求从而提出了CAN总线的构想,发明了CAN总线通信技术。因为CAN总线通信协议性能非常高又非常可靠,随着不断的发展,CAN总线已经被广泛地应用到工业、航空航天、医疗、交通等各个方面。
2.1.1 CAN总线技术简介
CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。CAN总线系统中的位仲裁,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了,所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。
CAN具有较高的效率是因为CAN总线仅仅被那些发出请求的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证通信的稳定性和正确性。
在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中,不管每个节点是否向总线发出请求,都对每个节点按最大时间进行分配。因此,不论其是立即进行总线存取或在一特定时间进行总线存取,总线都可以被分配给每个站,这将保证总线数据读取时有明确的总线分配。在第二种方法中,总线按照每个站传输数据的请求按需分配。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。这两种CAN实现总线分配的方法,可保证当不同的站向总线发出传输请求时,明确地对总线进行分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的冲突问题。
CAN总线是现场总线的一种,它是一种比其它现场总线通信性更强的串行通信网络,它具有通信便捷,通信实时性强,可靠性高,通信功能强大等特点,跟其它的现场总线相比,CAN总线通信具有下列优势:
1. CAN节点之间的通信功能更强
在CAN的通信中,数据发送和数据接收都是有优先级之分的,系统中各节点在通信时的发送和接收都要根据缓冲器的优先级发送数据。与其他现场总线不同,CAN通信协议编码是对CAN通信数据块直接进行编码,这样编码的好处是使CAN通信功能更快捷可靠,更有利于需求。如果有特殊需要,还可以使不同的节点同时接收到相同的数据。
2. CAN总线有错误检测的功能,且开发周期短
CAN收发器有两个输出端,即收发高端和收发低端,高端的状态只能是高电平,同样低端的状态是低电平。当通信中多个节点同时向总线发送数据时,如果有错误发生,也不会出现总线短路的情况。此外CAN节点还有一项其它现场总线不具备的功能,就是假如发生严重的错误,它可以自动停止输出数据,以免造成总线上其他节点的数据结果不正确,这就可以保证总线不会处于“死锁”状态。而且,CAN相比于其它现场总线具有更完善更先进的通信协议,系统开发难度较低,开发周期短。
3. CAN总线是最有发展潜力的现场总线
CAN总线具有比其它现场总线更高效的性能,利用CAN总线实现数据通信功能更便捷、更可靠、并且实时性更强,目前CAN总线的使用已经越来越广泛,技术发展也越来越成熟。一开始CAN总线是为了解决汽车中设备间的通信问题而发明出来的,因此CAN总线应用最广泛的领域就是汽车领域,随着不断发展,现在一些世界著名的汽车品牌,如奥迪、奔驰、宝马等都运用CAN总线通信技术。现在它已经不单单应用在汽车领域,交通运输、机械、医疗、电子设备等领域也有了巨大的发展,可以说CAN总线已经成为了应用最广泛且最有发展潜力的通信总线。
4. CAN总线已有自己的国际标准
CAN总线自从问世后就在汽车领域中得到了广泛的应用与好评,随着不断的发展,CAN在其它领域中的使用也越来越广泛,并在1993年有了自己的国际标准,CAN总线在市场上的竞争力大大提高,更加广为使用,这也对CAN总线今后的发展有很大的意义。
2.1.2 CAN总线的发展概况
现场总线已经成为了工业控制系统通信中非常可靠的一类通信数据总线。尽管到目前为止,我国的技术水平并没有达到一定的高度,我们对现场总线的研究也尚不能称得上是世界先列,但现场总线的高性能高优势使得它已经被应用到各个领域中。当今现场总线并没有严格的规范,因此它可以自由的发挥,这会更加促进现场总线技术的发展和标准的产生。CAN正是在这种不断需求和不断发展的背景下诞生的。
在当今科技发展如此快速的背景下,CAN控制器局域网也已经在中国取得了迅速的发展,已经被广泛应用于航空航天、交通、工业、医疗、汽车等领域,我们国家著名的神舟航天飞行器就运用了CAN的技术。
现如今,CAN已经在各个领域中有了广泛的使用和发展,这就产生了一个问题,即CAN通信报文势必要有一个统一的标准。飞利浦公司为我们开了先河,第一个制订并公布了CAN的标准,有了这个基础,不久国际标准化组织就制定并正式公布了CAN的国际标准,CAN终于实现了标准化,这就为CAN技术今后更好的发展打下了坚实的基础。
因为CAN自身的高性能和高优势,它的发展规模也在不断扩大,已经不是早期刚刚研发出来仅仅应用于汽车领域,而是在航空航天、交通运输、医疗、机械、自动化等各个领域都得到了很好地应用与发展,已经在这些领域都有了一席之地。尽管CAN总线通信仍然有一些不足和局限,但是随着通信技术的不断发展,生活和科研等对通信技术的要求的不断提高,我们相信CAN总线会不断进步和发展,在未来能够取得更大的成功。
2.1.3 CAN总线的特点
CAN总线是德国博世公司针对汽车中设备的通信而开发出来的一种串行数据通信协议,它的通信范围广,通信速率高,即使在远距离也能实现快速通信。它具有以下特点:
1. CAN能将数据按照成帧方式进行处理
CAN总线通信功能强大,可以对数据按照成帧方式进行处理,通信快捷,实用性强。
2. CAN总线通信节点无数量限制
和以往总线通信不同,CAN通信是直接对通信数据模块进行编码,这可以说是CAN总线最大的一个特点。这样的好处就是在分布式控制系统的通信中不仅可以使通信的节点个数不受限制,而且当有特殊要求时还可以让不同的节点同时接收到相同的数据,可以说相比以往有了很大的进步,这就是CAN相比其它总线通信的强大之处。
3. CAN总线各个节点之间可以自由通信
CAN总线的有着独一无二的设计,它上面的任意一个节点都可在通信中的任何时候向系统中的其它任何节点发送数据而不会收到阻碍,各节点之间可以不分时间不互相排斥进行自由通信,这就很好地保证了CAN总线通信的高效性。
4. CAN总线通信距离远、通信速率高,通信实时性强
CAN总线通信距离远,最远可达10公里,通信速率最高可达到1Mbps,即使在最远距离通信,通信速率也能达到50kbps。CAN总线通信实时性强,可以在很小的范围内进行大量的数据通信,还可以在很远的距离进行少量数据的通信。
2.1.4 CAN总线协议介绍
如表2-1所示,CAN协议涵盖了国际标准化组织规定的OSI(开放式系统互联)基本参照模型中的传输层、物理层以及数据链路层。
表2-1 OSI基本参照模型
OSI基本参照模型
各层定义的主要项目
7层:应用层
由实际应用程序提供可利用的服务。
6层:表示层
进行数据表现形式的转换。
如:文字设定、数据压缩等
5层:会话层
建立会话式的通信,控制数据正确地接收和发送
4层:传输层
控制数据传输的顺序、传输错误的检测等,保证通信的质量。
如:错误修正、再传输控制。
3层:网络层
进行数据传送的路由选择或中继。
如:单元间的数据交换、地址管理。
2层:数据链路层
将物理层收到的信号组成有意义的数据,提供传输错误控制灯数据传输流程。
如:访问的方法、数据的形式。
通信方式、连接控制方式、检错方式。
1层:物理层
规定了通信时使用的电缆、连接器等电气信号规格,以实现设备间的信号传送。
如:信号电平、收发器、电缆、连接器等的形态。
数据链路层是CAN总线通信协议的核心部分,主要负责数据的发送接收以及错误检测等,它的功能通常在CAN控制器的硬件中实现。数据链路层有两个组成部分,分别是逻辑链路控制层(LLC)和介质访问控制层(MAC)。其中介质访问控制层又是数据链路层的核心部分。
如表2-2为OSI基本参照模型中的传输层、数据链路层以及物理层的CAN协议定义。
表2-2 OSI各层中CAN定义事项
层
定义事项
功能
传输层
再发送控制
永久再尝试
数据链路层
(LLC)
接收消息的选择
可点对点连接、广播、组播。
过载通知
通知接收准备尚未完成
错误恢复功能
再次发送
数据链路层
(MAC)
消息的帧化
有数据帧、遥控帧、错误帧、过载帧4种帧类型。
连接控制方式
竞争方式(支持多点传送)
数据冲突时的仲裁
根据仲裁优先级较高的ID可继续被发送
错误通知
CRC错误、填充位错误、位错误、ACK错误、格式错误。
错误检测
所有单元都可随时检测错误。
应答方式
ACK和NACK两种
通信方式
半双工通信
物理层
位编码方式
NRZ(不归零)方式编码
位时序
位时序、位的采样数
同步方式
根据同步段实现同步,并且具有再同步功能。
CAN通信可以对数据按成帧方式进行处理,是通过以下5种类型的帧进行的:数据帧、遥控帧、错误帧、过载帧、帧间隔。其中,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标示符,扩展格式有29个位的标示符。各种帧的用途如表2-3所示。
表2-3 帧的种类及用途
帧
帧用途
数据帧
用于发送单元向接收单元传送数据的帧。
遥控帧
用于接收单元向具有相同ID的发送单元请求数据的帧。
错误帧
用于检测出错误时向其它单元通知错误的帧。
过载帧
用于接收单元通知其尚未做好接收准备的帧。
帧间隔
用于将数据帧及遥控帧与前面的帧分离开来的帧。
2.2 单片机介绍
单片机全称为单片微型计算机,是在一个芯片上集成了一个微型计算机系统,是一种嵌入式设备。单片机由运算器、控制器、存储器、输入设备和输出设备构成,和计算机相比,它体积小,功能较低,但是易操作,可以与外围设备连接,简单地说,就是一个芯片相当于代替了一个计算机。单片机的出现解决了很多计算机领域中复杂的问题,非常适合应用在嵌入式系统中。
单片机最早是为了解决工业控制领域中的一系列问题而发明的,是由一个仅有CPU的专用处理器芯片发展产生的,一出现就在工业领域中得到了广泛的应用。单片机最早研发时的构想就是为了结构简单且便于操作,为了做出这种小型的计算机系统,就想到了将CPU等设备集成到一个芯片上,进而研发出了单片机。单片机的出现对于那种功能复杂又对设备大小要求严格的系统设备有很大的意义。
英特尔公司的4004单片机是按照这种构想设计出的最早的一类单片机,当时的单片机都是4位和8位的,数据处理能力较低,但是在不断地研究发展中,单片机的型号越来越多,功能也越来越强大,其中最成功的是英特尔公司开发的8051单片机,它是一种具有8位数据处理功能的单片机。51单片机是学习单片机的入门基础,它一出现就得到了外界的一致好评,直到现在,51单片机在各个领域中的使用仍然是最广泛的,也是我们日常最常见的。在当今的生活中,人们所接触到的任何电子产品比如手机、家用电器、电脑、玩具等等都会用到单片机。
2.2.1 单片机硬件特性
1、单片机的系统结构设计简单,使用方便;
2、处理功能强,速度快;
3、单片机耐用,可连续工作很长时间不出现故障;
4、低电压,低功耗,便于生产便携式产品;
5、控制功能强;
2.2.2 单片机发展状况
历史上第一个单片机问世于1971年,一经问世,单片机的开发就迎来了高潮,单片机的发展总共经历了三个阶段:单片微型计算机阶段、微控制器阶段、嵌入式系统阶段。单片机刚研发出来时功能很低端,只能处理4位和8位的数据,当时研发最好的、功能最强的单片机是英特尔公司的8031单片机,此后又研发出了51系列单片机。51单片机是我们最熟知、应用最广的一类单片机,51单片机一问世就受到了人们的青睐。随着技术的不断发展,对单片机功能的要求越来越高,慢慢的发展出现了16位单片机,但由于技术不够成熟,这类单片机的性价比和以前的相比不高,所以应用并不广泛。随着人们对于电子产品的了解加深,对电子产品使用的好奇,电子产品的需求量逐渐增大,单片机进入了一个高速发展的阶段,在这期间研发出了32位单片机,这类单片机功能强大且性价比高,迅速取代了16位单片机,成为了单片机市场的新霸主。随着32为单片机的出现,8位单片机的数据处理能力也得到了很大的提升,性价比也在增加,尽管是8位,但是数据处理能力相比以往提高了百十倍。从此,单片机进入了一个高速发展的阶段。
现在的单片机经过时间的洗礼已经有了自己专用的嵌入式操作系统,而且更加高端的单片机甚至有了自己的linux系统和windows系统,可以说当今单片机的发展已经进入了一个崭新的阶段。
发展的早期阶段:
单片机发展的第一个阶段是单片微型计算机阶段,在这一阶段中英特尔公司做出了很大的贡献,其中研发最成功的是8031单片机,在这个阶段中一直都在研究能应用到单片机上的最佳的嵌入式系统体系结构,尤其是英特尔公司,可以说是居功至伟,这也使得单片机与普通计算机走向了完全不同的两个发展方向。
中期发展:
单片机发展的第二大阶段是微控制器发展阶段。微控制器主要是开发和提高智能化对象系统的功能,在满足系统功能的同时还要满足对外围设备、电路等的要求。因此在这一阶段许多的电子技术厂家担起了发展单片机的重任。由于这一阶段的研究与开发具体针对对象系统,而英特尔公司在发展微控制器中比较缓慢,因此它们慢慢的淡出了市场。飞利浦公司对微控制器的发展做出了卓越的贡献。
当前发展趋势:
第三大阶段是嵌入式系统发展阶段:单片机是嵌入式设备中最重要的一部分,堪比嵌入式系统的“心脏”。随着嵌入式技术的不断发展,对单片机的要求也越来越高,例如我们最常用的51单片机,它是8位数据处理能力的单片机,现在已经面对着越来越大的挑战和困难,32位的单片机应用也越来越广泛,同样面临着技术改进的难题。总之,要想对单片机有深入的理解和研究,我们必须从单片微型计算机、微控制器再到SoC单片机应用系统这三大阶段详细学习。
目前,单片机已经广泛应用到我们生活中的各个领域中,计算机数据通信、机械自动化、电子玩具以及平时我们用的各种卡,比如公交卡、学生卡、工作卡等,可以说单片机的应用前景非常广阔。
2.2.3 单片机设计
本次毕业设计我们采用了应用广泛的STC89C52单片机,它是51单片机的一种。本单片机是一款较为低端的单片机,但是应用广泛成熟,开发方便快捷,满足本设计功能要求,所以本次设计采用其为主控制器。
STC89C52单片机是STC公司设计的一款高性能、低消耗,具有8为数据处理能力的单片机。它是51单片机的一种,但是它又具有51单片机没有的很多功能。它具有8为CPU和在系统可编程Flash。
本次设计制作了STC89C52RC单片机最小系统和外围应用电路,单片机最小系统实现单片机运行的基本需求,同时控制外围电路实现本次设计各项功能。单片机最小系统由STC89C52RC单片机芯片、电源、晶体振荡电路、复位电路组成,配合有按键、LED、UART通讯接口等人际交互电路。
单片机的最小系统就是让单片机能正常工作并发挥其功能时所必须的组成部分,也可理解为是用最少的元件组成的单片机可以工作的系统。
1. 晶体振荡器电路
51 单片机上的时钟管脚为 XTAL1(19 脚)芯片内部振荡电路输入端XTAL2(18 脚)芯片内部振荡电路输出端。 XTAL1 和XTAL2 是独立的输入和输出反相放大器,在XTAL1、XTAL2 的引脚上外接定时元件:一个石英晶体和两个电容,内部振荡器便能产生自激振荡。在本次设计中采用11.0592M 的石英晶振。
2. 复位电路
在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。 MCS-5l 系列单片机的复位引脚RST( 第9 管脚) 出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST 持续为高电平,单片机就处于循环复位状态。
本设计采用上电自动复位,上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。
在硬件设计中,我们首先要先制作单片机的最小系统,单片机的最小系统就是指能让单片机正常工作的最小组成部分。在本次设计中,最小系统主要包括单片机、晶振电路、复位电路、电源等。如图2-1为本次STC89C52单片机的最小系统。,另外我们还需要一个下载程序的接口,该UART接口可以完成单片机调试功能,实现单片机与其他设备的数据发送接受功能,如图2-2所示。
本次设计中STC89C52RC单片机程序的软件开发环境用Keil uVison4集成开发环境,用C语言设计编写程序,利用串口将编写好的程序下载到单片机内。根据本次设计所要完成的功能需求在单片机最小系统基础上扩展应用电路和应用程序。
图2-1 STC89C52单片机最小系统
图2-2 stc89c52单片机调试接口
2.3 开发环境及开发语言介绍
2.3.1 keil uvision4开发环境简介
Keil C51是美国Keil软件公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。本次软件设计使用的就是keil uvision4开发环境,如图2-3所示。
图2-3 keil uvision4开发环境
Keil uVision4于2009年2月发布,Keil uVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
最新的Keil uVision4 ,旨在提高开发人员的生产力,实现更快,更有效的程序开发。uVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。
uVision4在μVision3 IDE的基础上,增加了更多大众化的功能。
· 多显示器和灵活的窗口管理系统
· 系统浏览器窗口的显示设备外设寄存器信息
· 调试还原视图创建并保存多个调试窗口布局
· 多项目工作区简化与众多的项目
Keil C51开发系统基本知识:
⒈ 系统概述
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil的优势。下面详细介绍Keil C51开发系统各部分功能和使用。
⒉Keil C51单片机软件开发系统的整体结构
C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
2.3.2 开发语言介绍
本次软件程序设计使用C语言编写程序。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
C语言是世界上最流行、使用最广泛的高级程序设计语言之一。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言具有以下基本特性:
1、C是高级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、C是结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4、C语言适用范围大:适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的。
C语言具有以下技术特点:
1、简洁紧凑、灵活方便
C语言一共只有40个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
5、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
3 系统设计
3.1 设计目的
本次CAN通信系统的设计目的是实现两个CAN节点之间的数据通信,制作两个单片机,型号为stc89c52,两个CAN通信模块,其
展开阅读全文