当前位置:首页 >> 工学 >>

温度传感器毕业设计(论文)


摘要
单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的 技术,本文将介绍一种基于单片机控制的数字温度器,本温度计属于多功能温度计,可以设 置上下报警温度,当温度不在设置范围内时,可以报警。 随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控 制温度。本文通过采用蜂鸣器作为电声元件的温度报警器的设计,阐明了该装置进行设计 与制作的具体过程及方法。这种温度报警器结构简单,可操作性强,应用广泛。工作时, 温度测量范围为 5—38? C。当前环境温度若超过设定的高温临界温度,由单片机发出报警 信号,从而防止带来的不必要的损失。 造成高温火灾有:电气线路短路、过载、接触电阻过大等引发高温或火灾;静电产生 高温或或火灾;雷电等强电侵入导致高温或火灾;最主要是机房内电脑、空调等用电设备 长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发 热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度 报警系统就会发挥应有的功能。 关键词:STC89C51 单片机,数字控制,温度计,DS18B20,AT24C02









ABSTRACT
Single chip technology has spread to we live, work, scientific research, each domain, has become a mature technology, this paper introduces a kind of based on single chip microcomputer control digital temperature device, the thermometer belongs to the multi-function thermometer, can set up and down the temperature alarm, when the temperature is not set range, you can call the police. With modern industrial and agricultural technology and the development of people to the improvement of the living environment requirements, and people urgently need to test and control the temperature. Through the use of components of the buzzer as acoustic temperature alarm design, it is expounded that the device for the design and production of the specific processes and methods. The temperature alarm simple structure, the maneuverability is strong, wide application. Work, temperature measurement range for 5-38 ? C. The current environment temperature if more than the high temperature of setting the critical temperature, issued a warning signal by single-chip microcomputer, thus preventing bring unnecessary losses. High temperature caused by fire are: electric short circuit, overload, contact resistance by too high temperature or fire; Electrostatic generation high temperature or or fire; Lightning and lead to high temperatures or high voltage into the fire; The main room is in air conditioning equipment such as computer, electricity work long hours, cause of old equipment, air conditioning fault, and can't cooling; So the telecom room belongs to electronic products fever fast, in a short time, computer room temperature beyond normal temperature equipment, cause the system to produce paralysis or fire, when temperature alarm system will play its function.

Keywords: STC89C51 microcontroller, digital control, thermometer, DS18B20, AT24C02









目 录
摘要 ..................................................................................................................... 1 ABSTRACT ........................................................................................................ 2 目 录 ................................................................................................................... 3 第一章 设计要求与方案论证 ....................................................................... 5

1.1 设计要求 ....................................................................................................... 5 1.2 系统基本方案选择和论证 ........................................................................... 5 1.2.1 单片机芯片的选择方案和论证 ........................................................ 5 1.2.2 温度传感器设计方案论证 ................................................................ 6 1.2.3 掉电保持方案论证 ............................................................................ 6 1.3 电路设计最终方案决定 .............................................................................. 7 第二章 主要元件介绍 ................................................................................... 7

2.1 STC89C51 介绍 ............................................................................................ 7 2.1.1 STC89C51 主要功能及 PDIP 封装.................................................... 7 2.1.2 STC89C51 引脚介绍 .......................................................................... 8 2.1.3 单片机最小系统: ............................................................................ 9 2.2 DS18B20 传感器介绍 ................................................................................ 10 2.2.1 DS18B20 概述 .................................................................................. 10 2.2.2 DS18B20 引脚介绍 .......................................................................... 11 2.2.3 DS18B20 的内部结构 ...................................................................... 11 2.2.4 DS18B20 的程序流程图 .................................................................. 12 2.3 数码管介绍 ................................................................................................ 13 2.3.1 数码管概述 ...................................................................................... 14 2.4 AT24C02 简介 ............................................................................................. 14 2.4.1 I2C 总线说明 .................................................................................... 15 第三章 程序流程图 ..................................................................................... 18

结论 ................................................................................................................... 19
共 页 第 页

参考文献 ........................................................................................................... 20 致 谢 ................................................................................................................. 21 附录 A 电路原理图....................................................................................... 22 附录 B C 语言程序 ....................................................................................... 23









第一章 设计要求与方案论证
1.1 设计要求
基本范围 0℃-99℃ ; 精度误差小于 0.1℃ ; 数码管直读显示; 扩展功能:可以任意设定温度的上下限报警功能,并可以掉电保持上下限 温度值。

1.2 系统基本方案选择和论证

