毕业设计(论文)--基于单片机的单总线多点温度测控系统_第1页
毕业设计(论文)--基于单片机的单总线多点温度测控系统_第2页
毕业设计(论文)--基于单片机的单总线多点温度测控系统_第3页
毕业设计(论文)--基于单片机的单总线多点温度测控系统_第4页
毕业设计(论文)--基于单片机的单总线多点温度测控系统_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计(论文)-基于单片机的单总线多点温度测控系统 2009届毕业设计任务书一、课题名称:基于单片机的单总线多点温度测控系统二、指导老师:三、设计内容与要求1)、课题概述mcu作为嵌入式系统的低端产品应用非常广泛,电气信息类专业的学生掌握了mcu应用系统的设计具有很强的现实意义。通过基于单片机的单总线多点温度测控系统之全过程,可涵盖电气信息类专业的大部分专业基础课和专业课,可受到良好的工程设计实践的训练。2、设计内容与要求1. 测温范围:-50+1202. 测量误差:0.5, 显示分辨力:0.13. 测量点数:18点,按1#、2#、18#进行编号。4. 有两种显示方式: 每一分钟显示一个测量

2、点的编号及其温度值,自动切换。 可固定只显示某一个测量点的编号及其温度值。5. 对每一个温度测量点可分别设置温度的上、下限值。6. 当某个温度测量点的温度值超过其上、下限值时,发出声光报警信号,并累计报警的温度测量点的个数;当显示报警的温度测量点的温度值时,其编号闪烁显示;可手动切除声光报警信号。7. 硬件电路尽可能简单,便于在工程实践中布线 五、设计进程安排第1周:资料准备与借阅,了解课题思路。第2周:设计要求说明及课题内容辅导,完成图纸初稿。第3-5周:进行毕业设计,完成说明书初稿。第6周:第一次检查,了解设计完成情况。第7周:第二次检查设计完成情况,并作好毕业答辩准备。第8周:毕业答辩与

3、综合成绩评定。六、毕业设计答辩及论文要求1、毕业设计答辩要求答辩前三天,每个学生应按时将毕业设计说明书或毕业论文、专题报告等必要资料交指导教师审阅,由指导教师写出审阅意见。学生答辩时对自述部分应写出书面提纲,内容包括课题的任务、目的和意义,所采用的原始资料或参考文献、设计的基本内容和主要方法、成果结论和评价。答辩小组质询课题的关键问题,质询与课题密切相关的基本理论、知识、设计与计算方法实验方法、测试方法,鉴别学生独立工作能力、创新能力。2、毕业设计论文要求文字要求:说明书要求打印 除图纸外 ,不能手写。文字通顺,语言流畅,排版合理,无错别字,不允许抄袭。图纸要求:按工程制图标准制图,图面整洁,

4、布局合理,线条粗细均匀,圆弧连接光滑,尺寸标注规范,文字注释必须使用工程字书写。曲线图表要求:所有曲线、图表、线路图、程序框图、示意图等不准用徒手画,必须按国家规定的标准或工程要求绘制。附件一:湖南铁道职业技术学院电气工程系毕业论文(设计说明书)格式要求字数要求:10000字以上打印要求:用a4纸打印页边距:上2.54cm、下2.54cm;左3.17cm、右3.17字体、字号要求如下:1封面(2)题目、院(系)、专业、班级、学生姓名、指导教师、完成日期(times new noman、加粗、号字);指导老师的名字用楷体小3号。见样本2论文(设计说明书)中文题目(黑体加粗、3号字,加粗);正文(

5、宋体,小4号,正文内容首行缩进2字)中文摘要、关键词(正文用宋体、小4号字,“摘要”、“关键词”五个字用黑体, 3号字)、英文摘要、关键词(times new noman, 3号字,其中abstract和keyword要加粗)、正文(宋体,小4号字);附录(宋体,5号字);英文题目(times new noman, 3号字),英语专业正文(times new noman,4号字)图下边的标识为“图x.x ?”(字体为宋体,大小为5号),图必须打印的,不能复印粘贴,图号要准确。 一级标题(黑体加粗、3号字:标示为第1、2、3?章);二级标题(黑体加粗、4号字标识为:1.1、1.2?),三级标题(

6、宋体、小4号,加粗,?),以此类推。注释、参考文献(宋体、5号字),正文和前言中标注采用上标,中括号采用半角,数字用times new roman,5号字体任务书(黑体,3号字),正文(宋体,小4)。见样本。论文要求1倍行距要求每个学生要写“答辩申请书”(五个字用黑体, 3号字)方能答辩(其中学生应该写明自己的设计要做什么,怎样做,自己做了些什么,做的结果如何,500字以上);正文用小4号字体;右下脚写“指导老师” 用黑体,4号字 ;指导老师要签字后方可答辩。目录:目录中的页码与实际页码要准确对应。需要页眉,需在页脚标注页码,放在右下角。心得体会(黑体,3号字),正文(宋体,小4号),2000

