版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于CAN总线的温度控制系统前言CAN (Controller Area Network) 总线又称控制器局域网是Bosch 公司, 在现代汽车技术中领先推出的一种多主机局部网由于其卓越的性能极高的可靠性独特灵活的设计和低廉的价格现,已广泛应用于工业现场控制智能大厦小区安防交通工具医疗仪器环境监控等众多领域CAN, 已被公认为几种最有前途的现场总线之一CAN。 总线规范已被ISO 国际标准组织制订为国际标准,CAN 协议也是建立在国际标准组织的开放系统互连参考模型基础上的,主要工作在数据链路层和物理层。用户可在其基础上开发适合系统实际需要的应用层通信协议,但由于CAN 总线极高的可靠性从而使应
2、用层通信协议得以大大简化。CAN总线的物理层是将ECU连接至总线的驱动电路。ECU的总数将受限于总线上的电气负荷。物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据的编码解码、位定时和同步的实施标准。控制器局域网CAN是目前为止被批准为国际标准的少数现场总线之一。CAN网络可以采用多主方式工作。它采用非破坏性的总线仲裁技术,其控制和信号传输采用短帧结构,因而具有低耦合性和较强的抗干扰能力。它的传输介质可以是双绞线、同轴光纤或电缆,选择十分灵活;每帧信息都有CRC校验及其它检错措施,因此数据出错率极低,可靠性较高;当其传输的信息出错严重时,节点可以自动断开与总线的
3、联系,以使其总线上其它的操作不受影响。 虽然目前USB、PCI等总线技术得到了快速发展,但是在大量应用的测试微机及工控机中,用的最多的还是ISA总线。ISA总线具有16位数据宽度,其最高工作频率为8MHz,数据传输速率可达到16MBs,地址总线有24条,可寻址16MB的地址单元,其总线信号分为5类,分别为数据线、控制线、地址线、电源线和时钟线。控制器局域网CAN属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络。是德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。由于其高性能、高可靠性以及独特的设计而越来越受到人们的重视,被广泛应用于诸多领域。由于CAN
4、总线具有很高的实时性能和应用范围,从位速率最高可达1Mbps的高速网络到低成本多线路的50Kbps网络都可以任意搭配。因此,CAN总线己经在工业控制、汽车业、航空业、安全防护等领域中得到了广泛应用。现场总线是应用在生产最底层的一种总线型拓扑的网络,是用作现场控制系统的、直接与所有受控节点串行相连的通信网络。受控设备和网络所处的环境可能很特殊,对信号的干扰往往是多方面的,这就要求控制必须是实时性很强。CAN控制器SJA1000的地址数据总线是分时复用的,它通过ALE信号的下降沿可锁存总线上的地址信号;ISA总线上的数据总线和地址是单独提供的, 其不能直接和SJA1000的地址数据总线相连。此设计
5、利用地址译码电路来对地址信号线进行译码,从而为CAN适配卡分配出一定的端口地址。然后利用74HC373芯片的数据锁存功能锁存第一次IO操作中通过ISA数据总线传送的数据信号,以便作为访问CAN控制器SJA1000中寄存器的地址信号,最后在第二次IO操作中完成对SJA1000中相应地址寄存器的读写操作。其它现场总线较差,这也是目前CAN总线在众多领域被广泛采用的原因。节点是网络上信息的接CAN总线与其它几种现场总线比较而言是最容易实现价格最为低廉的的一种,但其性能并不比收和发送站,由微处理器和可编程的CAN 控制芯片组成的就是所谓智能节点。它们有两者合二为一的如芯片P8XC592,也有如此文介绍
6、的独立的通信控制芯片与单片机接口。其后者的优点是比较灵活。DALLAS的最新单线数字温度传感器DS18B20体积更小、适用电压更宽、更经济, DALLAS 半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器。一线总线独特且经济的特点,用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822 “一线总线”数字化温度传感器与DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C+125°C,在-10°C+85°C范围内,精度为±0.5&
7、#176;C。DS1822的精度较差为± 2°C。现场温度是直接以"一线总线"的数字方式传输,这样大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:设备或过程控制、环境控制、测温类消费电子产品等。与前一代产品不同的是新的产品支持3V5.5V的电压范围,使系统设计更方便、灵活。且新一代产品更便宜,体积更小。DS18B20、DS1822的特性DS18B20可以程序设定912位的分辨率,精度为±0.5°C。可选用更小的封装方式,更宽的电压适用范围。分辨率的设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B2
8、0的性能是新一代产品中最好的!其性能价格比也非常出色!DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义分辨率参数和报警温度的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使特性、电压及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。1 总体设计1.1 课题背景随着科学技术的飞速发展,过程控制领域在过去的两个世纪里发生了巨大的变革。19世纪60年代出现的基于513psi的气动信号标准,标志着控制理论初步形成,20世纪
9、50年代,随着基于420mA或010mA的电流模拟信号的模拟过程控制体系被提出被得到广泛的应用,标志着电气自动控制时代的到来,20世纪70年代,随着数字计算机的介入,产生了“集中控制”的中央控制计算机系统,不久后伴随着“集中控制”的北人们发现,该系统存在着可靠性低、易失控等缺点,很快就将其发展为分布式控制系统;随着快速发展的微处理器被广泛的应用,数字化通信网络被延伸到工业过程现场成为可能,也就产生了以微处理器为核心,使用集成电路代替常规电子线路,实施信息采集、处理、显示、传输以及优化控制等功能的智能设备。设备之间彼此控制、通信,在精度、可靠性以及可维护性、可操作性等都有更高的要求。因此,现场总
10、线的产生成为了必然。现场总线是应用在生产最底层的一种总线型拓扑的网络,是用作现场控制系统的、直接与所有受控节点串行相连的通信网络。受控设备和网络所处的环境可能很特殊,对信号的干扰往往是多方面的,这就要求控制必须是实时性很强。在20世纪80年代初,工程人员开始讨论现有的总线系统运用于轿车的可能性。1986年2月在SAE大会上,博世公司提出了CAN,称为“Automotive SerialController Area Network”。而今几乎在欧洲诞生的每一辆新轿车都装配有一个或多个CAN网络系统。CAN网络系统也应用在了从火车到轮船等其他类型的运输工具上,以及工业控制方面 。仅1999年,就
11、有近六千万个CAN控制器投入使用,2000年这个数字达到一亿。1.2 开发意义由于CAN总线具有多主方式工作、非破坏总线仲裁、直接通讯距离远、通信介质灵活、性价比高等特点,它的应用范围现在已不再局限于汽车行业,而已经扩展到了机械工业、农业机械、纺织机械、数控机床、机器人、家用电器等行业领域。CAN总线已经形成了国际标准,并且被公认为其中最有前途的现场总线之一。对于CAN总线的开发具有重要的现实意义。1.3 课题完成功能利用P89C51单片机、和SJA1000CAN控制器设计开发智能温度节点,实时上传测量的温度并显示,接收命令来控制温度。 2 系统硬件设计2.1 系统总图 上位机电平转换收发主节
12、点温度节点控制节点RS232总线CAN总线图2.1-1 系统总图2.2 硬件电路图5、7、8、12本文中所设计的CAN总线系统智能节点是以89C51作为节点的微处理器在CAN总线通信接口中采用PHILIPS公司的SJA1000和隔离CAN收发器模块。SJA1000是独立CAN, CTM系列模块是集成电气隔离、电源隔离、CAN收发器,CAN总线保护于一体的隔离CAN收发器模块。如图所示,CAN总线系统智能节点硬件电路主要由四部分所构成微控制器89C51,独立CAN 通信控制器SJA1000 CAN,隔离CAN收发器模块和DS18B20数字温度传感器。89C51负责SJA1000的初始化且通过控制
13、SJA1000实现数据的发送和接收等通信任务。SJA1000的AD0AD7连接到89C51的P0口,CS接高,CPU通过这些地址可对SJA1000执行相应的读写操作。SJA1000的INT接89C51的INT0 ,89C51也可通过中断方式访问SJA1000。89C51的P3.0接LED,作为继电器的状态显示。P3.1接继电器,控制电阻丝的通断,来控温。89C51的P0为数码管的断码,P2为位码。显示实时测量温度和控温点,各为两位数。CTM系列模块是集成电气隔离、电源隔离、CAN收发器,CAN总线保护于一体的隔离CAN收发器模块,该模块RXD、TXD引脚兼容+3.3V、及+5V的CAN控制器,
14、不需要外接其他元器件,直接将+3.3V或+5V的CAN控制器发送、接收引脚与CTM模块的发送、接收引脚相连接.图2.2-1 硬件电路图3 系统各模块介绍3.1 P89C51单片机1 、2、6、9P89C51是PHILIPS半导体公司生产的低电压 、高性能CMOS、8位单片机,片内含有4kbytes的可反复擦写的Flash只读程序存储器(ROM)和128 bytes的随机存取数据存储器(RAM ),器件采用PHILIPS半导体公司的高密度、非易失性存储技术生产,它兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的P89C51单片机可为您提供许多高性价
15、比的应用场合,灵活应用于各种控制领域。 功能特性概述P89C51提供4k字节Flash闪速存储器、128字节内RAM,它有32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,P89C51可降至OHz的静态逻辑操作,并且支持两种软件可选的节电工作模式。其空闲方式停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作。在掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.1.2 引脚功能说明图3.1.2-1 几脚功能图引脚功能说明P0口:PO口是一组8位漏极开路型双向I/0口
16、,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写”1”可作为高阻抗输入端用。Pl口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:表-1 第二功能端口引脚第二功能P3.0串行输入口P3.1串行输出口P3.2外中断0P3.3外中断1P3.4定时/计数器0P3.5定时/计数器1P3.6外部数据存储器写选
17、通P3.7外部数据存储器读选通P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.2 CAN控制器SJA10003 、10、12SJA1000是一独立的CAN控制器,它主要用于一般工业环境中的区域网络控制和移动目标。它是美国PHILIPS半导体公司PCA82C200 CAN控制器的替代产品,而且它增加的是一种新的操作模式PeliCAN,这种模式支持CAN2.0B协议。 主要性能特点SJA1000的主要性能特点如下:引脚可以与PCA82C200独立CAN控制器兼容电器特性可以与PCA8
18、2C200独立CAN控制器兼容以有扩展的接收缓冲器64字节,先进先出(FIFO)。它支持CAN2.0A/B协议它支持29位和11位标识码 其通信位速率可达1Mbps其验收滤波器的扩展时钟频率是24MHz可以与不同的微处理器接口有可编程的CAN输出驱动器配置等。3.2.2 SJA1000引脚功能说明图3.2.2-1 SJA1000引脚表3.2.2-2 SJA1000引脚功能符 号引 脚功 能AD0 AD72,1,28 23地址/数据复用总线ALE3ALE 信号INTEL 方式或AS 信号Motorola 方式/CS4片选输入低电平允许访问SJA1000/RD5微控制器的读信号Intel 方式或E
19、 信号Motorola 式/WR6微控制器的写信号Intel 方式或读写信号Motorola 方式CLKOUT7SJA1000 产生的提供给微控制器的时钟输出信号此信号由内部振荡器经可编程分频器得到可编程禁止该引脚VSS18逻辑电路地XTAL19振荡放大器输入外部振荡放大器信号经此引脚输入XTAL210振荡放大器输出使用外部振荡信号时此引脚必须开路MODE11方式选择输入端1=Intel 方式0=Motorola 方式VDD312输出驱动器5V 电源TX013由输出驱动器0 至物理总线的输出端TX114由输出驱动器1 至物理总线的输出端VSS315输出驱动器地/INT16中断输出端用于向微控制
20、器提供中断信号/RST17复位输入端用于重新启动CAN 接口低电平有效VDD218输入比较器5V 电源RX0 RX119 20由物理总线至SJA1000输入比较器的输入端显性电平将唤醒处于睡眠方式的SJA1000 当RX0高于RX1时读出为隐性电平否则为显性电平VSS221输入比较器地VDD122逻辑电路5V 电源 SJA1000的内部结构方框图图3.2.3-1 SJA1000的内部结构方框图3.3 隔离CAN收发器模块(CTM Module)3CTM系列模块是集成电气隔离、电源隔离、CAN收发器和CAN总线保护于一体的隔离CAN收发器模块,该模块RXD、TXD引脚兼容+5V、及+3.3V的C
21、AN控制器,而不需要外接其他元器件,直接将+5V或+3.3V的CAN控制器接收、发送引脚与CTM模块的接收、发送引脚相连接!如图所示为PHILIPS与CTM1050的SJA1000连接原理图,其电路采用了隔离CAN收发器模块,有了隔离CAN收发器,就可以很好地实现CAN-bus总线上各节点电源、电气之间完全独立和隔离,提高了节点的安全性和稳定性。4 系统软件设计4.1 软件流程图图4.1-1 软件流程图1总流程:当开始工作时,首先CPU初始化,然后CAN控制器SJA1000初始化,得到最初的温度值,通过数码管显示。当还没有到设定的时间段而且没有中断时,就通过数码管继续显示原来的温度。当到了设定
22、的时间段则发送一个最新的实际温度值,在没有中断的条件下通过数码管显示最新的实际温度。当有中断时就接受命令再通过数码管显示。图4.1-1 软件流程图2SJA1000初始化:当开始时,首先CAN控制器SJA1000进入复位模式,选择PeliCAN模式,开放中断,再设置验收代码寄存器和验收屏蔽寄存器并设置总线定时器400Kbps波特率和输出控制寄存器为正常输出,然后返回工作状态,SJA1000就初始化完了。图4.1-1 软件流程图3SJA1000发送:当开始时,首先读入SJA1000状态,然后判断是否正在接收?不是则再进入读入SJA1000状态;是则等待,待接收完成后继续判断是否先前发送是否成功?不
23、是则再进入读入SJA1000状态,是则等待,然后判断发送缓冲器是否锁定?不是则要设置TX标准帧报文,再设置ID数据报,再装入实际温度值,然后启动发送,最后返回。图4.1-1 软件流程图4SJA1000接收:当开始时,首先读入SJA1000状态,然后判断总线关闭、错误状态、溢出是否有数据?不是则返回;是则继续判断总线是否关闭?是则清除中断位并恢复总线,不是或已经恢复了总线则继续判断数据是否溢出?是则清除数据溢出和释放接收缓冲区,不是或已经清除数据溢出和释放接收缓冲区则继续判断是否有数据?是则接收数据并做处理开断继电器,再释放接收缓冲区,然后释放仲裁丢失捕捉寄存器,最后释放错误丢失捕捉寄存器,再返
24、回;不是则直接返回。4.2 Kile编译平台界面图4.2-1 Kile编译平台界面4.3 系统程序清单4 、10CAN总线节点的软件设计包括主要三大部分:CAN节点的初始化和报文发送以及报文接收。熟悉了这三部分程序的设计就能编写出利用CAN总线进行通信的一般应用程序,当然要将CAN总线应用于通信任务比较复杂的系统中还需详细了解有关CAN总线错误处理总线脱离处理接收滤波处理波特率参数设置和自动检测以及CAN总线通信距离和节点数的计算等方面的内容。程序用语言编写,简洁明了且有详细的注释,并写成头文件的形式,可移植更强。 主程序包括定时发送、中断接收、温度显示。5 小结经过半年多的努力终于完成毕业设
25、计,通过这次毕业设计我学习到了许多以前学习不到或是没去学习的知识,了解到了一些当前的国际科技情形,同时提升了自己个人单独面临和处理问题的能力。但由于经验匮乏,难免有许多考虑不周全的地方,如果没有导师的指导和同学的关心与帮助,想要完成这个设计是难以想象的。在这里首先要感谢我的导师王维博教授。他平日里工作繁多,但在我做毕业设计的每个阶段,从需求分析到查阅资料,设计草案的确定和修改,中期检查,后期详细设计,设计电路等整个过程中都给予了我悉心的指导。我的设计比较复杂烦琐,但是王教授仍然细心地纠正设计过程中的错误。通过这次毕业设计我认识到不论课本理论知识学得多好,没有通过自己动手将知识应用到生活中,那么
26、一切都如纸上谈兵,都是空的。学习知识和将其应用到生活中是相辅相成的,只有学以致用才能使自己不断提高,才能成为有用的人。在这里我要特别感谢大学四年来教导我们的所有的老师,他们为我们打下了自动化专业知识的基础;包括实验中心的各位老师,让我们锻炼了动手能力,让理论在实践中得到了升华,让我们的能力有了很大的提高;同时还要感谢所有的同学,正是因为有了他们的支持和帮助,此次毕业设计才会顺利完成。同时,真诚的感谢学院四年来对我的支持、关心和鼓励,使我能够顺利的完成学业!附录:主程序: 包括定时发送、中断接收、温度显示。/*头文件*/#include "reg51.h"#include&q
27、uot;intrins.h"#include"absacc.h"#include "sja1000reg.h"#include "sja1000.h"#include "ds18b20.h"/*数据类型*/#define uchar unsigned char#define uint unsigned int/*管脚定义*/#define SEG_WORDPORT P1/段码#define SEG_DIGPORT P2/位码uchar code Seg_Code10=0xc0,0xf9,0xa4,0xb0
28、,0x99,0x92,0x82,0xf8,0x80,0x90;/*函数声明*/void Cpu_Init(void);void Display_Seg(uchar wd_h,uchar wd_l);/*主程序*/main()uchar *Tempcode;Delay(0,0);/0.524sDelay(0,0);/0.524s/复位后延时等待系统外围复位完成Cpu_Init();/CPU初始化Sja1000_Init();/SJA1000初始化DQ=0; /DS18B20开始工作while(1)Tempcode=DS18B20_RdTemp(); /读温度值Display_Seg(*(Temp
29、code+1),*Tempcode);/显示/*CPU初始化*/void Cpu_Init()EA=0;IT0=1; EX0=1;/开外部中断0TMOD=0X01; ET0=1; /开定时中断0TH0=0X3C; TL0=0XB0;/方式1,50ms定时TR0=1;EA=1;/开总中断LED=0; /led亮SW_JDQ=1;/继电器开,加热/*数码管显示*/void Display_Seg(uchar wd_h,uchar wd_l)uchar buf4;/显示单元uchar i;uchar dig=0x01;wd=(wd_h&0x07)*16+(wd_l&0xf0)>
30、>4);/温度值if(wd!=85)/屏蔽85度,因开机为85?buf3=Seg_Codekw&0xf0;/控制温度的十位buf2=Seg_Codekw&0x0f;/控制温度的个位buf1=Seg_Codewd/10%10;/测量温度的十位buf0=Seg_Codewd%10;/测量温度的个位for(i=0;i<4;i+)/4个数码管SEG_WORDPORT=0xff;/清屏SEG_DIGPORT=dig<<i;/位码SEG_WORDPORT=bufi;/段码Delay(50,125);/延时 /*外部0中断*/void int0()interrupt
31、0/接收中断Sja1000_RX();/SJA1000接收/*定时0中断*/void time0() interrupt 1 /定时发送uchar n;TR0=0;TH0=0X3C; TL0=0XB0;TR0=1;n+;if(n=20)/1sn=0;Sja1000_TX();/SJA1000发送sja1000reg.h头文件用伪指令“define”来定义外部地址。/*PeliCAN模式SJA1000的内部寄存器地址的定义*/#define SJA_ADR 0X0000/片选直接接高#define MODE XBYTESJA_ADR+00/模式寄存器#define CMR XBYTESJA_AD
32、R+01/命令寄存器#define SR XBYTESJA_ADR+02/状态寄存器#define IR XBYTESJA_ADR+03/中断寄存器#define IER XBYTESJA_ADR+04/中断使能寄存器#define BTR0 XBYTESJA_ADR+06/时序寄存器0#define BTR1 XBYTESJA_ADR+07/时序寄存器1#define OCR XBYTESJA_ADR+08/输出控制寄存器#define TEST XBYTESJA_ADR+09/测试寄存器#define ALC XBYTESJA_ADR+11/仲裁丢失捕捉寄存器#define ECC XBY
33、TESJA_ADR+12/错误代码捕捉寄存器#define ELWR XBYTESJA_ADR+13/错误报警限额寄存器#define RXERR XBYTESJA_ADR+14/RX错误计数器#define TXERR XBYTESJA_ADR+15/TX错误计数器/#define TXB XBYTESJA_ADR+16/报文发送缓冲区(操作模式下)/#define RXB XBYTESJA_ADR+16/报文接收缓冲区(操作模式下)#define TXSFFXBYTESJA_ADR+16/TX标准帧报文缓冲区(操作模式下)#define TXID1XBYTESJA_ADR+17/TX ID
34、1(操作模式下)#define TXID2XBYTESJA_ADR+18/TX ID2(操作模式下)#define TXDATA1XBYTESJA_ADR+19/TX DATA1(操作模式下)#define RXDATA1XBYTESJA_ADR+19/RX DATA1(操作模式下)#define ACR0 XBYTESJA_ADR+16/验收代码寄存器(复位模式下)#define ACR1 XBYTESJA_ADR+17/验收代码寄存器(复位模式下)#define AMR0 XBYTESJA_ADR+20/验收屏蔽寄存器#define AMR1 XBYTESJA_ADR+21/验收屏蔽寄存器
35、/#define RBSA XBYTESJA_ADR+30/RX缓冲区起始地址/?作用#define CDR XBYTESJA_ADR+31/时钟分频器#define ID 0x01/本机ID号#define TOID 0x00/上位机ID号sja1000.h头文件包括SJA1000初始化、接收和发送子程序。只有在复位模式下SJA1000才可以进行初始化,主要包括工作方式的设置、接收屏蔽寄存器AMR、接收滤波方式的设置和接收代码寄存器ACR的设置、中断允许寄存器IER的设置和波特率参数设置等。在完成了SJA1000的初始化设置以后,SJA1000就可以回到工作状态进行正常的通信任务。负责节点报
36、文的发送是发送子程序。发送时用户只需要将待发送的数据按特定格式组合成一帧报文送入SJA1000发送缓存区中,然后启动SJA1000发送就可以了。当然必须先作一些判断才往SJA1000发送缓存区送报文。接收子程序负责节点报文的接收以及其它情况处理。发送子程序比接收子程序要简单一些,因为在处理接收报文的过程中要同时对诸如总线脱离错误报警接收溢出等情况进行处理。本程序用的是断接收方式,因这样通信的实时性强。/*数据类型*/#define uchar unsigned char#define uint unsigned int/*定义*/sbit LED=P30;/(常断)继电器状态标志,低电平点亮L
37、EDsbit SW_JDQ=P31;/(常断)继电器uchar wd;/测量的温度uchar kw;/控温点/*sja1000初始化*/Sja1000_Init()uchar i;MODE=0X09;/设置方式寄存器,进入复位模式CDR=0X88;/设置时钟分频寄存器,选择PeliCAN模式关闭时钟输出(CLKOUT)IER=0X0D;/设置中断允许寄存器,开放(放送,溢出,错误警告)中断ACR0=0X00;/设置验收代码寄存器,ACR1=ID<<5;/本机号为01AMR0=0X00;/设置验收屏蔽寄存器AMR1=0X00;/不屏蔽BTR0=0X00;/设置总线定时器0BTR1=0
38、X1B;/设置总线定时器1,12MHz,400Kbps/?OCR=0XAA;/设置输出控制寄存器,正常输出/?/RBSA=0X00;/设置接收缓存器FIFO起始地址为0/作用 TXERR=0X00;/写指令清除发送错误计数寄存器i=ECC;/读指令清除错误代码捕捉寄存器MODE=0X08;/设置单滤波方式,并返回工作状态/*sja1000发送程序*/Sja1000_TX()uchar ss;doss=SR;/读入SJA1000状态while(ss&0x10);/判是否正在接收,是则等待doss=SR;/读入SJA1000状态while(!(ss&0x08);/判先前发送是否成功
39、,否则等待doss=SR;/读入SJA1000状态while(!(ss&0x04);/判发送缓冲器是否锁定,是则等待TXSFF=0x01;/设置TX标准帧报文, FF=0,RTR=0,DLC=0X01(数据长度)TXID1=0x00;/TXID2=TOID<<5;/目标机号为00TXDATA1=wd;/发送实际温度值CMR=0X01;/设置命令寄存器为启动发送/*sja1000中断接收程序*/Sja1000_RX()uchar ss;uchar buf_RX;ss=SR;/读入SJA1000状态ss&=0xc3;/取总线关闭,错误状态,溢出,有数据if(ss)/无上
40、述状态,则直接返回if(ss&0x80)/总线关闭ss=IR;/读中断寄存器以清除中断位MODE=0X08;/恢复总线/?else ss=IR;/读中断寄存器以清除中断位if(ss&0x08)/数据溢出CMR=0X0C;/清除数据溢出和释放接收缓冲区elseif(ss&0x01)/接收缓冲区有数据buf_RX=RXDATA1;/接收数据,为继电器(开/断)控温命令if(buf_RX=0xbb)LED=1;/led灭SW_JDQ=0;/继电器断开else if(buf_RX=0xdd)LED=1;/led亮SW_JDQ=0;/继电器闭合else if( (buf_RX&l
41、t;100) && (buf_RX>0) )/控温点为199度kw=buf_RX;CMR=0X04;/设置命令寄存器为释放接收缓冲区ss=ALC;/读操作以释放仲裁丢失捕捉寄存器ss=ECC;/读操作以释放错误丢失捕捉寄存器 ds18b20.h头文件DS18B20为数字温度传感器,它是众多传感器中比较好用的之一,但它须很严格的时序,故运行此驱动程序时须关中断,这里没必要。/*管脚定义*/sbit DQ = P37; /data for DS18B20void Delay(uchar t1,uchar t2) for(;t1>0;t1-) for(;t2>0;t2-);DS18B20_Reset(void) DQ = 0; / DQ 低电平 Delay(1,65); / 480us>>960us DQ = 1; / DQ 高电平 Delay(1,2); / 等待15us>>60us while(DQ); while(DQ); Delay(1,5); /从1-wire 总线上读取一个字节uchar DS18B20_Read_byte(void) uchar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《骆驼寻宝记》教学设计
- 环保工程师劳动合同聘用协议书
- 生态农业园区建设施工合同
- 生物科技二手房交易模板
- 租赁车辆防雾霾装备要求
- 城市交通规划公众参与
- 矿山工程招投标模板
- 广告拍摄墙体壁画施工合同
- 居民区翻新施工合同
- 化妆品租赁田地合同
- 唐诗宋词人文解读智慧树知到期末考试答案章节答案2024年上海交通大学
- 《电视摄像》电子教案
- 火龙罐综合灸疗法
- 深圳市中小学生流感疫苗接种知情同意书
- 射线、直线和角(张冬梅)
- 数据、模型与决策(运筹学)课后习题和案例答案007
- 道路运输达标车辆核查记录表(货车)
- 《梁山伯与祝英台》PPT课件.ppt
- 1到10套文章听力 (1)[教案教学]
- 全公安机关易制爆危险化学品安全监管要点暨检查记录表
- 关于集中式供水单位卫生监督管理情况汇报
评论
0/150
提交评论