带温度显示的电子钟设计 推荐.docx

上传人:b****3 文档编号:6654313 上传时间:2023-05-10 格式:DOCX 页数:42 大小:234.53KB
下载 相关 举报
带温度显示的电子钟设计 推荐.docx_第1页
第1页 / 共42页
带温度显示的电子钟设计 推荐.docx_第2页
第2页 / 共42页
带温度显示的电子钟设计 推荐.docx_第3页
第3页 / 共42页
带温度显示的电子钟设计 推荐.docx_第4页
第4页 / 共42页
带温度显示的电子钟设计 推荐.docx_第5页
第5页 / 共42页
带温度显示的电子钟设计 推荐.docx_第6页
第6页 / 共42页
带温度显示的电子钟设计 推荐.docx_第7页
第7页 / 共42页
带温度显示的电子钟设计 推荐.docx_第8页
第8页 / 共42页
带温度显示的电子钟设计 推荐.docx_第9页
第9页 / 共42页
带温度显示的电子钟设计 推荐.docx_第10页
第10页 / 共42页
带温度显示的电子钟设计 推荐.docx_第11页
第11页 / 共42页
带温度显示的电子钟设计 推荐.docx_第12页
第12页 / 共42页
带温度显示的电子钟设计 推荐.docx_第13页
第13页 / 共42页
带温度显示的电子钟设计 推荐.docx_第14页
第14页 / 共42页
带温度显示的电子钟设计 推荐.docx_第15页
第15页 / 共42页
带温度显示的电子钟设计 推荐.docx_第16页
第16页 / 共42页
带温度显示的电子钟设计 推荐.docx_第17页
第17页 / 共42页
带温度显示的电子钟设计 推荐.docx_第18页
第18页 / 共42页
带温度显示的电子钟设计 推荐.docx_第19页
第19页 / 共42页
带温度显示的电子钟设计 推荐.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

带温度显示的电子钟设计 推荐.docx

《带温度显示的电子钟设计 推荐.docx》由会员分享,可在线阅读,更多相关《带温度显示的电子钟设计 推荐.docx(42页珍藏版)》请在冰点文库上搜索。

带温度显示的电子钟设计 推荐.docx

带温度显示的电子钟设计推荐

摘要

本文介绍了一款基于AT89S51单片机控制的带有温度显示的电子钟的设计,通过多功能数字钟带有温度的设计思路,详细叙述了系统硬件、软件的具体实现过程。

论文重点阐述了数字钟硬件中MCU模块、温度模块、时钟模块、显示模块和相关控制模块等的模块化设计与制作;软件同样采用模块化的设计,包括中断模块、、温度模块、时间调整模块设计,并采用简单流通性强的C语言编写实现。

本设计实现了时间的修改功能和年、月、日和星期的显示和温度显示功能。

关键词:

AT89S51单片机数字钟温度显示

 

Abstract

ThispaperintroducedthedesignofdigitalclockbasedonSCMofAT89S51,thespecificprocessofhowthesystemhardwareandsoftwareachievedweredetaileddescriptionthroughthedesignofmultifunctiondigitalclock.Themodulardesignandproduction,whichconsistedofMCUmodule,voicemodule,clockmoduleandtheassociatedcontrolmodule,weremainlyrecounted;Aswellashardwaredesigning,softwaredesignusethesamemethod,consistssuspensionmodule,alarmclockmodule,voicemodule,timeadjustmodule,andthatusetheClanguagetoachievebecauseofitssimpleandstrongnegotiability.Inthisdesignthefunctionsoftimeandalarmclockrunandchange,voicebroadcast,functionsoftheyear,month,dayandweekdisplayhavebeenachieved.Andbycomparingtheactualclock.

 Key words:

AT89S51MicrocontrollerDigitalClocktheDisplayofTemperature

 

 

目 录

前言..............................................................1

第一章系统实现功能、设计方案论证及芯片介绍...............2

第一节系统要求实现功能.........................................2

第二节设计方案论证..............................................2

第三节芯片介绍..................................................4

一、DS18B20芯片介绍.........................................4

二、DS1302芯片介绍..........................................9

第二章电路硬件设计及分析.................................13

第一节时钟电路...............................................13

第二节复位电路................................................13

第三节DS1302时钟电路..........................................14

第四节DS18B20温度计电路.......................................14

第五节键盘电路................................................15

第六节显示电路................................................16

第七节按键提示电路............................................17

第三章软件设计................................................18

第一节主函数流程图............................................18

第二节18B20温度计流程图......................................18

第三节键盘电路流程图..........................................20