1.2.1 单片机芯片的选择方案和论证
由于单片机具有以下的很多优点,被我们选定为制作该作品的首选芯片 单片机特点: (1)高集成度,体积小,高可靠性 单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片 本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的 CPU。单片机程序指令,常数及表格等固化在 ROM 中不易破坏,许多信号通道均在一个芯 片内,故可靠性高。 (2)控制功能强 为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O 口的逻辑操作及位处理能力,非常适用于专门的控制功能。 (3)低电压,低功耗,便于生产便携式产品 为了满足广泛使用于便携式系统,许多单片机内的最低工作电压仅为 1.8V~3.6V,而工 作电流仅为数百微安。 (4)易扩展 片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串 行输入/输出管脚,很容易构成各种规模的计算机应用系统。 (5)优异的性价比 单片机的性能极高。为了提高速度和运行效率,单片机已开始使用 RISC 流水线和 DSP 等技术。单片机的寻址能力也已突破 64KB 的限制,有的已可达到 1MB 和 16MB,片内的









ROM 容量可达 62MB,RAM 容量则可达 2MB。由于单片机的广泛使用,因而销量极大, 各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。 方案一: 采用 STC89C51 芯片作为硬件核心。STC89C51 内部具有 8KB ROM 存储空间,512 字节 数据存储空间,带有 2K 字节的 EEPROM 存储空间,与 MCS-51 系列单片机完全兼 容,STC89C51 可以通过串口下载。 方案二: 采用 AT89S51。AT89S51 片内具有 8K 字节程序存储空间,256 字节的数据存储空间没 有 EEPROM 存储空间,也与 MCS-51 系列单片机完全兼容,具有在线编程可擦除技术。 两种单片机都完全能够满足设计需要,STC89C51 相对 ATS89C52 价格便宜,且抗干扰 能力强。考虑到成本因素,因此选用 STC89C51。

1.2.2 温度传感器设计方案论证
利用物质各种物理性质随温度变化的规律把温度转换为电量的传感器。 这些呈现规律性 变化的物理性质主要有体。温度传感器是温度测量仪表的核心部分,品种繁多。按测量方 式可分为接触式和非接触式两大类,按照传感器材料及电子元件特性分为热电阻和热电偶 两类。 现代信息技术的三大基础是信息采集(即传感器技术)、信息传输(通信技术)和信息处理 (计算机技术)。 温度传感器的发展大致经历了以下三个阶段; (1)传统的分立式温度传感器(含 敏感元件);(2)模拟集成温度传感器/控制器;(3)智能温度传感器。国际上新型温度传感器 正从模拟式向数字式、由集成化向智能化、网络化的方向发展。在 20 世纪 90 年代中期最 早推出的智能温度传感器,采用的是 8 位 A/D 转换器,其测温精度较低,分辨力只能达到 1° C。国外已相继推出多种高精度、高分辨力的智能温度传感器,所用的是 9~12 位 A/D 转 换器,分辨力一般可达 0.5~0.0625° C。由美国 DALLAS 半导体公司新研制的 DS1624 型高 分辨力智能温度传感器,能输出 13 位二进制数据,其分辨力高达 0.03125° C,测温精度为 ± 0.2° C。 为了提高多通道智能温度传感器的转换速率, 也有的芯片采用高速逐次逼近式 A/D 转换器。目前,智能温度传感器的总线技术也实现了标准化、规范化,所采用的总线主要 有单线(1-Wire)总线、I2C 总线、SMBus 总线和 spI 总线。温度传感器作为从机可通过专用 总线接口与主机进行通信。 方案一: 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温 度变化 的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在 显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电路比 较麻烦。 方案二: 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常 容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被 测温度值,进行转换,就可以满足设计要求。 从以上两种方案,两种都完全能够满足设计需要,很容易看出,采用方案二,电路比较 简单,软件设计也比较简单,故采用了方案二。

1.2.3 掉电保持方案论证
共 页 第 页

为了方便使用,本设计采用串行 E2PROMI2C-BUS 的存储器件 AT24C02,由于 其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化 控制中得到大量的应用。本设计就是采用此功能。

1.3 电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:采用 STC89C51 单片机作为主控 制系统;采用 DS18B20 为传感器;采用 AT24C02 作为数据记录系统;采用数码 管作为显示器件。

最小系统

供电开关模块

51

数码管显示模块

蜂鸣器报警模块

独立按键模块

单 片 机

IIC 存储模块

继电器输出控制 模块

DS18B20 测温 模块

第二章 主要元件介绍
2.1 STC89C51 介绍
STC89C51 是由深圳宏晶科技公司生产的与工业标准 MCS-51 指令集和输出管 脚相兼容的单片机。

2.1.1 STC89C51 主要功能及 PDIP 封装
共 页 第 页

STC89C51 主要功能如表 1 所示,其 PDIP 封装如图 1 所示

主要功能特性 兼容 MCS51 指令系统 32 个双向 I/O 口 3 个 16 位可编程定时/计数器中断 2 个串行中断 2 个外部中断源 2 个读写中断口线 低功耗空闲和掉电模式 8K 可反复擦写 Flash ROM 256x8bit 内部 RAM 时钟频率 0-24MHz 可编程 UART 串行通道 共 6 个中断源 3 级加密位 软件设置睡眠和唤醒功能 表 1:STC89C51 主要功能

