ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:295.22KB ,
资源ID:3303875      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3303875.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机控制技术论文基于18B20的双路温度采集器设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机控制技术论文基于18B20的双路温度采集器设计.docx

1、计算机控制技术论文基于18B20的双路温度采集器设计计算机控制技术课程设计任务书基于18B20的双路温度采集器设计1、设计内容采用单片机(如AT89C52)作为控制芯片,用LCD显示测量温度值,例用数字式温度传感器18B20采集温度;设计系统的电路图,并分析电路工作过程。写出程序的流程图,说明系统的工作原理。设定测温环境的温度在0-50度之内,否则报警。2、设计要求:1)设计系统的硬件原理电路图,并说明各部分的设计及工作原理。2)设计系统的软件,包括系统的流程框图、及系统源程序及注解源程序。引 言工业控制计算机的一个重要应用领域,计算机控制正是为了适应这一领域的需要而发展起来的一门专业技术,它

2、主要研究如何将计算机技术、通信技术、和自动控制理论应用于工业生产过程,并设计所需要的计算机控制系统。计算机控制系统的发展大致上可以分为以下几个阶段:(1)开创时期(19551962年),(2)直接数字控制时期(19621967年),(3)小型计算机时期(19671972年),(4)微型计算机时期(1972年至今)。尤其在近代代社会,随着计算机技术的发展和各种相关理论的成熟,计算机控制技术更是取得了巨大的发展,现在工程和科学技术中,担负着重要的角色。从本质上看,计算机控制系统的工作原理可以归纳为:实时数据采集、实时控制决策、实时控制输出。系统硬件一般包含测量变送、执行机构、模拟量输入输出通道、数

3、字量输入输出通道、人机接口、内外部总线等结构。目前常用的计算机控制系统主机有:可编程序控制器(PLC)、工控机(IPC)、单片机(MCU)、DSP、智能调节器等。在这些控制系统主机中,单片机以其低廉的价格和较高的性能得到了广泛应用。通过对单片机及其外围常用元器件的学习和掌握,对进一步了解计算机控制是很有帮助的。应此,在结束计算机控制技术这门课程的学习后,锻炼自己的动手能力,设计一个数字式温度计也是很有意义的。本文主要讲述怎样设计一个由单片机和温度传感器构成的一个小型实时系统,给出了具体的设计过程和详细的步骤,并且此系统已经在实际中做成了实例。目 录引 言 2第一章 设计方案论证 41.1 系统

4、主机选择 41.2 温度传感器选择 51.3 液晶选择 61.4 报警电路选择 6第二章 硬件电路设计 72.1 单片机最小系统设计 72.2 测温电路设计 102.3 显示电路设计 112.4 报警电路设计 12第三章 软件设计 133.1 测温程序 133.2 显示程序 173.3 报警程序 203.4 主程序 20第四章 小结 22参考文献 23附录1 原理图 24附录2 元器件清单 25附录3 源程序 26第一章 设计方案论证日常生活中很多地方都需要应用测温系统,比如冰箱中需要知道内部的温度来决定压缩机是否工作,热水器需要知道当前的水温是否符合设定的温度值,空调需要知道室内温度以决定是

5、否制冷等等。一般来说一个测温系统由以下三部分组成:控制部分、测量部分、显示部分。当然,显示部分并不是必需的,但有显示部分的系统更能让使用者了解系统的运行。1.1 系统主机选择计算机控制系统各主机有各自的特点:PLC专为在工业环境下应用而设,可靠性高,编程容易,功能完善,扩展灵活,安装调试方便。工控机是一种面向工业控制、采用标准总线技术和开放式体系结构的计算,配有丰富的外围接口,具有可靠性高,可维修性好,环境适应力强,控制实时性强,输入输出通道完善等优点。单片机体积小、功能全、价格低、软件丰富、面向控制、开发应用方便。DSP采用改进型的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊

