带温度的电子时钟.docx

上传人:b****3 文档编号:5132940 上传时间:2023-05-08 格式:DOCX 页数:15 大小:238.28KB
下载 相关 举报
带温度的电子时钟.docx_第1页
第1页 / 共15页
带温度的电子时钟.docx_第2页
第2页 / 共15页
带温度的电子时钟.docx_第3页
第3页 / 共15页
带温度的电子时钟.docx_第4页
第4页 / 共15页
带温度的电子时钟.docx_第5页
第5页 / 共15页
带温度的电子时钟.docx_第6页
第6页 / 共15页
带温度的电子时钟.docx_第7页
第7页 / 共15页
带温度的电子时钟.docx_第8页
第8页 / 共15页
带温度的电子时钟.docx_第9页
第9页 / 共15页
带温度的电子时钟.docx_第10页
第10页 / 共15页
带温度的电子时钟.docx_第11页
第11页 / 共15页
带温度的电子时钟.docx_第12页
第12页 / 共15页
带温度的电子时钟.docx_第13页
第13页 / 共15页
带温度的电子时钟.docx_第14页
第14页 / 共15页
带温度的电子时钟.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

带温度的电子时钟.docx

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

带温度的电子时钟.docx

带温度的电子时钟

 

简易数字温度计

(附加电子钟)

 

班级:

自动化08—12班

学生姓名:

时间:

从2010年12月25日到2011年1月3日

 

一、摘要:

本系统以STC89C52单片机为核心,采用高精度温度传感器DS18B20采样温度数据,将温度转换成数字信号,由STC89C52单片机负责发出指令和接收采样数据,经过数据处理后,并以字符LCD1602实现温度显示的简易测温系统。

在温度的检测与控制方面,由于18B20小型温度检测系统及其数字温度传感器有许多突出的优点,其通过单总线与单片机连接,系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度检测。

为了不让功能太单一,造成资源的浪费,本人利用单片机本身定时器模拟了一套电子时钟,可实现时钟设置,闹钟,倒计时,秒表等功能!

二、关键词:

STC89C52单片机,DS18B20数字温度传感器,LCD1602液晶显示器。

三、设计原理与总体方案:

方案论证与比较

<一>、温度计

方案一:

采用STC89C52单片机作为核心控制器,利用AD590温度传感器完成温度的测量,把转换的温度值的模拟量送入STC89C52单片机的P0端口的其中一个通道进行A/D转换,将转换的结果进行温度值变换之后送入LCD1602显示。

如图1所示。

该方案硬件电路简单,容易实现,但相对于方案二,其成本相对高,精度也低,测温点数量少,对线阻有要求。

图1方案一系统设计框图

 

方案二:

采用STC89C52单片机作为核心控制器,用高精度温度传感器DS18B20采样温度数据,将温度转换成数字信号,由STC89C52单片机负责发出指令和接收采样数据,经过数据处理后,并以字符LCD1602实现温度显示的简易测温系统。

如图2所示,该方案硬件电路简单,容易实现,相对于方案一,成本低,精确度高,可达0.0625,由于每个DS18B20都有独立的地址序列码,所以单总线可同时连接很多温点,信号线距离远.

 

图2方案二系统设计框图

综上所述,两方案的对比,所以选择方案二。

<二>、电子钟

方案一:

时钟的设计可以应用专业的时钟芯片DS1302,DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。

使用方便,同时可携带外部电源,达到掉电数据不丢失。

使用起来安全可靠!

方案一:

采用单片机内部定时器进行模拟,设定定时器到一定时间产生中断,当中断次数达到一秒时秒钟加一,当秒钟加一到60,则分钟加一,下则时钟加一,以此实现电子计时。

次设计方案虽然对硬件要求不高,但是对单片机内部资源消耗过大,由于是利用定时器进行模拟,长期运行可能存在大的时间误差!