2.1.2 STC89C51 引脚介绍
① 主电源引脚(2 根) VCC(Pin40):电源输入,接+5V 电源 GND(Pin20):接地线 ②外接晶振引脚(2 根) XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 ③控制引脚(4 根) RST/VPP(Pin9):复位引脚,引脚上出现 2 个机器周期的高电平将使单片机 复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读 指令,如果接高电平则从内部程序存储器读指令。 ④可编程输入/输出引脚(32 根) STC89C51 单片机有 4 组 8 位的可编程 I/O 口,分别位 P0、P1、P2、P3 口, 每个口有 8 位(8 根引脚) ,共 32 根。 P0 口(Pin39~Pin32) :8 位双向 I/O 口线,名称为 P0.0~P0.7 P1 口(Pin1~Pin8) :8 位准双向 I/O 口线,名称为 P1.0~P1.7 P2 口(Pin21~Pin28) :8 位准双向 I/O 口线,名称为 P2.0~P2.7 P3 口(Pin10~Pin17) :8 位准双向 I/O 口线,名称为 P3.0~P3.7









U1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P10 P11 P12 P13 P14 P15 P16 P17 RESET P30 /RXD P31 /TXD P32 /INT0 P33 /INT1 P34 /T0 P35 /T1 P36 W R P37 /RD X2 X1 GND STC8 9 C5 2 VCC P00 P01 P02 P03 P04 P05 P06 P07 EA/VP ALE/P PSEN P27 P26 P25 P24 P23 P22 P21 P20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

图 1:STC89C51 封装图

2.1.3 单片机最小系统:
当在 STC89C51 单片机的 RST 引脚引入高电平并保持 2 个机器周期时,单片 机内部就执行复位操作,按键手动复位有电平方式和脉冲方式两种。其中电平 复位是通过 RST 端经过电阻与电源 VCC 接通而实现的。最小系统如图 2 所示。
VC C K0 1 3 R ESET + C1 1 0u F 2 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P1. 0 P1. 1 P1. 2 P1. 3 P1. 4 P1. 5 P1. 6 P1. 7 R ST P3. 0 (R XD) P3. 1 (TXD) P3. 2 (INT0 ) P3. 3 (INT1 ) P3. 4 (T0) P3. 5 (T1) P3. 6 (WR ) P3. 7 (R D) XTAL2 XTAL1 GND VC C (AD0 )P0 .0 (AD1 )P0 .1 (AD2 )P0 .2 (AD3 )P0 .3 (AD4 )P0 .4 (AD5 )P0 .5 (AD6 )P0 .6 (AD7 )P0 .7 EA/VPP ALE/ PR OG PSEN (A1 5 )P2 .7 (A1 4 )P2 .6 (A1 3 )P2 .5 (A1 2 )P2 .4 (A1 1 )P2 .3 (A1 0 )P2 .2 (A9 )P2 .1 (A8 )P2 .0 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VC C

C2

11.0592MH z

R7 1 0K

30 Y1

C3

30

图2 单片机最小系统电路

8 9C5 2 电路以 STC89C51 单片机最小系统为控制核心,测温电路由 DS18B20 提供,

输入部分采用三个独立式按键 S1、S2、S3。数码管显示部分。具体电路连接, 详见附录 1。









2.2 DS18B20 传感器介绍

2.2.1 DS18B20 概述
在现代检测技术中,传感器占据着不可动摇的重要位置。主机对数据的处 理能力已经相当的强,但是对现实世界中的模拟量却无能为力。如果没有各种 精确可靠的传感器对非电量和模拟信号进行检测并提供可靠的数据,那计算机 也无法发挥他应有的作用。传感器把非电量转换为电量,经过放大处理后,转 换为数字量输入计算机,由计算机对信号进行分析处理。从而传感器技术与计 算机技术结合起来,对自动化和信息化起重要作用。 采用各种传感器和微处理技术可以对各种工业参数及工业产品进行测控及 检验,准确测量产品性能,及时发现隐患。为提高产品质量、改进产品性能, 防止事故发生提供必要的信息和更可靠的数据。由于系统的工作环境比较恶劣, 且对测量要求比较高,所以选择合适的传感器很重要。目前,国际上新型温度 传感器正从模拟式向数字式、从集成化向智能化和网络化的方向飞速发展。智 能温度传感器 DS18B20 正是朝着高精度、多功能、总线标准化、高可靠性及安 全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速 发展。因此,智能温度传感器 DS18B20 作为温度测量装置已广泛应用于人民的 日常生活和工农业生产中。 美国 DALLAS 公司生产的 DS18B20 可组网数字温度传感器芯片外加不锈钢保 护管封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各 种狭小空间设备数字测温和控制领域。有独特的单线接口方式,DS1820 在与微 处理器连接时仅需要一条口线即可实现微处理器与 DS1820 的双向通讯;其测温 范围 -55℃~+125℃, 固有测温分辨率 0.5℃; 支持多点组网功能; 多个 DS1820 可以并联在唯一的三线上,实现多点测温;工作电源为 3~5V/DC;在使用中不需 要任何外围元件。 DS18B20 的性能特点如下: (1) 采用 DALLAS 公司独特的单线接口方式:DS18B20 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯; (2)在使用中不需要任何外围元件; (3)可用数据线供电,供电电压范围:+3.0V~+5.5V; (4) 测温范围: -55~+125℃。 固有测温分辨率为 0.5℃。 当在-10℃~+85℃ 范围内,可确保测量误差不超过 0.5℃,在-55~+125℃范围内,测量误差也不 超过 2℃;
共 页 第 页