6、指令,可以用来快速地实现各种数字信号处理。智能调节器是一种数字化的智能仪表,以为处理器或单片微型计算机为核心,具有数据通信功能,能完成生产过程14个回路直接数字控制任务,在DCS的分散过程控制级中得到广泛应用。考虑成本、开发周期、应用等方面,在本次设计中采用单片机来作为控制系统主机。目前市场上主流的单片机有Intel公司的MCS系列、Motorola公司的M68HC系列、Microchip公司的PIC系列、以及Philips、Atmel、NEC、STC等公司的产品。本次设计选择的是Atmel公司的AT89C52,是美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 8k

7、 bytes 的可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,与标准 MCS-51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器(CPU)和 Flash 存储单元,功能强大 AT89C52 单片机适合于许多较为复杂控制应用场合。有关AT89C52的功能特性,可以参看第二章,硬件电路设计部分。1.2 温度传感器选择温度传感器是检测温度的器件,其种类最多,应用最广,发展最快。目前最市场山主要有热敏电阻、双金属片、集成化半导体温度传感器和热电偶四大类。热敏电阻(其中分正温度

8、和负温度特性两类),其根据电阻材料随温度的变化而影响材料的电阻率随之相应变化的原理实现温度传感的,其特点是工作温度范围广,成本低、但线性差,误差较大,适用于温控精度要求不高的场合。双金属片通常是将两片不同的金属叠在一起,根据不同金属的热膨胀率的差异,导致双金属机构产生于温度变化相对应的形变的原理做成的,其特点的温度范围大,但精度极低。集成化半导体温度传感器是由硅二极管和运算放大器组成的,是三端器件,其根据硅二极管正向压降随温度的升高而线性降低的原理,由于线性降低的线性精度虽然良好,但变化值微小,所以要通过运算放大器线性放大,另外,通过改变运算放大器的负反馈电阻的值,实现输出不同电压变化范围的各

9、规格产品,以适应不同设备的要求。其特点是精度高,热惯性小,响应快,输出负载能力大(抗电磁干扰能力强),成本较高,温度适用范围小。热电偶是根据两个不同导体或半导体在不同的温度下之间产生电动势的所谓的温差发电效应产生的传感器,其并非真正意义上的温度传感器,但它对温差敏感。它们的工作原理可以查看相关资料,这里不做详细阐述。本次设计中采用的是集成化半导体温度传感器DS18B20。DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 m