7、字以上。附件二:前言基本要求:叙述撰写该论文的目的和现实意义。叙述所写课题的国内外研究现状,有何代表性的研究成果或有何研究进展等。叙述所做课题的主要观点、研究方法(技术路线)、创新之处以及对该课题的趋势预测。字数要求在3000字左右。附件三:我系全称为:“电气工程系”专业:专业名称要准确打印:单面打印。附录四:摘 要本课题主要介绍基于at89c51单片机和ds18b20数字温度传感器的多点温度测量系统。该系统利用at89c51单片机分别采集各个温度点的温度,实现温度显示、报警等功能。它以at89c51单片机为主控制芯片,采用数字温度传感器ds18b20实现多路温度的检测,测量精度可以达到0.5

8、。该系统采用了lcd1602a液晶显示模块,lcd1602a作为显示器 ,形象直观的显示测出的温度值。本文首先在绪论中介绍了此系统的背景以及功能。第二章确定设计方案。在第三章论述了总体的设计过程,确定了技术指标及器件的选择并且描述了系统硬件电路设计、硬件设计框图及所使用的各种芯片功能与特性。第四章重点剖析了软件设计的过程。最后一章中具体论述了系统的调试软件及调试中出现的问题。基于at89c51单片机的单总线多点温度测控系统具有硬件组成简单、多点温度检测、读数方便、精度高、测温范围广等特点,在实际工程中得到广泛应用。关键词:数字温度传感器,at89c51单片机,单总线abstractthe pr

9、oblem introduces at89c51 monolithic machine and the ds18b20 figure temperature sensor-based multiple spot temperature measurement system mainly. at89c51 single chip using the system were collected at various temperatures of the temperature, temperature display and alarm functions. it at89c51 mcu-bas

10、ed control chip, digital temperature sensor ds18b20 the realization of multi-channel temperature detection, measurement accuracy can reach 0.5 . the system uses lcd1602a liquid crystal display modules,lcd1602a as a display, the display of visual images to measure the temperature. this article first

11、described in the introduction of this system, as well as background features. the second chapter to determine the design. in the third chapter discusses the overall design process to determine the technical specifications and the choice of devices and a description of the hardware circuit design, ha

12、rdware design and diagram used in a variety of features and functions of the chip. chapter iv analyzes the key software design process. the final chapter discusses the specific system debugging and debug software problems. at89c51 single chip based on single-bus multi-point temperature measurement a

13、nd control system with simple hardware components, multi-point temperature, easy reading, high-accuracy, wide temperature range, and other characteristics of the actual projects are widely usedkey words:digital temperature sensor, at89c51 single chip, single-bus目 录 摘 要iabstractii第1章 绪 论1第2章 系统方案设计32

14、.1 方案设计32.2 方案论证4第3章 系统设计53.1工作原理53.2 单元电路设计6 ds18b20与单片机接口电路设计6路设计14路设计16 报警电路设计19第4章 系统软件设计214.1 软件设计总体思路及主程序流程图214.2 测温模块流程图22 温度的采集23 多点温度的测量234.3 显示模块流程图244.4 键盘扫描流程图25第5章 元器件安装及调试275.1元器件安装275.2产品调试29境及工具29测部分测试29板测试30试30总 结31参考资料33致 谢34附录一35附录二36第1章 绪 论21世纪,科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的