(5)通过编程可实现 9~12 位的数字读数方式; (6)用户可自设定非易失性的报警上下限值; (7)支持多点的组网功能,多个 DS18B20 可以并联在唯一的三线上,实现 多点测温 (8)负压特性,即具有电源反接保护电路。当电源电压的极性反接时,能 保护 DS18B20 不会因发热而烧毁,但此时芯片无法正常工作; (9)DS18B20 的转换速率比较高,进行 9 位的温度值转换只需 93.75ms; (10)适配各种单片机或系统; (11)内含 64 位激光修正的只读存储 ROM,扣除 8 位产品系列号和 8 位循 环冗余校验码(CRC)之后,产品序号占 48 位。出厂前产品序号存入其 ROM 中。 在构成大型温控系统时,允许在单线总线上挂接多片 DS18B20。

2.2.2 DS18B20 引脚介绍

图 3:DS18B20 引脚 各引脚功能为:I/O 为数据输入/输出端(即单线总线) ,它属于漏极开路输 出,外接上拉电阻后,常态下呈高电平。UDD 是可供选用的外部电源端,不用时 接地,GND 为地,NC 空脚。

2.2.3 DS18B20 的内部结构
DS18B20 的内部结构主要包括 7 部分:寄生电源、温度传感器、64 位激光 (loser)ROM 与单线接口、高速暂存器(即便筏式 RAM,用于存放中间数据) 、
共 页 第 页

TH 触发寄存器和 TL 触发寄存器,分别用来存储用户设定的温度上下限值、存储 和控制逻辑、位循环冗余校验码(CRC)发生器。

图 4:DS18B20 内部结构

2.2.4 DS18B20 的程序流程图









开始

18B20 复位

否 18B20 存在? 是 发出温度转换命令 显示测温 写入 18B20 点位置

延时 延时 读温度前复位

发出读温度命令

写入 18B20

读入温度值数据

返回

图 5 程序流程图

2.3 数码管介绍
数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数 分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单 元(多一个小数点显示) ;按能显示多少个“8”可分为 1 位、2 位、4 位等等数 码管;
共 页 第 页

按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳 数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共 阳数码管在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低 电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极 (COM) 的数码 管,共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二 极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相 应字段就不亮。

2.3.1 数码管概述
1 2 S4 11 10 A F S3 9 S2 8 7 B S1 a f S2 S3

LED

图 5:数码管 数码显示器是一种由 LED 发光二极管组合显示字符的显示器件, 它使用了 8 个 Led 发光二极管,其中七个用于显示字符,一个显示小数点,所以通称为七 段发光二极管数码显示器。4 位一体数码管,其内部段已连接好,引脚如图所示 (数码管的正面朝自己,小数点在下方) 。a、b、c、d、e、f、g、dp 为段引脚, S1、S2、S3、S4 分别表示四个数码管的位。

2.4 AT24C02 简介
如图 1 为 AT24C02 的芯片引脚图。

1 2 3 4

C G S1

E dp D

1 2 3 4 5 6

c g S4

e dp

b

A0 A1 NC GND

VCC WP SCL SDA

8 7 6 5









图 3-1 AT24C02 的芯片引脚图 AT24C02 提供电可擦除的串行 1024 位存储或可编程只读存储器(EEPROM)128 字(8 位/ 字)。 芯片在低压的工业与商业应用中进行了最优化。 AT24C01 的封装为 8 脚 PDIP、 8 脚 JEDEC SOIC、8 脚 TSSOP,通过 2 线制串行接口进行数据传输。另外,整个系列有 2.7V(2.7V 至 5.5V)和 1.8V (1.8V 至 5.5V)两个版本。 设备操作: C L O C K 和 D A T A 变化: SDA 管脚通常外都要拉高。 SDA 管脚上的数据只能在 SCL 低期间改变。数据在 SCL 高期间改变定义为一个开始或停止信号。 开始状态: 在任何操作之前必须有一个开始信号----在 SCL 为高时 SDA 上产生一个下降 沿。 停止状态: SCL 为高时 SDA 产生一个上升沿是停止信号, 停止信号后将停止所有通信。 在一个读的序列之后,停止信号将让 EEPROM 进入备用电源模式。