第四节定时器T0中断服务程序流程图.............................21

第四章结束语..................................................22

附录1电路原理图...............................................23

附录2主程序清单..............................................24

参考文献........................................................36

致谢...........................................................37

前言

单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。

本文主要介绍由单片机控制的带有温度显示的电子钟的设计。

随着人们生活水平的日益提高,人们对生活的要求越来越高,原有的事物已经不能满足人们的生活需求了,一些带有新功能的事物已经在慢慢的取代旧事物。

就像电子钟一样,人们用电子钟不仅仅只是看时间了,人们还需要看温度了。

越来越多的新功能更贴近人们的生活了,所以也越来越受人们所喜欢。

带有温度的的电子钟可以使人们随时都可以了解温度的变化。

 

第一章系统实现功能、设计方案论证及芯片介绍

第一节系统要求实现功能

(1)万年历

(2)温度显示

(3)三键调时(设置键,上调键,下调键)

(4)按键蜂鸣器提示

第二节设计方案论证

方案一用主芯片为AT89C51的单片机控制实现,使用单片机内部的定时计数器实现时间的设定,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。

显示时间和温度使用数码管显示。

方案1系统结构框图如图1-1所示。

图1-1方案1系统结构框图

方案二用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键蜂鸣器提示,温度传感器使用普通的温度传感器,由于温度传感器采集的数据为模拟量,又因为单片机AT89C51内部没有集成模数转换器,需要在控制系统的外部使用A/D转换装置,另外系统还应该把采集来的数据进行信号处理,显示温度和时间使用LCD1602显示。

方案2系统结构框图如图1-2所示。

图1-2方案2系统结构框图

方案三用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS公司生产的单总线式数字温度传感器。

显示时间和温度使用LCD1602显示。

方案3系统结构框图如图1-3所示。

图1-3方案3系统结构框图

方案选择方案一直接使用单片机内集成的定时器,产生定时节拍,编制软件计数器,进行节拍技术,理论上讲,不但能够完成秒表设计,还能够实现分钟、刻钟、小时的实时计时功能,在此基础上,如果加上足够精确的误差时间补偿处理,甚至可以实现日、星期、月、年等日历功能。

但使用片内定时器有以下几个问题:

1、时间补偿

片内定时器采用中断方式提供计时节拍,中断的实质是随机程序切换,那么,中断响应时间是不可精确预测的。

这样,必然会导致计时节拍的时间误差,在计时时间较短的情况下,比如1~99s计时,可以采用一些软件措施进行误差补偿,但当系统所需要的计时时间较长时,比如进行年、月、日的日历计时,定时中断误差扥积累就会很大,无法满足时间精度的要求。

因此,在需要日历、时钟的场合,片内定时器的作用有限。

片内定时器只适合于单片机短时间计时的要求。

2、时钟维持

使用片内定时器进行计时的时候,单片机始终要处于工作状态。

才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。

在单片机系统中,有时,需要维持一个时钟,对控制工作进行时间标定。

不管单片机系统开机、关机还是待机,系统时钟要始终维持。

为了满足单片机系统的实时钟需求,最可靠的方法是采用实时钟芯片DS1302。

温度的数据采集如果是一般的温度传感器,需要对信号进行处理,另外还需要模数转换装置,如果采用的是数字温度传感器18B20,可以直接将采集的信号转化为数字信息供单片机控制,这样不仅节约了成本,还提高了系统的可靠性和稳定性。

所以本设计采用的是方案三。

第三节芯片介绍

一、DS18B20芯片介绍

DS18B20是DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。

它具有3引脚TO-92小体积封装形式,温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

以上特点使DS18B20非常适用于远距离多点温度检测系统。

1、DS18B20外形及引脚说明

DS18B20外形及引脚如图1-4所示。

图1-4DS18B20外形及引脚图

在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下:

(1)GND:

地;

(2)DQ:

单线运用的数据输入输出引脚;

(3)VDD:

可选的电源引脚。

2、DS18B20工作过程及时序

DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。

高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。

初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。

初始时,计数器1预置的是与-55℃相对应的一个预置值。

以后计数器1每一个循环的预置数都由斜率累加器提供。

为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。

计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。

DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。

在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。

这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±1/2LSB,即0.25℃。

温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。

测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。

DS18B20测量温度时使用特有的温度测量技术。

DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。

当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。

芯片内部还有斜率累加器,可对频率的非线性度加以补偿。

测量结果存入温度寄存器中。

一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。

DS18B20工作过程一般遵循以下协议:

初始化——ROM操作命令——存储器操作命令——处理数据。

(1)初始化