15、性能和结构发生了翻天覆地的变化。我们已经进入了高速发展的信息时代,测量技术也成为当今科技的一个主流,广泛地深入到研究和应用工程的各个领域。温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一。其测量控制一般用各式各样形态的温度传感器。随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日显突出,已成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。美国 dallas 半导体公司的新一代数字式温度传感器,它具有独特的

16、单总线接口方式 ,即允许在一条信号线上挂接数十甚至上百个数字式传感器 ,从而使测温装置与各传感器的接口变得十分简单 ,克服了模拟式传感器与微机接口时需要的a/d转换器及其它复杂外围电路的缺点,这使得布线工作大大简化,可以方便地构成多传感器测量网络。此外与传统的热敏电阻传感器相比,ds18b20具有更高的测量精度。所以,相对于传统温度传感器而言,ds18b20数字温度传感器具有更高的经济性、灵活性、抗干扰性和精确度,在科学研究和生产实际中得到了广泛的应用。随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电

17、子技术有了更高的飞跃,我们现在完全可以运用单片机来代替人工测量,这样既省时又省力。本设计是心at89c51为单片机作为控制核心,提出了一种基于ds18b20的单总线多点温度测控系统,多个温度传感节点通过单总线与单片机相联形成分布式系统。单片机通过实时监控温度的变化,通过lcd1602字符型液晶显示各节点温度的数值,当温度值超出所设定的值时,报警器开始报警,从而远程实现对整个温度系统的管理和控制。这种分布式温度测量系统具有成本低廉、传感精度高、系统稳定、易于管理等优点。第2章 系统方案设计2.1 方案设计方案一:该案由单片机、模拟温度传感器ad590、运算放大器、ad转换器、44键盘、lcd显示

18、电路、集成功率放大器、报警器组成。本方案采用模拟温度传感器ad590作为测温元件,传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单片机将温度值进行处理之后用lcd显示 ,当温度值超过设置值时,系统开始报警。如图1-1所示:图1-1方案一温度测量系统方案框图方案二:该方案使用了at89c51单片机作为控制核心,以智能温度传感器ds18b20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过44键盘模块对温度进行上、下限设置,超过其温度值就报警。显示电路采用lcd1602模

19、块,使用8550三极管为中心组成的报警电路。如图1-2所示图1-2 方案二温度测量系统方案框2.2 方案论证方案一采用模拟温度传感器,转换结果需要经过运算放大器和ad转换器传送给处理器。它控制虽然简单,但电路复杂,不容易实现对多点温度进行测量和监控。由于采用了多个分立元件和模数转换器,容易出现误差,测量结果不是很准确,因此本方案并不可取。方案二采用智能温度传感器ds18b20,它直接输出数字量,精度高,电路简单,只需要模拟ds18b20的读写时序,根据ds18b20的协议读取转换的温度。此方案硬件电路非常简单,但程序设计复杂一些,但是在课外对ds18b20、字符型液晶显示、44键盘的程序有所了

20、解,而且曾经在网上看到过此类程序程序设计,并且我们已经使用开发工具keil用c语言对系统进行了程序设计,用仿真软件proteus对系统进行了仿真,达到了预期的结果。由此可见,该方案完成具有可行性,体现了技术的先进性,经济上也没有任何问题。综上所述,本课题应当采用方案二对系统进行设计。第3章 系统设计3.1工作原理 基于单片机的单总线多点温度测控系统以at89c51为中心器件,以keil为系统程序开发平台,用c语言进行程序设计,以proteus作为仿真软件设计而成的。系统主要由温度传感器电路、液晶显示电路、键盘电路、报警电路组成,电路原理图如附录一所示。ds18b20是智能温度传感器,它的输入/