2.4.1 I2C 总线说明
I2C(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于
连接微控制器及其外围设备。I2C 总线产生于在 80 年代,最初为音频和视频设备开发,如 今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进 行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、 硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。 1 I2C 总线的硬件结构 I2C 串行总线一般有两根信号线,一根是双向的数据线 SDA,另一根是时钟线 SCL。所 有接到 I2C 总线设备上的串行数据 SDA 都接到总线的 SDA 上,各设备的时钟线 SCL 接到 总线的 SCL 上。 为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是开漏输出或集电极 开路输出。设备上的串行数据线 SDA 接口电路应该是双向的,输出电路用于向总线上发送 数据,输入电路用于接收总线上的数据。而串行时钟线也应是双向的,作为控制总线数据 传送的主机,一方面要通过 SCL 输出电路发送时钟信号,另一方面还要检测总线上的 SCL 电平,以决定什么时候发送下一个时钟脉冲电平;作为接受主机命令的从机,要按总线上 的 SCL 信号发出或接收 SDA 上的信号,也可以向 SCL 线发出低电平信号以延长总线时钟 信号周期。总线空闲时,因各设备都是开漏输出,上拉电阻 RP 使 SDA 和 SCL 线都保持高 电平。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的 SDA 是 “与”关系,SCL 也是“与”关系。 总线对设备接口电路的制造工艺和电平都没有特殊的要求( NMOS、CMOS 都可以兼
共 页 第 页

容) 。在 I2C 总线上的数据传送率可高达每秒十万位,高速方式时在每秒四十万位以上。另 外,总线上允许连接的设备数以其电容量不超过 400pF 为限。 总线的运行(数据传输)由主机控制。所谓主机是指启动数据的传送(发出启动信号) 、 发出时钟信号以及传送结束时发出停止信号的设备,通常主机都是微处理器。被主机寻访 的设备称为从机。为了进行通讯,每个接到 I2C 总线的设备都有一个唯一的地址,以便于 主机寻访。主机和从机的数据传送,可以由主机发送数据到从机,也可以由从机发到主机。 凡是发送数据到总线的设备称为发送器,从总线上接收数据的设备被称为接受器。 I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应 答信号。 开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。 结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉 冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号, CPU 接收到应答信号后, 根据实际情况作出是否继续传递信号的判断。 若未收到应答信号, 由判断为受控单元出现故障。如图 3-2 所示: SDA

SCL

开始

结束

图 3-2 开始、结束信号图

目前有很多半导体集成电路上都集成了 I2C 接口。带有 I2C 接口的单片机有:CYGNAL 的 C8051F0XX 系列,PHILIPSP87LPC7XX 系列,MICROCHIP 的 PIC16C6XX 系列等。很 多外围器件如存储器、监控芯片等也提供 I2C 接口。 总线基本操作: I2C 规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据 则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通 常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和 停止条件。 SDA 线上的数据状态仅在 SCL 为低电平的期间才能改变, SCL 为高电平的期间, SDA 状态的改变被用来表示起始和停止条件。 控制字节: 在起始条件之后, 必须是器件的控制字节, 其中高四位为器件类型识别符 (不 同的芯片类型有不同的定义,EEPROM 一般应为 1010) ,接着三位为片选,最后一位为读









写位,当为 1 时为读操作,为 0 时为写操作。 写操作:写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节 不同有所不同。 读操作:读操作有三种基本操作:当前地址读、随机读和顺序读。图 4 给出的是顺序 读的时序图。应当注意的是:最后一个读操作的第 9 个时钟周期不是“不关心” 。为了结束 读操作,主机必须在第 9 个周期时发出停止条件或者在第 9 个时钟周期内保持 SDA 为高电 平、然后发出停止条件。









第三章 程序流程图
开始

初始化

读取当前温度 读取 AT24C02 内 上下限温度值

显示当前温度

判断 SET 是否按下 是 否

正 常 范 围

否 加减键是否按下 当前温度与上 下限位关系
大于上限

是 相应处理上下限位, 并写入 AT24C02

小于下限

上限指 示灯点 亮,蜂鸣 器闪响

下限指 示灯点 亮, 蜂鸣 器闪响

While 循环 返回









结论
通过对自己在大学两年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对 毕业设计的思考及书面表达能力,最终完成了本设计。这为自己今后进一步深化学习,积 累了一定宝贵的经验。撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业 基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实 际训练。培养了我运用所学知识解决实际问题的能力。 本次论文设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收 获丰硕。技术在不断进步,机械式时钟已经被淘汰,电子时代已经到来。做为新时代的我 们,更应该提高自身能力,适应新时代的发展。知识来自实践,多从生活中探寻所需要的。 从这次的论文设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把 我们所学的理论知识运用到实际生活当中,要用知识改变一切。









参考文献
[1] [2] [3] [4] [5] [6] [7] [8] [9] 陈权昌,李兴富.单片机原理及应用[M].广州:华南理工大学出版社,2007.84~102 李庆亮.C 语言程序设计实用教程[M].北京:机械工业出版社,2005.32~58 杨志忠.数字电子技术[M].北京:高等教育出版社,2003.125~132 及力.Protel 99 SE 原理图与 PCB 设计教程[M].北京:电子工业出版社,2007.89~150 徐江海.单片机实用教程[M].北京:机械工业出版社,2006.128~156 胡宴如.模拟电子技术[M].北京:高等教育出版社,2008.60~104 汪文,陈林.单片机原理及应用[M].湖北:华中科技大学出版社,2007.36~68 康华光.电子技术基础数字部分[M].北京:高等教育出版社,2008.203~209 杨欣.电子设计从零开始[M].北京:清华大学出版社,2005.28~102









致 谢

首先,感谢学校三年来对我的培养。为我们营造了一个良好的学习氛围,建设一流的 教学设施,使我们身心愉快的投入到学习中。 其次,感谢尊敬的指导老师,有了他的谆谆教诲,处处提点,才使本论文的前期准备 以及整个研究过程顺利完成。指导老师的严谨治学态度、扎实的理论基础、全身心投入工 作的精神以及对学生尽心尽力的态度给了我极大的帮助与鼓励,使我受益匪浅。从指导老 师的教学态度上,我学到的不仅仅只有书本上的知识,还有做人的道理。他严肃的科学态 度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在此谨向指导老师 致以诚挚的谢意和崇高的敬意。 最后,感谢我的父母多年来给予我的支持和关怀,同时感谢我的舍友和朋友对我的帮 助。









2 1

V CC

电源插口

+ C1 1 1 0 u F3

R1 10 K 2.2K V CC KZ V CC R 17 R 1 32 0 0 K4

排阻1

D1 A LA M

2 4

(AD 0)P0. 0 (AD 1)P0. 1 (AD 2)P0. 2 (AD 3)P0. V CC 3 (AD 4)P0. 4 (AD 5)P0. 5 (AD 6)P0. 6 (AD 7)P0. 7 A F B E dp D C G

U1 A T8 9 C5 1

1 3 D2 A LA M 1 K1 2 4 R 9 R 10 R 11 R 12 4.7K4.7K4.7K4.7K 1 3

1 2 3 4 5 SC L 6 SD A 7 8 9 10

P1. 0 P1. 1 P1. 2 P1. 3 P1. 4 P1. 0(RX 5 P3. D) P1. 1(TX 6 P3. D) P3. 2(IN T0) A LE/PR OG P1. 7 EA /VP P P3. 3(IN T1) R ST (A15)P2. 7 (A14)P2. 6 P3. 4(T0) (A13)P2. 5 PS EN P3. 5(T1) (A12)P2. 4 P3. 6(WR) (A11)P2. 3 P3. 7(RD ) (A10)P2. 2 X TA L2 X TA L1 G ND (A9)P2. 1 (A8)P2. 0

K2 Y1 C2 30 1 2 M Hz 2 4 1 3 K3 C3 30

11 12 13 14 15 16 17 18 19 20

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

G ND D CC Q V

附录 A 电路原理图

2 4 D S1 8 B2 0 R 16 4.7K V CC b 1 2 3 4 U4 A0 A1 NC G ND V CC WP SC L SD A 8 7 6 SC L 5 SD A 4.7K V CC A T2 4 C0 2 R 15

1 2 3
U2

e
Q1 85 50 b

c

S1

e
Q2 85 50

c

S2 E dp D C G S1
b b

e d dp c g S4
R 18 R 19 10 k 10 k

S1 a f S2 S3 S3 e
V CC Q3 85 50


LS 1 SP EA KE R

1 2 3 4 5 6 c c
Q5 85 50

b
U3 4 -LE D

12 S4 11 10 A F S3 9 S2 8 7 B



e



b

e
Q4 85 50 V CC

c

S4



附录 B C 语言程序
#include<reg52.h> #define ui unsigned int #define uc unsigned char sbit SET=P3^1; sbit DEC=P3^2; sbit ADD=P3^3; sbit BEEP=P3^6; sbit ALAM=P1^2; sbit ALAM1=P1^4; sbit DQ =P3^7; sbit SCL=P1^6; sbit SDA=P1^7; sbit DIAN=P0^5; bit bdata shanshuo_st; bit bdata beep_st; //小数点 //闪烁间隔标志 //蜂鸣器间隔标志 //定义 DS18B20 总线 I/O //宏定义 //定义调整键 //定义减少键 //定义增加键 //定义蜂鸣器 //定义灯光报警

uc x=0; ui bai,shi,ge; uc set_st=0; char shangxian,xiaxian; code

//计数器

//状态标志

LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0x DC,0x9B,0x8B};