10、s和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。1.3 液晶选择液晶显示器(LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。LCD以其微功耗、体

11、积小、重量轻、超薄型等诸多优点在袖珍式仪表和低功耗系统中得到越来越广泛的应用。应用当中通常是将显示屏和控制器集成在一块电路板上,称为液晶显示模块(LCM)。目前市场山主要有段式、字符式、点阵式三种类型的液晶显示模块,其中字符型液晶显示模块已经成为单片机应用设计中最常用的信息显示器件。本设计中,显示的内容比较简单(字母或者数字),因此选择字符型的显示模块性价比高。这里采用LCD1602,它可以显示两行,每行16个字符,采用单5V电源供电,外围电路配置简单。1.4 报警电路选择目前市场上 存在各种各样的报警电路,比如声光触发、触摸断线出发、红外触发等等。一般来说,一个系统都需要设计一个报警电路,以

12、提醒使用者当前系统所出现的错误或者需要引起操作者的注意。考虑本次设计的数字式温度表,只需要在测量的温度超出范围时,提醒使用者即可。因此,相应的报警电路不需要复杂的功能,只需采用一个发光二极管和一个蜂鸣器即可。第二章 硬件电路设计本次设计的双路测温系统主要由以下部分组成:控制电路(AT89C52)、测量电路(两个DS18B20)、显示电路(LCD1602)、报警电路。图1所示为系统的组成框图。报警电路显示电路测量电路控制电路图1 系统框图图2 AT89C52(PDIP封装)2.1 单片机最小系统设计单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机

13、来说,最小系统一般应该包括:单片机、晶振电路、复位电路、按键输入、显示输出等。 应用89C52单片机设计并制作一个单片机最小系统,达到如下基本要求: 具有上电复位和手动复位功能。 使用单片机片内程序存储器。 具有基本的人机交互接口:按键输入、LED显示功能。 具有一定的可扩展性,单片机I/O口可方便地与其他电路板连接。由于本次设计中并没有按键输入功能,严格来说,并不能称为最小系统,使用它来称呼只是为方便叙述。一 AT89C52功能特性1.特性概述AT89C52与 MCS51 产品指令和引脚完全兼容,自带8k 字节 Flash 闪速存储器和256 字节内部 RAM有,40个引脚,32个外部双向输

14、入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,0Hz24MHz全静态操作,并支持两种软件可选的节电工作模式。 AT89C52极限参数:工作温度 -55 至 +125最高工作电压 6.6v直流输出电流 15mA任一引脚对地电压 -1.0v至 +7.0v AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。图2为PDIP封装的AT89C52。限于篇幅,有关AT89C52的详细内容,这里不做阐述,读者可以参看其数据手册或者相关书籍。2.相关引脚及功能:P0 口:P0 口是一组 8 位漏极开路型双向

15、 I/O 口(引脚3239),也即地址/数据总线复用口。一般在使用时,需外加上拉电阻。P1 、P2、P3口:P1 (引脚18)、P2(引脚2128)、P3(引脚1017)是带内部上拉电阻的 8 位双向 I/O 口。在访问外部程序存储器或 16 位地址的外部数据存储器时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器时,P2 口输出 P2 锁存器的内容。P3 口除了作为一般的 I/O 口线外,每个引脚都具有第二功能。RST:复位输入(引脚9)。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG: (引脚30)当访问外部程序存储器或数据存储器

16、时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。PSEN:程序储存允许(PSEN)输出(引脚29)是外部程序存储器的读选通信号。EA/VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH),EA 端必须保持低电平(接地)。如 EA 端为高电平(接 Vcc 端),CPU 则执行内部程序存储器中的指令。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。 3.存储器资源AT89C52采用哈佛结构,程序存储器和数据存储器分开,具有各自独立的寻址方式、寻址空间和控制信号,并且均可扩展外部存储器,最大寻址空间寻址

17、为64K。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。如果EA 接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。数据存储器:AT89C52 有256 字节片内数据存储器,高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的,通过寻址方式决定是访问RAM还是特殊功能寄存器空间。二 时钟电路时钟电路是单片机正常工作的基础,AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元

18、件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图3。石英晶体时:C1,C2=30pF10pF图3内部振荡器 外接石英晶体(或陶瓷谐振器)及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,推荐电容使用30pF10pF。晶体振荡频率f一般选择f12MHz。三 复位电路89C52在上电时,在复位引脚RST上出现两个机器周期以上的高电平,单片机内则初始复位;当RST由高电平变低电平时,89C52从0000H地址开始执行程序。有时

19、因为外界的干扰而使得程序进入死循环或者偏离正常的程序执行,须由人工复位。结合以上两种情况,常用的复位电路如图4所示。其中:开关RST用于人工复位,接通时可以保证RST引脚获得足够长时间的高电平;极性电容C,在89C52上电时,对C充电,C与电阻R相连的一段端保持高电平,从而保证RST引脚获得大于两个机器周期的高电平;无极性电容Ch主要起滤波作用,滤去高频谐波;二极管VD的作用是,当电源电压瞬间下降时,使电容迅速放电。C=22uF,Ch=0.01uF,R=10k(经验值)图4复位电路2.2 测温电路设计DALLAS18B201 2 3DS18B20 采用单总线技术,既可通过串行口线,也可通过其它

20、I/O 口线与微机接口,传感器内部内置A/D,直接输出912 位(含符号位)的被测温度值,测温范围为-55 +125,测量分辨率最高可达0.0625,12为精度转换时间750ms(典型);每片DS18B20 内含64bit 经过激光修正的只读存储器ROM,开始8位是产品类型编码,接着的48位是每个器件唯一的序号,最后8位是前面56位的CRC(循环冗余校验)码,因此任意多个DSl820可以存放在同一条单线总线上;从DSl8B20送出或从主机送入DS18B20仅需一条线(和地线);每只DS18B20都可以设置成两种供电方式即数据总线供电方式和外部供电方式,采取数据总线供电方式可以节省一根导线但完成