21、输出采用数字量,通过单总线,接收主机发送的命令,根据ds18b20内部的协议进行相应的处理,将转换的温度数值以串口形式发送给主机。主机按照通信协议用一个io口模拟ds18b20的时序,发送命令(初始化命令、rom命令、功能命令)给ds18b20,并读取温度值,在内部进行相应的数值处理,用字符型液晶模块显示各点的温度。在系统启动之时,可以通过44键盘设置各点温度的上限值和下限值,当某点温度超过设置值时,报警器开始报警,从而实现了对各点温度的实时监控。每个ds18b20有自己的序列号,因此本系统可以在一根总线上挂接了4个ds18b20,通过crc校验,对各个ds18b20的rom进行寻址,地址符合

22、的ds18b20才作出响应,接收主机的命令,向主机发送转换的温度。采用这种ds18b20寻址技术,使系统硬件电路更加简单。ds18b20虽然有测温简单的特点,但在实际应用中应注意一下几点: 1 较小的硬件开销需要相对复杂的软件进行补偿 由于ds1820与微处理器间采用串行数据传送,因此,在对ds1820进行读写编程时,必须严格的保证读写 2 在ds1820的有关资料中均未提及单总线上所挂ds1820数量问题,容易使人误认为可以挂任意多个ds1820,在实际应用中并非如此。当单总线上所挂ds1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。 4 在d

23、s18 20测温程序设计中,向ds1820发出温度转换命令后,程序总要等待ds1820的返回信号,一旦某个ds1820接触不好或断线,当程序读该ds1820时,将没有返回信号,程序进入死循环。这一点在进行ds1820硬件连接和软件设计时也要给予一3.2 单元电路设计 ds18b20与单片机接口电路设计 1 ds18b20与单片机的接口技术如图3-1所示:ds18b20与单片机的接口电路非常简单。ds18b20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的i/o口,电源与数字输入输出脚间需要接一个4.7k的电阻。 图3-1 ds18b20与单片机接口电路 2 中央处理器at8

24、9c51简介 at89c51的特点at89c51具有以下几个特点:at89c51与mcs-51系列的单片机在指令系统和引脚上完全兼容;片内有4k字节在线可重复编程快擦写程序存储器;全静态工作,工作范围:0hz24mhz;三级程序存储器加密;1288位内部ram;32位双向输入输出线;两个十六位定时器/计数器五个中断源,两级中断优先级;一个全双工的异步串行口;间歇和掉电两种工作方式。at89c51的功能描述at89c51是一种低损耗、高性能、cmos八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。它与mcs-51系列单片

25、机在指令系统和引脚上完全兼容,不仅可完全代替mcs-51系列单片机,而且能使系统具有许多mcs-51系列产品没有的功能。at89c51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4k,四个i/o口全部提供给用户。可用5v电压编程,而且擦写时间仅需10毫秒,仅为8751/87c51的擦除时间的百分之一,与8751/87c51的12v电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽(2.7v6v),全静态工作,工作频率宽在0hz24mhz之间,比8751/87c51等51系列的6mhz12m

26、hz更具有灵活性,系统能快能慢。at89c51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。p0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。 at89c51引脚功能at89c51单片机40引脚分布如右图所示。at89c51是一种低损耗、高性能、cmos八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。它与mca-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替mcs-51系列单片机,而且能使系统具有许多mcs-51系列产品没有的功能

27、。at89c51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4k,四个i/o口全部提供给用户。可用5v电压编程,而且擦写时间仅需10毫秒,仅为8751/87c51的擦除时间的百分之一,与8751/87c51的12v电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽(2.7v6v),全静态工作,工作频率宽在0hz24mhz之间,比8751/87c51等51系列的6mhz12mhz更具有灵活性,系统能快能慢。at89c51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证

28、程序或系统不被仿制。p0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。 3 ds18b20的工作原理 ds18b20数字温度传感器概述ds18b20数字温度传感器是dallas公司生产的1wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。ds18b20产品的特点只要求一个端口即可实现通信。在ds18b20中的每个器件上都有独一无二的序列号。实际应用中不需要外部任何元器件即可实现测温。测量温度范围在55.c到125.c之间。数字温度计的分辨率用户可以从9位到12位选择

29、。内部有温度上、下限告警设置。to92封装的ds18b20的引脚排列见右图,其引脚功能描述见表序号名称引脚功能描述1gnd地信号2dq数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3vdd可选择的vdd引脚,当工作于寄生电源时,该引脚必须接地表3-2ds18b20详细引脚功能描述 ds18b20的内部结构ds18b20的内部框图下图所示。64位rom存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(th)和下线警报触发(tl)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者