//====================================DS18B20================================= ======== /*****延时子程序*****/ void Delay_DS18B20(int num) { while(num--) ; } void delay()//5 微秒延时函数
共 页 第 页

{ ;; } void start() //开始信号 { SDA=1; delay(); SCL=1; delay(); SDA=0; delay(); } void stop() { SDA=0; delay(); SCL=1; delay(); SDA=1; delay(); } void respons() //应答 { uc i; SCL=1; delay(); while((SDA==1)&&(i<250))i++;//如果 SDA 为低应答有效,或者超过一定时间默认应 答有效 SCL=0; delay(); } void init24c04()//I2C 总线初始化 { SDA=1; delay(); SCL=1; delay(); //终止信号









} void write_byte(uc date)//写操作 { uc i,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; SCL=0; delay(); SDA=CY; delay(); SCL=1; delay(); } SCL=0; delay(); SDA=1; delay(); } uc read_byte()//读操作 { uc i,k; SCL=0; delay(); SDA=1; delay(); for(i=0;i<8;i++) { SCL=1; delay(); k=(k<<1)|SDA; SCL=0; delay(); }









return k; } void write_add(uc address,uc date)//往任意地址存数据 { start(); write_byte(0xa0);//0xa0 代表写入 respons(); write_byte(address); respons(); write_byte(date); respons(); stop(); } uc read_add(uc address)//读随意地址内容 { uc date; start(); write_byte(0xa0);//0xa0 代表写入 respons(); write_byte(address); respons(); start(); write_byte(0xa1);//0xa1 代表读出 respons(); date=read_byte(); stop(); return date;//返回值 } /*****初始化 DS18B20*****/ void Init_DS18B20(void) { uc w=0; DQ = 1; //DQ 复位 //稍做延时

