基于单片机带温度显示的电子万年历设计毕业设计.doc_第1页
基于单片机带温度显示的电子万年历设计毕业设计.doc_第2页
基于单片机带温度显示的电子万年历设计毕业设计.doc_第3页
基于单片机带温度显示的电子万年历设计毕业设计.doc_第4页
基于单片机带温度显示的电子万年历设计毕业设计.doc_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

湖北工业大学商贸学院毕业设计 I 毕业设计毕业设计 基于单片机带温度显示的电子万年历设计基于单片机带温度显示的电子万年历设计 湖北工业大学商贸学院毕业设计 II 摘 要 单片机应用技术飞速发展 纵观我们现在生活的各个领域 从导弹的导航装置 到飞机上各种仪表的控制 从计算机的网络通讯与数据传输 到工业自动化过程的实 时控制和数据处理 以及我们生活中广泛使用的各种智能 IC 卡 电子宠物等 这些 都离不开单片机 单片机是集 CPU RAM ROM 定时 计数和多种接口于一体的微 控制器 它体积小 成本低 功能强 广泛应用于智能产业和工业自动化上 本设计着重要描述的就是基于 AT89S52 的单片机的电子万年历 本文首先描述 系统硬件工作原理 随后说明了本系统所应用的各硬件接口技术 既芯片驱动程序 和各个接口模块的功能及工作过程 本设计的主导思想是软硬件相结合来进行各功能 模块的编写 电子万年历以硬件 C 语言为主体进行软件设计 增加了程序的可读性和可移植 性 系统通过 LCD 液晶输出显示数据 可以显示当前时间 公农历日期 星期 温 度 并附有以峰鸣器为提示的闹铃功能 关键词 关键词 单片机 电子万年历 公农历 接口模块 C 语言 湖北工业大学商贸学院毕业设计 III Abstract MCU rapid development of applied technology we now live Looking at the various fields from the missile s navigation devices to the various instruments on the aircraft control computer network communications and data transmission industrial automation to the process of real time control and data Processing and we live in the extensive use of the smart IC cards electronic pets these are inseparable from the SCM SCM is set CPU RAM ROM timing counting on one interface and a variety of microcontrollers Its small size low cost feature strong smart widely used in industry and industrial automation This design is going to describing the calendar based on AT89S52 System hardware of main body is described first Follow the function principle of work and hardware interface that means the chip s drives are introduced The design s main ideas is that composes soft and hardware to achieve the design The calendar is designed with hardware C language as the Realization tool which increased procedure readability and transplanting The system shows the output by LCD1602 which can demonstrate the current time the lunar calendar date the week the temperature and the system can alter people with a small sounder Keywords MCU Electronic calendar Lunar calendar Interface module C Language 湖北工业大学商贸学院毕业设计 IV 目 录 摘摘 要要 I ABSTRACT II 目目 录录 III 引引 言言 1 1 系统方案设计系统方案设计 2 1 1 单片机芯片的选择方案 2 1 2 显示模块选择方案 3 1 3 时钟芯片的选择方案 3 1 4 温度传感器的选择方案 4 1 5 电路设计最终方案 4 2 系统设计说明系统设计说明 5 2 1 硬件模块图 5 2 2 系统原理 5 2 3 系统的软件流程图 6 3 系统单元模块设计系统单元模块设计 7 3 1 主控模块 AT89S52 模块 7 3 2 DS1302 时钟模块 9 3 2 1 DS1302 简介 9 3 2 2 DS1302 结构与工作原理 10 3 2 3 控制命令字节与寄存器 11 3 2 4 DS1302 电路设计图 16 3 3 公历与农历 星期转换模块 16 3 3 1 概述 16 3 3 2 基本原理 17 3 3 3 程序流程图 18 3 4 DS18B20 温度模块 20 3 4 1 概述 20 3 4 2 DS18B20 的工作原理 20 3 4 3 DS18B20 与单片机的接口设计 25 3 4 4 DS18B20 程序设计方案 26 3 5 整点报时模块 29 3 5 1 概述 29 3 5 2 设计原理 29 3 5 3 整点报时电路设计图 29 3 6 时间可调模块 30 3 6 1 键盘扫描原理 30 3 6 2 按键说明 30 3 6 3 软件设计思路 31 3 7 LCD1602 显示模块 31 湖北工业大学商贸学院毕业设计 V 3 7 1 概述 31 3 7 2 结构与工作原理 31 3 7 3 LCD1602 电路设计图 34 3 8 电源部分 35 结结 束束 语语 36 参参 考考 文文 献献 37 致致 谢谢 38 附附 录录 1 湖北工业大学商贸学院毕业设计 1 引 言 近年来 随着我国科技的不断发展 我国经济发展的支柱产业 电子产业获得 长足发展 近年来各种电子产品琳琅满目 随处可见 随着电子产品的更新速度的加 快 各种功能强大 款式新颖的电子产品不断问世 日历时钟便是这一发展趋势中的 代表 各种功能的日历应有尽有 且功能不断更新 日历时钟的研究也成为大多数相 关专业的学生以及研究人员先研究的对象 诸如定时自动报警 按时自动打铃 时间 程序自动控制 定时广播 定时启闭电路 定时开关烘箱 通断动力设备 甚至各种 定时电气的自动启用等 因此 研究日历时钟及扩大其应用 有着非常现实的意义 日历是采用数字电路实现对 时 分 秒 数字显示的计时装置 广泛用于个人家庭 车站 码 头办公室等公共场所 成为人们日常生活中不可少的必需品 由于数字集成电路的发展和 石英晶体振荡器的广泛应用使得时钟的精度远远超过老式钟表 时钟的数字化给人们生 产生活带来了极大的方便 而且大大地扩展了钟表原先的报时功能 市场上有许多电 子钟的专用芯片如 LM8363 LM8365 等 但它们功能单一 电路连接复杂 不便于 调试制作 但是考虑到用单片机配合时钟芯片 可制成功能任意的日历时钟 而且可以做到 硬件简单 成本低廉 所以本系统采用了以广泛使用的单片机 AT89S52 技术为核心 配合时钟芯片 DS1302 软硬件结合 使硬件部分大为简化 提高了系统稳定性 并采 用 LCD 显示电路 键盘电路 使人机交互简便易行 本方案设计出的日历时钟可以显 示时间 设置闹铃功能 重点研究实现了单片机时钟芯片这种模式的日历 在很多场合 都能用到 也可以把此设计装在镜框中或其它工艺品中 以便更加实用 湖北工业大学商贸学院毕业设计 2 1 系统方案设计 1 1 单片机芯片的选择方案 方案一 采用 89C51 芯片作为硬件核心 采用 Flash ROM 内部具有 4KB ROM 存储空间 能于 3V 的超低压工作 而且与 MCS 51 系列单片机完全兼容 但是运用于电路设计中时 由于不具备 ISP 在线编程技术 当在对电路进行调试时 由于程序的错误修改或对程序 的新增功能需要烧入程序时 对芯片的多次拔插会对芯片造成一定的损坏 方案二 采用 AT89S52 片内 ROM 全都采用 Flash ROM 能以 3V 的超底压工作 同时也 与 MCS 51 系列单片机完全该芯片内部存储器为 8KB ROM 存储空间 同样具有 89C51 的功能 且具有在线编程可擦除技术 当在对电路进行调试时 由于程序的错 误修改或对程序的新增功能需要烧入程序时 不需要对芯片多次拔插 所以不会对芯 片造成损坏 综上所述 选择采用 AT89S52 作为主控制系统更适合设计 AT89S52 单片机是一种低功耗高性能的 CMOS8 位微控制器 内置 8KB 可在线编 程闪存 该器件采用 Atmel 公司的高密度非易失性存储技术生产 其指令与工业标准 的 80C51 指令集兼容 片内程序存储器允许重复在线编程 允许程序存储器在系统内 通过 SPI 串行口改写或用同用的非易失性存储器改写 通过把通用的 8 位 CPU 与可在 线下载的 Flash 集成在一个芯片上 AT89S52 便成为一个高效的微型计算机 它的应 用范围广 可用于解决复杂的控制问题 且成本较低 AT89S52 的主要特性如下 1 兼容 MCS51 产品 2 8K 字节可擦写 1000 次的在线可编程 ISP 闪存 3 4 0V 到 5 5V 的工作电源范围 4 全静态工作 0Hz 24MHz 5 3 级程序存储器加密 6 256 字节内部 RAM 湖北工业大学商贸学院毕业设计 3 7 32 条可编程 I O 线 8 3 个 16 位定时器 计数器 9 8 个中断源 10 UART 串行通道 11 低功耗空闲方式和掉电方式 12 通过中断终止掉电方式 13 看门狗定时器 14 双数据指针 15 灵活的在线编程 字节和页模式 1 2 显示模块选择方案 方案一 采用 LED 数码管动态扫描 虽然 LED 数码管价格适中 对于显示数字也比较合适 然 而需要显示多位数字和字母时 编程就会变得很复杂 而且占用的单片机口线多 方案二 采用点阵式数码管显示 点阵式数码管是由八行八列的发光二极管组成 对于显 示文字比较适合 如采用在显示数字显得太浪费 且价格也相对较高 所以也不用此种作为 显示 方案三 采用 LCD 液晶显示屏 LCD 液晶显示屏尽管价格比较贵 但它的显示功能强大 可 显示大量字符 显示多样 清晰可见 需要的接口线少 所以综合考虑 采用方案三的 LCD 液晶显示屏作为显示更适合本设计 1 3 时钟芯片的选择方案 方案一 直接采用单片机定时计数器提供秒信号 使用程序实现年 月 日 星期 时 分 秒计数 采用此种方案虽然减少芯片的使用 节约成本 但是 实现的时间误差 较大 方案二 湖北工业大学商贸学院毕业设计 4 采用 DS1302 时钟芯片实现时钟 DS1302 芯片是一种高性能的时钟芯片 可自动 对秒 分 时 日 周 月 年以及闰年补偿的年进行计数 而且精度高 位的 RAM 做为数据暂存区 工作电压 2 5V 5 5V 范围内 2 5V 时耗电小于 300nA 综上所述 为显示时间更准确 实现功能更多 本设计采用 DS1302 时钟芯片提供 时钟 1 4 温度传感器的选择方案 方案一 使用热敏电阻作为传感器 用热敏电阻与一个相应阻值电阻相串联分压 利用热 敏电阻阻值随温度变化而变化的特性 采集这两个电阻变化的分压值 并进行 A D 转 换 此设计方案需用 A D 转换电路 增加硬件成本而且热敏电阻的感温特性曲线并不 是严格线性的 会产生较大的测量误差 方案二 采用数字式温度传感器 DS18B20 此类传感器为数字式传感器而且仅需要一条数 据线进行数据传输 易于与单片机连接 可以去除 A D 模块 降低硬件成本 简化系 统电路 另外 数字式温度传感器还具有测量精度高 测量范围广等优点 为提高测量精度 降低成本 所以本设计采用数字式温度传感器 DS18B20 测量温 度 1 5 电路设计最终方案 综上各方案所述 对此次作品的方案选定 采用 AT89S52 作为主控制系统 DS1302 提供时钟 数字式温度传感器 LCD 液晶显示屏作为显示模块 湖北工业大学商贸学院毕业设计 5 2 系统设计说明 2 1 硬件模块图 系统的硬件模块图如图 2 1 所示 图 2 1 系统硬件模块图 模块说明 1 DS1302 时钟模块可以输出其当前日期 时间及星期 2 键盘输入电路可以调整日期 时间及公农历的转换 3 DS18B20 温度模块可以测量当前室内的温度 4 峰鸣器闹铃模块可以做整点报时 5 显示电路则显示当前的系统运行情况 2 2 系统原理 本系统是由 AT89S52 单片机为控制核心 时钟电路由 DS1302 提供 它可以对年 月 日 周日 时 分 秒进行计时 具有闰年补偿功能 温度的采集由 DS18B20 构 成 LCD1602 用来显示数据 键盘输入电路可以调整日期 时间及公农历的转换 通 过用 C 语言 1 编程 从 DS1302 寄存器中读取年 月 日 周日 时 分 秒等数据信 息 从 DS18B20 寄存器中读取温度信息 再编程将以上信息送到 LCD1602 显示出来 同时 通过键扫描 编程实现调整日期 时间及公农历的转换 DS1302 时钟模块 89S52 主控模块 键盘输入电路 显示电路 峰鸣器 闹铃模块 DS18B20 温度 模块 湖北工业大学商贸学院毕业设计 6 2 3 系统的软件流程图 系统的软件流程图如图 2 2 所示 图图 2 2 软件流程图软件流程图 开始 初始化 读 写日期 时间和温度 分离日期 时间 温度显示值 键扫描子程序 显示子程序 闹铃子程序 结束 湖北工业大学商贸学院毕业设计 7 3 系统单元模块设计 3 1 主控模块 AT89S52 模块 目前 在我国比较流行的就是美国 ATMEL 公司的 89C51 它是一种带 Flash ROM 的单片机 事实上 89C51 目前正在用 89S52 代替 本系统就是以 AT89S52 作为 主控芯片 图 3 1 AT89S52 封装图 AT89S52 采用 40Pin 封装的双列直接 DIP 结构 图 4 1 是它的封装图 40 个引脚 中 正电源和地线两根 外置石英振荡器的时钟线两根 4 组 8 位共 32 个 I O 口 中 断口线与 P3 口线复用 现在我们对这些引脚的功能加以说明 1 Pin20 接地脚 2 Pin40 正电源脚 正常工作或对片内 EPROM 烧写程序时 接 5V 电源 3 Pin19 时钟 XTAL1 脚 片内振荡电路的输入端 4 Pin18 时钟 XTAL2 脚 片内振荡电路的输出端 时钟有两种方式 一种是片内时钟振荡方式 但需在 18 和 19 脚外接石英晶体 2 12MHz 和振荡电容 振荡电容的值一般取 10p 30p 另外一种是外部时钟方式 即将 XTAL1 接地 外部时钟信号从 XTAL2 脚输入 输入输出 I O 引脚 Pin32 Pin39 为 P0 0 P0 7 输入输出脚 Pin1 Pin8 为 P1 0 P1 7 输入输出脚 Pin21 Pin28 为 P2 0 P2 7 输入输出脚 Pin10 Pin17 为 P3 0 P3 7 输入输出脚 这些输入输出脚 的功能阐述如下 湖北工业大学商贸学院毕业设计 8 P0 口 32 脚 39 脚 是双向 8 位三态 I O 口 在外接存储器时 与地址总线的 低 8 位及数据总线复用 能以吸收电流的方式驱动 8 个 TTL 负载 P1 口 1 脚 8 脚 是 8 位准双向 I O 口 由于这种借口输出没有高阻状态 输 入也不能锁存 故不是真正的双向 I O 口 P1 口能驱动 吸收或输出电流 4 个 TTL 负载 P2 口 21 脚 28 脚 是 8 位准双向 I O 口 访问外部存储器时 它可以作为高 8 位地址总线送出高 8 位地址 P2 可以驱动 吸收或输出电流 4 个 TTL 负载 P3 口 10 脚 17 脚 是 8 位准双向 I O 口 P3 口能驱动 吸收或输出电流 4 个 TTL 负载 P3 口除了作为一般的准双向通用 I O 口使用外 每个引脚还有第二功能 P3 口的 8 条线都定义有第二功能 6 如表 4 1 所列 表 3 1 P3 口的第二功能表 引脚第二功能 P3 0RXD 串行口输入端 P3 1TXD 串行口输出端 P3 2INT0 外部中断 0 请求输入端 低电平有效 P3 3INT1 外部中断 0 请求输入端 低电平有效 P3 4T0 定时器 计数器 0 的技数脉冲输入端 P3 5T1 定时器 计数器 0 的技数脉冲输入端 P3 6WR 片外数据存储器写选通信号输出端 低电平有效 P3 7RD 片外数据存储器写选通信号输出端 低电平有效 Pin9 RESET Vpd 复位信号复用脚 当单片机通电 时钟电路开始工作 在 RESET 引脚上出现 24 个时钟周期以上的高电平 系统即初始复位 初始化后 程序计数器 PC 指向 0000H P0 P3 输出口全部为高电平 堆栈指钟写入 07H 其它专用寄存器被 清 0 RESET 由高电平下降为低电平后 系统即从 0000H 地址开始执行程序 然而 初始复位不改变 RAM 包括工作寄存器 R0 R7 的状态 单片机复位后的状态如下 P0 P3 FFH 各口可用于输出 也可用于输入 SP 07H 第一个入栈内容将写入 08H 单元 湖北工业大学商贸学院毕业设计 9 IP IE 和 PCON 的有效位为 0 各中断源处于低优先级且均被关断 串行通讯的 波 特率不加倍 PSW 00H 当前工作寄存器为 0 组 Pin30 ALE PROG 当访问外部程序器时 ALE 地址锁存 的输出用于锁存地址的低 位字节 而访问内部程序存储器时 ALE 端将有一个 1 6 时钟频率的正脉冲信号 这 个信号可以用于识别单片机是否工作 也可以当作一个时钟向外输出 更有一个特点 当访问外部程序存储器 ALE 会跳过一个脉冲 如果单片机是 EPROM 在编程其间 PROG 将用于输入编程脉冲 Pin29 PESN 当访问外部程序存储器时 此脚输出负脉冲选通信号 PC 的 16 位地 址数据将出现在 P0 和 P2 口上 外部程序存储器则把指令数据放到 P0 口上 由 CPU 读入并执行 Pin31 EA Vpp 程序存储器的内外部选通线 8051 和 8751 单片机 内置有 4kB 的 程序存储器 当 EA 为高电平并且程序地址小于 4kB 时 读取内部程序存储器指令数 据 而超过 4kB 地址则读取外部指令数据 如 EA 为低电平 则不管地址大小 一律 读取外部程序存储器指令 显然 对内部无程序存储器的 8031 EA 端必须接地 3 2 DS1302 时钟模块 3 2 1 DS1302 简介 DS1302 是 DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟 日历和 31 字节静态 RAM 通过简单的串行接口与单片机进行通信 实时时钟 日历电路提供秒 分时日月年的信息 每月的天数和闰年的天数可自动调整 时钟操作可通过 AM PM 指示决定采用 24 或 12 小时格式 DS1302 与单片机之间能简单地采用同步串行的方式 进行通信 仅需用到三个口线 1 RES 复位 2 I O 数据线 3 SCLK 串行时钟 时钟 RAM 的读 写数据以一个字节或多达 31 个字节的字符组方式通信 DS1302 工作时功 耗很低 保持数据和时钟信息时功率小于 1mW DS1302 是由 DS1202 改进而来 增加了以下特性 双电源管脚用于主电源和备份 电源供应 Vcc1 为可编程涓流充电电源 附加七个字节存储器 备份电源可由大容量 电容 1F 替代 它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品 领域 湖北工业大学商贸学院毕业设计 10 主要性能如下 1 时钟具有能计算 2100 年之前的秒 分 时 日 星期 月 年的能力 还有 闰年调整的能力 2 31 8 位暂存数据存储 RAM 3 串行 I O 口方式使得管脚数量最少 4 宽范围工作电压 2 0V 5 5V 5 工作电流 2 0V 时 小于 300nA 6 读 写时钟或 RAM 时 有两种传送方式 单字节传送和多字节传送 字符组方 式 7 8 脚 DIP 封装或可选的 8 脚 SOIC 封装 8 简单的 3 线串行 I O 接口 9 与 TTL COMS 兼容 VCC 5V 时 10 可选工业级温度范围 40oC 85oC 3 2 2 DS1302 结构与工作原理 3 2 2 1 引脚及功能表 1 DS1302 的脚功能如表 3 2 所示 引脚如图 3 2 所示 表 3 2 引脚功能 引脚号引脚名称功能 1Vcc2主电源引脚 2 3X1 X2振荡源 外接 32 768KHz 晶振 4RST接地 5GND复位 片选端 6I O串行数据输入 输出端 双向 7SCLK串行时钟输入端 8Vcc1备用电源 湖北工业大学商贸学院毕业设计 11 图 3 2 DS1302 的引脚图 3 2 2 2 工作原理 串行时钟芯片主要由寄存器 控制寄存器 振荡器 实时时钟以及 RAM 组成 为 了对任何数据传送进行初始化 需要将 RST 置为高电平且将具有地址和控制信息的 8 位数据 控制字节 装入移位寄存器 数据在 SCLK 的上升沿串行输入 前 8 位指定 访问地址 命令字装入移位寄存器后 在之后的时钟周期 读操作时输出数据 写操 作时输入数据 时钟脉冲的个数在单字节方式下为 8 加 8 8 位地址加 8 位数据 在 多字节突发模式方式下为 8 加最多可达 248 的数据 3 2 3 控制命令字节与寄存器 1 控制命令字节 控制命令字节的格式如表 3 3 表 3 3 控制命令字节的格式表 D7 D6 D5 D4D3D2 D1D0 1RAM CKA4A3A2A1A0RD W 控制字节的最高有效位 位 7 必须是逻辑 1 如果它为 0 则不能把数据写入到 DS1302 中 位 6 如果为 0 则表示存取日历时钟数据 为 1 表示存取 RAM 数据 位 5 至 位 1 指示操作单元的地址 最低有效位 位 0 为 0 表示要进行写操作 为 1 表示进行 读操作 控制字节总是从最低位开始输出 2 寄存器 1 历 时钟寄存器 DS1302 共有 12 个寄存器 其中有 7 个寄存器与日历 时钟相关 存放的数据为 BCD 码形式 其日历 时间寄存器及其控制字如表 3 5 所示 寄存器的选择由命令字而定 日历 时钟各个寄存器与控制字对照表如表 3 4 所示 湖北工业大学商贸学院毕业设计 12 最后一位 RD W 为 0 表示要进行写操作 为 1 表示进行读操作 表 3 5 为主要寄 存器命令字 取值范围以及各位内容对照表 表 3 4 日历 时钟寄存器与控制字对照表 D7D6D5D4D3D2D1D0寄存器名称 1RAM CKA4A3A2A1A0 RD W 秒寄存器1000000 分寄存器1000001 小时寄存器1000010 日寄存器1000011 月寄存器1000100 星期寄存器1000101 年寄存器1000110 写保护寄存器1000111 慢充电寄存器1010000 时钟突发寄存器1011111 湖北工业大学商贸学院毕业设计 13 表 3 5 DS1302 的日历 时钟寄存器表 命令字各位内容寄存器名称 写操作读操作 取值范 围76543 0 秒寄存器80H81H00 59CH10SECSEC 分寄存器82H83H00 59010MINMIN 小时寄存器84H85H01 12 或 00 23 12 24010 A P HRHR 日寄存器86H87H01 28 29 30 31 0010DATEDATE 月寄存器88H89H01 1200010MMONTH 星期寄存器8AH8BH01 070000DAY 年寄存器8CH8DH01 0910YEARYEAR 写保护 寄存器 8EH8FHWP0000 慢充电 寄存器 90H91HTCSTCSTCSTCSDSDSRSRS 时钟突发 寄存器 BEHBFH 特殊位的说明 湖北工业大学商贸学院毕业设计 14 CH 时钟暂停位 当此位设置为 1 时 振荡器停止 DS1302 处于低功耗空闲状 态 这时芯片消耗电流将小于 100NA 当此位为 0 时 振荡器启动 时钟开始启动 12 24 12 或 24 小时方式选择位 为 1 时选择 12 小时方式 在 12 小时方式下 位 5 是 AM PM 选择位 此位为 1 时表示 PM 为 0 时选择 24 小时方式 在 24 小时方 式下 位 5 是第 2 个小时位 20 23 时 WP 写保护位 写保护寄存器的开始 7 位 0 6 置为 0 在读操作时总是读出 0 在对时钟或 RAM 进行写操作之前 位 7 WP 必须为 0 当它为高电平时 写保 护位防止对任何其他寄存器进行写操作 TCS 控制慢充电的选择 为了防止偶然因素使 DS1302 工作 只有 1010 模式才 能使慢速充电 DS 二极管选择位 如果 DS 为 01 那么选择一个二极管 如果 DS 为 10 则选 择两个二极管 如果 DS 为 11 或 00 那么充电器被禁止 与 TCS 无关 RS 选择连接在 VCC2 与 VCC1 之间的电阻 如果 RS 为 00 那么充电器被禁止 与 TCS 无关 选择的电阻如表 3 6 所示 表 3 6 RS 与所选电阻对照表 RS 位电阻器典型值 00无无 01R12 K 10R24 K 11R38 K 由上所述 根据涓流充电寄存器的不同编程 可得到不同的充电电流 其充电电 流具体计算公式如下 公式 3 1 5 0 R DE c VVV I 式中 5 0V 为 VCC2 脚所接入的工作电压 VD为二极管正向压降 0 7V R 为寄存 器 0 和 1 位编码决定的电阻值 VE为 VCC1 脚所接入的电压 2 RAM 寄存器 DS1302 与 RAM 相关的寄存器分为两类 一类是单个 RAM 单元 共 31 个 每个 单元组态为一个 8 位的字节 其命令控制字为 C0H FDH 其中奇数为读操作 偶数 湖北工业大学商贸学院毕业设计 15 为写操作 另一类为突发方式下的 RAM 寄存器 此方式下可一次性读写所有的 RAM 的 31 字节 命令控制字为 FEH 写 FFH 读 RAM 寄存器与控制字对照如表 3 7 表 3 7 RAM 区寄存器与控制字对照表 D7D6D5D4D3D2D1D0寄存器名称 1RAM CKA4A3A2A1A0RD W RAM01000000 RAM11000001 RAM301111110 RAM 突发1111111 3 复位和时钟控制 通过将 RST 输入驱动置高电平来启动所有的数据传送 RST 输入有两种功能 首 先 RST 接通控制逻辑 允许地址 命令序列送入移位寄存器 其次 RST 提供了终止 单字节或多字节数据的传送手段 当 RST 为高电平时 所有的数据传送被初始化 允 许对 DS1302 进行操作 如果在传送过程中置 RST 为低电平 则会终止此次数据传送 并且 I O 引脚变为高阻态 上电运行时 在 VCC 2 5V 之前 RST 必须保持低电平 只有在 SCLK 为低电平时 才能将 RST 置为高电平 4 数据输入 输出 数据输入是在输入写命令字的 8 个 SCLK 周之后 在接下来的 8 个 SCLK 周期中 的每个脉冲的上升沿输入数据 数据从 0 位开始 如果有额外的 SCLK 周期 它们将 被忽略 数据输出是在输出读命令字的 8 个 SCLK 周之后 在接下来的 8 个 SCLK 周期中 的每个脉冲的下降沿输出数据 数据从 0 位开始 需要注意的是 第一个数据位在命 湖北工业大学商贸学院毕业设计 16 令字节后的最后一位之后的第一个下降沿被输出 只要 RST 保持高电平 如果有额外 的 SCLK 周期 将重新发送数据字节 即多字节传送 时序图如图 3 3 所示 图 3 3 时序图 3 2 4 DS1302 电路设计图 图 3 4 DS1302 电路设计图 X1 2 X2 3 VCC2 1 GND 4 RST 5 I O 6 SCLK 7 VCC1 8 U2 DS1302 VCC 12 Y2 C7C8 32 768KHz 10p10p P0 1 P0 2 P0 0 470uF C6 1K R10 湖北工业大学商贸学院毕业设计 17 3 3 公历与农历 星期转换模块 3 3 1 概述 公历是全世界通用的历法 以地球绕太阳的一周为一年 一年 365 天分为 12 个月 1 3 5 7 8 10 12 月为 31 天 2 月为 28 天 其余月份为 30 天 事实上地球 绕太阳一周共 365 天 5 小时 48 分 46 秒 比公历一年多出 5 小时 48 分 46 秒 为使年 误差不累积公历年用闰年法来消除年误差 由于每年多出 5 小时 48 分 46 秒 每 4 年累计多出 23 小时 15 分 4 秒 接近 1 天 天文学家就规定每 4 年有一个闰年把 2 月由 28 天改为 29 天 凡是公历年代能被 4 整除的那一年就是闰年 但是这样一来每 4 年又少了 44 分 56 秒为了更准确地计时天文学家又规定凡能被 100 整除的年份只有 能被 400 整除才是闰年 即每 400 年要减掉 3 个闰年 经过这样处理后实际上每 400 年的误差只有 2 小时 53 分 20 秒 已相当准确了 农历与公历不同 农历把月亮绕地球一周作为一月 因为月亮绕地球一周不是一 整天 所以农历把月分为大月和小月 大月 30 天 小月 29 天 通过设置大小月使农 历日始终与月亮与地球的位置相对应 为了使农历的年份与公历年相对应 农历通过 设置闰月的办法使它的平均年长度与公历年相等 农历是中国传统文化的代表之一 并与农业生产联系密切 中国人民特别是广大农民十分熟悉并喜爱农历 公历与农历是我国目前并存的两种历法 各有其固有的规律 农历与月球的运行 相对应其影响因素多 它的大小月和闰月与天体运行有关计算十分复杂 且每年都不 一致 因此要用单片机实现公历与农历的转换用查表法是最方便实用的办法 51 系列 单片机因其在功能上能满足大部份对速度要求不高的应用场合的要求且价格低廉开发 工具普及程度高 是目前应用最多的单片机之一 本文介绍一种用 51 单片机实现从 1901 年到 2099 年 199 年公历日到农历日及星期的转换方法 3 3 2 基本原理 我们可以通过按查表和按年查表的方法 再通过适当的计算 来确定公历日所对 应的农历日期 本文采用的是按年查表法 最大限度地减少表格所占的空间 对于农历来说 大月为 30 天 小月为 29 天 这是固定不变的 这样我们就可用 1 个 BIT 1 位 表示大小月信息 农历一年 如有闰月为 13 个月 否则是 12 个月 湖北工业大学商贸学院毕业设计 18 所以一年需要用 13 个 BIT 闰月在农历中所在的月份并不固定 大部分闰月在农历 2 8 月 但也有少量年份在 9 月以后 所以要表示闰月的信息 至少要 4BIT 在这里我 们用 4BIT 的值来表示闰月的月份 值为 0 表示本年没有闰月 有了以上信息 还不足 以判断公历日对应的农历日 因为还需要个参照日 我们选用农历正月初一所对应的 公历日期作参照日 公历日最大为 31 日 需要 5 BIT 来表示 而春节所在的月份不是 1 月就是 2 月 用 1 BIT 就够了 考虑到表达方便 我们用 2 BIT 的值直接表示月份 这样一年的农历信息只用 3 个字节就全部包括了 每年对应的 3 字节数据格式说明如 下 第一字节 BIT7 4 位表示闰月月份 值为 0 为无闰月 BIT3 0 对应农历第 1 4 月 的大小 第二字节 BIT7 0 对应农历第 5 12 月大小 第三字节 BIT7 7 表示农历第 13 个月大小 BIT6 5 表示春节的公历月份 BIT4 0 表示春节的公历日期 月份对应的位为 1 表示本农历月大 30 天 为 0 表示小 29 天 计算公历对应的农历日期的方法 先计算出公历日离当年元旦的天数 然后查表 取得当年的春节日期 计算出春节离元旦的天数 二者相减即可算出公历日离春节的 天数 以后只要根据大小月和闰月信息 减月天数 调整农历月份 即可推算出公历 日对应的农历日期 如果公历日不到春节日期 农历年要比公历年小一年 农历大小 取前一年的信息 农历月从 12 月向前推算 公历日是非常有规律的 所以公历日所对应的星期天可以通过计算直接得到 理 论上公元 0 年 1 月 1 日为星期日 只要求得公历日离公元 0 年 1 月 1 日的天数 除 7 后的余数就是星期天 为了简化计算 采用月校正法 根据公历的年月日可直接计算 出星期天 其算法是 日期 年份 所过闰年数 月较正数之和除 7 的余数就是星期天 但如果是在闰年又不到 3 月份 上述之和要减一天再除 7 其 1 12 月的校正数为 6 2 2 5 0 3 5 1 4 6 2 4 年份和闰年数只计算 1900 年以后的年份和闰年数 实际校正数 为 0 3 3 6 1 4 6 2 5 0 3 5 举例说明 用查表法得出公历 2008 年 3 月 9 日对应的农历及星期信息 1 查表得 2008 年的数据为 0 x09 0 x2d 0 x47 0000 1001 0010 1100 0100 0111 湖北工业大学商贸学院毕业设计 19 该数据表示该年无闰月 农历月的 2 3 5 6 8 11 12 月为小月 29 天 1 4 7 9 10 月为大月 30 天 该年春节在公历 2 月 7 日 2 计算公历日 2008 年 3 月 9 日 离当年元旦的天数 30 29 9 68 3 计算春节离元旦的天数 30 7 37 4 算出公历日 2008 年 3 月 9 日 离春节的天数 68 37 31 5 调整农历月份 因为 31 30 1 所以相对应的农历月份是 2 月 农历日是 1 1 2 6 计算星期 日期 年份 所过闰年数 月较正数之和除 7 再求余数 9 2008 1900 2008 1900 4 3 7 0 综上所述 公历日 2008 年 3 月 9 日对应的是农历 2008 年 2 月 2 日星期天 3 3 3 程序流程图 由于星期的计算很简单 这里只提供公农历转换程序设计流程图 如图 3 5 所示 否 是 是 否 是 否 转换数据到 HEX 格式 方便运算 根据公历年 定位数据表的地址 从数据表中取得春节的公历日期 并通过计算公历日和春节离元旦的 天数算出公历日离春节的天数 记 为 X 公历日在春节以后 子程序入口 农历年 公历年 取农历月信息 农历年 公历年减 1 数据表地址减 3 定位到前一年 取农历信息 农历月加 1 闰月标 志 F0 0 非闰月 取农历月天数 Y 农历月 12 闰月 标志 F0 非闰月 F0 取反农历月加 1 F0 1 农历月 闰月 取农历月 天数 Y 湖北工业大学商贸学院毕业设计 20 否 是 是 否 是 是 否 否 图 3 5 公农历转换程序流程图 3 4 DS18B20 温度模块 3 4 1 概述 美国 DALLAS 公司生产的单线数字温度传感器 DS18B20 可把温度信号直接转换 成串行数字信号供微机处理 由于每片 DS18B20 含有唯一的硅串行数 所以在一条总 线上可挂接任意多个 DS18B20 芯片 从 DS18B20 读出的信息或写入 DS18B20 的信息 仅需要一根口线 单线接口 读写及温度变换功率来源于数据总线 总线本身也可以 向所挂接的 DS18B20 供电 而无需额外电源 DS18B20 可提供 9 12 位温度读数 构 成多点温度检测系统而无需任何外围硬件 3 4 2 DS18B20 的工作原理 3 4 2 1 DS18B20 的性能 1 单线接口 仅需一根口线与 MCU 连接进行通信 2 多个 DS18B20 可以并联在惟一的 3 线上 实现多点组网功能 3 无需外围元件 4 可通过数据线供电 电压范围为 3 0 5 5V 农历月减 1 X X Y 农历日 Y X 1 子程序出口 农历年 月 日数 据标准化 X X Y 农历日 X 1 F0 取反 F0 1 农历月 闰月 X Y X Y 湖北工业大学商贸学院毕业设计 21 5 零待机功耗 6 测温范围 55 125 固有测温分辨率为 0 5 7 通过编程可实现 9 12 位的数字读数方式 8 用户可自设定非易失性的报警上下限值 9 支持多点组网功能 多个 DS18B20 可以并联在惟一的三线上 实现多点测温 10 报警搜索命令可识别哪片 DS1820 超温度限 11 负压特性 电源极性接反时 温度计不会因发热而烧毁 但不能正常工作 3 4 2 2 DS18B20 的内部结构 图 3 6 DS18B20 方框图 1 64 位 ROM 的结构 图 3 7 64 位 ROM 的结构图 开始 8 位是产品类型的编号 接着是每个器件的惟一的序号 共有 48 位 最后 8 位是前 56 位的 CRC 校验码 这也是多个 DS18B20 可以采用一线进行通信的原因 8 位检验 CRC48 位序列号8 位工厂代码 10H 湖北工业大学商贸学院毕业设计 22 2 非易失性温度报警触发器 TH 和 TL 可通过软件写入用户报警上下限 3 高速暂存存储器 DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可 电擦除的 E2PROM 高速 RAM 包含 9 字节存储器 其结构如图 3 8 所示 前两个字节包含测得的温度信息 第 3 和第 4 字节是 TH 和 TL 的拷贝 是易失的 每次上电复位时被刷新 第 5 个字节是配置寄存器 它的内容用于确定温度值的数字 转换分辨率 DS18B20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值 该字节各位的定义如图 3 9 所示 低 5 位一直都是 1 TM 是测试模式位 用于设置 DS18B20 在工作模式还是在测试模式 在 DS18B20 出厂时该位被设置为 0 用户不要 去改动 R1 和 R0 决定温度转换的精度位数 即是来设置分辨率 如表 3 8 所示 DS18B20 出厂时被设置为 12 位 温度 LSB 温度 MSB TH 用户字节 1 TL 用户字节 2 配置寄存器 保留 保留 保留 CRC 图 3 8 高速暂存 RAM 结构图 TMR1R211111 图 3 9 配置寄存器图 表 3 8 DS18B20 分辩率的定义规定表 1 字节 2 字节 3 字节 4 字节 5 字节 6 字节 7 字节 8 字节 9 字节 TH 用户字节 1 TL 用户字节 2 E2PROM 湖北工业大学商贸学院毕业设计 23 R1R0分辩率 位温度最大转换时间 00993 75 0110187 5 1011375 1112750 由表 3 8 可见 设定的分辨率越高 所需要的温度数据转换时间就越长 因此 在 实际应用中要在分辨率和转换时间权衡考虑 高速暂存 RAM 第 6 8 字节未用 表现为全逻辑 1 第 9 字节读出的是前面所有 8 个字节的 CRC 码 可用来保证通信正确 当 DS18B20 接收到温度转换命令后 开始启动转换 转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1 2 字节 单片机可通过 单线接口读到该数据 读取时低位在前 高位在后 数据格式以 0 0625 LSB 形式表 示 温度值格式如图 3 10 LS 字节 MS 字节 图 3 10 温度数据值格式图 当符号位 S 0 时 直接将二进制位转换为十进制 当 S 1 时 先将补码变换为原 码 再计算十进制值 表 3 9 是对应的一部分温度值 表 3 9 DS18B20 温度与测得值对应表 温度 oC数据输出 二进制 数据输出 十六进制 1250000 0111 1101 000007D0H 850000 0101 0101 00000550H 25 06250000 0001 1001 00010191H 10 1250000 0000 1010 001000A2H 232221202 12 22 32 4 SSSSS2625264 湖北工业大学商贸学院毕业设计 24 0 50000 0000 0000 10000008H 00000 0000 0000 00000000H 0 51111 1111 1111 1000FFF8H 10 1251111 1111 0101 1110FF5EH 25 06251111 1110 0110 1111FE6FH 551111 1100 1001 0000FC90H DS18B20 完成温度转换后 就把测得的温度值与 TH TL 作比较 若 T TH 或 T60 s 60 s 15 s 15 60 s 1 s 15 s 45 s 1 s t0 t1 t0 t1 图 3 15 DS18B20 写 0 和写 1 时序图 2 读时间隙 当主机 t0时刻把总线从逻辑高电平拉到逻辑低电平时 总线只需保持低电平 1 4 s 之后在 t1时刻将总线拉高产生读时间隙 读时间隙在 t1时刻后 t2时刻前有效 t2距 t015 s 也就是说 t2时刻前主机必须完成读位并在 t0后的 60 120 s 内释放总线 连续读 2 位的间隙应大于 1 s 读位时序见图 3 16 60 s 15 s 1 s 湖北工业大学商贸学院毕业设计 29 t0 t1 t2 t3 图 3 16 DS18B20 读位时序图 4 数据处理 数据处理思路是先取高速暂存器 RAM 中温度信息的底字节 LSB 将 LSB 右移 4 位 再取高速暂存器 RAM 中温度信息的高字节 MSB 将 MSB 左移 4 位 接着将 LSB 和 MSB 两个字节相或 得到一个整数 再送显示 3 5 整点报时模块 3 5 1 概述 本次设计中整点报时功能是当时钟满整点时 自动报出相应时钟点数 比如当时 钟为 9 点整时 蜂鸣器就连续发出 9 个相同的音阶 中音 DO 因为每个音阶都对 应着固定的频率 因此用单片机来实现整点报时非常方便 我们可以利用单片机的定 时 计数器 T0 来产生这样方波频率信号 3 5 2 设计原理 要产生音频脉冲 只要算出某一音频的周期 1 音频 然后将此周期除以 2 即为半周 期的时间 再利用定时器计时半周期时间 每当计时终止后就将 I O 口反相 然后重复计时 再反相 就可在 I O 引脚上得到此频率的脉冲 利用 AT89S52 的内部定时器使其工作计数器模式 MO

温馨提示

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

评论

0/150

提交评论