30、可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(crc )。使用寄生电源时,ds18b20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过dq引脚提供;高电平总线信号同时也向内部电容cpp充电,cpp在总线低电平时为器件供电。 4 ds18b20的4个主要数据部件:光刻rom中的64位序列号是出厂前被光刻好的,它可以看作是该ds18b20的地址序列码。64位光刻rom的排列是:开始8位(28h)是产品类型标号,接着的48位是该ds18b20自身的序列号,最后8位是前面56位的循环冗余校验码(crc x8+x5+x4+1)

31、。光刻rom的作用是使每一个ds18b20都各不相同,这样就可以实现一根总线上挂接多个ds18b20的目的。ds18b20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/lsb形式表达,其中s为符号位。这是12位转化后得到的12位数据,存储在18b20的两个8比特的ram中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125的数字输出为07d0h,+25.0625的数字输出为

32、0191h,-25.0625的数字输出为ff6fh,-55的数字输出为fc90h。表3-4ds18b20温度数据表temperaturedigital outputdigital output+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.1250000 0000 1010 001000a2h+0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000fff8h-10.1

33、251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90hds18b20温度传感器的存储器 ds18b20温度传感器的内部存储器包括一个高速暂存ram和一个非易失性的可电擦除的eepram,后者存放高温度和低温度触发器th、tl和结构寄存器。配置寄存器表3-5 配置寄存器0r1r011111低五位一直都是1,tm是测试模式位,用于设置ds18b20在工作模式还是在测试模式。在ds18b20出厂时该位被设置为0,用户不要去改动。r1和r0用来设置分辨率,如下表所示:(ds18b20出厂

34、时被设置为12位)表3-6r1与r0确定传感器分辨率设置表r1r0传感器精度/bit转换时间/ms00993.750110187.510113751112750 5 ds18b20的工作过程初始化rom命令跟随着需要交换的数据;功能命令跟随着需要交换的数据。访问ds18b20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,ds18b20都不会响应主机(除了search rom 和alarm search这两个命令,在这两个命令后,主机都必须返回到第一步)。a初始化:ds18b20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由ds18b20发出的应答脉冲构成。当d

35、s18b20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。b. rom命令:rom命令通过每个器件64-bit的rom码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。ds18b20的rom如表3-4所示,每个rom命令都是8 bit长。c. 功能命令:主机通过功能命令对ds18b20进行读/写scratchpad存储器,或者启动温度转换。ds18b20的功能命令如表3-7所示。指令协议功能读rom33h读ds18b20中的编码 即64位地址 符合rom55h发出此命令后,接着发出64位rom编码,访问单总线上与该编码相对应的ds18b20,使之作出响应,

36、为下一步对该ds18b20的读写作准备搜索rom0f0h用于确定挂接在同一总线上ds18b20的个数和识别64位rom地址,为操作各器件作好准备跳过rom0cch忽略64位rom地址,直接向ds18b20v 温度转换命令,适用于单个ds18b20工作报警搜索命令0ech执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44h启动ds18b20进行温度转换,转换时间最长为500ms 典型为200ms ,结果丰入内部9字节ram中读暂存器beh读内部ram中9字节的内容写暂存器4eh发出向内部ram的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据复制暂存器48h将r

37、am中第3、4字内容复制到e2prom中重调e2prom0b8h将e2prom中内容恢复到ram中的第3、4字节读供电方式0b4h读ds18b20的供电模式,寄生供电时ds18b20发送“0”,外部供电时ds18b20发送“1”表3-7 6 ds18b20的信号方式ds18b20采用严格的单总线通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。除了应答脉冲所有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节的低位在前。a.初始化序列:复位脉冲和应答脉冲在初始化过程中,主机通过拉低单总线至少480s,以产生复位脉冲 tx 。然后