Delay_DS18B20(8); DQ = 0;

//单片机将 DQ 拉低









Delay_DS18B20(80); DQ = 1;

//精确延时,大于 480us

//拉高总线

Delay_DS18B20(14); w = DQ; Delay_DS18B20(20); } /*****读一个字节*****/ unsigned char ReadOneChar(void) { uc i=0; uc dat = 0; for (i=8;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; Delay_DS18B20(4); } return(dat); } /*****写一个字节*****/ void WriteOneChar(uc dat) { uc i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; Delay_DS18B20(5); DQ = 1; dat>>=1; } } // 给脉冲信号 // 给脉冲信号 //稍做延时后,如果 x=0 则初始化成功,x=1 则初始化失败









/*****读取温度*****/ ui ReadTemperature(void) { ui b=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0x44); //启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器 a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; return(t); } /*****延时子程序*****/ void Delay(ui num) { while( --num ); } /*****初始化定时器 0*****/ void InitTimer(void) { TMOD=0x01; TH0=0x3c; TL0=0xb0; } //50ms(晶振 12M) //放大 10 倍输出并四舍五入 //读低 8 位 //读高 8 位

/*****读取温度*****/ void check_wendu(void)









{ ui f; f=ReadTemperature()-5; if(f<0)f=0; if(f>999)f=999; bai=f/100; shi=(f%100)/10; ge=(f%100)%10; } /*****显示开机初始化等待画面*****/ void Disp_init(void) { P0 = ~0x80; P2 = 0x7F; Delay(200); P2 = 0xDF; Delay(200); P2 = 0xF7; Delay(200); P2 = 0xFD; Delay(200); P2 = 0xFF; } /*****显示温度子程序*****/ void Disp_Temperature(void) { P0 = ~0x98; P2 = 0x7F; Delay(400); P0=~LEDData[ge]; P2 = 0xDF; Delay(400); P0 =~LEDData[shi]; DIAN = 0; P2 = 0xF7; //显示十位 //显示个位 //显示 C //显示温度 //关闭显示 //显示---//计算得到十位数字 //计算得到个位数字 //计算得到整数位 //获取温度值并减去 DS18B20 的温漂误差

//显示小数点









Delay(400); P0 =~LEDData[bai]; P2 = 0xFD; Delay(400); P2 = 0xff; } /*****显示报警温度子程序*****/ void Disp_alarm(uc baojing) { P0 =~0x98; P2 = 0x7F; Delay(200); P0 =~LEDData[baojing%10]; //显示十位 P0 =~LEDData[baojing/10]; //显示百位 P2 = 0xF7; Delay(200); if(set_st==1)P0 =~0xCE; else if(set_st==2)P0 =~0x1A; //上限 H、下限 L 标示 P2 = 0xFD; Delay(200); P2 = 0xff; } /*****报警子程序*****/ void Alarm() { if(x>=10){beep_st=~beep_st;x=0;} if((bai*10+shi)>=shangxian&&beep_st==1) { BEEP=0; ALAM1=0; } else if((bai*10+shi)>=shangxian&&beep_st==0) { BEEP=1; ALAM1=0; //关闭显示 //显示 C //关闭显示 //显示百位









} if((bai*10+shi)<xiaxian&&beep_st==1) { BEEP=0; ALAM=0; } else if((bai*10+shi)<xiaxian&&beep_st==0) { BEEP=1; ALAM=0; } if(((bai*10+shi)<shangxian)&&((bai*10+shi)>=xiaxian)) { BEEP=1; ALAM1=1; ALAM=1; } } /*****主函数*****/ void main(void) { ui z; InitTimer(); EA=1; TR0=1; ET0=1; //开启定时器 0 //初始化定时器

//全局中断开关

check_wendu(); check_wendu(); shangxian=read_add(10); xiaxian=read_add(20); for(z=0;z<300;z++) { Disp_init(); } while(1)









{ if(SET==0) { Delay(2000); do{} while(SET==0); set_st++;x=0;shanshuo_st=1; if(set_st>2)set_st=0; } if(set_st==0) { check_wendu(); Disp_Temperature(); Alarm(); } else if(set_st==1) { BEEP=1; ALAM=1; ALAM1=1; if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(shangxian);} if(ADD==0) { do{Disp_alarm(shangxian);} shangxian++; if(shangxian>99)shangxian=99; write_add(10,shangxian); } else if(DEC==0) { do{Disp_alarm(shangxian);} while(DEC==0); shangxian--; if(shangxian<xiaxian) shangxian=xiaxian; //关闭蜂鸣器 //报警检测









write_add(10,shangxian); } } else if(set_st==2) { BEEP=1; ALAM=1; ALAM1=1; if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(xiaxian);} if(ADD==0) { do{Disp_alarm(xiaxian);} while(ADD==0); xiaxian++; if(xiaxian>shangxian) xiaxian=shangxian; write_add(20,xiaxian); } else if(DEC==0) { do{Disp_alarm(xiaxian);} while(DEC==0); xiaxian--; if(xiaxian<0) xiaxian=0; write_add(20,xiaxian); } } } } /*****定时器 0 中断服务程序*****/ void timer0(void) interrupt 1 { TH0=0x3c; TL0=0xb0; x++; //关闭蜂鸣器









}





