完整版通信工程专业基于89C52RC的MODBUS通信程序设计毕业论文设计.docx
- 文档编号:24679984
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:25
- 大小:35.37KB
完整版通信工程专业基于89C52RC的MODBUS通信程序设计毕业论文设计.docx
《完整版通信工程专业基于89C52RC的MODBUS通信程序设计毕业论文设计.docx》由会员分享,可在线阅读,更多相关《完整版通信工程专业基于89C52RC的MODBUS通信程序设计毕业论文设计.docx(25页珍藏版)》请在冰豆网上搜索。
完整版通信工程专业基于89C52RC的MODBUS通信程序设计毕业论文设计
优秀论文审核通过
未经允许切勿外传
通信工程专业毕业论文--基于89C52RC的MODBUS通信程序设计
摘要
单片机具有体积小,功能强,成本低,应用面广等优点,目前的温度控制系统多采用单片机进行系统设计。
基于89C52RC的MODBUS通信程序设计就是针对于温度控制系统进行的设计。
在这里主要使用AT89C52芯片和AD590温度传感器,实现温度的检测和显示功能,再通过MODBUS通信协议实现单片机与PC的连接程序设计,通过PC对被控现场的温度实现调节和控制。
在这里有两方面设计,硬件电路设计和软件程序设计。
硬件电路设计包括人机互换模块包括按键模块和数码显示模块。
按键模块用来输入设定的温度,数码管显示模块用来显示当前测得的温度。
温度传感器模块包括AD转换模块和传感器模块。
加热控制模块用来给水加热。
上位机通信模块通过串口和PC建立通信渠道。
软件设计包括温度检测模块,加热器控制模块,按键模块,数码管显示模块和串口驱动模块。
温度检测模块通过AD转换器将温度值转换成数字值存放,加热器控制模块控制加热器开关的通断,按键模块用于设定温度值;数码管模块用于显示检测到的温度值和设定的温度值,串口驱动模块用于从上位机收发数据。
关键词:
AT89C52;MODBUS通信协议;温度控制
ABSTRACT
TheMCU.89C52RCMODBUScommunicationprogramisdesignedforthetemperaturecontrolsystem.MainlyuseAT89C52chipAD590temperaturesensor,temperaturedetectionanddisplayfunctionsandprogrammingofMCUandPCconnection,andthenthroughtheMODBUSprotocoltoregulateandcontrolthePCchargedwiththetemperatureofthescene.Therearetwoaspectsofdesign,andsoftwareprogramming.The,includingtheman-machineinterchangeablemodulesincludingkeymoduleanddigitaldisplaymodule.Thekeymoduleisusedtoenterthesettemperature;thedigitaldisplaymoduleisusedtodisplaythecurrentmeasuredtemperature.ThetemperaturesensormoduleconsistsoftheADconvertermoduleandsensormodule.HeatingcontrolmoduleisusedforwatermodulethroughtheserialportandPCtoestablishcommunicationchannels.Thesoftwaredesignincludestemperaturedetectingmodule,themoduletemperaturevaluesbytheADconvertertoconvertthenumericvaluestored,themoduleisusedtosetthetemperaturevalue;thedigitalcontrolmoduleisusedtodisplaythedetectedtemperaturevalueandthetemperaturesetvalue,theserialportdrivermoduleusedtosendandreceivedatafromthe公司开发且已是工业领域全球最流行的协议[4-5]。
此协议支持传统的RS-232、RS-422、RS-485AT89C52开发的系统性能可靠、成本较低、软件设计灵活简单、硬件接口功能丰富,具有扩展性好、通用性强等优点[6]。
本文是基于89C52RC的MODBUS通信程序设计,利用单片机89C52和MODBUS通信程序设计温度控制器,使温度在工业中能够被跟好的控制。
第1.2节选题简介
在该温度控制系统中,单片机作为核心部件进行检测控制,增强了设计的通用性,适时性。
地铁消防管道温度控制系统使用AT89C52控制器和AD590温度传感器,实现温度的检测功能和显示功能,然后能够通过上位机(PC)是指上下线温度,并且能够对被控制现场的温度实现智能的调节,来保持被控制现场的温度的基本恒定。
序进行说明,包括控制算法,偏差计算等。
控制是否升温或降温。
第2章总体设计的技术分析
第2.1节AT89C52单片机
单片机的发展
随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时计数器和多种IO接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。
单片机[7]现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
1微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)[8]、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如AD转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
2低功耗CMOS化
MCS-51系列[9]的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
3主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司[10]的产品和中国台湾的Winbond系列单片机。
所以80C51占据了半壁江山。
而Microchip公司的PIC精简指令集合(RISC)也有着强劲的发展势头,中国台湾的HOLTEX公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。
此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。
九十年代以后,单片机在结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。
芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。
这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。
芯片的选择
温度控制系统是通过采用单片机控制,使温度能够在设定值及变化范围内变化。
采用单片机来实现温度控制不仅具有控制方便、简单、灵活等优点,而且可以大幅度提高被控温度的技术指标。
根据学校毕业设计要求本系统选用ATMEL公司的AT89系列单片机[11]。
AT89系列有AT89C51,AT89C52等。
89C52[12]与89C51的区别是内存大小不同,C51的是4K,C52是8K,并且根据节点所需实现功能的复杂程度和技术需要,在这个系统中采用89C52[13]芯片。
AT89C52单片机是ATMEL公司的51系列单片机。
AT89C52单片机是一款高性能CMOS8位单片机,片内含8KB可反复擦写的Flash只读程序存储器和256B随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机可提供较复杂系统控制应用场合。
系统使用AT89C52控制器和AD590温度传感器,实现温度的检测和显示功能,能够通过上位机设置上下限温度,并且能够对被控现场的温度实现智能调节,以保持被控现场的温度基本恒定。
AT89C52功能简介
AT89C52是51系列的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入输出(IO)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程S系列的才支持在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52兼容MCS51指令系统8k可反复擦写1000次)FlashROM32个双向IO口256x8bit内部RAM
④3个16位可编程定时计数器中断时钟频率0-24MHz
2个串行中断可编程UART串行通道
2个外部中断源共6个中断源
2个读写中断口线3级加密位
低功耗空闲和掉电模式软件设置睡眠和唤醒功能
①(或GND)(20脚):
接地端。
②(40脚):
接电源。
正常操作及对FlashROM编程和验证时接+5V电源。
2外接晶体引脚XTAL1和XTAL2
①XTAL1(19脚):
接外部晶体和微调电容的一端。
在AT89C52单片机内,它是振荡电路反向放大器的输入端及内部时钟发生器的输入端,振荡电路的频率就是晶体的固有频率。
当采用外部振荡器时,此引脚输入外部时钟脉冲。
②XTAL2(18脚):
接外部晶体和微调电容的另一端。
在AT89C52单片机片内,它是振荡电路反相放大器的输出端。
在采用外部振荡器时,此引脚应悬浮。
3控制信号引脚RST、ALE、和
①RST(9脚):
复位信号输入端,高电平有效。
当振荡器工作时,在此引脚上出现两个机器周期以上的高电平,就可以使单片机复位。
②ALE(30脚):
地址锁存允许信号。
当AT89C52单片机上电正常工作后,ALE端不断向外输出正脉冲信号,此信号频率为振荡器频率的16。
AT89C52单片机在并行扩展外部存储器(包括并行扩展IO接口)时,P0口用于分时传送低8位地址和数据信号。
当ALE信号有效时,P0口传送的是低8位地址信号;ALE信号无效时,P0口传送的是8位数据信号。
在ALE信号的下降沿,锁定P0口传送的低8位地址信号,这样可以实现低8位地址与数据的分离。
ALE信号可以用作对外输出的时钟或定时信号。
需注意的是每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或流出电流)8个TTL门电路。
在对AT89C52单片机片内8KBFlashROM编程(固化)时,此引脚用于输入编程脉冲。
③(29脚):
外部程序存储器的读选通信号。
当AT89C52单片机由外部程序存储器取指令(或常数)时,每个机器周期内两次有效输出。
当访问外部数据存储器时,这两次有效的信号将不出现,端同样可以驱动8个TTL们电路。
④(31脚):
内部外部ROM选择端。
当端接高电平时,CPU访问并执行内部程序存储器的指令;但当PC(程序计数器)值超过8KB(1FFFH)时,将自动转去执行外部程序存储器中的程序。
当端接低电平时,CPU只访问并执行外部程序存储器中的指令,而不管是否有内部程序存储器。
需要注意的是,如果保密位LB1被编程,复位时在内部会锁存端的状态。
在对AT89C52单片机片内FlashROM编程(固化)时,此引脚用于实施编程电源。
高电压编程时,为+12V,低电压编程时,为+5V。
4输入和输出引脚P0口、P1口、P2口、P3口
①P0口:
P0口是一组8位漏极开路型双向IO口,也即地址数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
②P1口:
P1是一个带内部上拉电阻的8位双向IO口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时计数器2的外部计数输入(P1.0T2)和输入(P1.1T2EX),
③P2口:
P2是一个带有内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
④P3口:
P3口是一组带有内部上拉电阻的8位双向IO口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的IO口线外,更重要的用途是它的第二功能。
此外,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
AT89C52[20]共有6个中断向量:
两个外中断(INT0和INT1),3个定时器中断(定时器0、1、2)和串行口中断。
所有这些中断源如图9所示。
这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。
IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。
注意表5中的IE.6为保留位,在AT89C51中IE.5也是保留位。
程序员不应将“1”写入这些位,它们是将来AT89系列产品作为扩展用的。
定时器2的中断是由T2CON中的TF2和EXF2逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2或EXF2产生中断,而由软件清除中断标志位。
定时器0和定时器1的标志位TF0和TF1在定时器溢出那个机器周期的S5P2状态置位,而会在下一个机器周期才查询到该中断标志。
然而,定时器2的标志位TF2在定时器溢出的那个机器周期的S2P2状态置位,并在同一个机器周期内查询到该标志。
AT89C52内部结构图如下图1?
?
1所示。
图1?
?
1AT89C52内部结构图
第2.2节AD590温度传感器
AD590是美国模拟器件公司生产的单片集成两端感温电流源。
1主要特性
①流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数,即:
AK2?
?
1
式中:
―流过器件(AD590)的电流,单位为mA;T―热力学温度,单位为K。
②AD590的测温范围为-55℃~+150℃。
③AD590的电源电压范围为4V~30V。
电源电压可在4V~6V范围变化,电流变化1mA,相当于温度变化1K。
AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。
④输出电阻为710MW。
⑤精度高。
AD590共有I、J、K、L、M五档,其中M档精度最高,在-55℃~+150℃ AD590的引脚共有3个,查各种资料里,只用了两个引脚即+-第三个脚可以不用,是接外壳做屏蔽用的测量温度是把整个器件放到需要测温度的地方。
AD590的输出电流值说明如下:
其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Iout(273+25)298μA。
AD590注意事项 Vo的值为Io乘上10K,以室温25℃而言,输出值为10K×298μA2.98V测量Vo时,不可分出任何电流,否则测量值会不准。
?
?
2所示
图2?
?
2AD0804管脚图
第2.4节MODBUS协议
MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机服务器通信。
自从1979年[21]出现工业串行链路的事实标准以来,MODBUS使成千上万的自动化设备能够通信。
目前,继续增加对简单而雅观的MODBUS[22]结构支持。
互联网组织能够使TCPIP栈上的保留系统端502访问MODBUS。
MODBUS是一个请求应答协议[23],并且提供功能码规定的服务。
MODBUS功能码是MODBUS请求应答PDU的元素。
这里描述MODBUS事务处理框架内使用的功能码。
通讯传送方式通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与MODBUSRTU通讯规约相兼容:
地址码:
地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:
通讯传送的第二个字节。
M通讯规约定义功能号为1到127。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1比如功能码大与此同时127,则表明从机没有响应操作或发送出错。
数据区:
数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
通讯规约当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
?
?
1所示。
表2?
?
1信息帧结构
地址码功能码数据区错误校验码8位8位N×8位16位地址码:
地址码是信息帧的第一字节8位,从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。
当从机回送信息时,相当的地址码表明该信息来自于何处。
功能码:
主机发送的功能码告诉从机执行什么任务。
表2?
?
2列出的功能码都有具体的含义及操作。
2?
?
2功能码含义及操作
代码含义操作03读取数据读取当前寄存器内一个或多个二进制值06重置单一寄存器把设置的二进制值写入单一寄存器数据区:
数据区包含需要从机执行什么动作或由从机采集的返送信息。
这些信息可以是数值、参考地址等等。
例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器的起始地址及读取长度。
对于不同的从机,地址和数据信息都不相同。
错误校验码:
主机或从机可用校验码进行判别接收信息是否出错。
有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程中出错的信息不起作用。
这样增加了系统的安全和效率。
错误校验采用CRC-16校验方法。
Modbus帧描述
Modbus[26]应用协议定义了简单的独立于其下面通信层的协议数据单元PDU-ProtocolDataUnit:
图2?
?
1Modbus协议数据单元
在不同总线或网络的Modbus[27]协议映射在协议数据单元之外引入了一些附加的域。
发起Modbus事务处理的客户端构造ModbusPDU,然后添加附加的
域以构造适当的通信PDU。
图2?
?
2串行链路上的Modbus帧
在Modbus串行链路,地址域只含有子节点地址。
如前文所述,合法的子节点地址为十进制0-247。
每个子设备被赋予1-247范围中的地址。
主节点通过将子节点的地址放到报文的地址域对子节点寻址。
当子节点返回应答时,它将自己的地址放到应答报文的地址域以让主节点知道哪个子节点在回答。
功能码指明服务器要执行的动作。
功能码后面可跟有表示含有请求和响应参数的数据域。
错误检验域是对报文内容执行"冗余校验"的计算结果。
根据不同的传输模式RTUorASCII使用两种不同的计算方法[28]。
第2.4节 RS232简介
RS-232[29]是个人计算机上的通讯接口之一,由电子工业协会ElectronicIndustriesAssociation,EIA所制定的异步传输标准接口。
通常RS-232接口以9个接脚DB-9或是25个接脚DB-25的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。
RS-232-C是美国电子工业协会EIA(ElectronicIndustryAssociation)制定的一种串行物理接口标准。
RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。
RS-232-C总线标准设有25条信号线,包括一个主通道和一个辅助通道。
在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。
RS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 通信工程 专业 基于 89 C52RC MODBUS 通信 程序设计 毕业论文 设计