38、主机释放总线并进入接收 rx 模式。当总线被释放后,5k的上拉电阻将单总线拉高。ds18b20检测到这个上升沿后,延时15s60s,通过拉低总线60s240s产生应答脉冲。初始化波形如图3-8所示。 图 3-8 初始化脉冲b.读和写时序在写时序期间,主机向ds18b20写入指令;而在读时序期间,主机读入来自ds18b20的指令。在每一个时序,总线只能传输一位数据。读/写时序如图3-9所示。写时序存在两种写时序:“写1”和“写0”。主机在写1时序向ds18b20写入逻辑1,而在写0时序向ds18b20写入逻辑0。所有写时序至少需要60s,且在两次写时序之间至少需要1s的恢复时间。两种写时序均以主

39、机拉低总线开始。产生写1时序:主机拉低总线后,必须在15s内释放总线,然后由上拉电阻将总线拉至高电平。产生写0时序:主机拉低总线后,必须在整个时序期间保持低电平(至少60s)。在写时序开始后的15s60s期间,ds18b20采样总线的状态。如果总线为高电平,则逻辑1被写入ds18b20;如果总线为低电平,则逻辑0被写入ds18b20。读时序图3-9ds18b20读/写时序图ds18b20只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便ds18b20能够传送数据。所有读时序至少60s,且在两次独立的读时序之间至少需要1s的恢复时间。每次读时序由主机发

40、起,拉低总线至少1s。在主机发起读时序之后,ds18b20开始在总线上传送1或0。若ds18b20发送1,则保持总线为高电平;若发送0,则拉低总线。当传送0时,ds18b20在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。ds18b20发出的数据在读时序下降沿起始后的15s内有效,因此主机必须在读时序开始后的15s内释放总线,并且采样总线状态。ds18b20 在使用时,ds18b20 信号线与单片机1 位i/o线相连,且单片机的1 位i/o 线可挂接多个ds18b20 ,ds18b20的温度计算ds18b20允许通过程序对传感器的分辨率,温度报警的上、下限等参数进行配置。它的内部

41、存储器包括一个高速暂存存储器和一个非易失性可擦除e2prom。速暂存存储器共有8个字节 byte ,每个字节8位 bit 。根据温度的计算方法如下:s s s s s 11111 b 温度值:t msb and 7 256 + lsb 0.0625 sssss 00000 b 温度值:t - 256 - msb 256 - lsb 0.0625 如果,存储器高位寄存器ms的s s s s s 均为1 ,则被测温度为正值,用上面第1个公式来计算温度。如果存储器高位寄存器msb的s s s s s均为0,则被测温度为负值,用上面第2个公式来计算温度。在这里,有两点应当注意:一是公式中中括号内的数值

42、为二进制,在计算口号内计算完成后应转化为十进制;二是这里的7与0.0625是假设传感器的分辨率设置0.0625时的计算值。如果分辨率的设置值不是0.0625,那么就应当作相应的变化。第3和第4个字节分别用来存放温度报警的上限 th 和下限值 tl 。ds18b20在完成温度变换后,会将所测温度值与贮存在th和tl内的上下限值相比较,如果测温结果高于th或低于tl,ds18b20内部的告警标志就会被置位,表示温值超出了测量范围。并且该值在掉电后不会丢失,而是记忆其设定的上下限值。第5字节是配置寄存器,如表2.3所示,该寄存器用于对温度转换值的分辨率进行设置。其中,最高位用于设置传感器是工作模式还

43、是测试模式,是生产厂家为便于检验使用。其出厂时的默认值为0,为工作模式 即用户使用时的模式 。并且在用户使用中,该位总是保持为0。r1与r0确定传感器的分辨率,如表2.4所示,ds18b20有4种分辨率可供选择。使用时可以根据实际需要来设置,出厂时的默认设置是12位。最后5位总保持为1路设计根据设计任务书中要求实现的功能,我选择了4x4 16个键盘的矩阵键盘来设置温度的上、下限值,此键盘设计符合系统设置要求,所以我选择此键盘完成本设计。矩阵键盘结构:键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。矩阵键盘又称行列式键盘,这种行列式键盘结构能够有效的提高单片机系