由于我的初衷是设计一个数字温度计,但是发现功能太单一,造成了资源的浪费,同时想让自己对单片机的定时器有更深入的理解,所以我选择了方案二,用两个定时器T0,T1模拟出了一套多功能电子时钟。

其中实现了时钟显示,日期显示,闹钟报警,秒表计时,倒计时报警等功能!

可通过四个按键对时钟,闹钟,秒表,定时器进行设置。

四、硬件设计:

硬件电路主要分为供电系统、温度采集、控制电路、单片机系统,显示电路和报警电路六部分。

其总体电路图如图1所示。

图1总体电路图

4.1供电系统:

本供电电路用一个1/18的变压器将220V交流电变为12V,通过全桥整流变成直流电,在通过稳压芯片L7805稳压成5V直流电,在通过电容滤波最后变成稳定的5V直流电对系统供电,具体电路如图2所示。

图2供电电路

4.2:

温度采集

本系统用一个集成的数字温度传感器DS18B20进行温度的采集。

DS18B20通过P2.6口将温度数据传给单片机,由单片机进行处理,最后显示!

电路如图3所示。

图3 温度采集电路

 

4.3控制电路:

本系统通过4个独立按键对系统进行设置。

数据选择电路如图4所示。

图4 控制电路

4.4单片机系统:

单片机采用STC89C52,采用12MHZ的晶振频率。

单片机系统的电路如图5所示。

图5 单片机系统

4.5显示电路:

显示电路由1602组成,其电路如图6所示。

图6 显示电路

4.6报警电路:

报警电路由一个PNP三极管驱动蜂鸣器组成,其电路如图7所示。

图7 报警电路

五软件设计:

多功能温度计的软件设计主要由主程序、显示程序、温度采集程序组成。

5.1温度计程序设计:

操作步骤

根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位操作。

复位成功后发送一条ROM指令。

最后发送RAM指令。

这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

 

ROM指令表

指令

约定代码

功能

读ROM

0x33

读DS1820温度传感器ROM中的编码(即64位地址)

符合ROM

0x55

发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。

搜索ROM

0xF0

用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。

为操作各器件作好准备。

跳过ROM

0xCC

忽略64位ROM地址,直接向DS1820发温度变换命令。

适用于单片工作。

告警搜索命令

0xEC

执行后只有温度超过设定值上限或下限的片子才做出响应。

RAM指令表

指令

约定代码

功能

温度变换

0x44

启动DS1820进行温度转换,12位转换时最长为750ms

(9位为93.75ms)。

结果存入内部9字节RAM中。

读暂存器

0xBE

读内部RAM中9字节的内容

写暂存器

0x4E

发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。

复制暂存器

0x48

将RAM中第3、4字节的内容复制到EEPROM中。

重调EEPROM

0xB8

将EEPROM中内容恢复到RAM中的第3、4字节。

读供电方式

0xB4

读DS1820的供电模式。

寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。

5.1电子时钟程序设计

时钟:

设定定时器T0每隔50ms产生一次中断,达到20次中断时则满一秒,当满60秒时使分钟加一,然后时钟加一,依此类推;

时钟:

每次中断将事先设置好的闹钟时间与时钟比较,如果到点则蜂鸣器发出频率为2的报警,按下任意键则关闭报警。

秒表:

使用定时器T1每隔10ms产生一次中断,当在秒表模式时按下启动按钮则定时器T1开始计时!

到达100次中断则为1秒,依此类推;

倒计时:

当在倒计时模式下按下启动按钮启动定时器T1,当中断100次后则秒钟减一,直到减为零则蜂鸣器长鸣,按下任意键关闭蜂鸣器。

按键控制:

1、当按下0次功能键时为时钟模式,显示为时钟,直接按下K1,K2,K3分别对时、分、秒进行设置。

2、按下1次功能键则为闹钟模式,显示为闹钟设置值,直接按下K1,K2,K3分别对闹钟时、分、秒进行设置。