21、温度测量的时间较长,采取外部供电方式则多用一根导线但测量速度较快。DS18B20的引脚图如图5所示。引脚说明:GND 地线DQ 数据I/OVdd 可选电源线图5DS18B20根据18B20的单总线特性,结合设计的目的(两路温度测量),因此这里采用的方案是:利用单片机的一个I/O口作为单总线使用,两路18B20挂接在单总线上,由于单总线的开漏特性,需要外接一个4.7k的上拉电阻,18B20采用外电源供电工作方式,以提高测量速度。设计的电路如图6所示。16. . . . . . . . . . . . . . . .1图7LCD1602图6两路DS18B202.3 显示电路设计1602字符型LCD

22、模块的应用非常广泛,而各种液晶厂家均有提供几乎都是同样规格的1602模块或兼容模块,尽管各厂家的对其各自的产品命名不尽相同;1602字符型LCD模块最初采用的LCD控制器采用的是HD44780,在各厂家生产的1602模块当中,基本上也都采用了与之兼容的控制IC,所以从特性上基本上是一样的;当然,很多厂商提供了不同的字符颜色、背光色之类的显示模块。通常所见到的1602基本规格:显示容量:16x2个字符芯片工作电压:4.55.5v工作电流:2.0mA(5.0v)模块最佳工作电压:5.0v引脚说明:1 GND 电源地2 Vcc 电源+5V3 Vo 对比度调节4 RS寄存器选择(H = 数据选择,L

23、= 指令选择)5 RW 读写信号6 E 使能信号714 DB0 DB7 数据线15 A LED+16 K LED- (不带背光功能的1602只有114引脚,没有15、16引脚)图7为LCD1602示意图,设计的显示电路如图8所示。为便于调节对比度,在1、2引脚间加一可调电阻。714数据引脚接89C52的P0口,RS、RW、E三个控制端接三个I/O口。两个背光引脚这里不使用。图9报警电路图8显示电路2.4 报警电路设计本次设计的报警电路比较简单,由一个放光二极管和一个蜂鸣器组成。由于89C52I/O口驱动电流较小,因此发光二极管外接电源,串联一个电阻后接至I/O口;蜂鸣器由一个三极管驱动,三极管

24、由89C52的I/O口控制(图9)。主要电路的设计都已完成,考虑今后的可扩展性,上面所述未分配的引脚按如下方式分配:DS18B20:P2.0作为两路18B20的单总线使用;LCD1602:RS P1.2,RW P1.1 ,E P1.0;报警电路:P1.3控制发光二极管,P3.1控制蜂鸣器。第三章 软件设计根据第二章中系统的组成,相应程序的设计思路:系统初始化测量温度图11 单总线处理次序是否超过范围报警否是显示温度是否图12 测温程序框图图10 系统程序框图3.1 测温程序由于DS18B20采用单总线方式来与主机实现通信,而单总线在任何时刻只能有一个控制信号或数据,数据要能在单片机和单总线芯片