44、统中i/o口的利用率。它的结构和产生的波形如图3-11所示。图3-11键盘结构及产生的波形图矩阵键盘工作原理:在键盘中按键数量较多时,为了减少i/o口的占用,通常将按键排列成矩阵形式,如图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键这样,一个端口就可以构成 16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,图中行线所接的单片机的i/o口作为输出端,而列

45、线所接的i/o口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了图3-12 键盘电路原理图键盘按键的判断:上面是一个4x4的键盘,公用4+4 8条接口线,如果按下键8,则第一行的线与第一列的线接通,当前第一行如果是低电平则第一列也输出低电平,而其他没有的列输出为高电平,根据行列线的电平,就可以判断按下的键的行位置。a)判断有无键按下。b)去除键的机械抖动。方法是判别到有键按下,延时10ms在读,如仍有键按下,再确定为键按下,否则为抖动。c)判别按下键的键号。d)cpu对

46、键的一次闭合只作一次处理。方法是等键释放后再把键值作有效处理。列扫描法识别键号的工作原理如下:将第0列变为低电平,其余列为高电平,输出编码为1110。然后读取行的电平,辨别第0列是否有键按下。在第0列上若有某一个按键按下,则相应的行被拉到低电平,则表示第0列和此行相交的位置上有键按下。若没有任一条行线为低电平,则说明列上无键按下。将第1列变为低电平,其余列为高电平,输出编码为本1101。然后通过输入口读取各行的电平。检测其中是否有变为低电平的行线。若有键按下,则进而辨别哪一行有键按下,确定按键位置。将第2列变为低电平,其余列为低电时平,输出编码为本1011。辨别是否有哪一行按键按下的方法同上。

47、将第3列边为第电平,其余列为低电平时,输出编码为本0111。辨别是否有哪一行按键按下的方法同上。路设计温度显示工作原理:lcd1602可以采用两种方式与单片机连接,一种是采用8位数据总线d0d7,和rs、r/w、en三个控制端口只用d4-d7作为四位数据分两次传送本实验将使用并采用位数据方式来控制1602显示图3-13 at89c51与lcd1602接口电路图进行lcd设计主要是lcd的控制/驱动和外界的接口设计。控制主要是通过接口与外界通信、管理内/外显示ram,控制驱动器,分配显示数据;驱动主要是根据控制器要求,驱动lcd进行显示。控制器还常含有内部ascii字符库,或可外扩的大容量汉字库

48、。vss: 电源地vdd:电源正极vl:液晶显示偏压信号,对比度调整端,接地时最高,接正电源最低,可接10k电位器调整rs: 寄存器选择,高电平选择数据寄存器低电平选择指令寄存器 r/w 读/写选择端,高电平读操作,低电平写操作 e使能信号,当e端由高电平跳变成低电平时,液晶模块执行命令blk背光源负极 图3-14 lcd1602a的管脚d0d7数据端口芯片的主要技术参数及应用配置:显示容量:162个字符芯片工作电压:4.55.5v工作电流:2.0ma 5.0v 模块最佳工作电压:5.0v字符尺寸:2.954.35(wxh)mm表3-15lcd1602a主要技术参数指令码功能00111000设

