基于单片机的电子万年历_大学毕业论文(编辑修改稿)内容摘要:

4 A3 A2 A1 A0 RAM K 图 DS1302的控制字 表 1302DS 的日历、时间内部寄存器地址和内容 寄 存器 命令 指令 它们的取值 寄存器的内容 写寄存器 读 寄存器 B7 B6 B5 B4 B3 B2 B1 0 秒 寄 存器 80H 81H 00~ 59 CH 10S SEC 分 寄 存器 82H 83H 00~ 59 0 10 min MIN [小 ]时 寄 存器 84H 85H 00~ 23或 01~ 12 12/ 24 0 10 A/P HR HR 日 寄 存器 85H 87H 01~ 28, 29, 30, 31 0 0 10DATE DATE 月 寄 存器 88H 89H 01~ 12 0 0 0 10M MONTH 周 寄 存器 8AH 8BH 01~ 07 0 0 0 0 0 DAY 年 寄 存器 8CH D3H 00~ 99 10YEAR YEAR 烟台大学毕业论文(设计) 9 1302DS 的 日历、时间寄存器及其控制字见表 , 当 读取的 数是偶数时则 将写 入相关内容 , 否则 是读出相关内容。 A7 决定时间是 12 小时制还是 24 小时制。 它为 高电平 时 则为 12小时制。 在 这种情况 下, A5是 AM/PM 位,此位是高电平时表示 PM 低电平表示 AM。 在 24h 方式下, A5为第二个 10h 位( 20~ 23h)。 1302DS 晶振电路 1302DS 单片机的晶振电路 基本差不多 , 不同之处在于它们 的频率, 1302DS 所选晶振频率为 32768Hz。 如图 DS1302 的晶振电路 图 1302DS 的晶振电路 显示电路的选择 电路的选择 图 显示电路 烟台大学毕业论文(设计) 10 元件的设计及计算 LCD1602 的特性 内建有 160 个 5X7 点阵的字型的字符发生器 CGROM 8 个可由用户自定义的 5X7 的字符发生器 CGRAM 测温 电路的选择 测温的电路图 图 元件的选择及设计计算 DS18B20 温度传感器的优点: 接口方式 采用单总线。 单总线具有 使用经济、方便快捷、 抗干扰能力强 等优点,特别适用于恶劣环境的测温, 为 构建 测量系统 创建了新方法。 当 多个 DS18B20 同时使用 时可达到 多点测温 的目的,且不需要外接元件 烟台大学毕业论文(设计) 11 多变的 供电方式。 DS18B20 既 可以 在外部接电源,又可以在内部通过 数据线获取电源 ,在这种情况子下可以使 系统 具有 简单 的结构,较高的可靠性。 负压特性。 在 电源 没有正确接线 时,温度计 将 会继续 正常工作 且不会烧毁。 防止 掉电。 DS18B20 有 EEPROM, 在没有电时仍然可以继续工作。 DS18B20 的性能特点如下: 不需要 外部器件; 电压 工作 范围为 ~ , 可 由 数据线 提供 电 源且待机时不需要消耗功率 ; 温度以 一定的数字 读出; 设置的温度报警器数据不容易丢失。 DS18B20 温度传感器还 有容量为八字节的 RAM 作为暂存 和 信 息可重复使用 的EERAM。 温度信息 在前两个字节 , 接着的两个字节为 TH和 TL 的 拷贝 , 信息不容易保存,且在通电时信息被刷新。 配置寄存器 位于第五个字节。 DS18B20 工作时按 配置 寄存器中的分辨率将温度转换为 相对需要的值。 表 DS18B20分辨率的定义规定 R1 R0 分辨率 /位 时间的最大转换 /ms 0 0 9 0 1 10 1 0 11 375 1 1 12 750 由表 可见, 在应用 DS18B20 时 分辨率和转换时间 要综合考虑,随着 分辨率增长 温度数据转换时间 就越多。 暂存 RAM的六七八没有用到,全部用高字节表示。 第 九 字节 将显示前面 的 CRC 码, 通过 数据 的检测来确保 通信数据 无误。 S 为符号位, S 取值为零时,可以直接进行 2进制到 10进制变换;当 S取值为一时,测的温度 为零度以下,则不可以直接求出 10 进制的数值。 DS18B20 是 单线通信 且 分时完成, 要求较严格,所以看 重 读写时序。 DS18B20的操作 流程 为 : 首先对 DS18B20 初始化 ,其次把 ROM 的各个 指令 发出,接着把 存储器 的各个 操作 指令发出,最后进行 数据 的处理 [5]。 DS18B20 内部结构: DS18B20 主要 由 64 位 ROM、温度传 感器、 不容易挥发的 温度报警除法器 TH 和烟台大学毕业论文(设计) 12 TL、配置寄存器 四个部分组成。 ROM 中的 64 位序列号 可以看做是 DS18B20 的地址序列码,它是出厂前就被定义好的,则每个 DS18B20 的 64 位序列号均不相同,即所有的 DS18B20 都各不相同,因此可以多个 DS18B20 并联在一根总线上。 DS18B20 可以采用两种方式供电,一种是 由 电源 提供供电 ,此时 DS18B20 的 1脚接地, 2脚作为引线, 3脚 外 接电源。 另一种是寄生电源供电方式。 为了使 DS18B20正常 使用 , 单片机端口用 MOSFET 管来 控制 单线 总线。 单线总线开启时间 非常短 , 而它的引脚驱动能力有限,只能输出低电平,无法输出高电平, 为了 保证 写存储器操作和温度 A/D 转换操作 能正常进行 必须使用外部上拉 硬件的仿真 硬件的调试 首先根据硬件电路图利用 PROTEUS 把电路图链接好,如图 硬件实际图: X T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .0 /T 21P 1 .1 /T 2 E X2P 1 . 23P 1 . 34P 1 . 45P 1 . 56P 1 . 67P 1 . 78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 / R D17P 3 . 6 / W R16P 3 .5 /T 115P 2 .7 /A 1 528P 2 .0 / A 821P 2 .1 / A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427U1A T 8 9 C5 2X1CR Y S T A LF RE Q = 1 2 M H zC12 2 p FC22 2 p FC32 0 u FR11kRS T5S CL K7I /O6X12X23V CC 18V CC 21U2DS 1 3 0 2B A T 19VX2CR Y S T A LF RE Q = 3 2 7 6 8 H zD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1L M 0 1 6 LR V 11k234567891R P 1RE S P A C K 83 4 . 0DQ2V C C3G ND1U3DS 1 8 B 2 0R24 .7 kR31 0 kR41 0 kR51 0 kR61 0 kL S 1S O UN D E R 图 硬件模拟图 然后保存文件的格式为 .DSN,以便下次使用的时候调用。 然后再双击单片机,在 Progame File 栏调出程序生成的以 .hex 为后缀的文件,然后单击确定,如图 所示: 烟台大学毕业论文(设计) 13 图 调用程序 硬件仿真的结果如图 图 硬件仿真结果 温度报警器 LED 显示屏显示的为年 /月 /日、星期、时分秒、温度。 U3 为温度的调试,左 /右边分别表示为温度减 /加 1。 当温度超过 35 度时,将会报警,如图 在 R2 和报警器之间的符号变为红的并且有滴滴的声音发出。 图 报警时的图 烟台大学毕业论文(设计) 14 时间的调整 年、月、日、星期、时、分、秒的调整为 R R R5 和 R6 下面的那个 BUTTON,它们分别表示启动、加、减、恢复。 单击启动时,可以调整秒,加减调整结束后,如果还不正确,在单击调试,则可以调试分,以此类推,可以调试时、星期、日、月、年,调整结束后单击恢复,则可以恢复 ,调整结束。 如图 时间的调整 时间的调整 烟台大学毕业论文(设计) 15 4 系统程序设计 阳历程序设计 因为在该程序中使用 DS1302 时钟芯片,阳历程序只需从 DS1302 各寄存器中读出年 、月、日、周、 [小 ]时、分、秒等数据,再处理即可。 对 DS1302 进行 首次 操作之前, 先 初始化, 把经过处理的 从 DS1302 中读出数据送给显示缓冲单元。 阳历时间显示的 程序流程图见图 所示。 时间调整程序设计 时间的修改用 4个按钮键来控制 , 它们分别为 开始 、加、减、停止。 在时间 修改的 过程中,要 修改 的位与 不需要修改 的位 应该把它们给分别开。 把 需要 修改 的位一直在闪,直到 修改 完继续 修改 下一 个。 需要修改的位一直闪 的 原理是 利用定时器把需要修改的位亮和 熄灭 一定时间 ,比如说 每次 亮和熄灭的 时间 均为 为 40ms。 利用定时器计时, 每次 达到 40ms 溢出时, 由亮变灭或由灭变亮, 不断交替,直到 不再调整。 这个时候把正确的 数定住,不在闪 , 然后使下一个需要修改的数不停的闪。 初始化 1302 1302 开始振荡 从 1302 中读出年、月、日、周、 [小 ]时、分、秒 开 始 读出的数据都为 BCD码,将其高低位分离送显示缓冲单元 图 阳历程序流程图程图 烟台大学毕业论文(设计) 16 阴历程序设计 根据 阳历日期来推算 阴历日期。 先要根据当前阳历的日期,算出阳历为该年中的第 多少 天 ,设为 A,该年春节和元旦的日差 为 B, 当 A=B 时 ,则 AB=C 时, C就是阴历在该年中的第 多少 天, 然后就可以算出 当前阴历日期; 当 AB 时 , 则阴历比阳历小一年,通常此时阴历会是 11 月或者 12 月 , 此时 BA=D, 而 D 表示距离 过新年还剩 的天数。 再根据查表所得的该年的阴历的闰月 ,以及哪些月份有 30 号和哪些月份没有 30号 , 这样就可以计算出在阴历时为几月几号。 软件测试 首先在 Keil uVision3 软件上在 File 中把写好的程序调用出来, 程序见附录 B, 然后再 Project 中通过 New Project 把生成的以 .Uv2 为后缀的文件打开如图 图 工程的调用 最后为程序的调试,程序的调试为单击左边的第一个 如图 ,调试的结果如图 图 程序的调试图 程序的调试结果 烟台大学毕业论文(设计) 17 5 结论 与展望 结论 此次设计 具有可以显示阳历日期、按键调整时间和可动态显示年等功能。 这个设计 的 硬件电路 用的 器件 比较 少 ,电路比较简单 ,电路 的主要部分为 AT89C52 单片机 , DS1302 时钟芯片和 LCD12864 作为 显示器, 可以达到目的。 展望 这次设计虽然完成了,但是还存在着缺点: 显示的年限过短,只能显示 2020 年 — 2100 年之间的部分。 通过按键调节年、月、日后,如果不调节星期,星期的显示就会出现与正常的星期 不一样,导致出现错误 , 现在还没有想出如何可以自动调整。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。