51_单片机多功能电子时钟的设计_第1页
51_单片机多功能电子时钟的设计_第2页
51_单片机多功能电子时钟的设计_第3页
51_单片机多功能电子时钟的设计_第4页
51_单片机多功能电子时钟的设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

51单片机多功能电子时钟的设计 摘要: 本设计开发了一款具有日期、时间、星期和气温同步显示功能的电子时钟 .工作原理是主控 MCU 读取实时时钟芯片 DS12C887,获取时间信息,由全数字单总线结构温度传感器 DS18B20 读取温度信息,经 MCU 处理,送 LCD 显示, 关键字 : DS12C887 DS18B20 电子时钟 1. 课题分析 随着电子技术的发展,电子技术为人们的生活带来了越来越大的方便 .本课题旨在借助实时时钟芯片 DS12C887和温度传感器 DS18B20 和 51单片机设计一个多功能的电子时钟 .由于 DS12C887 芯片内附加锂电池,在上电情况下可以通过电源充电,断电后可以利用内部锂电池供电继续工作,在掉电重新上电后,不影响时间数据,不需重新对时,方便可靠 . 2. 方案论证 当下,日历芯片很多,万年历实现方案很多,我们根据自己实际情况,提出如下方案 . 2.1 时间部分: 方案一、利用单片机内部定时器产生秒信号,通过软件处理得到时间信息,送 LCD 显示 . 方案二、利用通用串行实时时钟芯片 DS1302 产生时间信息,利用 MCU 读取时间信息,送LCD 显示 . 方案三、通过实时时 钟芯片 DS12887,获取时间信息,经 MCU 处理,送 LCD 显示 . 方案一电路结构简单,可控性强,但断电后时间数据完全消失,再次上电后需重新设定,且由于电路本身缺陷和附加干扰较多,时间误差较大 .方案二电路结构简单,时间精度较高,由于使用串行数据传输,节省 MCU 资源,但 DS1302 无内置电池,掉电后,数据丢失,重新上电后需对时 .方案三采用实时时钟芯片 DS12C887,其内部具有内置锂电池,在掉电的情况下可以正常工作 10 年以上,且带有非易失性 RAM,可以保证在掉电的情况下,用户的定时信息不会丢失;带有温度补偿,保 证时间数据的准确 .经过综合考虑,我们认为方案三满足设计需求 . 2.2 温度部分 由于只是测量气温,用数字温度传感器单总线结构 DS18B20 即可满足要求,该器件采用单总线结构,且数字传输,可以与 CPU 直接接口,电路结构简便,可靠性好 . 2.3 主控部分 选用单片微控制器 AT89C52 作为主控 .系统方案方框图如图 2.1 所示 . 图 2.1 系统方案 3.方案实现 3 1 器件简介 (1)AT89C52 AT89C52 是 ATMEL 公司生产的通用低功耗 8位 CMOS 微控器,具有 8051 内核和 8KB 的可编程 Flash 程序存储空间以及 256 字节 RAM.有 32 个通用 IO 口线和全双工串口,两个数据指针、两个 16 位可编程计数器 /定时器、 8 个 2 级优先级中断源,具有片内时钟电路,通过简单的外接器件即可实现时钟电路 . (2)DS12C887 引脚结构及其功能如图 3.1. 图 3.1 DS12C887 引脚结构 AD0-AD7:地址 /数据总线 NC :空脚 MOT :总线模式选择 CS :片选信号 AS :地址锁存信号 R/W :写信号( intel 总线模式下) DS :读信号( intel 总线模式下) RESET :复位信号 IRQ : 中断请求输岀 VCC : +5V 电源 GND :电源地 DS12C887是美国 DALLAS半导体公司生产的实时时钟芯片 .采用 24 引脚双列直插式的封装形式 .芯片的晶体振荡器、振荡电路、充电电路和可充电锂电池等一起封装在芯片内部,组成一个加厚的集成电路模块 .电路通电时,其内部充电电路便自动对其内部电池充电 .可保证时钟数据 10 年内不会丢失 .DS12C887内部设有方便的接口电路,接口设计简便,使其与各种微处理器的接口大大简化 .使用时无需外围电路元件,通过对 MOT 引脚的电平控制,可以实现与不同的计算机总线连接 .DS12C887 能够自 动存取并更新当前的时间, CPU 可通过读取 DS12C887 的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或 BCD 码初始化芯片的 10 个时标寄存器 .其中 114 字节的非易失性静态 RAM 可供用户使用,可以在控制器掉电的情况下,保存一些重要的数据 .DS12C887 的 4 个状态寄存器用来控制和指出 DS12C887 模块当前的工作状态,除数据更新周期外,程序可随时读写这 4 个寄存器 .其内部结构如下图 3.2. 图 3.2 DS12C887 内部结构 (3)DS18B20 DS18B20 是美国 DALLAS 半导体公司生产的可组网数字式温度传感器,在其内部使用了在板( ON-B0ARD)专利技术 .全部传感元件及转换电路仅集成在形如三极管的一个集成电路内 .DS18B20 采用单总线接口方式,与微处理器连接时仅需要一条总线即可实现微处理器与 DS18B20 的双向通讯;支持多点组网功能,多个 DS18B20 可以并联在一条总 线上,即可实现多点测温;在使用中不需要任何外围元件 .测温范围为 55 125,结果以 9 位数字量方式串行传送 .DS18B20 测温原理如图 3.3 所示 . 图 3.3 DS18B20 内部结构 图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器 1.高温度系数晶振随温度变化其振荡率明显改变,所产 生的信号作为计数器 2 的脉冲输入 .计数器 1和温度寄存器被预置在 55所对应的一个基数值 .计数器 1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1 的预置值减到 0 时,温度寄存器的值将加 1 ,计数器 1 的预置将重新被装入,计数器 1 重新开始对低温度系数晶体振荡器产生的脉冲信号进行计数,如此循环直到计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度 .其内部带有非线性修正,确保温度数据的准确性 .DS18B20的测温分辨率为 0.5以 9位数据格式表示,其中最低有效位( LSB)由比较器进行 0.25比较,当计数器 1 中的余值转化成温度后低于 0.25时,清除温度寄存器的最低位( LSB),当计数器 1 中的余值转化成温度后高于 0.25,置位温度寄存器的最低位( LSB), DS18B20 温度数据格式如表 3.1 所示 . 表 3.1 DS18B20 温度数据格式 DS18B20 采用 12 位二进制数据表示温度,分成两 个字节,低字节低四位为小数位,低字节高四位和高字节低四位组成温度信息的 8 位整数位,其中第一位为符号位,为 0表示温度为正值,为 1 表示温度为负值 .当温度为负值时,数据采用补码存放 .高字节高四位无效,与符号位保持一致 .温度与数据对应关系如表 3.2 所示 . 表 3.2 部分温度对应数据 3.2 硬件电路设计 本课题涉及电路原理图和 PCB 图均由 Altium Designer Summer 09 绘制 . (1)电源部分 图 3.7 整机电源电路 由于电路微控器供电电压为 5V, osyno6188 供电电压为 3V 或 4.5V, osyno6188 对电源电压精度要求不高,决定整机采用 5V 电源供电,在电源处串联一只 1N4003 二极管,为osyno6188 供电, 1N4003 为硅管,正向导通压降在 0.7V 左右,经过二极管后,得到约 4.3V电压,为 osyno6188 供电 .电源电路为普通稳压电源电路,由于不是本项目主要方面,不再赘述 . (2)AT89C52 最小系统电路 图 3.8 AT89C52 单片机最小系统 电路由震荡电路,复位电路和单片 机构成最小系统 .震荡电路为单片机提供工作时钟,由石英晶体和补偿电容构成 .由于语音部分需要 1200bps 波特率,石英晶体选取11.0592MHz,保证波特率零误差,补偿电容选取 30pF 瓷片电容 .复位电路在上电时为单片机提供复位信号,由 10uF 电容和 10K 电阻构成的 RC 充电电路构成,当系统复位上电瞬间,电源通过电阻 R 为电容充电,在电阻上得到下降的指数充电电压,由高电平经过一段时间到达低电平,提供单片机需要的高脉冲复位信号 .电源部分电容为去耦电容 .EA 拉高, MCU上电后,从内部程序存储器开始执行 . (3)osyno6188 及外围电路设计 . 图 3.9 osyno6188 及外围电路 系统采用 4.5V 电源供电模式,电源 VDD 由电源电路中 VCC 串接二极管后获得 .电源电路、复位电路以及时钟电路参考 osyno6188 用户手册 .RXD、 TXD 为串行总线接口,分别连接主控 MCU 的 TXD、 RXD 端 . (4)DS12C887 与 AT89C52 接口电 路设计 . 图 3.10 DS12C887 接口电路 DS12C887 的 AD0-AD7 为地址 数据复用总线,与控制器地址 数据总线 (P0 口 )直接连接, R2 为上拉电阻; MOT 为总线模式选择引脚,接地选择 INTEL 总线连接方式; R/W 在 INTEL总线模式下位写使能,接控制器读信号 WR(P3.6)端; DS 在 INTEL 总线模式下为读使能信号,接控制器读信号 RD(P3.6)端; AS 为地址锁存,接控制器地址锁存信号 ALE(30 脚 )端;RST 接电源拉高 ,片选 CS 直接接地使能。 由于液晶显示器、 DS18B20 与控制器接口比较简单,不再分开论述。 整机电路图如图 3.11 所示 . 电路板采用单面板制作,电路板图由 Altium Designer Summer 09 绘制 . 将 PCB 文件底层打印到转印纸磨光面上,并按电路板大小留 1cm 左右边缘裁剪备用 .把比电路板略大的覆铜板用细砂纸打磨干净,并将转印纸带墨一面覆盖到覆铜面上,一边用胶带粘牢,然后将粘胶带一边送入转印机转印,转印完成后打孔,放入三氯化铁溶液中腐蚀,大约 15 分钟左右腐蚀完成,用清水冲洗,将焊盘处用小刀将油墨小心刮开,其余部分油墨不再处理,一是比较美观,二是对铜膜具有保护作用,防止氧化 .焊接经过检测过的电子元件,制作完成 . 3.3 软件设计 (1)功能分析 根据课题要求,软件应该能 实现以下功能: 1)驱动 LCD1602 显示 . 2)从 DS12C887 中读取时间数据,并写入调时信息和闹钟信息 . 3)扫描键盘,实现人机交互,满足用户调时、定闹的需求 . 4)实现控制器与 DS18B20 单总线接口,读取温度信息 . (2)设计流程 本课题所有程序均由 C 语言编写 .开发环境为 keil uvision2. 1)主程序设计 主程序流程图如图所示 图 3.13 主程序流程图 主程序作用是当系统上电后,首先对系统进行初始化(包括 MCU 的串行通信设置和 LCD 的初始化)然后读取时间信息和温度信息,检查是否需要更新时间缓冲存储区 ,如果系统处于正常显示模式,则更新时间缓存区,并同步显示,若系统处于调整时间模式下,则停止对时间缓冲区的更新,显示时间与时间缓存区同步,当退出调时模式时,更新到 DS12C887的时标寄存器中 .主程序还负责检测当前时间是否为整点或等于设定报时时间,在整点或定时时间调用报时函数,实现整点报时和定时 2)DS12C887 接口程序 . DS12C887 与控制器通过总线连接,主控器采取读写外部存储器的方法读取时间信息和写入调时和定时信息 .DS12C887 的时标寄存器地址为 0-13 字节 ,具体分布如图所示 . 图 3.14 DS12C887 存储器结构 其中 10-13 字节分别为寄存器 A-D.其中寄存器 C、 D 为只读 . 寄存器 A 机构如图所示: 表 3.5 DS12C887 寄存器 A 结构 UIP 为更新标志位,标志芯片是否即将进行更新 .当 UIP 为 1 时,表明更新即将开始 ;为 0 时,表示在至少 244 s 内芯片不会进行更新,此时可以通过读写相应字节获取时间信息和设置信息 .UIP 位为只读位且不受复位信号 影响,通过把 B 寄存器中的 SET 位置 1将 UIP 位清零并禁止时间更新 .DV0-DV2 用来开关晶体振荡器和复位分频器 ,本课题中不需设置 .RS0-RS3 用于控制分频器输出,设置成不同的值可以在 SQW 引脚得到不同的分频输出或得到周期性的中断 (通过控制寄存器 B 实现 ).由于本设计不涉及,具体设置值与对应频率请参考 DS12C887 技术文档 ,不在列举 . 寄存器 B 结构如图所示 . 表 3.6 DS12C887 寄存器 B 结构 当 SET位为 0时,时间正常更新;当 SET位置 1时,停止更新 ,此时, MUC可以对 DS12C887进行初始化,该位不受复位信号影响 .PIE 位为周期性中断使能位,该位为 1 时,周期性中断使能;为 0 时禁止中断 .本课题中此位置 0.AIE 位为闹钟中断使能位本课题中由于没有使用中断,该位置 0.UIE 为更新完成中断使能位,本设计中不考虑 .SQWE 为方波使能信号,本设计不予处理 .DM 位为数据格式选择位,置 1 时时间数据以二进制格式存放,清 0 后,数据以 BCD 码格式存放 .24/12 位为时间格式设置位,该位为 1 时,时间为 24 小时格式,为 0 时,时间为 12 小时格式,该位不受复位信号影响 .DSE 为夏令时使能位,本设计不予考虑 寄存器 C 结构如图所示 . 表 3.7 DS12C887 寄存器 C 结构 其中 4 个有效位均为中断标志,本设计不予考虑 ,但当初始化完成并 禁止中断时,应将该寄存器读取清 0. 寄存器 D 结构如图所示 表 3.8 DS12C887 寄存器 D 结构 VRT 位指示片内锂电池状态,当为 0 时,说明内部锂电池耗尽,不能保证内部 RAM 中数据和时间数据的正确性 .该位只读 . 3)DS18B20 接口程序设计 . DS18B20 设置寄存器结构如图 3.9 所示 表 3.9 DS18B20 设置寄存器结构 通过设置该寄存器中 R1、 R0 的不同状态,可以得到不同的温度分辨率,分辨率越高,转换所需时间也越长 (见图 ).为简便起见,本课题中采用系统复位后的默认值,即 R1R0=11,分辨率为 12 位数据 .其余位为传感器内部使用,不能进行操作 . 表 3.9 DS18B20 控制寄存器 R0、 R1 设置与分辨率对应关系 由于 DS18B20数据传送采取单总线方式,所以对操作时序和操作步骤有着严格的要求,任何不符合步骤的操作,都可能造成 DS18B20 不响应 .每次在对 DS18B20 进行操作时,都要进行初始化 .初始化时序如图所示: 图 3.15 DS18B20 初始化时序图 首先,控制器将总线拉低并保持 480 s,释放总线,等待 15-60 s 后,如果复位成功, DS18B20 会将总线拉低,产生一个 60-240 s 的低脉冲,控制器通过检测低脉冲信号确定复位是否成功 .复位成功后,在上拉电阻的作用下, DS18B20 会恢复到高电平静止状态 . 在静止状态,总线在内部上拉电阻作用下,保持高电平 .当控制器进行读写操作时,先将总线拉低 1 s 以 上, DS18B20 回应一个高电平应答信号,控制器检测到应答信号后,即可对总线进行操作 . 向 DS18B20 读写一位数据时序如图所示: 图 3.16 DS18B20 读写数据时序图 写” 0”时,控制器将总线拉低 30 s 以上即可,写” 1”时,控制器将总线拉低 15 s,然后释放总线 .读数据时,控制器将总线拉低 15 s,然后 释放总线并读取总线上的数据 . 4)LCD 显示驱动程序 a.基本操作时序: 读状态 : 输入 :RS=L,RW=H,E=H 输出 :D0-D8=状态字 写指令 : 输入 :RS=L,RW=L,D0-D7=指令码, E=高脉冲 输出 :无 读数据 : 输入 :RS=H,RW=H,E=H 输出: D0-D7 数据 写数据:输入: RS=H,RW=L,D0-D7=数据, E=高脉冲 输出 : 无 b.状态字说明 STA7 STA6 STA5 STA4 STA3 STA2 STA1 STA0 D7 D6 D5 D4 D3 D2 D1 D0 表 3.10 LCD 状态字寄存器结构 STA0-STA6:当前数据地址指针的数值 STA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论