49、置16*2显示,5*7点阵, 8位数据接口表lcd 1602a显示模式指令码功能00001dcbd 1开显示 d 0 关显示c 1 显示光标c 0 不显示光标b 1 光标闪烁b 0 光标不闪烁000001nsn 1 当读/写一个字符后,地址指针加1,且光标加1;n 0 当读/写一个字符后,地址指针减1,且光标减1;s 1 当写一个字符,整屏显示左移 n 1 或者右移 n 0 ,以得到光标不移动而整屏移动的效果;s 0 当写一个字符,整屏显示不移动。表3-17 lcd1602a显示开/关及光标设置编号符号引脚说明1vss电源地2vdd电源正极3vl液晶显示偏压信号,4rs数据/命令选择端(h/l

50、)5r/w读/写选择端(h/l)6e使能信号7d0data i/o8d1data i/o9d2data i/o10d3data i/o11d4data i/o12d5data i/o13d6data i/o14d7data i/o15bla背光源正16blk背光源负表3-18 lcd1602a接口信号说明lcd1602的显示与控制命令1602液晶模块内部的字符发生内存(cgrom已经存储了160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是01000001b(41h),显示时模

51、块把地址41h中的点阵字符图形显示出来,我们就能看到字母“a”1602液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01h,光标复位到地址00h位置指令2:光标复位,光标返回到地址00h指令3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示c:控制光标的开与关,高电平表示有游标,低电平表示无游标b:控制光标是否闪烁,

52、高电平闪烁,低电平不闪烁指令5:光标或显示移位元s/c:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令dl:高电平时为4位总线,低电平时为8位总线n:低电平时为单行显示,高电平时双行显示f:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器ram地址设置指令8:ddram地址设置指令9:读忙信号和光标地址bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙指令10:写数据指令11:读数据液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符

53、地址,也就是告诉模块在哪里显示字符。p1.1脚。由于采用了无源蜂鸣器,所以p1.1输出低电平时,蜂鸣器不会发声,需要输出一个脉冲信号蜂鸣器才会发声,脉冲信号的频率决定了蜂鸣器发出的声音的音调的高低。电路如图3-19所示:第4章 系统软件设计4.1 软件设计总体思路及主程序流程图本系统采用c语言编写,主程序主要由四部分构成,系统通电后首先初始化系统,依次完成温度采集、温度处理、数据显示、键盘处理等四项功能。温度采集部分主要完成4个温度测试点的温度数据采集任务;温度处理部分主要是将采集到的温度数据与用户设定的各点上下限温度值进行比较处理,并判断是否超出设定的上下限值,如果超出则蜂鸣器报警;数据显示

54、部分主要实现温度数据的显示,显示方式根据设计要求支持1到4个温度测试点的轮流循环显示和固定显示两种方式;键盘处理部分主要实现用户对系统参数的设置,结合显示部分,实现用户与系统之间的人机接口。系统软件流程如图所示 图4-1 系统软件总流程图4.2 测温模块流程图图4-2 dsl8b20操作流程图 温度的采集每一片dsl8b20在其rom中都存有其唯一的48位序列号,在出厂前已写入片内rom中,主机在进入操作程序前必须逐一接入dsl8b20,用读rom 33h 命令将该dsl8b20的序列号读出并登录。当主机需要对众多在线dsl8b20的某一个进行操作时首先要发出匹配rom命令 55h ,紧接着主

55、机提供64位序列 包括该dsl8b20的48位序列号 之后的操作就是针对该dsl8b20的,而所谓跳过rom命令即为之后的操作,是对所有dsl8b20的框图中先有跳过rom即是启动所有dsl8b20进行温度变换之后通过匹配rom再逐一地读回每个dsl8b20的温度数据在dsl8b20组成的测温系统中主机在发出跳过rom命令之后再发出统一的温度转换启动码44h就可以实现所有dsl8b20的统一转换再经过1s后就可以用很少的时间去逐一读取这种方式,使其t值往往小于传统方式。由于采取公用的放大电路和a/d转换器只能逐一转换,显然通道数越多这种省时效应就越明显。 多点温度的测量单总线 已经挂接了4个d

56、s18b20。由于已经在上面获取了多个ds18b20的rom代码并在at89c51单片机内部的中建立了测量位置点和传感器64位rom代码之间的关系表,因此对多个温度的巡回测量的步骤如下: 1 发跳过rom命令cch。 2 发启动所有在线的ds18b20进行温度转换命令44h。 3 延迟1s。 4 发匹配rom命令55h。 5 按照at89c51中建立的关系表的顺序取出64位rom代码发送到单总线。 6 发读温度值命令beh,读取温度值。 7 进行crc校验和数据处理后送lcd显示器显示。 8 重复第4步到第7步,直到所有的ds18b20测量处理完。 9 再重复第1步到第8步,进行下一轮的巡回测量。如果只对某一个ds18b20进行温度测量,只要将第1步跳过rom命令cch,改为匹配rom命令55h,将拨动开关拨到和要测量的ds18b20的编号相对应的数值上,单片机读取拨动开关的数值 编号 n

温馨提示

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

评论

0/150

提交评论