3、按下2次功能键则为秒表模式,显示为秒表计时,直接按下K1启动秒表工作,再次按下K1则停止秒表,按下K3则清零秒表。

4、按下3次功能键则为倒计时模式,显示为倒计时数据,直接按下K2,K3分别对倒计时初始值的分、秒进行设置,然后按下K1启动倒计时,计时时间到则蜂鸣器长鸣,按下任意键则关闭蜂鸣器。

定时器T0:

系统使用12M晶振,定时器每加一一次为1us,T0设置为模式1(16位),为了是定时器T0每隔50ms中断一次,则设置初值为(65536-50000)。

定时器T1:

设置T1为模式1(16位),每隔10ms中断一次,则初值为(65536-10000)。

5.2主程序:

1、主程序流程图如图8所示。

图8主程序流程图

2、主要程序流程图。

2.1DS18B20初始化流程

主机状态

命令/数据

说明

发送

Reset

复位

接收

Presence

从机应答

发送

0XCC

忽略ROM匹配(对单从机系统)

发送

0X4E

写暂存器命令

发送

2字节数据

设置温度值边界TH,TL

发送

1字节数据

温度计模式控制字

3.2DS18B20温度转换以及读取流程

主机状态

命令/数据

说明

发送

Reset

复位

接收

Presence

从机应答

发送

0XCC

忽略ROM匹配(对单从机系统)

发送

0X44

温度转换命令

等待

等待100~200ms

发送

Reset

复位

接收

Presence

从机应答

发送

0XCC

忽略ROM匹配(对单从机系统)

发送

0XBE

读取内部寄存器命令

读取

9字节数据

前2字节为温度数据

 

3.1DS18B20初始化流程

主机状态

命令/数据

说明

发送

Reset

复位

接收

Presence

从机应答

发送

0XCC

忽略ROM匹配(对单从机系统)

发送

0X4E

写暂存器命令

发送

2字节数据

设置温度值边界TH,TL

发送

1字节数据

温度计模式控制字

3.2DS18B20温度转换以及读取流程

主机状态

命令/数据

说明

发送

Reset

复位

接收

Presence

从机应答

发送

0XCC

忽略ROM匹配(对单从机系统)

发送

0X44

温度转换命令

等待

等待100~200ms

发送

Reset

复位

接收

Presence

从机应答

发送

0XCC

忽略ROM匹配(对单从机系统)

发送

0XBE

读取内部寄存器命令

读取

9字节数据

前2字节为温度数据

 

六、系统测试

6.1系统测试

由于缺少系统测试的设备,所以在测试的时候曾想用简易的水银温度计,但在精确值又上不及本数字温度计的0.0625,所以系统测试无法正常进行。

也曾试用仿真系统,但仿真毕竟不够真实,所以在我们现有设备下无法进行。

6.2误差分析

造成误差的原因有:

由于没有进行系统测试,无数据进行参考。

所以按电

路结构和所用电子元件理论分析,可能产生误差的可能有:

温度传感器元件的好坏。

由于单片机使用的是内部8M赫兹晶振,所以当单片机温度过高时可能使频率有所波动,进而影响程序中的延时函数精度,导致无法正常产生时序,使DS18B20无法正常工作。

还有电源的稳定等。

七、结论

在误差范围内,此数字温度计,工作稳定,功耗低,结构简单,精确度高,使用方便。

如果用在当前市场中去,可以使用管脚更少的单片机,而且还可以使用数码管来显示,这一方面可以减少元件成本,另一方面可以使工作电压更低,功耗更低。

具有广泛市场前景。

至于电子时钟,由于是用定时器模拟,存在一定的时钟误差!

若使用专业的时钟芯片(如DS1302),可是电子时钟得以优化

 

八、附主要程序清单

 

【参考文献】

[1]单片机原理与应用及C51程序设计 唐颖 主编北京大学出版社2008-8-1

[2]博弈电子51单片机软硬件设计教程

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

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

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

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