




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
扬州工业职业技术学校 毕毕业业设设计计论论文文 基于 51 单片机的电子时钟设计 系 部 电子信息工程系 专 业 生产自动化 班 级 0901 自动化 学生姓名 学 号 指导教师 2011 年 9 月 9 日 扬州工业职业技术学院 摘要 随着单片机技术的飞速发展 在其推动下 现代的电子产品几乎渗透到了社 会的各个领域 有力地推动了社会生产力的发展和社会信息化程度的提高 同时 也使现代电子产品性能进一步提高 时间就是金钱 时间就是生命 时间就是胜利 准确的掌握时间和分配 时间对人们来说至关重要 时钟是我们生活中必不可少的工具 电子钟的设计方 法有很多种 但是基于单片机并通过 LCD 显示的电子时钟具有编程灵活 精确 度高 便于携带 显示直观等特点 利用 STC89C52 单片机对 DS1302 时钟芯片进行读写操作并通过 1602 字符液 晶显示实时时钟信息 这样便构成了一个单片机电子时钟 关键词 单片机 电子时钟 STC89C52 扬州工业职业技术学院毕业论文 ABSTRACT With the rapid development of microcomputer technology in its promotion modern electronics into almost all areas of society a strong impetus to the development of social productive forces and social improvement in the level of information but also to further improve the performance of modern electronic products Time is a money time is life time is victory Accurate grasp of time and allocation of time is crucial to people The clock is necessary in our life tools Clock Design There are many ways however produced by single chip electronic clock is more flexible programming and easy expansion of electronic capabilities high accuracy easy to carry display visual and so on In this paper through the use of STC89C52 microcontroller by DS1302 clock chips for reading and writing operation and through 1602 character liquid crystal display real time clock information so that forming a single chip electronic clock Key Words Microcontroller STC89C52 Electronic clock 扬州工业职业技术学院毕业论文 目录 绪论 1 概述 1 研究目的 1 第 1 章 设计要求与方案论证 2 1 1 设计要求 2 1 2 系统基本方案选择和论证 2 1 2 1 单片机芯片的选择方案和论证 2 1 2 2 显示模块选择方案和论证 2 1 2 3 时钟芯片的选择方案和论证 3 1 3 电路设计最终方案决定 3 第 2 章 主要元件介绍 4 2 1 STC89C52 介绍 4 2 1 1 STC89C52 主要功能及 PDIP 封装 4 2 1 2 STC89C52 引脚介绍 4 2 1 3 STC89C52 最小系统 5 2 2 DS1302 时钟芯片介绍 6 2 2 1 DS1302 概述 6 2 2 2 DS1302 引脚介绍 7 2 2 3 DS1302 使用方法 7 2 3 1602 字符液晶介绍 9 2 3 1 1602 液晶概述 9 2 3 2 1602 引脚介绍 10 2 3 3 1602 字符液晶使用方法 10 第 3 章 系统硬件设计 13 3 1 电路设计框图 13 3 2 系统硬件概述 13 第 4 章 系统的软件设计 14 4 1 程序概述 14 4 2 延时函数 15 4 3 对 DS1302 读写操作函数 15 4 3 1 向 DS1302 写数据 15 扬州工业职业技术学院毕业论文 4 3 2 从 DS1302 读数据 16 4 4 显示函数 17 4 4 1 向 1602 液晶中写一个指令 17 4 4 2 向液晶写数据 17 4 4 3 初使化 1602 液晶 17 4 4 4 如何在液晶上显示时间 日期及周 18 4 5 按键函数 19 4 5 1 12 24 小时显示模式切换键 21 4 5 2 功能键函数 23 4 5 3 调整键函数 25 4 5 4 确定键 31 4 6 主函数 32 总结 34 致谢 35 参考文献 36 扬州工业职业技术学院 1 绪论 概述 时间 对人们来说是非常宝贵的 准确的掌握时间和分配时间对人们来说至 关重要 因此自从时钟发明的那刻起 就成为人类的好朋友 随着时间的流逝 科学技术的不断发展和提高 人们对时间计量的精度要求越来越高 应用越来越 广 怎样让时钟更好 更方便 更精确的显示时间 这就要求人们不断设计研发 出新型的时钟 高精度的计时工具大多数都使用了石英晶体振荡器 由于电子钟 石英表 石英钟都采用了石英技术 因此走时精度高 稳定性好 使用方便 不需要经常 调校 数字式电子钟用集成电路计时时 译码代替机械式传动 用 LCD 显示器 代替指针进而显示时间 减小了计时误差 这种表具有时 分 秒显示时间的功 能 还可以进行时和分的校对 片选的灵活性好 时钟电路在计算机系统中起着非常重要的作用 是保证系统正常工作的基础 在单片机的应用系统中 时钟有两个方面的含义 一是指为保障系统正常工作的 基准振荡定时信号 主要由晶振和外围电路组成 晶振频率的大小决定了单片机 系统工作的快慢 二是指系统的标准定时时钟 即定时时间 它通常有两种实现 方法 一是用软件实现 即用单片机内部的可编程定时器 计数器来实现 二是用 专门的时钟芯片实现 研究目的 通过利用 STC89C52 单片机和 DS1302 芯片以及外围的按键和 LCD 显示器等 部件 设计一个基于单片机的电子时钟 设计的电子时钟通过液晶显示器显示 并能通过按键对时间进行设置 扬州工业职业技术学院毕业论文 2 第 1 章 设计要求与方案论证 1 1 设计要求 具有年 月 日 星期 时 分 秒显示功能 具备年 月 日 星期 时 分 秒校准功能 具有 12 24 小时切换显示功能 1 2 系统基本方案选择和论证 1 2 1 单片机芯片的选择方案和论证 方案一 采用 STC89C52 芯片作为硬件核心 STC89C52 内部具有 8KB ROM 存储空 间 512 字节数据存储空间 带有 2K 字节的 EEPROM 存储空间 与 MCS 51 系列 单片机完全兼容 STC89C52 可以通过串口下载 方案二 采用 AT89S52 AT89S52 片内具有 8K 字节程序存储空间 256 字节的数据存 储空间没有 EEPROM 存储空间 也与 MCS 51 系列单片机完全兼容 具有在线 编程可擦除技术 两种单片机都完全能够满足设计需要 STC89C52 相对 ATS89C52 价格便宜 且抗干扰能力强 考虑到成本因素 因此选用 STC89C52 1 2 2 显示模块选择方案和论证 方案一 采用点阵式数码管显示 点阵式数码管是由八行八列的发光二极管组成 可 用来显示数 但体积较大 且价格也相对较高 从便携实用的角度出发 不采用 此种方案 方案二 采用 LED 数码管动态扫描 LED 数码管价格便宜 对于显示数字最合适 但功 耗较大 且显示容量不够 所以也不用此种方案 方案三 采用 LCD 液晶显示屏 液晶显示屏的显示功能强大 可显示大量文字 显示 多样 清晰可见 且价格适中 所以采用了 LCD 数码管作为显示 扬州工业职业技术学院毕业论文 3 1 2 3 时钟芯片的选择方案和论证 方案一 直接采用单片机定时计数器提供秒信号 使用程序实现年 月 日 星期 时 分 秒计数 采用此种方案虽然减少芯片的使用 节约成本 但是 实现的 时间误差较大 所以不采用此方案 方案二 采用 DS1302 时钟芯片实现时钟 DS1302 芯片是一种高性能的时钟芯片 可 自动对秒 分 时 日 周 月 年以及闰年补偿的年进行计数 而且精度高 工 作电压 2 5V 5 5V 范围内 2 5V 时耗电小于 300nA 1 3 电路设计最终方案决定 综上各方案所述 对此次作品的方案选定 采用 STC89C52 单片机作为主控制 系统 采用 DS1302 作为时钟芯片 采用 1602 LCD 液晶作为显示器件 扬州工业职业技术学院毕业论文 4 第 2 章 主要元件介绍 2 1 STC89C52 介绍 2 1 1 STC89C52 主要功能及 PDIP 封装 STC89C52 是由深圳宏晶科技公司生产的与工业标准 MCS 51 指令集和输出 管脚相兼容的单片机 STC89C52 主要功能如表 2 1 所示 其 PDIP 封装如图 2 1 所示 主要功能特性 兼容 MCS51 指令系统8K 可反复擦写 Flash ROM 32 个双向 I O 口256x8bit 内部 RAM 3 个 16 位可编程定时 计数器中断时钟频率 0 24MHz 2 个串行中断可编程 UART 串行通道 2 个外部中断源共 6 个中断源 2 个读写中断口线3 级加密位 低功耗空闲和掉电模式软件设置睡眠和唤醒功能 表 2 1 STC89C52 主要功能 2 1 2 STC89C52 引脚介绍 主电源引脚 2 根 VCC Pin40 电源输入 接 5V 电源 GND Pin20 接地线 外接晶振引脚 2 根 XTAL1 Pin19 片内振荡电路的输入端 XTAL2 Pin20 片内振荡电路的输出端 控制引脚 4 根 RST VPP Pin9 复位引脚 引脚上出现 2 个机器周期的高电平将使单片机复 位 ALE PROG Pin30 地址锁存允许信号 PSEN Pin29 外部存储器读选通信号 EA VPP Pin31 程序存储器的内外部选通 接低电平从外部程序存储器读指 令 如果接高电平则从内部程序存储器读指令 可编程输入 输出引脚 32 根 STC89C52 单片机有 4 组 8 位的可编程 I O 口 分别位 P0 P1 P2 P3 口 每 扬州工业职业技术学院毕业论文 5 个口有 8 位 8 根引脚 共 32 根 P0 口 Pin39 Pin32 8 位双向 I O 口线 名称为 P0 0 P0 7 P1 口 Pin1 Pin8 8 位准双向 I O 口线 名称为 P1 0 P1 7 P2 口 Pin21 Pin28 8 位准双向 I O 口线 名称为 P2 0 P2 7 P3 口 Pin10 Pin17 8 位准双向 I O 口线 名称为 P3 0 P3 7 STC 89C52 40 39 38 34 35 36 37 27 28 29 30 31 32 33 23 24 25 26 22 21 P1 01 2 3 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 T0 P3 4 INTO P3 2 RXD P3 0 RST Vcc SCK P1 7 MISO P1 6 MOSI P1 5 P1 4 P1 3 P1 2 P1 1 TXD P3 1 INTI P3 3 T1 P3 5 WR P3 6 RD P3 7 XTAL2 XTAL1 GND P0 0 AD0 PSEN ALE PROG EA Vpp P0 1 AD1 P0 7 AD7 P0 6 AD6 P0 5 AD5 P0 4 AD4 P0 3 AD3 P0 2 AD2 P2 7 AD15 P2 6 AD14 P2 1 AD9 P2 2 AD10 P2 3 AD11 P2 4 AD12 P2 5 AD13 P2 0 AD8 图 2 1 STC89C52 PDIP 封装图 2 1 3 STC89C52 最小系统 最小系统是指能进行正常工作的最简单电路 STC89C52 最小应用系统电路 如图 2 2 所示 它包含五个电路部分 电源电路 时钟电路 复位电路 片内外 程序存储器选择电路 输入 输出接口电路 其中电源电路 时钟电路 复位电路 是 保证单片机系统能够正常工作的最基本的三部分电路 缺一不可 电源电路 芯片引脚 VCC 一般接上直流稳压电源 5V 引脚 GND 接电源 5V 的负极 电源电压范围在 4 5 5 之间 可保证单片机系统能正常工作 为提 高电路的抗干扰性能 通常在引角 Vcc 与 GND 之间接上一个 10uF 的电解电容和 一个 0 1uF 陶片电容 这样可抑制杂波串扰 从而有效确保电路稳定性 时钟电路 单片机引脚 18 和引脚 19 外接晶振及电容 STC89C52 芯片的 工作频率可在 2 33MHz 范围之间选 单片机工作频率取决于晶振 XT 的频率 通 扬州工业职业技术学院毕业论文 6 常选用 11 0592MHz 晶振 两个小电容通常取值 3pF 以保证振荡器电路的稳定 性及快速性 复位电路 一般若在引脚 RST 上保持 24 个工作主频周期的高电平 单片 机就可以完成复位 但为了保证系统可靠地复位 复位电路应使引脚 RST 保持 10ms 以上的高电平 如图复位电路带有上电自动复位功能 当电路上电时 由于 C1 电容两端电压值不能突变 电源 5V 会通过电容向 RST 提供充电电流 因此 在 RST 引脚上产生一高电平 使单片机进入复位状态 随着电容 C1 充电 它两 端电压上升使得 RST 电位下降 最终使单片机退出复位状态 正常运行时 可按 复位按钮对单片机复位 E A V P 31 X 1 19 X 2 18 R ES ET 9 R D 17 W R 16 IN T 0 12 IN T 1 13 T 0 14 T 1 15 P10 T 1 P11 T 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 T XD 11 P00 39 R XD 10 P01 38 P02 37 P03 36 V cc 40 P04 35 A LE P 30 P05 34 PSE N 29 P06 33 P27 28 P07 32 P26 27 P20 21 P25 26 P21 22 P24 25 P22 23 P23 24 G ND 20 80 52 R 1 20 0 R 2 10 K 位位位位 C 1 10 uF C 2 30 uF C 3 30 uF C 4 10 uF C 5 0 1u F X T G ND G ND V CC 5V V CC 5V G ND 图 2 2 STC89C52 最小系统 2 2 DS1302 时钟芯片介绍 2 2 1 DS1302 概述 DS1302 是美国 DALLAS 公司推出的一种高性能 低功耗 带 RAM 的实时 时钟芯片 它可以对年 月 日 周日 时 分 秒进行计时 具有闰年补偿功 能 工作电压为 2 5V 5 5V 采用双电源供电 主电源和备用电源 同时提供 了对后背电源进行涓细电流充电的能力 采用三线接口与 CPU 进行同步通信 扬州工业职业技术学院毕业论文 7 DS1302 Vcc1 SCLK Vcc2 X1 X2 GNDCE I O 1 2 7 6 5 4 3 8 图 2 3 DS1302 封装图 2 2 2 DS1302 引脚介绍 各引脚功能为 Vcc 主电源 Vcc2 备用电源 当 Vcc2 Vcc1 0 2V 时 由 Vcc2 向 DS1302 供电 当 Vcc2 Vcc1 时 由 Vcc1 向 DS1302 供电 SCLK 串行时钟输入端 控制数据的输入与输出 I O 三线接口时的双向数据线 CE 输入信号 在读 写数据期间必须为高 2 2 3 DS1302 使用方法 1 时钟芯片 DS1302 的工作原理 DS1302 在每次进行读 写程序前都必须初始化 先把 SCLK 端置 0 接着把 RST 端置 1 最后才给予 SCLK 脉冲 读 写时序如图 5 所示 表 2 为 DS1302 的控制字 此控制字的位 7 必须置 1 若为 0 则不能把对 DS1302 进行读 写数据 对于位 6 若对程序进行读 写时 RAM 1 对时间进行读 写时 CK 0 位 1 至位 5 指操作单元的地址 位 0 是读 写操作位 进行读操作时 该位为 1 该位为 0 则表示进行的是写操作 控制字节总是从最低位开始输入 输出的 表 6 为 DS1302 的日历 时间寄存器内容 CH 是时钟暂停标志位 当该位为 1 时 时钟振荡器停止 DS1302 处于低功耗状态 当该位为 0 时 时钟开始运行 WP 是写保护位 在任何的对时钟和 RAM 的写操作之前 WP 必须为 0 当 WP 为 1 时 写保护位防止对任一寄存器的写操作 2 DS1302 的控制字节 DS1302 的控制字如表所示 控制字节最高有效位 位 7 必须是逻辑 1 如 果它为 0 则不能把数据写入 DS1302 中 位 6 为 0 表示存取日历时钟数据 为 1 表示存取 RAM 数据 位 5 至位 1 指示操作单元的地址 最低有效位 位 扬州工业职业技术学院毕业论文 8 0 如为 0 表示要进行写操作 为 1 表示进行读操作 控制字节总是从最低位开 始传输 RAMRD 1 CK A4A3A2A1A0 WR 表 2 2 DS1302 控制字 3 数据输入输出 I O 在控制指令字输入后的下一个 SCLK 时钟的上升沿时 数据被写入 DS1302 数据输入从低位即位 0 开始 同样 在紧跟 8 位的控制指令字后的下一 个 SCLK 脉冲的下降沿读出 DS1302 的数据 读出数据时从低位 0 位到高位 7 其读写时序如图示 图 2 4 DS1302 读写时序 4 DS1302 寄存器 DS1302 中与时间 日期有关的寄存器共有 12 个 其中 7 个存放数据的格 式为 BCD 码格式 其读写地址如下表所示 读寄 存器 写寄 存器 Bit7Bit7Bit7Bit7Bit7Bit7Bit7Bit7 范围 81H80HCH 10 秒秒 00 59 83H82H 10 分分 00 59 12100 23 85H84H 24 0 AM PM 时时 1 12 87H86H 10 日日 1 31 扬州工业职业技术学院毕业论文 9 89H88H 10 月月 1 12 8BH8AH00000 周 1 7 8DH8CH 10 年年 00 99 8FH8EHWP0000000 表 2 3 DS1302 时钟寄存器 第一行秒寄存器 CH 为时钟暂停标志位 该位为 1 时时钟停止 该位为 0 时时钟运行 第二行分寄存器 bit0 bit6 表示分钟数 因采用 BCD 编码 所以低四位最 大能表示的数字为 9 计数满向高三位进 1 第三行时寄存器 12 24 用来定义 DS1302 小时的运行模式 12 小时模式下 bit5 为 1 表示 PM 下午 bit5 为 0 表示 AM 上午 第八行控制寄存器 bit7 是写保护位 WP 当 WP 为 1 时 写保护位可防止 对任一寄存器的写操作 在任何的对时钟和 RAM 的写操作之前 WP 位必须为 0 此外 DS1302 还有年份寄存器 控制寄存器 充电寄存器 时钟突发寄存 器及与 RAM 相关的寄存器等 时钟突发寄存器可一次性顺序读写除充电寄存器 外的所有寄存器内容 DS1302 与 RAM 相关的寄存器分为两类 一类是单个 RAM 单元 共 31 个 每个单元组态为一个 8 位的字节 其命令控制字为 C0H FDH 其中奇数为读操作 偶数为写操作 另一类为突发方式下的 RAM 寄存器 此方式下可一次性读写所有的 RAM 的 31 个字节 命令控制字为 FEH 写 FFH 读 2 3 1602 字符液晶介绍 2 3 1 1602 液晶概述 工业字符型液晶 1602 是指显示的内容为 16 2 能同时显示两行 每行 16 个字符 常见的 1602 字符液晶有两种 一种显示绿色背光黑色字体 另一种显 示蓝色背光白色字体 目前市面上绝大多数基于 HD44780 液晶芯片控制 原理 是完全相同的 本课题所用 1602 液晶模块 显示屏是蓝色背光白色字体 如图 2 5 所示 扬州工业职业技术学院毕业论文 10 1 2 3 10 9 8 7 6 5 4 11 12 13 14 15 16 GND VCC VO D1 D0 E R W RS D2 D3 D4 D5 D6 D7 BLA BLK LCD1602 图 2 5 1602 字符液晶 2 3 2 1602 引脚介绍 编号符号引脚说明编号符号引脚说明 1GND电源地2VCC电源正极 3VO液晶显示对 比度调节端 4RS数据 命令选 择端 5R W读写选择6E使能信号 7D0数据口8D1数据口 9D2数据口10D3数据口 11D4数据口12D5数据口 13D6数据口14D7数据口 15BLA背光电源正16BLK背光电源负 表 2 4 1602 字符液晶引脚说明 各个引脚具体功能说明 第 1 脚 GND 为地电源 第 2 脚 VCC 接 5V 正电源 第 3 脚 VO 为液晶显示器对比度调整端 接正电源时对比度最弱 接地电源时 对比度最高 对比度过高时会产生重影 使用一个 1K 的电位器调整对比度 第 4 脚 RS 为寄存器选择 高电平时选择数据寄存器 低电平时选择指令寄存 器 第 5 脚 R W 为读写信号线 高电平时进行读操作 低电平时进行写操作 第 6 脚 E 端为使能端 当 E 端由高电平跳变成低电平时 液晶模块执行命令 第 7 14 脚 DB0 DB7 为 8 位双向数据线 第 15 16 脚 背光灯电源 扬州工业职业技术学院毕业论文 11 2 3 3 1602 字符液晶使用方法 1 基本操作时序 操作输入输出 读状态RS L RW H E HD0 D7 状态字 写指令RS L RW L D0 D7 指令码 E 高脉冲无 读数据RS H RW H E HD0 D7 数据 写数据RS H RW L D0 D7 数据 E 高脉冲无 表 2 5 1602 字符液晶读写状态表 图 2 6 1602 液晶写时序图 图 2 7 1602 液晶读时序图 2 RAM 扬州工业职业技术学院毕业论文 12 1602 液晶控制器芯片内部带有 80 个 8 位的 RAM 缓冲区 其地址和屏幕的 对应关系如图 2 8 示 图 2 8 3 1602 字符液晶字库 1602 液晶模块内部的字符发生存储器 CGROM 已经存储了 160 个不同的 点阵字符图形 如下表所示 这些字符有 阿拉伯数字 英文字母的大小写 常 用的符号 和日文假名等 每一个字符都有一个固定的代码 比如大写的英文字 母 A 的代码是 01000001B 41H 显示时模块把地址 41H 中的点阵字符图形 显示出来 我们就能看到字母 A 高位 低位 000000 0 0 001001 0 0 001001 1 1 010010 0 0 010010 1 1 011011 0 0 011011 1 1 101101 0 0 101101 1 1 110110 0 0 110110 1 1 111111 0 0 111111 1 1 XXXX0000XXXX0000 0 P p P XXXX0001XXXX0001 1AQ a a q q XXXX0010XXXX0010 2BRbr XXXX0011XXXX0011 3CScs XXXX0100XXXX0100 4DTdt XXXX0101XXXX0101 5EUeu o XXXX0110XXXX0110 for x z x 0 x for y 110 y 0 y 由 for 循环构成的延时函数 z 的取值为这个函数的延时 ms 数 如 delay 200 大约 延时 200ms delay 500 大约延时 500ms 因下文多次用到 固在此先作说明 扬州工业职业技术学院毕业论文 16 4 3 对 DS1302 读写操作函数 在对 DS1302 时钟芯片操作前 应对其操作时序有所了解 参看前文 DS1302 介绍 DS1302 采用串行方式与单片机进行通信 一个机器周期只能读写一个字 节的一位 因此 在单片机与 DS1302 芯片间传输一字节 8 位 数据 要分 8 次进行 且先从低位开始传输 4 3 1 向 DS1302 写数据 写数据字节子函数 void write 1302 byte uchar temp 用来发送 8 位数据信息 uchar i for i 0 i 1 右移一位 sck 1 在 SCK 上升沿的时候字节写入 DS1302 1302 写数据子函数 void write 1302 uchar addd uchar dat rst 0 nop sck 0 nop rst 1 nop write 1302 byte addd 发送地址 write 1302 byte dat 发送数据 rst 0 扬州工业职业技术学院毕业论文 17 4 3 2 从 DS1302 读数据 读 DS1302 数据函数 uchar read 1302 uchar add 输入地址 add 返回读取的数据 uchar i temp 0 x00 rst 0 sck 0 rst 1 write 1302 byte add for i 0 i 1 右移一位 sck 1 sck 被置高 在其下一次变为 0 时 数据被写入 rst 0 以下为 DS1302 复位的稳定时间 sck 0 sck 1 sda 0 sda 1 return temp 将 temp 值返回 4 4 显示函数 对 1602 进行操作前要对其进行初使化 初使化完成后它才能正常显示 如 果想在 1602 液晶的某一个位置显示一个内容 要先对其写入一个指令 在什么 地方显示 然后再对其写入一个数据 要显示什么内容 对 1602 的液晶初使化 需要用写入指令的方式完成 扬州工业职业技术学院毕业论文 18 4 4 1 向 1602 液晶中写一个指令 void write com uchar com lcdwr 0 lcdwr 为读写控制端 lcdwr 0 这里可不写 lcdrs 0 液晶 rs 接口为 0 时 写指令 rs 为 1 时写数据 P0 com 将要写的指令赋给 P0 口 delay 5 由 1602 读写操作时序图 先将指令赋给 P0 口 延时后将使能 lcden 1 端 lcden 置高 再延时一段时间 然后将 lcden 置低 这样指 令 delay 5 就写入到 LCD 了 lcden 0 4 4 2 向液晶写数据 void write data uchar date 与写指令类似 这里 lcdrs 设为 1 lcdrs 1 P0 date delay 5 lcden 1 delay 5 lcden 0 4 4 3 初使化 1602 液晶 此函数首先对液晶进行初使化 使其处于待命状态 然后将时钟框架显示出 来 年月日之间的 时分秒之间的 还有世纪年的高两位 void init 1602 uchar num lcdwr 0 lcden 0 write com 0 x38 设置 LCD 为 16 2 显示 5 7 点阵 8 位数据接口模式 扬州工业职业技术学院毕业论文 19 write com 0 x0c 开显示 不显示光标 write com 0 x06 写一个字符后 地址指针加 1 write com 0 x01 显示清 0 write com 0 x80 将指针指向初始位置 for num 0 num 14 num 循环函数 用于将 20 写入液晶 write data table num write com 0 x80 0 x40 4 将指针指向 1602 液晶的第二行 第四个字段 for num 0 num 8 num 功能与上同 用于将 写入 write data table1 num 4 4 4 如何在液晶上显示时间 日期及周 DS1302 中的时间 日期等信息是以 BCD 码的形式存放的 要先将从 1302 中读取的数据转化成 10 进制 然后显示在液晶上相应的位置 显示时间 日期子函数 void write sfm uchar add uchar time 用于在 1602 上显示年 月 日 时 分 秒 Add 为显示位置 time 为要显示的内容 uchar shi ge shi time 16 将从 DS1302 中读取的 BCD 码数据转化成 10 进制个位和 10 ge time 16 进制十位 write com add 0 x80 定义显示在液晶的什么位置 write data 0 x30 shi 由 1602 液晶字库可知 0 9 的数据码分别对应 0 x30 0 x39 write data 0 x30 ge 初使化中设定了写一个字符后 地址指针加 1 因此这 里 不用重新光标定位 显示周子函数 void write zhou uchar time1 用于在 1602 上显示周信息 与显示 时间日期子函数类似 uchar ge ge time1 16 一周七天 因此只需个位 write com 0 x80 13 扬州工业职业技术学院毕业论文 20 write data 0 x30 ge 4 5 按键函数 此电子时钟共有 4 个按键 S1 S2 S3 与调时有关图按键程序如图 11 S4 为 12 小时切换键 S1 功能键 在 24 小时显示模式下 该键被第一次按下后进入秒调整 液晶 显示器上的时间停止走动 模式 再次按下后进入分调整模式 接着是调时模式 调年模式 调月模式 调日模式 调周模式 当第八次按下该键后退出 S2 调整键 在调整模式下 该键每按一次 相应时间或日期加 1 S3 确定键 在调整模式下 该键被按下后 退出调整模式 并将调整后的时 间 日期写入 DS1302 S4 显示模式调整键 用于对时间的 12 24 小时模式的切换 扬州工业职业技术学院毕业论文 21 S1按键 秒闪烁 S1按键 S1按键 S1按键 S1按键 S1按键 分闪烁 时闪烁 秒数据写入 DS1302 周闪烁 日闪烁 月闪烁 年闪烁 S1按键 S2按键 秒调节 分数据写入 DS1302 时数据写入 DS1302 年数据写入 DS1302 月数据写入 DS1302 日数据写入 DS1302 S2按键 分调节 S2按键 时调节 S2按键 年调节 S2按键 月调节 S2按键 日调节 S1按键 周数据写入 DS1302 S2按键 周调节 进入主程序 S3 键 按 下 时间 日期写入 DS1302 图 4 2 按键程序图 扬州工业职业技术学院毕业论文 22 4 5 1 12 24 小时显示模式切换键 时钟默认在 24 小时模式下运行 定义一个标志位 flag1 第一次按下切换键 把瞬时时间转化成 12 小时制 令 flag1 1 并写入 DS1302 芯片 此后 DS1302 芯 片在 12 小时模式下运行 第二次按下切换键 即返回 24 小时显示模式 令 flag1 0 把瞬时时间转化成 24 小时模式并写入 DS1302 芯片 有关 DS1302 的时间寄存器存放形式参阅前文 如 24 小时模式下的 22 00 存放的形式为 00100010 12 小时模式下的 22 点 也就是 10 00PM 存放形式为 10110000 在切换的一瞬间 我们只需要把小时数据 0 xb0 写入到 DS1302 这样 就能让时钟芯片在 12 小时模式下运行了 需要注意的是 12 小时模式下 只用 到后 5 位来表示时间 第 6 位用来表示 AM 或 PM 信息 如果真接用 24 小时模 式下的显示方法是会出错的 这里我们需要对时进行转化 首先提取 AM PM 信 息 让其显示 然后提取其后 5 位时间 显示时间 在主函数部分如果检测到 flag1 1 就进行转换 12 转 24 小进模式与其类似 不再赘述 if s1num 0 if s4 0 s2num while s4 if s2num 1 24 小时切换成 12 小时 int ge shi flag1 1 hour read 1302 0 x85 ge hour 16 shi hour 16 if shi 1 扬州工业职业技术学院毕业论文 28 miao x1 x2 16 write sfm 10 0 x40 miao write com 0 x80 0 x40 11 if s1num 2 int x3 x4 x3 fen 16 x4 fen 16 x3 if x3 10 x3 0 x4 if x4 6 x4 0 fen x3 x4 16 write sfm 7 0 x40 fen write com 0 x80 0 x40 8 if s1num 3 int x5 x6 x5 hour 16 x6 hour 16 x5 if x6 2 x6 0 hour 0 if x5 10 扬州工业职业技术学院毕业论文 29 x5 0 x6 hour x5 x6 16 write sfm 4 0 x40 hour write com 0 x80 0 x40 5 if s1num 4 int x7 x8 x7 nian 16 x8 nian 16 x7 if x7 10 x7 0 x8 if x8 8 x8 1 nian x7 x8 16 write sfm 3 nian write com 0 x80 4 if s1num 5 int x5 x6 x5 yue 16 x6 yue 16 x5 if x6 1 x6 0 扬州工业职业技术学院毕业论文 30 if x5 10 x5 0 x6 yue x5 x6 16 write sfm 6 yue write com 0 x80 7 if s1num 6 此条判断每月天数 包括平年闰年 int x5 x6 ge2 shi2 mon ge1 shi1 year leap x5 ri 16 x6 ri 16 x5 nian read 1302 0 x8d 读取年数据 ge1 nian 16 shi1 nian 16 year ge1 shi1 10 if year 4 0 判断是否为闰年 leap 1 else leap 0 yue read 1302 0 x89 读取月数据 ge2 yue 16 shi2 yue 16 mon ge2 shi2 10 if mon 2 x6 0 if x5 10 扬州工业职业技术学院毕业论文 31 x5 0 x6 if mon 2 x6 if x6 3 x5 1 x6 0 if mon 4 mon 6 mon 9 mon 11 4 6 9 11 月 30 天 if x6 3 x6 0 if x5 10 x5 0 x6 else 1 3 5 7 8 10 12 月 31 天 if x6 3 x6 0 扬州工业职业技术学院毕业论文 32 if x5 10 x5 0 x6 ri x5 x6 16 write sfm 9 ri write com 0 x80 10 if s1num 7 zhou if zhou 8 zhou 1 write zhou zhou write com 0 x80 13 4 5 4 确定键 在调时模式下 按下确写键后 把调好的时间写入 DS1302 时钟芯片并退出 调整模式 时钟显示暂停标志位清 0 时钟继续计时 if s3 0 如果确定键按下 delay 5 if s3 0 延时并重新检测 S3 是否按下 用于差小误差 扬州工业职业技术学院毕业论文 33 while s3 在松手时将调整后的时间 日期及周信息写入 write 1302 0 x8e 0 x00 DS1302 退出调整模式 按键数清 0 write 1302 0 x80 miao write 1302 0 x84 hour write 1302 0 x82 fen write 1302 0 x8a zhou write 1302 0 x8c nian 年 write 1302 0 x88 yue 月 write 1302 0 x86 ri write 1302 0 x8e 0 x80 flag 0 write com 0 x0c s1num 0 4 6 主函数 void main int ap init 1602 inital 1302 while 1 keyscan if flag 0 miao read 1302 0 x81 fen read 1302 0 x83 hour read 1302 0 x85 if flag1 1 flag1 1 时 在 12 模式下显示 ap hour 判断 AM PM 位是 0 还是 1 扬州工业职业技术学院毕业论文 34 if ap 0 x20 write
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线上线下彩票业务合作框架协议
- 草牧场承包权流转与农业可持续发展合作协议
- 食品流通市场承包权转让合同范本
- 外债融资担保机构合作协议范本
- 桩基露筋防腐处理技术专题
- 预应力孔道智能压浆监控
- 中职学校教师培训
- 滨水带施工合同定交底
- 智慧用电服务体系建设方案智慧电能服务体系建设方案
- 智慧医院节能监管平台建设方案节约型医院实施方案
- 2022年浙江农业博览会参展单位汇总表
- 货物签收单确认单
- 《走进民间音乐》资料
- 螺杆冷水机组使用说明书
- 非固化橡胶沥青防水涂料技术交底
- 海姆立克急救(生命的拥抱)课件
- 讲稿董关鹏:如何面对媒体与公众
- 酒店治安保卫管理制度
- Q∕SY 06521-2016 炼油化工建设项目EPC总承包管理规范
- 课件心肺复苏(CPR)
- 刘三姐歌词大全
评论
0/150
提交评论