毕业设计(论文)-室内采暖温度检测系统方案.doc_第1页
毕业设计(论文)-室内采暖温度检测系统方案.doc_第2页
毕业设计(论文)-室内采暖温度检测系统方案.doc_第3页
毕业设计(论文)-室内采暖温度检测系统方案.doc_第4页
毕业设计(论文)-室内采暖温度检测系统方案.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

长春工程学院毕业设计(论文) i 目 录 1 引言 1 1.1 设计课题的目的及意义 .1 1.2 温度检测技术的国内外现状 .2 2 室内采暖温度检测系统方案论证 5 2.1 方案设计 .5 2.2 方案选择 .6 3 室内采暖温度检测系统硬件设计 7 3.1 单片机模块 .7 3.2 温度检测模块 .9 3.3 报警电路模块 15 3.4 存储模块 16 3.5 时钟芯片模块 17 3.6 日期调整按键模块 19 3.7 1602 液晶显示模块19 3.8 电源模块 23 3.9 硬件总体设计 23 4 室内采暖温度检测系统软件设计 .25 4.1 系统程序总体流程概况 25 4.2 子程序设计 25 5 系统调试与结果分析 .30 5.1 软件调试 30 长春工程学院毕业设计(论文) ii 5.2 仿真结果 30 6 总结 .31 参考文献 32 致 谢 33 附录一、电路原理图 34 附录二、系统仿真图 35 附录三、源程序 36 长春工程学院毕业设计(论文) 1 1 引言 随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广 泛的应用。单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方 面,控制简单方便,测量范围广,精度较高。 单片机的特点是体积较小,也就是其集成特性,其内部结构是普通计算机系统的简化, 增加一些外围电路,就能够组成一个完整的小系统,单片机具有很强的可扩展性。它具有 和普通计算机类似的、强大的数据处理功能,通过使用一些科学的算法,可以获得很强的 数据处理能力。所以单片机在工业中应用中,可以极大地提高工业设备的智能化、数据处 理能力和处理效率,而且单片机无需占用很大的空间。 该系统设计核心控制器使用单片机 at89c51,测温传感器使用 ds18b20,时钟芯片采用 ds1302,存储芯片采用 at24c02,用 lcm1602 液晶显示实现温度和日期的动态显示,并且如 果超出温度范围,报警系统会即时进行报警。 1.1 设计课题的目的及意义 北方的冬季一般比较寒冷,温度往往达到-20以下,为了抵御寒冷,各个供暖公司燃 烧大量的煤为住户进行供暖,但是燃烧的煤炭所散发的热量与住户屋内的温度是否成正比, 是否有大量的热量从住户的墙壁或门窗散发出去而造成大量的能源损失,一直是大家所关 心的问题。随着国家环保、节能意识的提高,迫切需要一种检测系统对流入住户屋内的热 量以及住户屋内所实际能达到的温度进行检测。 温度检测的传统方法是使用热电偶、热电 阻、半导体 pn 结等的模拟温度传感器,信号经取样、放大后通过模数转换,再由单片机 处理。 被测温度信号从温敏元件到单片机,经过众多器件,易受干扰,不易控制且精度不 高。 这次毕业设计的目的主要是让生活在信息时代的我们,将所学知识应用于生产生活当 中,掌握系统总体设计的流程,方案的论证,选择,实施与完善。通过对温度控制通信系 统的设计、制作、了解信息采集测试、控制的全过程,提高在电子工程设计和实际操作方 面的综合能力,初步培养在完成工程项目中所应具备的基本素质和要求。培养研发能力, 通过对电子电路的设计,初步掌握在给定条件和要求的情况下,如何达到以最经济实用的 方法、巧妙合理地去设计工程系统中的某一部分电路,并将其连接到系统中去。提高查阅 资料、语言表达能力和理论联系实际的技能。 随着温度检测理论和技术的不断更新, 温度传感器的种类也越来越多,在微机系统中 使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、 长春工程学院毕业设计(论文) 2 热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领 域。其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、 科研、生活、提供更好更方便的设施就需要从单片机技术入手,一切向着数字化控制,智 能化控制方向发展。 21 世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备 的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,测量技术也成为 当今科技的主流之一,被广泛的应用于生产的各个领域。 当今社会温度的测量与控制系统在生产与生活的各个领域中扮着越来越重要的角色, 大到工业冶炼,物质分离,环境检测,电力机房,冷冻库,粮仓,医疗卫生等方面;小到 家庭冰箱,空调,电饭煲,太阳能热水器等方面都得到了广泛的应用,温度控制系统的广 泛应用也使得这方面研究意义非常的重要。 1.2 温度检测技术的国内外现状 国外对温度控制技术研究较早,始于 20 世纪 70 年代。先是采用模拟式的组合仪表, 采集现场信息并进行指示、记录和控制。80 年代末出现了分布式控制系统。目前正开发和 研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度测控技术发展 很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。 我国对于温度测控技术的研究较晚,始于 20 世纪 80 年代。我国工程技术人员在吸收 发达国家温度测控技术的基础上,才掌握了温度室内微机控制技术,该技术仅限于对温度 的单项环境因子的控制。我国温度测控设施计算机应用,在总体上正从消化吸收、简单应 用阶段向实用化、综合性应用阶段过渡和发展。在技术上,以单片机控制的单参数单回路 系统居多,尚无真正意义上的多参数综合控制系统,与发达国家相比,存在较大差距。我 国温度测量控制现状还远远没有达到工厂化的程度,生产实际中仍然有许多问题困扰着我 们,存在着装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享和 可靠性差等缺点。在今后的温控系统的研究中会趋于智能化,集成化,系统的各项性能指 标更准确,更加稳定可靠。 温度是表征物体冷热程度的物理量,是国际单位制中 7 个基本物理量之一,它与人类 生活、工农业生产和科学研究有着密切关系。随着科学技术水平的不断把提高,温度测量 技术也得到了不断的发展。 1.2.1 温度检测技术简介 温度检测技术是一种利用微机来实现数据采集、数据通讯传输和数据分析处理的一门 长春工程学院毕业设计(论文) 3 新技术,是在生产过程中记录和说明热加工产品与空气温度关系的技术,追踪测量得到的 数据被显示为图表或数字。这个过程最简单的形式就是它可以告诉生产者所生产的产品的 温度、保持这个温度有多长时间以及在什么时间达到了什么温度。通过分析数据,生产人 员可以保证产品达到最好的质量、解决产品存在问题、优化生产工艺路线及节约能耗。无 论是在电子产品的生产、食品加工、其它工业生产,还是在医疗器械生产方面,只要在生 产过程中温度是重要的控制指标,温度检测技术就具有非常广阔的应用前景。随着国内外 工业的日益发展,温度检测技术也有了不断的进步,目前的温度检测使用的方法种类繁多, 应用范围也较广泛,大致包括以下几种方法: (1)利用物体热胀冷缩原理制成的温度计; (2)利用热电效应技术制成的温度检测元件; (3)利用热阻效应技术制成的温度计; (4)利用热辐射原理制成的高温计; (5)利用声学原理进行温度测量; (6)利用红外测温技术; 温度的检测方法通常分为两大类即接触式测温和非接触式测温。接触式测温是基于热 平衡原理,测温时,感温元件与被测介质直接接触,当达到热平衡时,获得被测物体的温 度,例如,热电偶,热敏电阻,膨胀式温度计等就属于这一类;非接触式测温基于热辐射 原理或电磁原理,测温时,感温元件不直接与被测介质接触,通过辐射实现热交换,达到 测量的目的,例如,红外测温仪、光学高温计等。 常用的测温传感器有热电偶,热电阻,导体温度传感器等。 集成温度传感器可以分为三类:模拟集成温度传感器、模拟集成温度控制器、智能温 度传感器。 1.2.2 温度检测技术的发展 在温度测量方面各国均取得了许多可喜的成果,其中前苏联的压电石英频率温度计分 辨能力可达 0.0001,理论上可达 0.00001,而且在-40230范围内具有温度与频 率的线性特性;我国生产的石英温度传感器分辨率达到 0.0001,误差在 0.05以内,中 国航天工业总公司 702 所研制的 5901(stp-1000)型粘贴式测温片,其静态测温精度为 0.5%,快速响应时间小于 0.013s。 虽然温度测量方法多种多样,但在很多情况下,对于实际工程现场或一些特殊条件下 的温度测量,比如对极限温度、高温腐蚀性介质温度、气流温度、表面温度、固体内部温 长春工程学院毕业设计(论文) 4 度分布、微尺寸目标温度、大空间温度分布、生物体内温度、电磁干扰条件下温度测量来 讲,要想得到准确可靠的结果并非易事,需要非常熟悉各种测量方法的原理及特点,结合 被测对象要求选择合适的测量方法才能完成。同时,还要不断探索新的温度测量方法,改 进原有测量技术,以满足各种条件下的温度测量需求。 温度检测技术应用领域非常的广泛,冷冻库,粮仓,储罐,电信机房,电力机房, 电缆线槽等测温和控制领域。轴瓦,缸体,纺机,空调等狭小空间工业设备测温和控制。 汽车空调,冰箱,冷柜以及中低温干燥箱等。太阳能供热,制冷管道热量计量,中央 空调分户热能计量等。 长春工程学院毕业设计(论文) 5 2 室内采暖温度检测系统方案论证 2.1 方案设计 2.1.1 方案一:利用 plc 实现对温度恒定的控制 利用 plc 实现对温度恒定的控制,其控制系统的结构框图如图 2-1 所示:采用 plc 控 制实现电热丝和风扇加热制冷,以全通、间断导通和全断加热制冷的自动控制方式,来达 到温度的恒定。智能型热电偶温度表将置于被测环境中,热电偶的传感器信号与恒定温度 的给定电压进行比较,构成闭环系统,生成温差电压 vt,plc 自适应恒温控制电路,根据 vt 的大小计算出全通、间接导通和全断的自适应恒温控制电路,并将占空比可调的控制电 平经输出隔离电路去控制可控硅门极的通断,实现自适应的恒温控制。若温度升的过快或 者降低过快,plc 也将输出关断电平信号转换为可控硅电路相匹配的输入信号。 、 、 、 、 、 、 、 、 、 sz-4 plc 、 、 、 、 、 、 、 、 、 、 vt 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 图 2-1 方案一的系统结构图 2.1.2 方案二:用热电耦检测温度 以单片机为主控制系统,其总体结构如图 2-2 所示。采用热电偶对温度进行采集,将 采集到的信号利用放大器进行放大,再经过 a/d 转换,然后将采集到的数据用单片机在液 晶显示器上显示出来,然后再利用控制电路对温度控制其升温或者降温。 、 、 、 、 、 、 、 、a/d、 、 、 、 、 、 、 、 、 、lcd 、 、 、 、 、 、 、 图 2-2 方案二的系统结构图 2.1.3 方案三:用温度传感器检测温度 仍以单片机为主控制系统,采用数字温度传感器实现温度采集,其总体结构如图 2-3 所示。系统主要包括以系统核心 at89c51 单片机作为微处理器的现场温度采集、实时温度 显示与存储、相应时刻日期显示与调整、超温报警装置系统。 长春工程学院毕业设计(论文) 6 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 图 2-3 方案三的系统总体结构框图 温度采集电路以数字量形式将现场温度传至单片机。采用单线单点检测技术,其中 ds1302 时钟芯片为系统提供日期和时间,由单片机对温度传感器所采集的数据进行处理, 经 lcm1602 液晶显示器显示出来,并将处理后的温度值与设定值进行比较,从而控制报警 电路是否发出报警信号。 2.2 方案选择 对于方案一,采用 plc 实现恒温控制,由于 plc 成本高,且 plc 是外围系统配置复杂, 不利于我们的设计;由于数字 pid 调节,运算量大,只有选择对于温度的控制精度合适的 参数才往往能达到较好的效果。 对于方案二,虽然许多热电偶精度非常高,但是其构成系统太复杂,抗干扰能力也不 强,而且成本比较高。 对于方案三,采用数字温度传感器进行温度采集,该方案成本低,可靠性高,抗干扰 性强,而且易于设计和控制,同时也是本次毕业设计任务书上所要求的方案。 故本设计我选方案三,采用数字温度传感器采集温度来实现室内温度检测。 长春工程学院毕业设计(论文) 7 3 室内采暖温度检测系统硬件设计 3.1 单片机模块 主控单片机采用一片 atmel at89c51。根据题目要求,充分利用了单片机灵活控制的 优点,发挥其优势功能,采用单片机控制显示信号灯,提高了系统的灵活性,设置方便。 at89c51 芯片本身集成了看门狗(wdt)电路,这是为了系统更加的稳定可靠,避免了系统 因为死机而停止工作的情况发生这种做法对于实际上长时间运行在恶劣状况的交通灯控制 系统来说是十分必要的。它可以完成自动加载复位,省去人工调整的麻烦,可以做到无人 职守1。 at89c51 是一个低功耗,高性能 cmos 8 位单片机,片内含 4k bytes isp(in-system programmable)的可反复擦写 1000 次的 flash 只读程序存储器,器件采用 atmel 公司的高 密度、非易失性存储技术制造,兼容标准 mcs-51 指令系统及 80c51 引脚结构,芯片内集成 了通用 8 位中央处理器和 isp flash 存储单元,功能强大的微型计算机的 at89c51 可为许 多嵌入式控制应用系统提供高性价比的解决方案1。 at89c51 具有如下特点1:40 个引脚,4k bytes flash 片内程序存储器,128 bytes 的随机存取数据存储器(ram) ,32 个外部双向输入/输出(i/o)口,5 个中断优先级 2 层 中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信口,看门狗(wdt)电路, 片内时钟振荡器,如图 3-1 所示。 图 3-1 at89c51 芯片引脚 此外,at89c51 设计和配置了振荡频率可为 0hz 并可通过软件设置省电模式。空闲模 式下,cpu 暂停工作,而 ram 定时计数器,串行口,外中断系统可继续工作,掉电模式冻 长春工程学院毕业设计(论文) 8 结振荡器而保存 ram 的数据,停止芯片其它功能直到外中断激活或硬件复位。同时该芯片 还具有 pdip、tqfp 和 plcc 等三种封装形式,以适应不同产品的需求2。 3.1.1 复位键控制模块 单片机复位电路是使 cpu 和系统中的其他功能部件都处在一个确定的初始状态,并从 该状态开始工作,例如复位后 pc=0000h,使单片机从第一个单元取指令。无论是在单片机 刚接上电源时,还是断电后或者发生故障后都要复位。单片机复位的条件是:使 rst/vpd 引脚加上持续两个机器周期(即 24 个振荡周期)的高电平。若时钟频率为 12mhz,每机器 周期为 1us,则只需 2us 以上时间的高电平,在 rst 引脚出现高电平后的第二个机器周期 执行复位2。单片机常见的复位电路如图 3-2 按键复位电路所示。 图 3-2 按键复位电路 该电路除了具有上电复位电路功能,还可以使用中复位,只要按下图中的复位键,在 rst 端会产生一个复位高电平。单片机复位期间不产生 ale 和 psen 信号,即 ale=1,这表 明单片机复位不会有任何取值操作2。按键复位电路,易掌握,好操作。 3.1.2 驱动模块 单片机的驱动主要是由晶振组成的驱动电路提供2,如图 3-3 所示:由一个 12mhz 的 晶振以及两个 22pf 的电容组成,单片机以及外围的一些电路能够正常工作,都是由晶振 电路所提供的动力。因此,在单片机中晶振电路是必不可少的,也正是这样,它也是单片 机最小系统的重要组成部分2。 长春工程学院毕业设计(论文) 9 图 3-3 晶振电路 3.2 温度检测模块 3.2.1 温度传感器的概述 ds18b20 是美国 dallas 半导体公司继 ds1820 之后最新推出的一种改进型智能温度传 感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单编 程实现 912 位的数字值读数方式3。可以分别在 93.75ms 和 75oms 内完成 9 位和 12 位的 数字量。它具有独特的单总线接口方式,即允许在一条信号线上挂接数十甚至上百个数字 式传感器,从而使测温装置与各传感器的接口变得十分简单,克服了模拟式传感器与微机 接口时需要的 a/d 转换器及其它复杂外围电路的缺点,而且,可以通过总线供电,温度变 换功率来源于数据总线,总线本身也可以向所挂接的 ds18b20 供电,而无需额外电源,由 它组成的温度测控系统非常方便,而且成本低、体积小、可靠性高5。ds18b20 的测温范围 -55+125,最高分辨率可达 0.0625,由于每一个 ds18b2o 出厂时都刻有唯一的一 个序列号并存入其 rom 中,因此 cpu 可用简单的通信协议就可以识别,从而节省了大量的 引线和逻辑电路。ds18b2o 具有独特的单总线接口方式在多点测温时有明显的优势,占用 单片机的 i/o 引脚资源少,和单片机的通信协议比较简单,成本较低,传输距离远5。 3.2.2 ds18b20 性能特点与内部结构 ds18b20 是美国 dallas 公司生产的单总线数字温度传感器,它具有微型化、低功耗、 高性能、抗干扰能力强、易于与未处理器接口等优点,适合于各种温度测控系统。 该器件将半导体温敏器件、a/d 转化器、存储器等做在一个很小的集成电路芯片上, 传感器直接输出的就是温度信号数字值。信号传输采用两芯(或三芯)电缆构成的单总线 结构。一条单总线上可以挂接若干个数字温度传感器,每个传感器有一个唯一的地址码。 微控制器通过对器件的寻址,就可以读取某个传感器的温度值,从而简化了信号采集系统 的电路结构。 (1)ds18b20 的性能特点6如下: 长春工程学院毕业设计(论文) 10 1)独特的单线接口仅需要一个端口引脚进行通信; 2)多个 ds18b20 可以并联在惟一的三线上,实现多点组网功能; 3)无须外部器件; 4)可通过数据线供电,电压范围为 3.05.5v; 5)零待机功耗; 6)温度以 3 位数字显示; 7)用户可定义报警设置; 8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 (2)ds18b20 的外形及管脚排列6,如下图 3-4 所示: 图 3-4 ds18b20 封装 (3)ds18b20 内部结构6主要由六分组成: 1)64 位光刻 rom。开始 8 位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后 8 位是前 56 位的 crc 校验码,这也是多个 ds18b20 可以采用一线进行通信的 原因。64 位闪速 rom 的结构如下: 8b 检验 crc48b 序列号8b 工厂代码(10h) msb lsb msb lsb msb lsb 内部 电源 探测 位 和 单线端口 位 产生器 暂存器 下限触发 上限触发 温度传感器 存储器和控制逻辑 图 3-5 ds18b20 内部结构 ds18b20 gnd dq vdd 长春工程学院毕业设计(论文) 11 2)非挥发的温度报警触发器 th 和 tl,可通过软件写入用户报警上下限值。 3)高速暂存存储,可以设置 ds18b20 温度转换的精度。 ds18b20 温度传感器的内部存储器还包括一个高速暂存 ram 和一个非易失性的可电擦 除的 e2pram。高速暂存 ram 的结构为 8 字节的存储器,结构如图 3-5 所示7。头 2 个字节 包含测得的温度信息,第 3 和第 4 字节 th 和 tl 的拷贝,是易失的,每次上电复位时被刷 新。第 5 个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。ds18b20 工作时寄存器中的分辨率转换为相应精度的温度数值。它的内部存储器结构和字节定义如 图 3-6 所示7。低 5 位一直为 1,tm 是工作模式位,用于设置 ds18b20 在工作模式还是在 测试模式。 byte0 温度测量值 lsb(50h) byte1 温度测量值 msb(50h) e2prom byte2 th 高温寄存器 - th 高温寄存器 byte3 tl 低温寄存器 - tl 低温寄存器 byte4 配位寄存器 - 配位寄存器 byte5 预留(ffh) byte6 预留(0ch) byte7 预留(ioh) byte8 循环冗余码校验(crc) 图 3-6 ds18b20 内部存储器结构 ds18b20 出厂时该位被设置为 0,用户要去改动,r1 和 r0 决定温度转换的精度位数, 来设置分辨率。 表 3-1 ds18b20 温度转换时间表 r1 r0 分辨率/位 温度最大转向时间/ms 0 0 9 93.75 0 1 10 187.5 1 0 11 375 1 1 12 750 由表 3-1 可见,分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中 要将分辨率和转换时间权衡考虑。 高速暂存 ram 的第 6、7、8 字节保留未用,表现为全逻辑 1。第 9 字节读出前面所有 8 字节的 crc 码,可用来检验数据,从而保证通信数据的正确性。 当 ds18b20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16 位带 长春工程学院毕业设计(论文) 12 符号扩展的二进制补码形式存储在高速暂存存储器的第 1、2 字节。单片机可以通过单线接 口读出该数据,读数据时低位在先,高位在后,数据格式以 0.0625lsb 形式表示。 当符号位 s0 时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当 符号位 s1 时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表 3-2 是一部分温度值对应的二进制温度数据。 表 3-2 一部分温度对应值表 温度/二进制表示十六进制表示 +1250000 0111 1101 000007d0h +850000 0101 0101 00000550h +25.06250000 0001 1001 00000191h +10.1250000 0000 1010 000100a2h +0.50000 0000 0000 00100008h 00000 0000 0000 10000000h -0.51111 1111 1111 0000fff8h -10.1251111 1111 0101 1110ff5eh -25.06251111 1110 0110 1111fe6fh -551111 1100 1001 0000fc90h 4)crc 的产生 在 rom 的最高有效字节中存储有循环冗余校验码(crc) 。主机根据 rom 的前 56 位来计 算 crc 值,并和存入 ds18b20 中的 crc 值做比较,以判断主机收到的 rom 数据是否正确。 另外,由于 ds18b20 单线通信功能是分时完成的,它有严格的时隙概念,因此读写时 序很重要。系统对 ds18b20 的各种操作按协议进行。操作协议为:初使化 ds18b20(发复 位脉冲)发 rom 功能命令发存储器操作命令处理数据。 5)外接电源 ds18b20 有两种供电方式:3.05.5v 的电源供电方式和寄生电源供电方式(直接从数 据线获取电源) 。本设计采用外部电源给器件供电,外部电源接 vcc 引脚向器件供电,如图 3-7 所示,gnd 接地,dq 接单片机。 长春工程学院毕业设计(论文) 13 vcc dq gnd ds18b20 gnd 接单片机 vcc 图 3-7 外部电源供电 6)温度报警信号 ds18b20 完成温度转化后,就把测的温度值与 th、tl 做比较,若 tth 或 tvcc1+0.2v 时,由 vcc2 向 ds1302 供电,当 vcc2 #include #define uint unsigned int #define uchar unsigned char /*lcm1602 io 口位定义*/ sbit rs = p20;/ sbit rw = p21;/ sbit en = p22;/ /*时钟芯片 ds1302 io 口位定义*/ sbit io = p10; / sbit sclk = p11;/ sbit rst = p12;/ /*存储芯片 at24c02 io 口位定义*/ sbit sda=p10; sbit scl=p11; /*独立控制按键位定义*/ sbit key1 = p24;/按 key1 进入时间设置; 再按一下进行确认; sbit key2 = p25;/按 key2 进行加; sbit key3 = p26;/按 key3 进入日期设置; 进入设置后进行光标左移; sbit key4 = p27;/按 key4 进行减; /*数字传感器 ds18b20 与接蜂鸣器 io 口定义*/ sbit dq = p23;/ds18b20 i/o 口 sbit speaker=p37;/接蜂鸣器接口 sbit redled=p34;/发光二极管接口 unsigned char high_temperature=28; / 预置 ds18b20 最高报警温度 28 uchar templ=0; /临时变量低位 uchar temph=0; /临时变量高位 uint temperature,temperature1,temperature2; uint hour, minute, second, year, month, day; uint key = 0; uint h,n; uchar tab_num=0x30,0x31,0x32,0x33,0x34,0x35, 0x36,0x37,0x38,0x39,0x3a,0x2d; /对应 字符为:0 1 2 3 4 5 6 7 8 9 : - uchar tab_time = 1,2,10,3,4,10,5,6; uchar tab_date = 2,0,1,0,11,0,9,11,2,7; uchar str64=0x5d,0x5d,0x32,0x18,0x6c,0x88,0xa 0,0x1d,0x20,0x08; /*延时函数,延时 z 毫秒*/ void delay(uint z) uint x, y; for(x=0;x480us)检测主机是否发出温度采集信号 dq=1; /拉高数据线 delay_ds18b20(14); /等待 (1560us) 响应是否存在脉冲 delay_ds18b20(14); delay_ds18b20(20); /* 函数功能:向 ds18b20 读一字节数据 入口参数: 出口参数:dat */ unsigned char readonechar(void) uchar i=0; 长春工程学院毕业设计(论文) 38 uchar dat = 0; for (i=8;i0;i-) dq = 0; / 给脉冲信号 dat=1; dq = 1; / 给脉冲信号 if(dq) dat|=0x80; delay_ds18b20(4); return(dat); /* 函数功能:向 ds18b20 写一字节数据 入口参数:dat 出口参数: */ void writeonechar(unsigned char dat) unsigned char i=0; for(i=8;i0;i-) dq=0; _nop_(); dq=dat delay_ds18b20(14); dq=1; _nop_(); dat=1; delay_ds18b20(5); /* 函数功能:向 ds18b20 读温度值 入口参数: 出口参数:temperature */ void readtemperature(void) init_ds18b20(); /初始化 writeonechar(0xcc); /跳过读序列号的 操作 writeonechar(0x44); /启动温度转换 delay_ds18b20(125); /转换需要一点 时间,延时 init_ds18b20(); /初始化 writeonechar(0xcc); /跳过读序列号的 操作 writeonechar(0xbe); /读温度寄存器 (头两个值分别为温度的低位和高位) templ=readonechar(); /读出温度 的低位 lsb temph=readonechar(); /读出温度 的高位 msb /温度转换,把高低位做相应的运算转 化为实际温度 temperature1=temph4; temperature2=templ temperature=(temph*256+templ)4); delay_ds18b20(200); /=ds1302 时钟芯片写一个字节= void write_byte(uchar dat) uchar i, dat_w; dat_w = dat; for(i=0;i 1; sclk = 0; sclk = 1; sclk = 0; /=ds1302 时钟芯片读一个字节= uchar read_byte() uchar i, k; k = 0; for(i=0;i 1; 长春工程学院毕业设计(论文) 39 if(io) k = k|0x80; sclk = 1; sclk = 0; sclk = 0; return (k); /=ds1302 时钟芯片把数据写入地址= void write_add(uchar add, uchar dat) rst = 0; sclk = 0; rst = 1; write_byte(add); write_byte(dat / 10 13) n = 7; write_com(0x80 + 0x40 + n); write_com(0x0f); key = 0; switch(n) case 13 : if(key = 2) second+; if(second = 60) second = 0; time(); write_add(0x8e,0x00); write_add(0x80,second); write_add(0x8e,0x80); write_com(0x80 + 0x40 + 12); displayone(tab_num + tab_time6); displayone(tab_num + tab_time7); write_com(0x80 + 0x40 + 13); write_com(0x0f); key = 0; if(key = 4) second-; if(second = -1) second = 59; time(); write_add(0x8e,0x00); write_add(0x80,second); write_add(0x8e,0x80); write_com(0x80 + 0x40 + 12); displayone(tab_num + tab_time6); displayone(tab_num + tab_time7); write_com(0x80 + 0x40 + 13); write_com(0x0f); key = 0; case 10 : if(key = 2) minute+; if(minute = 60) minute = 0; time(); write_add(0x8e,0x00); write_add(0x82,minute); write_add(0x8e,0x80); write_com(0x80 + 0x40 + 9); displayone(tab_num + tab_time3); displayone(tab_num + tab_time4); write_com(0x80 + 0x40 + 10); write_com(0x0f); key = 0; if(key = 4) minute-; if(minute = -1) 长春工程学院毕业设计(论文) 44 minute = 59; time(); write_add(0x8e,0x00); write_add(0x82,minute); write_add(0x8e,0x80); write_com(0x80 + 0x40 + 9); displayone(tab_num + tab_time3); displayone(tab_num + tab_time4); write_com(0x80 + 0x40 + 10); write_com(0x0f); key = 0; case 7 : if(key = 2) hour+; if(hour = 24) hour = 0; time(); write_add(0x8e,0x00); write_add(0x84,hour); write_add(0x8e,0x80); write_com(0x80 + 0x40 + 6); displayone(tab_num + tab_time0); displayone(tab_num + tab_time1); write_com(0x80 + 0x40 + 7); write_com(0x0f); key = 0; if(key = 4) hour-; if(hour = -1) hour = 23; time(); write_add(0x8e,0x00); write_add(0x84,hour); write_add(0x8e,0x80); write_com(0x80 + 0x40 + 6); displayone(tab_num + tab_time0); displayone(tab_num + tab_time1); write_com(0x80 + 0x40 + 7); write_com(0x0f); key = 0; if(key = 1) start(); key = 0; write_com(0x0c); break; if(key = 3) stop(); write_com(0x80 + m); write_com(0x0f); while(1) keyscan(); if(key = 3) m = m + 3; if(m 15) m = 9; write_com(0x80 + m); write_com(0x0f); key = 0; switch(m) case 15 : if(key = 2) day+; if(day = 32) day = 1; time(); write_add(0x8e,0x00); write_add(0x86,day); write_add(0x8e,0x80); write_com(0x80 + 14); displayone(tab_num + tab_date8); displayone(tab_num + tab_date9); write_com(0x80 + 15); 长春工程学院毕业设计(论文) 45 write_com(0x0f); key = 0; if(key = 4) day-; if(day = 0) day = 31; time(); write_add(0x8e,0x00); write_add(0x86,day); write_add(0x8e,0x80); write_com(0x80 + 14); displayone(tab_num + tab_date8); displayone(tab_num + tab_date9); write_com(0x80 + 15); write_com(0x0f); key = 0; case 12 : if(key = 2) month+;

温馨提示

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

评论

0/150

提交评论