线










相关文章:
msp430温度传感器毕业论文
msp430温度传感器毕业论文_IT/计算机_专业资料。MSP430温度传感器毕业论文西安邮电学院 毕业设计(论文)题目:温度传感器的测温软件的设计 学系专班 院: 部: 业: 级...
温度传感器论文2
毕业设计(论文)设计题目: 系别: 姓名: 班级: 指导老师: 基于单片机的温度控制系统 电子信息工程系 唐静 10311 彭文勇 日期:2014 年 4 月 2 日 目录一、引言...
智能温度传感器毕业设计论文
编号 河南机电高等专科学校 毕业设计(论文) 智能温度传感器毕业设计 系专班姓学 部: 业: 级: 名: 号: 指导老师: 毕业设计(论文)原创性声明和使用授权说明 ...
毕业设计温度传感器
毕业设计温度传感器_工学_高等教育_教育专区。基于单片机的远程温度显示 毕业设计(论文) 学专 院、系: 业: 名: 级: 电子电气工程系 电气自动化 学生姓班 学号...
温度传感器设计方案毕业论文
温度传感器设计方案毕业论文_其它_高等教育_教育专区 暂无评价|0人阅读|0次下载温度传感器设计方案毕业论文_其它_高等教育_教育专区。温度传感器设计方案毕业论文 目录...
医用电子仪器与维护《毕业设计(论文)》-温度传感器在恒...
上海XXXXXXXXXX 学校 毕业设计(论文) 温度传感器在恒温恒湿箱中的应用 姓系专班 名: 部: 业: 级: XXXXXX 医用电子信息系 医用电子仪器与维护 XXXXXXX XXXX ...
传感器毕业论文---一种温度传感器系统的设计_图文
传感器毕业论文---一种温度传感器系统的设计_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载传感器毕业论文---一种温度传感器系统的设计_工学_高等教育_教育...
电气毕业论文:AD590温度传感器
II 南昌工程学院专科毕业设计 第一章 绪论 1.1 课题背景及意义一些传感器市场比如压力传感器、温度传感器、流量传感器、水平传感器.称重传感 器已表现出成熟市场的...
汽车检测与维修毕业设计(论文)-温度传感器检测与维修-...
吉林交通职业技术学院 毕业论文温度传感器检测与维修 系专班学姓 别: 业: 级: 号: 名: 汽车工程系 汽车检测与维修 汽检 09373 指导教师: 2011 年 12 月 ...
温度传感器的测温软件的设计毕业论文_图文
毕业设计(论文) 题目: 温度传感器的测温软件的设计 毕业设计(论文)诚信声明书 本人声明: 本人所提交的毕业论文 《 串行接口通信及通信监测 》 是本人在指导教师...
更多相关标签: