〔大学论文〕基于单片机的温度检测系统设计(含word文档) .pdf_第1页
〔大学论文〕基于单片机的温度检测系统设计(含word文档) .pdf_第2页
〔大学论文〕基于单片机的温度检测系统设计(含word文档) .pdf_第3页
〔大学论文〕基于单片机的温度检测系统设计(含word文档) .pdf_第4页
〔大学论文〕基于单片机的温度检测系统设计(含word文档) .pdf_第5页
免费预览已结束,剩余37页可下载查看

下载本文档

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

文档简介

电子信息工程系毕业论文 xx 职业技术学院xx 职业技术学院 毕 业 论 文毕 业 论 文 课题: 基于单片机的温度检测系统课题: 基于单片机的温度检测系统 专业电 子 信 息 工 程 电 气 自 动 化专业电 子 信 息 工 程 电 气 自 动 化 学 生 姓 名学 生 姓 名 班级自 动 化班级自 动 化 学号学号 指 导 教 师指 导 教 师 完 成 日 期2 0 1 1 年 1 2 月 1 6 日完 成 日 期2 0 1 1 年 1 2 月 1 6 日 电子信息工程系毕业论文 - i - 摘 要摘 要 温度计在国民经济和生活中有着广泛的应用。为了适应温度计的迅速发展, 本文提出了数显温度计的系统设计。由于单片机的迅速发展和普及,而采用单片 机构成控制系统,则可大大降低成本,而且做成专用控制系统,程序被固化, 加 强了保密性、提高了可靠性。本文详细介绍了数显温度计系统的原理和数显温度 计系统设计的制作思想,通过 at89s52 单片机作为主控制器,加上 ds18b20 温度 传感器等器件组成了数显温度计系统的硬件配置。 本文用 proteus 绘制主电路及 各模块电路的绘制,通过 c 语言实现软件系统控制。该系统具有测量精度高、 工 作稳定、功能多、使用方便等特点,可以广泛应用于工农业生产、人们日常生活 中,对温度进行测量与监控,具有较好的实用价值。 关键词:单片机at89c52 电子信息工程系毕业论文 - ii - abstract thermometer in the national economy and livelihood has a broad application. thermometer in order to adapt to the rapid development, this paper presents a digital showingthermometersystemdesign.microcomputerbecauseoftherapid development and popularization of, and constitute a single-chip computer control system, can greatly reduce costs, but creates a dedicated control system, procedures have been solidified and strengthened confidentiality, improve reliability. this paper introduces the digital showing thermometer system theory and digital showing thermometer production system design idea, through at89s52 single-chip as main controller, coupled with ds18b20 temperature sensor devices composed of a multi-function quartz digital thermometer system hardware configuration. in this paper, proteus mapping module circuit and main circuit drawing, through the c language implementation of software system. the system has high measuring accuracy, job stability, many features, ease of use and other characteristics, can be widely used in industrial and agricultural production, people in daily life, on the temperature measurement and monitoring, has good practical value. key word:single chipat89c52 电子信息工程系毕业论文 - iii - 目录目录 摘 要摘 要i i abstractabstract. iiii 目录目录 iiiiii 第一章 绪论第一章 绪论.1 1 1.1 选题背景和意义1.1 选题背景和意义. 1 1 1.2 设计的目的1.2 设计的目的 1 1 第二章 系统的整体设计第二章 系统的整体设计2 2 2.1 方案选取2.1 方案选取. 2 2.1.1 控制的功能 2 2.1.1 控制的功能 2 2.1.2 温度探测的功能 2 2.1.2 温度探测的功能 2 2.1.3 显示的功能 2 2.1.3 显示的功能 3 2.2 系统设计框图 3 2.2 系统设计框图 3 3 2.3 单片机的控制部分2.3 单片机的控制部分. 3 3 2.3.1 单片机的有关知识2.3.1 单片机的有关知识. 3 2.3.2 i/o 口的简单介绍 3 2.3.2 i/o 口的简单介绍 4 2.3.3 晶振电路 4 2.3.3 晶振电路 5 2.3.4 复位电路 5 2.3.4 复位电路 5 2.4 基于 ds18b20 的温度检测电路的设计 5 2.4 基于 ds18b20 的温度检测电路的设计 6 6 2.4.1 ds18b20 温度传感器有关知识2.4.1 ds18b20 温度传感器有关知识. 6 2.4.2 ds18b20 性能特点 6 2.4.2 ds18b20 性能特点 6 2.4.3 ds18b20 内部介绍 6 2.4.3 ds18b20 内部介绍 6 2.5 显示电路 6 2.5 显示电路. 9 9 第三章程序设计部分第三章程序设计部分. 1010 3.1 程序设计步骤3.1 程序设计步骤 1010 3.2 系统主程序3.2 系统主程序 1010 3.3 读取温度子程序3.3 读取温度子程序. 1111 3.4 温度转换命令子程序3.4 温度转换命令子程序 1212 3.5 计算温度子程序3.5 计算温度子程序. 1313 3.6 显示数据刷新子程序3.6 显示数据刷新子程序 1414 第四章调试第四章调试. 1515 4.1 创建原理图4.1 创建原理图 1515 电子信息工程系毕业论文 - iv - 4.2 绘制的仿真原理图如 4-2 所示:4.2 绘制的仿真原理图如 4-2 所示:. 1616 4.3 系统调试4.3 系统调试. 1717 4.4 开始仿真4.4 开始仿真. 1818 结论结论. 1919 附录一:电路原理图附录一:电路原理图 2020 附录二: 仿真图附录二: 仿真图.2121 附录三: 程序附录三: 程序2222 致谢致谢 3636 参考资料参考资料. 3737 电子信息工程系毕业论文 - 1 - 第一章 绪论第一章 绪论 1.1 选题背景和意义1.1 选题背景和意义 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它 所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人 们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施 就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。 温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验(如: 物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要 的意义。现在所使用的温度计通常都是精度为 1和 0.1的水银、煤油或酒精 温度计。这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且 他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用 非常不方便。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便, 测温范围广,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较 准确的场所,或实验室使用。 目前温度计的发展很快, 从原始的玻璃管温度计发展到了现在的热电阻温度 计、热电偶温度计、数字温度计、电子温度计等等,温度计中传感器是它的重要 组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和 用途等。传感器应用极其广泛,目前已经研制出多种新型传感器。但是,作为应 用系统设计人员需要根据系统要求选用适宜的传感器, 并与自己设计的系统连接 起来,从而构成性能优良的监控系统。 1.2 设计的目的1.2 设计的目的 1、掌握温度计,报警系统的设计、组装与调试方法。 2、熟悉仿真软件(proteus)的使用。 3、重点掌握单片机的使用及其各引脚的功能。 电子信息工程系毕业论文 - 2 - 第二章 系统的整体设计第二章 系统的整体设计 2.1 方案选取 2.1.1 控制的功能 2.1 方案选取 2.1.1 控制的功能 方案一,采用常用的 at89c51 控制。技术比较熟练,应用广泛,现在的 51 系列技术硬件发展的也非常得快,也出现了许多功能非常强大的单片机,因此使 用单片机可以实现要求的基本功能。但是为了实现多组预存信息,必须外加具有 掉电存储功能的 eeprom,这增加了系统的复杂程度。而且在执行动态刷新的时候 读取 eeprom 的速度慢,刷新频率受到限制。 方案二,采用 at89s52,at89s52 单片机是一种低功耗、高性能 cmos 8 位微 控制器,具有 8k 在系统可编程 flash 存储器。使用 atmel 公司高密度非易失 性存储器技术制造,与工业 80c51 产品指令和引脚完全兼容。片上 flash 允许 程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 cpu 和在系统可编程 flash,使得 at89s52 单片机为众多嵌入式控制应用系统提 供高灵活、有效的解决方案。 通过比较,我选择方案二。 2.1.2 温度探测的功能2.1.2 温度探测的功能 方案一,采用热敏电阻:热敏电阻是利用半导体材料的电阻率随温度变化而 变化的性质制成的,是低成本温度传感器,是线性最差的温度传感器。通常将两 个热敏电阻组合起来使用,以使输出具有较好的线性。热敏电阻可靠性差、测量 温度准确度低, 且必须经过专门的接口电路转换成数字信号后才能由微处理器进 行处理。普通的热敏电阻可在有限的工作温度范围内呈现出上佳的稳定性,而在 较宽的温度范围内工作时则表现出中等水平的稳定性。 方案二,采用热电偶:热电偶由两个焊接在一起的异金属导线所组成。热电 偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。 通过将参考 结点保持在已知温度并测量该电压,便可推断出检测结点的温度。热电偶的优点 是工作温度范围非常宽,且体积小。但是,它们也存在着输出电压小、容易遭受 来自导线环路的噪声影响以及漂移较高的缺点。 方案三,采用单线数字温度传感器 ds18b20:它具有微型化、低功耗、高性 能、抗干扰能力强等优点,特别适合于构成多点温度测控系统。ds18b20 可直接 将温度转化成串行数字信号进行处理, 而且每片 ds18b20 都有唯一的产品号并可 存入其 rom 中, 在构成大型温度测控系统时可在单线上挂接任意多个 ds18b20 芯 片。从 ds18b20 读出或写入信息仅需一根端口线,其读写及温度变换功率来源于 电子信息工程系毕业论文 - 3 - 数据总线, 该总线本身也可以向所挂接 ds18b20 供电, 而无需额外电源。 dsi8b20 能提供 9 位温度读数,它无需任何外围硬件,方便地构成温度检测系统。 综上所述,我采用方案三。 2.1.3 显示的功能2.1.3 显示的功能 方案一,数码管显示:优点是价格低廉,成本低 方案二,液晶显示:缺点是成本较高 比较两种方案,我采用方案一。 2.2 系统设计框图2.2 系统设计框图 单片机控制部分根据论证方案的选择,该系统由 ds18b20 温度传感器、 at89s52 单片机、led 数码显示管组成,其各功能模块如图 2-1 所示。 2.3 单片机的控制部分 2.3.1 单片机的有关知识 2.3 单片机的控制部分 2.3.1 单片机的有关知识 at89s52 管脚图如图 2-2 所示。 at89c52 主 控 制 器 显示电路 温度传感器 ds18b20 扫描驱动 图 2-1 系统组成图 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 rst/vpd 9 rxd/p3.0 10 txd/p3.1 11 int0/p3.2 12 int1/p3.3 13 t0/p3.4 14 t1/p3.5 15 wr/p3.6 16 rd/p3.7 17 xtal2 18 xtal1 19 gnd 20 p2.0 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale/prog 30 ea/vpp 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 电子信息工程系毕业论文 - 4 - 图 2-2 at89s52 管脚 atmel 公司新推出的 at89s52,该芯片具有低功耗、高性能的特点,是采用 cmos 工艺的 8 位单片。at89s52 还有以下主要特点: 采用了 atmel 公司的高密度、非易失性存储器(nv-sram)技术; 片内具有 256 字节 ram,8kb 的可在线编程(isp)flash 存储器; 有 2 种低功耗节电工作方式:空闲模式和掉电模式; 片内含有一个看门狗定时器 (wdt) , wdt 包含一个 14 位计数器和看门狗定时 器复位寄存器(wdtrst),只要对 wdtrst 按顺序先写入 01eh,后写入 0e1h,wdt 便启动,当 cpu 由于扰动而使程序陷入死循环或“跑飞”状态时,wdt 即可有效 地使系统复位,提高了系统的抗干扰性能。 2.3.2 i/o 口的简单介绍2.3.2 i/o 口的简单介绍 at89s52 共有 4 组 8 位 i/o 口(p0、 p1、 p2 或 p3), 用于对外部数据的传输: p0 口(3239 脚) :p0 口的字节地址为 80h,位地址为 80h87h。p0 口 既可以作为通用 i/o 口使用,也可作为单片机系统的地址/数据线使用。当作为 输出口使用时, 由于输出电路是漏极开路, 必须外接上拉电阻才能有高电平输出。 p1 口(18 脚) :p1 口的字节地址为 90h,位地址为 90h97h。p1 口只 能作为通用 i/o 口使用。当作为输出口使用时,已能对外提供推拉电流负载, 外 电路无需再接上拉电阻,因为内接上拉电阻的 8 位准双向 i/o 口,能负担 4 个 ttl 负载。它的第二变异功能如下: p1.0 t2(定时器/计数器 t2 的外部计数输入) ,时钟输出 p1.1 t2ex(定时器/计数器 t2 的捕捉/重载触发信号和方向控制) p1.5 mosi(在系统编程用) p1.6 miso(在系统编程用) p1.7 sck(在系统编程用) p2 口(2128 脚) :p2 口的字节地址为 0a0h,位地址为 0a0h0a7h。 p2 口用于为系统提供高位地址,但只作为地址线使用而不作为数据线使用。此 外,p2 口也可作为通用 i/o 口使用。它是内接上拉电阻的 8 位准双向 i/o 口。 能接 4 个 ttl 负载。当访问外部存储器时定义为高 8 位地址总线,只需 8 位地址 线时,它将输出特殊功能寄存器(锁存器)中内容。 p3 口(1017 脚) :p3 口的字节地址为 0b0h,位地址为 0b0h0b7h。 p3 口可以作为通用 i/o 口使用,但实际应用中它的第二功能信号更为重要。内 接上拉电阻的 8 位尊双向 i/o 口,能接 4 个 ttl 负载。它的第二变异功能如下: p3.0(10 脚) :rxd (串行接收端口)。 电子信息工程系毕业论文 - 5 - p3.1(11 脚) :txd(串行发送端口)。 p3.2(12 脚) :int0(外部中断 0 请求) 。 p3.3(13 脚) :int1(外部中断 1 请求) 。 p3.4(14 脚) :to(定时/计数器 0 外部计数输入端) p3.5(15 脚) :t1(定时/计数器 1 外部计数输入端) p3.6(16 脚) :wr(外部数据存储器写) p3.6(17 脚) :rd(外部数据存储器读) 2.3.3 晶振电路2.3.3 晶振电路 xtal1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的 反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此 信号直接接到内部时钟发生器的输入端。 xtal2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反 相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。 单片机的晶振频率应低于 40mhz,所以我们采用 12mhz 晶振,加两个 30pf 电容。如下图 2-3 所示。 图 2-3 晶振电路 2.3.4 复位电路2.3.4 复位电路 上电复位用 rc 电路,电容用 10uf,电阻用 10k,上电复位采用电平方式开 关复位,如下图 2-4 所示。 图 2-4 复位电路 80518051 xtal1 xtal2 c1 c2 xtal1 xtal2 c1 c2 8051 8751 8031 rstrst cr r1 r2 5v 电子信息工程系毕业论文 - 6 - 2.4 基于 ds18b20 的温度检测电路的设计 2.4.1 ds18b20 温度传感器有关知识 2.4 基于 ds18b20 的温度检测电路的设计 2.4.1 ds18b20 温度传感器有关知识 ds18b20 温度传感器是美国 dallas 半导体公司最新推出的一种改进型智能 温度传感器,它能直接读出被测温度,可以把温度信号直接转换成串行数字信号 供微机处理,是模/数转换器件,而且读或写 ds1820 信息仅需要单线接口,使用 非常方便,并且可根据实际要求通过简单的编程实现 912 位的数字值读数方 式。 2.4.2 ds18b20 性能特点2.4.2 ds18b20 性能特点 ds18b20 的主要特性: a 电压范围为 3.0v5.5v,在寄生电源方式下可由数据线供电; b 独特的单线接口仅需要一个端口引脚进行通信; c 多个 ds18b20 可以并联在惟一的三线上,实现多点组网功能; d 零待机功耗; e 温度以 9 或 12 位数字量读数; f 用户可定义的非易失性温度报警设置; g 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; h 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工 作。 i 测量范围-55+128,分辨率 0.5c。 2.4.3 ds18b20 内部介绍2.4.3 ds18b20 内部介绍 ds18b20 采用 3 脚 pr-35 封装或 8 脚 soic 封装,其内部结构框图如图 2-5 所示。 64 位 rom 和 单线 接口 存储器与控制逻辑 高 速 缓 存 温度传感器 高温触发器 th 低温触发器 tl 配置寄存器 8 位 crc 发生器 i/o vdd 图 2-5 ds18b20 内部结构 电子信息工程系毕业论文 - 7 - 64 位 rom 的结构如图 2-6 所示,开始八位是产品类型的编码,接着是每个 器件的唯一的序号,共有 48 位,最后 8 位是前面 56 位的 crc 检验码,这也是 多个 ds18b20 可以采用一线进行通信的原因。 非易失性温度报警触发器 tl 和 tl, 可通过软件写入用户报警上下限。 8 位检验 crc48 位序列号8 位工厂代码(10h) msblsbmsblsbmsblsb 图 2-6 64 位 rom 的结构 ds18b20 温度传感器的内部存储器还包括一个高速暂存 ram 和一个非易失性 的可电擦除的 eeram。高速暂存 ram 的结构为 8 个字节的存储器,结构如图 2-7 所示。头两个字节包含测得的温度信息,第三和第四字节是 th 和 tl 的拷贝, 是 易失的,每次上电复位时被刷新。第五个字节为配置寄存器,它的内容用于确定 温度值的数字转换分辨率。ds18b20 工作时按此寄存器中的分辨率将温度转换为 相应精度的数值。该字节各位的定义如图 2-8 所示。低 5 位一直为 1,tm 是测试 模式位,用于设置 ds18b20 在工作模式还是在测试模式。 tmr1r011111 图 2-8 配置寄存器 温度lsb 温度msb th用户字节 1 tl用户字节 2 配置寄存器 保留 保留 保留 crc 图 2-7高速暂存 ram 结构图 1 字节 2字 3 字节 4 字节 5 字节 6 字节 7 字节 8 字节 9字 eerom th用户字节 1 tl用户字节 2 电子信息工程系毕业论文 - 8 - 表 2-1 ds18b20 分辨率的定义规定 r1r0分辨率/位温度最大转换时间/ms 00993.75 0110187.5 1011375 1112750 由表 2-1 可见,ds18b20 温度转换的时间比较长,而且设定的分辨率越高, 所需的温度数据转换时间越长。 因此, 在应用中要将分辨率和转换时间权衡考虑。 高速暂存 ram 的第 6、7、8 字节保留未用,表现全逻辑 1。第 9 字节读出前面 所有 8 字节的 crc 码,可用来检验数据,从而保证通信数据的正确性。 当 ds18b20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就 以 16 位代符号扩展的二进制补码形式存储在高速暂存存储器的第 1、2 字节。 单 片机可通过单线接口读出该数据。读数据时低位在先,高位在后,数据格式以 0.06250c/lsb 形式表示,其中 s 为符号位。例如125的数字输出为 07d0h; 25.0625的数字输出为 0191h;25.0625的数字输出为 ff6fh;55的 数字输出为 fc90h, 温度值格式如图 2-9。 ls字节 232221202-12-22-32-4 ms字节 sssss262524 图 2-9 温度数据值格式 当符号位 s=0, 表示测得的温度为正值, 可以直接将二进制位转换为十进制; 当符号位 s=1 时, 表示测得的温度为负值, 要先将补码变成原码, 再计算十进制; 表 2-2 是一部分温度值对应的二进制温度数据。 电子信息工程系毕业论文 - 9 - 表 2-2 温度值对应的二进制温度数据 温度/ 0c二进制表示十六进制表示 +1250000 01111101 000007d0h +850000 01010101 00000550h +25.06250000 00011001 00010191h +10.1250000 00001010 001000a2h +0.50000 00000000 10000008h 00000 00000000 00000000h -0.51111 11111111 1000fff8h +10.1251111 11110101 1000ff5eh 25.06251111 11100110 1111fe6fh -551111 11001001 0000fc90h ds18b20 完成温度读书后,就把测得的温度值与 ram 中的 th、tl 字节内容作 比较,若 tth 或 t #include #define uchar unsigned char #define uint unsigned int sbit greenled=p30;/定义绿灯的控制端口 sbit redled=p31;/定义红灯的控制端口 sbit ds=p10;/定义 ds18b20 接口 sbit speaker=p11;/定义蜂鸣器的控制端口 sbit k1=p32;/定义功能键的控制键 sbit k2=p33;/定义温度定位键 sbit k3=p34;/定义温度加的控制键 sbit k4=p35;/定义蜂鸣器减停止按键 float m1=2,n1=10,q1=0;/最高温度显示位 h20.0 float m2=1,n2=10,q2=0;/最低温度显示位 l10.0 int temp; int temp1=0; /key1 引起的外部中断 0 char zancun1=1; char zancun2=0; uchar flag1; void display(unsigned char *lp,unsigned char lc);/数字的显示函数;lp 为指向数组的地址,lc 为显示的个数 void delay();/延时子函数,5 个空指令 codeunsignedchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,/ 0-9 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,/ 10-19 0x40, / 20符号位“-“ 0x39, / 21符号 c 0x00, 电子信息工程系毕业论文 - 23 - / 22空表 0x76, / 23高温 h 0x38; / 24低温 l /共阴数码管显示数的组成是 “0-9“0-9 有小数点的“ “-“ “c“ “ 空 表“ “h “ “ l“ unsigned char l_tmpdate4=0,0,0,0;/定义数组变量, int tmp(void); void tmpchange(void); void tmpwritebyte(uchar dat); uchar tmpread(void); bit tmpreadbit(void); void dsreset(void); void delayb(uint count); void main()/主函数 ea=1;/首先开启总中断 ex0=1;/开启外部中断 0 it0=1;/ 设置成 下降沿触发方式 redled=0; greenled=1; while(1) if(temp1=0)/正常温度显示 while(1) uchar i; int l_tmp; tmpchange();/温度转换 l_tmp=tmp();/读取温度值 if(l_tmp=(l_tmpdate1-22)*10+l_tmpdate2+l_tmpdate3 电子信息工程系毕业论文 - 25 - *0.1 while(k2=0)/消抖程序 _nop_(); if(n=0)/ 第一位数码管的设置 if(k3=0) while(k3=0)/消抖程序 _nop_(); m1+; if(m1=10)/如果第一位数码管是 9,则变为- m1=20; if(m1=21)/如果第一位数码管是-,则变为 0 m1=0; l_tmpdate1=m1; l_tmpdate2=n1; l_tmpdate3=q1; if(n=1)/第二位数码管的设置 if(k3=0) while(k3=0)/消抖程序 电子信息工程系毕业论文 - 28 - _nop_(); n1+; if(n1=20) n1=10; l_tmpdate1=m1; l_tmpdate2=n1; l_tmpdate3=q1; if(n=2)/第三位数码管的设置 if(k3=0) while(k3=0)/消抖程序 _nop_(); q1+; if(q1=10) q1=0; l_tmpdate1=m1; l_tmpdate2=n1; l_tmpdate3=q1; if(zancun1=0)/ 当从中断程序回来时,可以跳出程序 zancun1=1; break; 电子信息工程系毕业论文 - 29 - if(temp1=2)/低温设置 int i,n=0,m=0; l_tmpdate0=24; l_tmpdate1=m2; l_tmpdate2=n2; l_tmpdate3=q2; while(1) for(i=0;i=3) n=0; while(k2=0)/消抖程序 _nop_(); if(n=0)/ 第一位数码管的设置 if(k3=0) while(k3=0)/消抖程序 _nop_(); m2+; if(m2=10)/如果第一位数码管是 9,则变为- m2=20; if(m2=21)/如果第一位数码管是-,则变为 0 m2=0; 电子信息工程系毕业论文 - 30 - l_tmpdate1=m2; l_tmpdate2=n2; l_tmpdate3=q2; if(n=1)/第二位数码管的设置 if(k3=0) while(k3=0)/消抖程序 _nop_(); n2+; if(n2=20) n2=10; l_tmpdate1=m2; l_tmpdate2=n2; l_tmpdate3=q2; if(n=2)/第三位数码管的设置 if(k3=0) while(k3=0)/消抖程序 _nop_(); q2+; if(q2=10) q2=0; l_tmpdate1=m2; 电子信息工程系毕业论文 - 31 - l_tmpdate2=n2; l_tmpdate3=q2; if(zancun1=0) zancun1=1; break; void key_scan1()interrupt 0/外部中断 0,修改 k1 键的标志位 temp1+; if(temp1=3) temp1=0; zancun1=0; void display(unsigned char *lp,unsigned char lc)/显示 unsigned char i;/定义变量 p0=0x00; p2=0xf7;/将 p2 口的输出 1111 0111,对应第一个数码管 for(i=0;i=1;/下一位数码管 if(i=3)/检测显示完 4 位否,完成直接退出,不让 p1 口再循环,否则进位影响到第四位数据 break;/注意 if 条件的放置位置,如果放在上面的位 置,则会引起最后一位数码管高亮,仿真时看不出来 void delay(void) /经过调试,延迟下面 18 个_nop_(),显示效果最好。 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_ (); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_ (); void delayb(uint count)/delay uint i; while(count) i=200; while(i0) i-; count-; /* ds18b20的处理函数 */ void dsreset(void)/ds18b20 初始化 uint i; 电子信息工程系毕业论文 - 33 - ds=0; i=80; while(i0)i-; ds=1; i=4; while(i0)i-; bit tmpreadbit(void)/ 读一位 uint i; bit dat; ds=0;i+;/小延时一下 ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return (dat); uchar tmpread(void)/读一个字节 uchar i,j,dat; dat=0; for(i=1;i1);/读出的数据最低位在最前面,这样刚好一个字 节在 dat 里 return(dat);/将一个字节数据返回 void tmpwritebyte(uchar dat)/写一个字节到 ds18b20 里 uint i; uchar j; bit testb; 电子信息工程系毕业论文 - 34 - for(j=1;j1; if(testb)/ 写 1 部分 ds=0; i+;i+; ds=1; i=8;while(i0)i-; else ds=0;/写 0 部分 i=8;while(i0)i-; ds=1; i+;i+; void tmpchange(void)/发送温度转换命令 dsreset();/初始化 ds18b20 delayb(1);/延时 tmpwritebyte(0xcc);/ 跳过序列号命令 tmpwritebyte(0x44);/发送温度转换命令 int tmp()/获得温度 float tt; uchar a,b; dsreset(); delayb(1); tmpwritebyte(0xcc); 电子信息工程系毕业论文 - 35 - tmpwritebyte(0xbe);/发送读取数据命令 a=tmpread();/连续读两个字节数据 b=tmpread(); temp=b; temp=8; temp=temp|a;/两字节合成一个整型变量。 tt=temp*0.062

温馨提示

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

评论

0/150

提交评论