《基于单片机数字时钟系统设计》由会员分享,可在线阅读,更多相关《基于单片机数字时钟系统设计(25页珍藏版)》请在金锄头文库上搜索。
1、数字时钟系统设计软件部分数字时钟系统设计软件部分作作 者者:罗旭东学学 号:号:3082110109学院学院(系系):电子与电气工程学院专专 业业:电气工程及其自动化题题 目目:基于单片机数字时钟系统设计指导者:指导者: 鲁庆鲁庆 2011 年 11 月1摘摘 要要随着时代的进步和发展,单片机技术已经普及到生活、工作、科研等各个领域,已经成为一种比较成熟的技术。本文将介绍一种基于单片机控制的数字温度计和数字钟,本数字温度计属于多功能温度计,可以任意设置温度的上下限报警功能,当温度不在设定范围内时,可以报警;本数字钟可以同步显示时间日历,日期和时间都可通过按键校整。本系统采用的 DS1302 可
2、为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。本系统显示部分 采用 LCD 液晶显示屏显示,可通过按键切换工作界面,工作方便,外形美观。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人带来的方便是不可否定的,其中数字温度计和数字钟就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化、智能化控制的方向发展。本文所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确度高,其输出温度采用数字显示,主要适用于对测温要求比较准确的场所或科研实验室;本文所介绍的数字钟采用了低
3、功耗实时时钟电路 DS1302,它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。同时可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。本系统选用低功耗、高性能 CMOS 8 位微控制器 AT89S52 作为控制核心,采用温度传感器 DS18B20 准确测量温度,采用液晶显示屏 LCD1604 显示实时温度和同步的时间日历。经过反复测试,本系统能准确完成各项功能。关键词关键词:单片机 AT89S52;时间同步;DS18B20;DS1302 21、 方案论证方案论证1.1 系统总体设计方案论证系统总体设计方案论证采用温度传感器 DS18B20 测量温度,采用 LCD
4、 液晶显示屏显示实时温度和同步的时间日历。本系统可考虑选用一只温度传感器 DS18B20,DS18B20 不仅可以很容易直接读取被测温度值进行显示,而且温度传感器 DS18B20 具有独特的一线接口,只需要一条口线就可多点通信,无需外部元件,简化了分布式温度传感应用。本系统采用液晶显示屏 LCD1604 显示实时温度和同步的时间日历,电路简单,功耗低,显示信息量大,显示质量高,显示界面美观、友好,可以很好的 满足设计要求。1.21.2 系统总体设计框图系统总体设计框图数字温度计和数字钟电路的总体设计方框图如图 1 所示。图图 1 1 总体设计方框图总体设计方框图本系统控制器采用单片机 AT89
5、S52,温度传感器采用 DS18B20,采用 DS1302 实现掉电充电功能,用液晶显示屏 LCD1604 显示实时温度和同步的时间日历。1.2.11.2.1 主控制器主控制器单片机 AT89S52 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用,系统可用二节电池供电。1.2.21.2.2 显示电路显示电路显示电路采用液晶显示屏 LCD1604 进行显示,单片机从 P0 口传输温度和时间数据驱动LCD1604 进行显示。 主 控 制 器LCD 显 示温 度 传 感 器复 位时钟振荡按键31.2.31.2.3 温度传感器温度传感器温度
6、传感器 DS18B20 是一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。DS18B20 具有独特的单线接口,仅需一个端口引脚进行通信,并且多个DS18B20 可并联在惟一的三线上,实现多点组网功能;用户还可根据需要定义报警设置,十分方便。1.2.3.11.2.3.1 DS18B20DS18B20 内部结构内部结构DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装,其内部结构框图如图 2 所示。图图 2 2 DS18B20DS18B20 内部结构内部结构I/OC6464 位位 R
7、OMROM和和单线接口单线接口高高速速缓缓存存存储器控制逻辑存储器控制逻辑辑辑温度传感器温度传感器高温触发器高温触发器 THTH低温触发器低温触发器 TLTL配置寄存器配置寄存器8 8 位位 CRCCRC 发生器发生器Vdd41.2.3.21.2.3.2 DS18B20DS18B20 测温原理测温原理如图 4 所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1,高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入。图中还隐藏着计数门,当计数门打开时,DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数,进而完
8、成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器 1 和温度寄存器中,计数器 1 和温度寄存器被预置在55所对应的一个基数值。图图 4 4 DS18B20DS18B20 测温原理图测温原理图减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时,温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数。如此循环直到减法计数器 2计数到 0 时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。图 4中的斜率累加器的
9、输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于 DS18B20 单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对 DS18B20 的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发 ROM 功能命令发存储器操作命令处理数据。52.系统整体硬件电路系统整体硬件电路系统整体硬件电路包括:传感器数据采集电路,温度和时间显示电路,上下限报警调整电路,单片机主板电路等。单片机主板电路中有三个独立式按键可以调整温度计的上下限报警设置和数字钟时间校准,蜂鸣器可以在被测温度超出上下限范围内时,发出报警鸣
10、叫声音,同时液晶显示屏 LCD1604 也将显示报警提示信息,这时可以调整报警上下限,从而测出被测的温度值。单片机主板电路中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。DS18B20 可以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20 的 1 脚接地,2 脚作为信号线,3 脚接电源。另一种是寄生电源供电方式,如图 7 所示单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个MOSFET 管完成对总线的上拉。当 DS18B20 处于写存储器操作和温度 A/D 转换操作
11、时,总线上必须有强的上拉,上拉开启时间最大为 10us。采用寄生电源供电方式时 VDD 端接地。由于单线制只有一根线,因此发送接口必须是三态的。6图图 7 7 系统整体硬件电路系统整体硬件电路 3.系统软件设计系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。3.1 主程序主程序主程序的主要功能是负责温度和时间日历的实时显示,读出并处理 DS18B20 的测量的当前温度值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图 9 所示。7图图 9 9 主程序流程图主程序流程图 一开始是初始化,然后调用显示子程
12、序,然后就到判断 1s 到不到?如果是 YES,就继续到初次上电,否则跳刀初始位置,如果是 NO,就读出温度值并处理显示数 据刷新、显示时间日历。最后,到发温度转换开始命令,再循环到初始化位置,这是整 个整体框图。3.2 读出温度子程序读出温度子程序读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。其程序流程图如上图图 10 所示。初始化初始化调用显示子程序调用显示子程序1S1S 到?到?初次上初次上电电读温度值并处理显示数据刷新、显读温度值并处理显示数据刷新、显示时间日历示时间日历发温度转换开始命令发温度转换开始命令NYNY
13、8图图 1010 读温度流程图读温度流程图这是读温度的框图,先是发 DS18B20 的复位命令,然后发出跳过 ROM 的命令,然后发出读取温度命令,然后读取操作,crc 进行校验,YES,就进行 9 字节,NO,就返回继续读取操作,如果 YES,就进行 CRC 校验,同样,YSE,就移入温度暂存器,结束,NO,就继续进行校验,直到正确的为止。3.3 温度转换命令子程序温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时转换时间约Y发发 DS18B20DS18B20 复位命令复位命令发跳过发跳过 ROMROM 命令命令读取温度命令读取温度命令读取操作,读取操作,
14、CRCCRC 校验校验9 9 字节完?字节完?CRCCRC 校验正?校验正?确?移入温度暂存器移入温度暂存器结束结束 NNY9发发 DS18B20DS18B20 复位命令复位命令发跳过发跳过 ROMROM 命令命令发温度转换开始命令发温度转换开始命令结束结束为 750ms,在本程序设计中采用 1s 显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图 11 所示。图图 1111 温度转换流程图温度转换流程图 发出 DS18B20 的复位命令,跳过 ROM 的命令,发出温度装换的开始命令,结束。3.4 计算温度子程序计算温度子程序计算温度子程序将 RAM 中读取值进行 BCD 码的转
15、换运算,并进行温度值正负的判定,其程序流程图如图 12 所示。开始开始温度零下温度零下? ?温度值取补码置温度值取补码置“”标志标志计算小数位温度计算小数位温度 BCDBCD 值值 计算整数位温度计算整数位温度 BCDBCD 值值 结束结束置置“+”“+”标志标志NY10图图 1212 计算温度流程图计算温度流程图 开始然后判断是否是零度以下,如果是,就进行温度取码补码置“一”标志,否则置 “+”标志。然后计算小数位温度 BCD 值,计算整数位温度 BCD 值,结束。3.5 显示数据刷新子程序显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为 0 时
16、将符号显示位移入下一位。程序流程图如图 13。图图 1313 显示数据刷新流程显示数据刷新流程 温度数据首相植入显示寄存器,看是否是十位数 0? 如果是,继续查看是否是百位数 0?如果是,就十位数显示符号百位数不显示,如果不是百位数 0 就百位数显示数据,不 显示符号,结束。3.63.6 定时器定时器 T0T0 中断服务程序中断服务程序定时器 T0 用于时间计时。中断进入后,时钟计时累计中断达 1 秒时,对秒计数单元进行加 1 操作。在计数单元中采用十进制 BCD 码计数,满 60 进位,T0 中断服务程序执行流程见下图:温度数据移入显示寄存器温度数据移入显示寄存器十位数十位数 0 0?百位数百位数 0 0?十位数显示符号百位数十位数显示符号百位数不显示不显示百位数显示数据(不百位数显示数据(不显示符号)显示符号)结束结束NNYY114.功能调试与总结功能调试与总结121、用一只精度为 0.1的水银温度计作对照标准,把它和温