电子系统设计与实践——具有报时报温功能的电子钟设计者:电气83班 08041074刘湛 08041072 李旭内容摘要本次设计以AT89C52芯片为核心,辅以必要的外围电路,设计了一个简易的具有报时报温功能的电子钟,它由5V直流电源供电。
在硬件方面,除了CPU外,使用8个七段LED数码管来进行显示,LED采用的是动态扫描显示,利用74LS573进行数码管段驱动,利用ULN2803A进行位驱动。
通过LED能够比较准确显示时、分、秒以及日期和当前室温。
利用5个简单的按键分别实现对时间的调整,年月日显示的切换,温度显示切换。
时钟日历来源于DS1302芯片。
温度测量功能来源于DS18BU20芯片。
软件方面采用C语言编程,以完成功能实现。
整个电子钟系统能完成时间的显示,调时,以及温度显示等功能。
关键词:电子系统设计AT89C52 LED数码管日历芯片DS1302 温度测量芯片DS18BU20目录一.实现功能、任务以及具体要求二.重要硬件简介及应用三.功能的论证与实现四.系统框图五.总体设计系统电路原理图和PCB 版图六.程序流程图七.实验遇到的问题及改进八.实验总结及感想九.参考书目十.源程序一.实现功能、任务以及具体要求1.目的及任务:(1)通过查阅相关资料,深入了解温度测量相关知识;(2)学习动态显示方式的实现方法及原理;(3)复习“MCS-51单片机原理及C语言程序设计”,掌握其接口扩展;(4)确定具有报时报温功能的电子钟的原理图,构建硬件平台;(5)采用汇编或C语言编写应用程序并调试通过;(6)制作出样机并测试达到功能和技术指标要求;(7)写出设计报告和答辩PPT。
.2.具体工作内容:(1)技术要求:1. 时钟日历来源于DS1302芯片。
2. 温度测量使用DS18BU20。
3. 定闹功能、蜂鸣器音提示。
4. 具有实时年月日显示和校时功能。
5. 六位数码管动态显示,可采用按键切换显示。
(2)工作任务:1.组建具有报时报温功能的电子钟的总体结构框图;2.根据设计要求,通过理论分析选择电路参数;3.根据操作功能要求,确定键盘控制功能;4.按设计要求确定显示位数、指示类型和单位;5.编写应用程序并调试通过;6.对系统进行测试和结果分析;7.撰写设计报告和答辩PPT。
二.重要硬件简介及应用89C52单片机、DS1302时钟日历芯片、DS18B20温度传感器1、DS18B20主要资料温度传感器DS18B20是单线智能温度传感器,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,在使用中不需要任何外围元件,测量结果以9-12位数字量方式串行传送。
其测温范围-55℃~+125℃,固有测温分辨率0.5℃。
支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。
DS18B20的外形图如图2所示,在本设计中2号引脚节单片机的P3.4引脚,来实现温度数据的传输。
下面就其内部结构和原理做简要介绍。
(1)DS18B20的内部结构。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
该装置信号线高的时候,内部电容器储存能量通由1线通信线路给片子供电,而且在低电平期间为片子供电直至下一个高电平的到来重新充电。
DS18B20的电源也可以从外部3V-5 .5V的电压得到。
(2)DS18B20的六条控制命令温度转换 44H 启动DS18B20进行温度转换;读暂存器 BEH 读暂存器9个字节内容;写暂存器 4EH 将数据写入暂存器的TH、TL字节;复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中;重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节;读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CP (3)DS18B20的初始化(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起最少要480微秒。
(8)将地址线拉高到“1”后结束。
(4)DS18B20的写操作(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
(5)DS18B20的读操作(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时15微秒。
(5)将数据线拉高“1”。
(6)延时15微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时30微秒。
图3 DS18B20的读写时序图根据以上原则,参考读写时序图图可编写程序对DS18B20中的温度数据信息进行采集。
读写时序图如图3所示。
将从温度传感器中采集到的温度数据进行处理后即可变成可由数码管显示的十进制数。
其转换方式如下所述。
(6)DS180B20读出数据的计算方法从DS18B20中读出的二进制数值必须先转换为十进制数才能用于数码管的显示。
DS18B20的转换精度可选9-12位,在采用12位转换精度时,温度寄存器里的二进制数以0.0625为步进。
即,温度值为温度寄存器里的值乘以0.0625,得到实际的十进制温度。
十进制、二进制和十六进制转换关系如表1所示。
表1 DS18B20的温度与测得值对应表温度/C 二进制值十六进制值+125 0000 0111 1101 0000 07D0H+85 0000 0101 0101 0000 0550H +25.0625 0000 0001 1001 0001 0191H+10.125 0000 0000 1010 0010 00A2H+0.5 0000 0000 0000 1000 0008H0 0000 0000 0000 0000 0000H-0.5 1111 1111 1111 1000 FFF8H-10.125 1111 1111 0101 1110 FF5EH-25.0625 1111 1110 0110 1111 FF6FH -55 1111 1100 1001 0000 FC90H单片机分两次从温度传感器DS18B20中读取数据,每次读取一个字节。
先读低位再读高位。
读取后把二进制的高字节的低半字节与低字节的高半字节组成一个字节,并转化为十进制后就得到温度值得百位、十位、各位的值,剩下的低半字节转化为十进制后就得到小数部分,小数部分二进制和十进制的关系如表2所示。
表2 小数部分的二进制和十进制的近似对应关系小数0 1 2 3 4 5 6 7 8 9 A B C D E F 部分十进0 1 1 2 3 3 4 4 5 6 6 7 8 8 9 9 制值(2)DS1302主要资料DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
1、芯片引脚及功能DS1302的引脚如图所示,其功能如下;(1)Vcc1:电源输入引脚,单电源供电时接Vcc1脚,,双电源供电时用于接备份电源;(2)Vcc2:电源引脚,双电源供电时接主电源;(3)GND:接地引脚;图4 DS1302引脚图(4)RST:复位引脚;(5)I/O:数据输入输出引脚;(6)SCLK:串行时钟引脚(7)X1、X2:时钟输入引脚,外接晶体振荡器。
具体工作说明时CPU只通过SCLK、RST和I/O三个口来实现数据传输。
其中,RST为通信允许信号,低电平有效,即RST=0,允许通信,RST=1时,禁止通信,SCLK为串行数据的位同步脉冲信号,I/O为双向串行数据传输信号。
在本设计中SCLK与单片机P2.0连接(2)时钟芯片DS1302的命令字节时钟芯片DS1302由单片机来控制数据传输,每次传输时由单片机向时钟芯片DS1302写入一个命令字节开始,后面是数据字节。
时钟芯片DS1302的命令字节格式如表3所示。
表3 时钟芯片DS1302的命令时序位序D7 D6 D5 D4 D3 D2 D1 D0定义 1 RAM/CLK A4 A3 A2 A1 A0 RD/W 其中命令字节各位的定义如下:(1)命令字节的最高位D7为1;(2)RAM/CLK位为时钟芯片DS1302片内RAM/时钟的选择位,当RAM/CLK 为1时,为RAM操作,为0时为时钟操作;(3)A4-A0为片内日历时钟寄存器或RAM的地址选择位;(4)RD/W为时钟芯片DS1302读写控制,当RD/W=1时,为读操作,当RD/W=0时,为写操作。
时钟芯片DS1302执行读操作时,时钟芯片DS1302接受命令字节后,按指定的选择对象及寄存器的的地址读取数据并通过I/O引脚传输给单片机;时钟芯片DS1302执行写操作时,时钟芯片DS1302接受命令字节后,接受来自单片机的数据并写入到时钟芯片DS1302相应的寄存器中。
2、时钟芯片DS1302的数据格式与控制格式选择时钟操作时,与日期有关的DS1302的数据格式如表4所示表4 DS1302的日历时钟寄存器及其控制字寄存器名命令字取值范围各位内容写操作读操作7 6 5 4 3 2 1 0秒寄存器80H 81H 00-59 CH 10SEC SEC分寄存器82H 83H 00-59 0 10MIN MIN时寄存器84H 85H 0-12或00-23 12/24 0 10APHR HR日寄存器86H 87H 01-28,29,30,310 0 10DATA DATE月寄存器88H 89H 01-12 0 0 0 10M MONTH周寄存器8AH 8BH 01-07 0 0 0 0 0 DAY年寄存器8CH 8DH 00-99 10years Year(1)秒寄存器,地址为00H,其中以BCD码形式存放秒信息。