单总线上的所有处理均从初始化序列开始。

初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。

存在脉冲让总线控制器知道DS1820在总线上且已准备好操作。

(2)ROM操作命令

一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。

所有ROM操作命令均为8位长。

这些命令介绍如下:

ReadROM(读ROM)[33h]此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。

此命令只能在总线上仅有一个DS18B20的情况下可以使用。

如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。

MatchROM(符合ROM)[55h]此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。

只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。

所有与64位ROM序列不符的从片将等待复位脉冲。

此命令在总线上有单个或多个器件的情况下均可使用。

SkipROM(跳过ROM)[CCh]在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。

如果在总线上存在多于一个的从属器件而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。

SearchROM(搜索ROM)[F0h]当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。

搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。

AlarmSearch(告警搜索)[ECh]此命令的流程与搜索ROM命令相同。

但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。

告警的条件定义为温度高于TH或低于TL。

只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。

贮存在EEPROM内的触发器值用于告警。

(3)存储器操作命令

WriteScratchpad(写暂存存储器)[4Eh]这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。

接下来写入的两个字节将被存到暂存器中的地址位置2和3。

可以在任何时刻发出复位命令来中止写入。

ReadScratchpad(读暂存存储器)[BEh]这个命令读取暂存器的内容。

读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。

如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。

CopyScratchpad(复制暂存存储器)[48h]这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。

如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20则输出“1”。

如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。

ConvertT(温度变换)[44h]这条命令启动一次温度转换而无需其他数据。

温度转换命令被执行,而后DS18B20保持等待状态。

如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。

如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。

RecallE2(重新调整E2)[B8h]这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。

这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。

在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:

“0”=忙,“1”=准备就绪。

ReadPowerSupply(读电源)[B4h]对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:

“0”=寄生电源供电,“1”=外部电源供电。

(4)处理数据

DS18B20的高速暂存存储器由9个字节组成,其分配如图1-5所示。

当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。

单片机可通过单线接口读到该数据,读取时低位在前,高位在后。

图1-5高速暂存存储器分配图

表1-1是DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

温度转换计算方法举例:

例如,当DS18B20采集到+125℃的实际温度后,输出为07D0H,则:

实际温度=07D0H╳0.0625=2000╳0.0625=1250C。

例如当DS18B20采集到-55℃的实际温度后,输出为FC90H,则应先将11位据位取反加1得370H(符号位不变,也不作为计算),则:

实际温度=370H╳0.0625=880╳0.0625=550C。

表1-1DS18B20温度数据表

温度/0C

二进制表示

十六进制表示

符号位(5位)

数据位(11位)

+125

00000

1

1

1

1

1

0

1

0

0

0

0

07D0H

+25.0625

00000

0

0

1

1

0

0

1

0

0

0

1

0191H

+10.125

00000

0

0

0

1

0

1

0

0

0

1

0

00A2H

+0.5

00000

0

0

0

0

0

0

0

1

0

0

0

0008H

0

00000

0

0

0

0

0

0

0

0

0

0

0

0000H

-0.5

11111

1

1

1

1

1

1

1

1

0

0

0

FFF8H

-10.125

11111

1

1

1

0

1

0

1

1

1

1

0

FF5EH

-25.625

11111

1

1

0

0

1

1

0

1

1

1

1

FE6FH

-55

11111

1

0

0

1

0

0

1

0

0

0

0

FC90H

二、DS1302芯片介绍

DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:

复位(RST)、I/O数据线、串行时钟(SCLK)。

时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。

DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。

1、DS1302的内部结构

DS1302的外部引脚功能说明如图1-6所示。

DS1302封装图

X1,X2

32.768kHz晶振引脚

GND

RST

复位

I/O

数据输入/输出

SCLK

串行时钟

VCC1

电池引脚

VCC2

主电源引脚

图1-6DS1302的外部引脚功能说明图

 DS1302的内部结构如图1-7所示,主要组成部分为:

移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。

虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。

图1-7DS1302的内部结构图

DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。

不过对我们目前而言,最需要熟悉的是和时钟相关部分的功能,对于其它参数请参阅数据手册。

2、DS1302的工作原理

DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。

数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。

时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。

3、DS1302的寄存器和控制命令

对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。

日历、时间寄存器及控制字如表1-2所示。

表1-2日历、时钟寄存器与控制字对照表

寄存器名称

7

6

5

4

3

2

1

0

1

RAM/CK

A4

A3

A2

A1

A0

RD/W

秒寄存器

1

0

0

0

0

0

0

分寄存器

1

0

0

0

0

0

1

小时寄存器

1

0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2