25、之间实现可靠的传送,遵循单总线处理次序通信协议,确保数据有条不紊地传送,图11为处理次序示意图。一 DSl8B20 工作过程及时序DSl8B20 工作过程中的协议:初始化RoM 操作命令存储器操作命令处理数据ROM 操作命令: Match ROM(匹配ROM) 55H、Skip ROM(跳过ROM CCH、Search ROM(搜索ROM) F0H存储器操作命令: Read Scratchpad(读暂存存储器) BEH、Convert Temperature(温度变换) 44H除上述命令外还有其他操作指令,详细的可以参考相关技术文档。由于是双路测温,总线上挂有两个DS18B20,因此必须分辨是

26、对哪个器件的操作,因此需要使用match rom命令,确定哪个器件在与主机通信,以保证通信的正确。由此可得出测温程序的流程框图(图12)。DS18B20正常工作对时序要求比较严格,图13(a、b、c)所示分别为初始化、读时间隙、写时间隙的时序图。二 源程序a 初始化时序1.延时函数由于DS18B20的时序精准读多为us级的延时,因此有必要独立编写延时函数。void delay5(uchar us) while(-us)b 读时间隙 _nop_(); _nop_(); _nop_();对于12M晶振,忽略函数调用和返回时间(2+2=4us)us=1时,函数可以延时约为5us(对于11.0592M

27、晶振,时间会大于5us),如果调用时us较大,误差是可以接受的。c写时间隙2.初始化函数void ds18b20rst() ds_dq=1; /拉高电平,准备复位 delay5(1); /稍作延时 ds_dq=0; /ds_dq拉低,复位信号作用,DS18B20复位 delay5(96); /精确延时 大于480us(非常重要) ds_dq=1; /释放总线,如果总线上存在18B20,会拉低电平60240us delay5(90);3.读/写数据单总线传输,每次只能传送一位数据,参照图13b、c编写的读/写一位数据如下:bit readbit() bit v; ds_dq=1;/拉高电平,准备

28、读取 _nop_(); _nop_(); ds_dq=0;/拉低电平,开始读时间隙 _nop_(); _nop_(); _nop_(); _nop_(); ds_dq=1; _nop_(); _nop_(); _nop_(); _nop_(); v=ds_dq;/读取值 delay5(12); return v;void writebit(bit v) ds_dq=1;/拉高电平,准备写 _nop_(); _nop_(); ds_dq=0;/开始写时间隙 ds_dq=v;/发送数据 delay5(12); ds_dq=1; delay5(1);实际应用当中,需要读取一个字节或写一个字节数据(8

29、为数据),因此编写了读/写一字节的函数,具体见附录三中都是ds18b20.h中的ds18b20rd()和ds18b20wr()函数。4.匹配ROM假定DS18B20的64位rom编码存放在数组sensor中,程序如下:void matchrom(uchar *sensor) uchar i; ds18b20wr(MatchRom);/ 发送匹配ROM命令 for(i=0;i8;i+) ds18b20wr(*(sensor+i); / 发送 ROM 代码 3.搜索ROM初始化时,单片机并不知道总线上有几个DS18B20,或者并不知道他们的器件ROM编号,系统对总线上器件的数量和每个器件的ROM的

30、识别与搜索是通过search rom命令与算法配合来实现的。具体工作过程: 总线主机发布ROM搜索命令后执行一次读,总线上所有器件就把它们各自ROM编码的第一位放到总线来作出响应。这次读获得的数据是所有器件放在总线上数据的“与”。再执行一次读,因为ROM搜索命令正在执行所以总线上所有器件把各自ROM编码的第一位的补码放在总线上,第二次读获得的数据也是所有器件放在总线上数据的“与”。对第一位的“两读”就此完成。之后主机再次进行的“两读”则是针对ROM编码的第二位,以此类推。从“两读”获得的数据意义见表1。对ROM编码的某一位“两读”之后,对该位进行“-写”操作。“-写”操作写的数据要根据“两读”获得的数据来确定。如果“两读”数据为00,则表示总线上器件在该位上数据发生冲突,“-写”写的数据此种情况下具有“排除”的作用,如果器件ROM编码在该位上的数据与“-写”写的数据相同,则继续保持与总线的联系。如果不相同则此器件从总线上“排除”,不再响应主机发布的命令,直到主机进行下一次复位。如果“两读”数据为01,则表示总线上所有器件在该位上均位0,为保持器件与总线的联系,“-写”操作主机应写0。同理,如“两读”数据为10,主机则应写1。表1“两读”数据意义“两读”数据解释00有器件在总线上,总线上所有器件在此数据位上发生冲突01有器件在总线

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1