




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的数字万年历设计毕业论文基于单片机的数字万年历设计毕业论文 目录 1 设计任务要求 12 2 2 设计方案及比较 设计可行性分析 13 2 1 单片机芯片的选择方案和论证 13 2 2 显示模块选择方案和论证 13 2 3 时钟芯片的选择方案和论证 14 2 4 按键模块方案的选择与比较 14 3 硬件电路设计 15 3 1 系统总体方案设计 15 3 2 系统框图 15 3 3 系统硬件概述 16 3 4 主要单元电路的设计 16 3 4 1 系统核心部分 单片机主控模块 16 3 4 2 时钟电路模块的设计 20 3 4 3 按键电路模块的设计 23 3 4 4 液晶显示电路模块 23 3 4 5 闹铃电路 32 4 软件设计 34 4 1 系统软件设计 34 4 2 系统主程序的流程图 34 5 系统仿真测试 36 5 1 仿真软件简介 36 5 2 仿真步骤 36 6 测试与结果分析 39 1 6 1 硬件测试结果 39 6 2 软件测试 40 6 3 测试结果分析与结论 40 6 3 1 测试结果分析 40 6 3 2 测试结论 40 参考文献 41 致谢 42 附录 43 附录一 系统程序如下 43 附录二 系统原理图 64 附录三 液晶显示和 DS1032 时钟的 PCB 图 65 附录四 键盘的 PCB 图 66 2 1 设计任务要求 1 平年 365 天 52 周 1 天 闰年 366 天 52 周 2 天 平年 2 月 28 天 闰年 2 月 29 天 2 每 400 年整一闰 或每 4 年且不为百年的一闰 即凡能被 400 整除 或不能 被 100 整除但能被 4 整除的年份为闰年 3 每 4 年 3 个平年 1 个闰年 共 208 周 5 天 每百年共 100 208 周 5 天 1 天 5217 周 5 天 每 400 年共 4 5217 周 5 天 1 天 整 400 年闰 20871 周 0 天 即每 400 年一个轮回 4 显示年 月 日 星期 时 分 秒的功能 5 具有调节功能 通过键盘加减调整万年历 3 2 2 设计方案及比较 设计可行性分析 2 1 单片机芯片的选择方案和论证 方案一 采用 89C51 芯片作为硬件核心 采用 Flash ROM 内部具有 4KB ROM 存储 空间 能于 3V 的超低压工作 而且与 MCS 51 系列单片机完全兼容 但是运用于电 路设计中时由于不具备 ISP 在线编程技术 当在对电路进行调试时 由于程序 的错误修改或对程序的新增功能需要写入程序时 对芯片的多次拔插会对芯片 造成一定的损坏 方案二 采用 AT89S52 芯片内 ROM 全都采用 Flash ROM 能以 3V 的超底压工作 同 时也与 MCS 51 系列单片机完全兼容 该芯片内部存储器为 8KB ROM 存储空间 同样具有 89C51 的功能 且具有在线编程可擦除技术 当在对电路进行调试时 由于程序的错误修改或对程序的新增功能需要写入程序时 不需要对芯片多次 拔插 所以不会对芯片造成损坏 所以选择采用 AT89S52 作为主控制系统 2 2 显示模块选择方案和论证 方案一 采用 LED 液晶显示屏 液晶显示屏的显示功能强大 可显示大量文字 图形 显示多样 清晰可见 但是价格昂贵 需要的接口线多 所以在此设计中不采用 LED 液晶显示屏 方案二 采用点阵式数码管显示 点阵式数码管是由八行八列的发光二极管组成 对于显示文字比较适合 如采用在显示数字显得太浪费 且价格也相对较高 所以 4 也不用此种作为显示 方案三 采用 LCD12864 液晶显示模块显示 由于其屏幕是四行八列的 可以显 示很大的信息量 2 3 时钟芯片的选择方案和论证 方案一 直接采用单片机定时计数器提供秒信号 使用程序实现年 月 日 星期 时 分 秒计数 采用此种方案虽然减少芯片的使用 节约成本 但是 实现 的时间误差较大 所以不采用此方案 方案二 采用 DS1302 时钟芯片实现时钟 DS1302 芯片是一种高性能的时钟芯片 可 自动对秒 分 时 日 周 月 年以及闰年补偿的年进行计数 而且精度高 位的 RAM 做为数据暂存区 工作电压 2 5V 5 5V 范围内 2 5V 时耗电小于 300nA 2 4 按键模块方案的选择与比较 方案一 矩阵式键盘 行线的一端通过上拉电阻与单片机的 P1 口线的高四位相连 列线的一端也通过上拉电阻与单片机的 P1 口线低四位相连 矩阵式键盘结构性 好 使用于按键较多时的情况 方案二 独立式键盘 每个按键的电路是独立的 都有单独一根数据线输出键的通 断状态 单片机一条 I O 口线对应一个按键 独立式键盘结构简单 易于编程 适 用本实验按键较少的情况 由于这次设计中 使用的功能键比较多 若采用独立式键盘占有的 I O 口 比较多 所以在这里采用矩阵式键盘 综上各方案所述 对此次作品的方案选定 采用 AT89S52 作为主控制系统 DS1302 提供时钟 LCD12864 液晶显示模块作为显示 矩阵式键盘 5 3 硬件电路设计 3 1 系统总体方案设计 万年历采用 LCD12864 液晶显示时间 LCD12864 液晶和矩阵式键盘都是单 片机用扩展 I O 接口实现的 当把程序下载到单片机 就显示年 月 日 星 期并且电子钟开始走时 按调试键按秒 分 时 星期 日 月 年的调整运 算 按加减进行调整 每次调整时询问 秒分 单元不能满 60 时 单元是 不能满 24 日 单元是否满 30 以及 月 单元是否 12 若满足条件则清零并 向高位进 1 若不满足则继续计数 以 秒分 单元为例 当满 60 秒时 秒 单元便清零 同时 分 单元加 1 当满 60 分时 分 单元清零 同时 时 单元加 1 修改完时间后按下确定键 时钟继续走 3 2 系统框图 显示采用 LCD12864 液晶显示模块 设置时间按键采用矩阵式键盘 时间生 成采用 DS1302 时钟芯片 系统框图如下 AT89S52 主控制模 块 DS1302 时钟模块 LCD 液晶显示屏 显示模块 6 图 1 系统设计框图 3 3 系统硬件概述 本电路是由 AT89S52 单片机为控制核心 具有在线编程功能 低功耗 能 在 3V 超低压工作 时钟电路由 DS1302 提供 它是一种高性能 低功耗 带 RAM 的实时时钟电路 它可以对年 月 日 星期 时 分 秒进行计时 具 有闰年补偿功能 工作电压为 2 5V 5 5V 采用三线接口与 CPU 进行同步通信 并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据 DS1302 内部有一 个 31 8 的用于临时性存放数据的 RAM 寄存器 可产生年 月 日 星期 时 分 秒 具有使用寿命长 精度高和低功耗等特点 同时具有掉电自动保存功 能 用液晶显示 3 4 主要单元电路的设计 3 4 1 系统核心部分 单片机主控模块 AT89S52 单片机为 40 引脚双列直插芯片 有四个 I O 口 P0 P1 P2 P3 MCS 51 单片机共有 4 个 8 位的 I O 口 P0 P1 P2 P3 每一条 I O 线都能独立 地作输出或输入 AT89S52 具有下列主要性能 8KB 可改编程序 Flash 存储器 可经受 1000 次的写入 擦除周期 全静态工作 0Hz 24MHz 三级程序存储器保密 128 8 字节内部 RAM 32 条可编程 I O 线 2 个 16 位定时器 计数器 6 个中断源 可编程串行通道 片内时钟振荡器 AT89S52 的引脚及功能 AT89S52 单片机的管脚说明如图 2 所示 键盘模块 7 P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 GND 20 P2 0 A8 21 P2 1 A9 22 P2 2 A10 23 P2 3 A11 24 P2 4 A12 25 P2 5 A13 26 P2 6 A14 27 P2 7 A15 28 PSEN 29 ALE PROG 30 EA VPP 31 P0 7 AD7 32 P0 6 AD6 33 P0 5 AD5 34 P0 4 AD4 35 P0 3 AD3 36 P0 2 AD2 37 P0 1 AD1 38 P0 0 AD0 39 VCC 40 图 2 AT89S52 的管脚 1 主要电源引脚 VCC 电源端 GND 接地端 2 外接晶体引脚 XTAL1 和 XTAL2 XTAL1 接外部晶体的一个引脚 在单片机内部 它是构成片内振荡器的 反相放大器的输入端 当采用外部振荡器时 该引脚接收振荡器的信号 既把 此信号直接接到内部时钟发生器的输入端 XTAL2 接外部晶体的另一个引脚 在单片机内部 它是上述振荡器的反 相放大器的输出端 采用外部振荡器时 此引脚应悬浮不连接 3 控制或与其它电源复用引脚 RST ALE PROG PSEN 和 EA VPP RST 复位输入端 当振荡器运行时 在该引脚上出现两个机器周期的 高电平将使单片机复位 ALE PROG 当访问外部存储器时 ALE 地址锁存允许 的输出用于锁 存地址的低位字节 即使不访问外部存储器 ALE 端仍以不变的频率 此频率 为振荡器频率的 1 6 周期性地出现正脉冲信号 因此 它可用作对外输出的 时钟 或用于定时目的 然而要注意的是 每当访问外部数据存储器时 将跳 过一个 ALE 脉冲 在对 Flash 存储器编程期间 该引脚还用于输入编程脉冲 PROG 6 PSEN 程序存储允许 PSEN 输出是外部程序存储器的读选通信号 当 AT89S52 LV52 由外部程序存储器取指令 或常数 时 每个机器周期两次 PSEN 有效 既输出 2 个脉冲 但在此期间内 每当访问外部数据存储器时 8 这两次有效的 PSEN 信号将不出现 EA VPP 外部访问允许端 要使 CPU 只访问外部程序存储器 地址为 0000H FFFFH 则 EA 端必须保持低电平 接到 GND 端 当 EA 端保持高电平 接 VSS 端 时 CPU 则执行内部程序存储器中的程序 4 输入 输出引脚 P0 0 P0 7 P1 0 P1 7 P2 0 P2 7 和 P3 0 P3 7 P0 端口 P0 0 P0 7 P0 是一个 8 位漏极开路型双向 I O 端口 作为 输出口用时 每位能以吸收电流的方式驱动 8 个 TTL 输入 对端口写 1 时 又 可作高阻抗输入端用 P1 端口 P1 0 P1 7 P1 是一个带有内部上拉电阻的 8 位双向 I O 端 口 P1 的输出缓冲器可驱动 吸收或输出电流方式 4 个 TTL 输入 对端口写 1 时 通过内部的上拉电阻把端口拉到高电位 这时可用作输入口 作输入口 时 因为有内部的上拉电阻 那些被外部信号拉低的引脚会输出一个电流 P2 端口 P2 0 P2 7 P2 是一个带有内部上拉电阻的 8 位双向 I O 端 口 P2 的输出缓冲器可驱动 吸收或输出电流方式 4 个 TTL 输入 对端口写 1 时 通过内部的上拉电阻把端口拉到高电位 这时可用作输入口 P2 作输入 口使用时 因为有内部的上拉电阻 那些被外部信号拉低的引脚会输出一个电 流 P3 端口 P3 0 P3 7 P3 口管脚是 8 个带内部上拉电阻的双向 I O 口 可接收输出 4 个 TTL 门电流 当 P3 口写入 1 后 它们被内部上拉为高电平 并用作输入 作为输入 由于外部下拉为低电平 P3 口将输出电流 这是由于 上拉的缘故 P3 口也可作为 AT89S52 的一些特殊功能 这些特殊功能见表 1 表 1 P3 端口的特殊功能 端口引脚 兼 用 功 能 P3 0RXD 串行输入口 P3 1TXD 串行输出口 P3 2 INT0 外部中断 0 P3 3 INT1 外部中断 1 P3 4T0 定时器 0 的外部输入 P3 5T1 定时器 1 的外部输入 P3 6 WR 外部数据存储器写选通 P3 7 RD 外部数据存储器读选通 AT89S52 单片机为 40 引脚双列直插芯片 MCS 51 单片机共有 4 个 8 位的 I O 口 P0 P1 P2 P3 每一条 I O 线都能独立地作输出或输入 9 单片机的最小系统如下图所示 18 引脚和 19 引脚接时钟电路 XTAL1 接外部 晶振和微调电容的一端 在片内它是振荡器倒相放大器的输入 XTAL2 接外部晶 振和微调电容的另一端 在片内它是振荡器倒相放大器的输出 第 9 引脚为复位 输入端 接上电容 电阻及开关后够上电复位电路 20 引脚为接地端 40 引脚为电 源端 如图 3 所示 图 3 单片机最小系统 10 3 4 2 时钟电路模块的设计 图 4 示出 DS1302 的引脚排列 其中 Vcc1 为后备电源 Vcc2 为主电源 在主电源关闭的情况下 也能保持时钟的连续运行 DS1302 由 Vcc1 或 Vcc2 两 者中的较大者供电 当 Vcc2 大于 Vcc1 0 2V 时 Vcc2 给 DS1302 供电 当 Vcc2 小于 Vcc1 时 DS1302 由 Vcc1 供电 X1 和 X2 是振荡源 外接 32 KHz 晶 振 RST 是复位 片选线 通过把 RST 输入驱动置高电平来启动所有的数据传送 RST 输入有两种功能 首先 RST 接通控制逻辑 允许地址 命令序列送入移位 寄存器 其次 RST 提供终止单字节或多字节数据的传送手段 当 RST 为高电 平时 所有的数据传送被初始化 允许对 DS1302 进行操作 如果在传送过程中 RSTS 置为低电平 则会终止此次数据传送 I O 引脚变为高阻态 上电动行时 在 Vcc 大于等于 2 5V 之前 RST 必须保持低电平 中有在 SCLK 为低电平时 才能将 RST 置为高电平 I O 为串行数据输入端 双向 SCLK 始终是输入端 图 4 DS1302 的引脚图 DS1302 的性能特性 实时时钟 可对秒 分 时 日 周 月以及带闰年补偿的年进行计数 用于高速数据暂存的 31 8 位 RAM 最少引脚的串行 I O 2 5 5 5V 电压工作范围 2 5V 时耗电小于 300nA 用于时钟或 RAM 数据读 写的单字节或多字节 脉冲方式 数据传送方式 11 简单的 3 线接口 可选的慢速充电 至 VCC1 的能力 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 则表示进行的是写操作 控制字节总是从最低位开始输入 输 出的 表 3 为 DS1302 的日历 时间寄存器内容 CH 是时钟暂停标志位 当 该位为 1 时 时钟振荡器停止 DS1302 处于低功耗状态 当该位为 0 时 时钟 开始运行 WP 是写保护位 在任何的对时钟和 RAM 的写操作之前 WP 必须为 0 当 WP 为 1 时 写保护位防止对任一寄存器的写操作 2 DS1302 的控制字节 DS1302 的控制字如表 2 所示 控制字节的高有效位 位 7 必须是逻辑 1 如果它为 0 则不能把数据写入 DS1302 中 位 6 如果 0 则表示存取日历 时钟数据 为 1 表示存取 RAM 数据 位 5 至位 1 指示操作单元的地址 最低 有效位 位 0 如为 0 表示要进行写操作 为 1 表示进行读操作 控制字节总 是从最低位开始输出 RAM RD 1 A4 A3 A2 A1 A0 CK WR 表 2 DS1302 的控制字格式 3 数据输入输出 I O 在控制指令字输入后的下一个 SCLK 时钟的上升沿时 数据被写入 DS1302 数据输入从低位即位 0 开始 同样 在紧跟 8 位的控制指令字后的下 一个 SCLK 脉冲的下降沿读出 DS1302 的数据 读出数据时从低位 0 位到高位 7 如下图 5 所示 12 图 5 DS1302 读 写时序图 4 DS1302 的寄存器 DS1302 有 12 个寄存器 其中有 7 个寄存器与日历 时钟相关 存放的数 据位为 BCD 码形式 其日历 时间寄存器及其控制字见表 3 表 3 DS1302 的日历 时间寄存器 此外 DS1302 还有年份寄存器 控制寄存器 充电寄存器 时钟突发寄 存器及与 RAM 相关的寄存器等 时钟突发寄存器可一次性顺序读写除充电寄 存器外的所有寄存器内容 DS1302 与 RAM 相关的寄存器分为两类 一类是 单个 RAM 单元 共 31 个 每个单元组态为一个 8 位的字节 其命令控制字为 C0H FDH 其中奇数为读操作 偶数为写操作 另一类为突发方式下的 RAM 寄存器 此方式下可一次性读写所有的 RAM 的 31 个字节 命令控制字为 FEH 写 FFH 读 13 3 4 3 按键电路模块的设计 接按键的单片机端口接上 10k 欧姆的上拉电阻 以保证在无按键按下时端 口是高电平 而按键按下时对应的 I O 口为低电平 图 6 矩阵式键盘原理图 3 4 4 液晶显示电路模块 1 12864C 1 液晶中文显示模块概述 12864C 1 是一种具有 4 位 8 位并行 2 线或 3 线串行多种接口方式 内部 含有国标一级 二级简体中文字库的点阵图形液晶显示模块 其显示分辨率为 128 64 内置 8192 个 16 16 点汉字 和 128 个 16 8 点 ASCII 字符集 利用该 模块灵活的接口方式和简单 方便的操作指令 可构成全中文人机交互图形界 面 可以显示 8 4 行 16 16 点阵的汉字 也可完成图形显示 低电压低功耗是 其又一显著特点 由该模块构成的液晶显示方案与同类型的图形点阵液晶显示 模块相比 不论硬件电路结构或显示程序都要简洁得多 且该模块的价格也略 低于相同点阵的图形液晶模块 基本特性 低电源电压 VDD 3 0 5 5V 显示分辨率 128 64 点 内置汉字字库 提供 8192 个 16 16 点阵汉字 简繁体可选 内置 128 个 16 8 点阵字符 2MHZ 时钟频率 显示方式 STN 半透 正显 驱动方式 1 32DUTY 1 5BIAS 14 视角方向 6 点 背光方式 侧部高亮白色 LED 功耗仅为普通 LED 的 1 5 1 10 通讯方式 串行 并口可选 内置 DC DC 转换电路 无需外加负压 无需片选信号 简化软件设计 工作温度 0 55 存储温度 20 60 2 液晶显示模块接口说明 表 4 液晶显示模块各引脚接口 管脚号名称LEVEL功能 1VSS0V电池地 2VDD 5V电源正 3 0V 5 5V 3V0 对比度 亮度 调整 4CSH L模组片选端 高电平有效 5SLDH L串行数据输入端 6CLKH L串行同步时钟 上升沿时读取 SID 数据 15PSBLL 串口方式 17 RESETH L复位端 低电平有效 19AVDD背光源电压 5V 20KVSS背光源负端 0V 15 表 5 并行接口 管脚号管脚名称电平管脚功能描述 1VSS0V电源地 2VCC3 0 5V电源正 3V0 对比度 亮度 调整 4 RS CS H L RS H 表示 DB7 DB0 为显示数据 RS L 表示 DB7 DB0 为显示指令数据 5 R W SID H L R W H E H 数据被读到 DB7 DB0 R W L E H L DB7 DB0 的数据被写到 IR 或 DR 6E SCLK H L使能信号 7DB0H L三态数据线 8DB1H L三态数据线 9DB2H L三态数据线 10DB3H L三态数据线 11DB4H L三态数据线 12DB5H L三态数据线 13DB6H L三态数据线 14DB7H L三态数据线 15PSBH LH 8 位或 4 位并口方式 L 串口方式 见注释 1 16NC 空脚 17 RESETH L复位端 低电平有效 见注释 2 18VOUT LCD 驱动电压输出端 19AVDD背光源正端 5V 见注释 3 20KVSS背光源负端 见注释 3 注释 1 如在实际应用中仅使用并口通讯模式 可将 PSB 接固定高电平 也可 以将模块上的 J8 和 VCC 用焊锡短接 注释 2 模块内部接有上电复位电路 因此在不需要经常复位的场合可将该端 悬空 注释 3 如背光和模块共用一个电源 可以将模块上的 JA JK 用焊锡短接 3 液晶显示模块主要硬件构成说明 控制器接口信号说明 1 RS R W 的配合选择决定控制界面的 4 种模式如下表 6 16 表 6 RS R W 的配合选择决定控制界面的 4 种模式 RSR W功能说明 LLMPU 写指令到指令暂存器 IR LH读出忙标志 BF 及地址记数器 AC 的状态 HLMPU 写入数据到数据暂存器 DR HHMPU 从数据暂存器 DR 中读出数据 表 7 E 信号 E 状态执行动作结果 高 低I O 缓冲 DR配合 W 进行写数据或指令 高DR I O 缓冲配合 R 进行读数据或指令 低 低 高无动作 忙标志 BF BF 标志提供内部工作情况 BF 1 表示模块在进行内部操作 此时模块不接受 外部指令和数据 BF 0 时 模块为准备状态 随时可接受外部指令和数据 利用 STATUS RD 指令 可以将 BF 读到 DB7 总线 从而检验模块之工作状态 字型产生 ROM CGROM 字型产生 ROM CGROM 提供 8192 个此触发器是用于模块屏幕显示开和关 的控制 DFF 1 为开显示 DISPLAY ON DDRAM 的内容就显示在屏幕上 DFF 0 为关显示 DISPLAY OFF DFF 的状态是指令 DISPLAY ON OFF 和 RST 信号控制的 显示数据 RAM DDRAM 模块内部显示数据 RAM 提供 64 2 个位元组的空间 最多可控制 4 行 16 字 64 个字 的中文字型显示 当写入显示数据 RAM 时 可分别显示 CGROM 与 CGRAM 的字型 此模块可显示三种字型 分别是半角英数字型 16 8 CGRAM 字 型及 CGROM 的中文字型 三种字型的选择 由在 DDRAM 中写入的编码选择 在 0000H 0006H 的编码中 其代码分别是 0000 0002 0004 0006 共 4 个 将 选择 CGRAM 的自定义字型 02H 7FH 的编码中将选择半角英数字的字型 至于 A1 以上的编码将自动的结合下一个位元组 组成两个位元组的编码形成中文字 型的编码 BIG5 A140 D75F GB A1A0 F7FFH 字型产生 RAM CGRAM 字型产生 RAM 提供图象定义 造字 功能 可以提供四组 16 16 点的自定义 图象空间 使用者可以将内部字型没有提供的图象字型自行定义到 CGRAM 中 便可和 CGROM 中的定义一样地通过 DDRAM 显示在屏幕中 地址计数器 AC 地址计数器是用来贮存 DDRAM CGRAM 之一的地址 它可由设定指令暂存器来 17 改变 之后只要读取或是写入 DDRAM CGRAM 的值时 地址计数器的值就会自动 加一 当 RS 为 0 时而 R W 为 1 时 地址计数器的值会被读取到 DB6 DB0 中 光标 闪烁控制电路 此模块提供硬体光标及闪烁控制电路 由地址计数器的值来指定 DDRAM 中 的光标或闪烁位置 4 液晶显示模块指令说明 模块控制芯片提供两套控制命令 基本指令和扩充指令如下表 8 表 9 表 8 指令表 1 RE 0 基本指令 指 指 令 码功 能 令RSR WD7D6D5D4D3D2D1D0 清除 显示 0000000001 将DDRAM填满 20H 并且设定DDRAM的 地址计数器 AC 到 00H 地址 归位 000000001X 设定DDRAM的地址计数器 AC 到 00H 并且将游标移到开头原点位置 这个指 令不改变DDRAM 的内容 显示状 态开 关 0000001DCB D 1 整体显示 ON C 1 游标 ON B 1 游标位置反白允许 进入点 设定00000001I DS 指定在数据的读取与写入时 设定 游标的移动方向及指定显示的移 位 游标或 显示移 位控制 000001S C R LXX 设定游标的移动与显示的移位控 制位 这个指令不改变 DDRAM 的内 容 功能 设定 00001DLXREXX DL 0 1 4 8 位数据 RE 1 扩充指令操作 RE 0 基本指令操作 设定 CGRAM 地址 0001AC5 AC4 AC3 AC2 AC1 AC0 设定 CGRAM 地址 设定 DDRAM 地址 0010AC5 AC4 AC3 AC2 AC1 AC0 设定 DDRAM 地址 显示位址 第一行 80H 87H 第二行 90H 97H 读取忙 标志和 地址 01BFAC6 AC5 AC4 AC3 AC2 AC1 AC0 读取忙标志 BF 可以确认内部动 作是否完成 同时可以读出地址计 数器 AC 的值 写数据 到 RAM 10数据将数据 D7 D0 写入到内部的 RAM DDRAM CGRAM IRAM GRAM 读出 RAM 的 值 11数据从内部 RAM 读取数据 D7 D0 DDRAM CGRAM IRAM GRAM 18 表 9 指令表 2 RE 1 扩充指令 指 指 令 码功 能 令RSR WD7D6D5D4D3D2D1D0 待命 模式 0000000001 进入待命模式 执行其他 指令都棵终止 待命模式 卷动地址 开关开启 000000001SR SR 1 允许输入垂直卷动 地址 SR 0 允许输入IRAM和 CGRAM地址 反白 选择 00000001R1R0 选择 2 行中的任一行作 反白显示 并可决定反 白与否 初始值 R1R0 00 第一次设定 为反白显示 再次设定 变回正常 睡眠 模式 0000001SLXX SL 0 进入睡眠模式 SL 1 脱离睡眠模式 扩充 功能 设定 00001CLXREG0 CL 0 1 4 8 位数据 RE 1 扩充指令操作 RE 0 基本指令操作 G 1 0 绘图开关 设定绘 图 RAM 地址 001 0 AC6 0 AC5 0 AC4 AC3 AC3 AC2 AC2 AC1 AC1 AC0 AC0 设定绘图 RAM 先设定垂直 列 地址 AC6AC5 AC0 再设定水平 行 地址 AC3AC2AC1AC0 将以上 16 位地址连续写 入即可 备注 当 IC1 在接受指令前 微处理器必须先确认其内部处于非忙碌状态 即 读取 BF 标志时 BF 需为零 方可接受新的指令 如果在送出一个指令前并不检查 BF 标志 那么在前一个指令和这个指令中间必须延长一段较长的时间 即是等待 前一个指令确实执行完成 5 液晶显示模块读写时序图 数据传输过程 19 图 7 8 位和 4 位数据线的传输过程 图 8 串口数据线模式数据传输过程 20 时序图 图 9 MPU 写资料到 ST7920 8 位数据线模式 图 10 MPU 从 ST7920 读资料 8 位数据线模式 串口读写时序 图 11 串口方式下 MPU 写数据到 ST7920 21 6 液晶显示模块应用 1 使用前的准备 先给模块加上工作电压 再按照下图的连接方法调节 LCD 的对比度 使其显 示出黑色的底影 此过程亦可以初步检测 LCD 有无缺段现象 2 字符显示 12864C 1 每屏可显示 4 行 8 列共 32 个 16 16 点阵的汉字 每个显示 RAM 可显示 1 个中文字符或 2 个 16 8 点阵全高 ASCII 码字符 即每屏最多可实现 32 个中文字符或 64 个 ASCII 码字符的显示 12864C 1 内部提供 128 2 字节的 字符显示 RAM 缓冲区 DDRAM 字符显示是通过将字符显示编码写入该字符显 示 RAM 实现的 根据写入内容的不同 可分别在液晶屏上显示 CGROM 中文字 库 HCGROM ASCII 码字库 及 CGRAM 自定义字形 的内容 三种不同字符 字型的选择编码范围为 0000 0006H 其代码分别是 0000 0002 0004 0006 共 4 个 显示自定义字型 02H 7FH 显示半宽 ASCII 码字符 A1A0H F7FFH 显示 8192 种 GB2312 中文字库字形 字符显示 RAM 在液 晶模块中的地址 80H 9FH 字符显示的 RAM 的地址与 32 个字符显示区域有着 一一对应的关系 其对应关系如下表 10 所示 表 10 液晶模块地址 80H81H82H83H84H85H86H87H 90H91H92H93H94H95H96H97H 88H89H8AH8BH8CH8DH8EH8FH 98H99H9AH9BH9CH9DH9EH9FH 3 图形显示 先设垂直地址再设水平地址 连续写入两个字节的资料来完成垂直与水平的坐标 地址 垂直地址范围 AC5 AC0 水平地址范围 AC3 AC0 绘图 RAM 的地址计数器 AC 只会对水平地址 X 轴 自动加一 当水平地址 0FH 时会重新设为 00H 但并不会对垂直地址做进位自动加一 故当连续写入 多笔资料时 程序需自行判断垂直地址是否需重新设定 GDRAMGDRAM 的坐标地址与 资料排列顺序如下图 22 图 12 坐标地址与资料排列顺序 4 应用说明 用 12864C 1 显示模块时应注意以下几点 欲在某一个位置显示中文字符时 应先设定显示字符位置 即先设定显示地 址 再写入中文字符编码 显示 ASCII 字符过程与显示中文字符过程相同 不过在显示连续字符时 只 须设定一次显示地址 由模块自动对地址加 1 指向下一个字符位置 否则 显示的字符中将会有一个空 ASCII 字符位置 当字符编码为 2 字节时 应先写入高位字节 再写入低位字节 模块在接收指令前 向处理器必须先确认模块内部处于非忙状态 即读取 BF 标志时 BF 需为 0 方可接受新的指令 如果在送出一个指令前不检查 BF 标志 则在前一个指令和这个指令中间必须延迟一段较长的时间 即等待前 一个指令确定执行完成 指令执行的时间请参考指令表中的指令执行时间说 明 RE 为基本指令集与扩充指令集的选择控制位 当变更 RE 后 以后的指令集将维持在最后的状态 除非再次变更 RE 位 否则使用相同 指令集时 无需每次均重设 RE 位 7 LCD1602 液晶显示电路设计 以上我们完成了对 LCD12864 的基本特征 模块接口 控制器接口信号说明 模块指令 读写时序的学习 根据 LCD 读写的时序模拟总线的方式与单片机进 行数据的通讯 首先将数据从 I O 口读入或送出 再选择 R W 和 RS 的电平进 行不同的操作 在使能端 E 下降沿时触发数据的读入或送出 如图 13 所示 23 图 13 液晶显示模块与单片机引脚的连接 网络标号 3 4 5 闹铃电路 当系统显示当前时间与设置的闹铃时间相同时 闹铃自动闹铃 设定的闹 铃时间只可设定时和分 当前时间不断与设定的闹铃时间比较 不相等时不产 生任何现象 一旦相等 输出一个高电平使三极管导通 从而使蜂鸣器工作 闹铃起作用 闹铃电路如图 14 所示 24 图 14 闹铃电路 25 4 软件设计 4 1 系统软件设计 整个软件系统采用模块化思想 把独立式键盘编程模块 LCD12864 DS1302 的驱动程序分模块编写 在功能程序中调用 采用这种方法 不仅使程序模块化 使程序结构层次分明 便于管理和维护 同时可方便以后 开发的调用 而不必关心底层驱动是如何实现的 这样缩短了开发周期 开发 效率大大提高 按键处理中采用采用网状多级状态结构的编程方法 4 2 系统主程序的流程图 流程图如下 26 Y Y N 开始 LCD12864 初始化 DS1302 初始化 读取 DS1302 的静态 RAM 中的时间和闹铃时间 标记 Down 1 键盘扫描 进入设置状态 退出 标记 Down 0 调用读取时间函数并 显示时间 定时中断初始化 键盘扫描 闹钟时间到 N N Y N 图 15 系统主程序的流程 27 5 系统仿真测试 5 1 仿真软件简介 1 Keil uVision2 程序编译 Keil uVision2 是目前使用广泛的单片机开发软件 它集成了源程序编 辑和程序调试于一体 支持汇编 C PL M 语言 它是德国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统 使用接近于 传统 c 语言的语法来开发 与汇编相比 C 语言在功能上 结构性 可读性 可维护性上有明显的优势 因而易学易用 而且大大的提高了工作效率和项 目开发周期 他还能嵌入汇编 您可以在关键的位置嵌入 使程序达到接近 于汇编的工作效率 KEILC51 标准 C 编译器为 8051 微控制器的软件开发提 供了 C 语言环境 同时保留了汇编代码高效 快速的特点 C51 编译器的功 能不断增强 使你可以更加贴近 CPU 本身 及其它的衍生产品 C51 已被 完全集成到 uVision2 的集成开发环境中 这个集成开发环境包含 编译器 汇编器 实时操作系统 项目管理器 调试器 uVision2 IDE 可为它们提 供单一而灵活的开发环境 2 protuse 仿真 Protues 软件是英国 Labcenter electronics 公司出版的 EDA 工具软 件 它不仅具有其它 EDA 工具软件的仿真功能 还能仿真单片机及外围器件 它是目前最好的仿真单片机及外围器件的工具 虽然目前国内推广刚起步 但已受到单片机爱好者 从事单片机教学的教师 致力于单片机开发应用的 科技工作者的青睐 Proteus 是世界上著名的 EDA 工具 仿真软件 从原 理图布图 代码调试到单片机与外围电路协同仿真 一键切换到PCB 设计 真正实现了从概念到产品的完整设计 是目前世界上唯一将电路仿真软件 PCB 设计软件和虚拟模型仿真软件三合一的设计平台 其处理器模型支持 8051 HC11 PIC10 12 16 18 24 30 DsPIC33 AVR ARM 8086 和 MSP430 等 2010 年即将增加 Cortex 和 DSP 系列处理器 并持续增加其他 系列处理器模型 在编译方面 它也支持IAR Keil 和 MPLAB 等多种编译 5 2 仿真步骤 通过以上对各模块流程图的绘制 在软件 Keil uVision2 下编写好各模块 的 c 语言程序 并调试成功生成 HEX 文件 用 protues 软件绘制出该系统的各 28 模块及其外围电路 将 keil 软件中生成的 HEX 文件导入 AT89S52 单片机中 图 16 系统仿真图 图 17 生成 HEX 文件 29 将生成的 HEX 文件导入单片机 图 18 仿真结果 30 6 测试与结果分析 6 1 硬件测试结果 设计完成后 给系统上电 液晶显示屏显示结果如图 19 所示 图 19 液晶显示结果 调节 10K 电位器 R4 可调整液晶显示屏的亮度 调整到合适亮度后 按控制 按钮 光标会从阳历年位开始闪烁 进入设定调整状态 此时按加按钮 当前 数字就可改变 按一次释放 数字加 1 按键为释放后有效 此时 调整的位 一直在闪烁 直到再次按光标移动控制位 光标跳到下一位闪烁 调整顺序依 次为 时间秒 分 时 星期 日 月 年 闹钟分 时 当全部参数调整完 毕后 按退出按钮 光标停止闪烁 退出设定调整状态 万年历开始正常工作 调试分为硬件调试和软件调试 硬件调试主要是检测硬件电路是否有短路 断路 虚焊等 DS1302 的硬件电路很简单 只通过 3 根线与单片机相连 很容 易检测 主要是检查其引脚 如晶振和电源等是否接好 另外可以通过软件来 调试硬件 如为了测试显示电路连接是否正确 可以编写一个简单的显示程序 来测试它 接下来可进行软件调试 可以编写只含 DS1302 的计时和读写程序 显示程序 测试 DS1302 是否正常工作 计时器最关键的是计时的精度 电子万年历中 DS1302 电路使用专用的晶振 经测试制作的电子万年历 一星期快了 3s 左右 误差较大 实验设计中可换用 标准晶振或用软件进行修正 31 6 2 软件测试 电子万年历是多功能的数字型 可以看当前日期 时间 电子万年历功能很多 所以对于它的程序也较为复杂 所以在编写程序和调试时出现了相对较多的问题 最后经过多次的模块子程序的修改 一步一步的完成 最终解决了软件 在软 件的调试过程中遇到的主要问题是 输入程序后 LCD 液晶显示屏显示亮度不好 解决 一遍旋转 10K 欧的滑动变阻器 一遍观看 LCD 显示屏 知道看到合适的 亮度为止 6 3 测试结果分析与结论 6 3 1 测试结果分析 1 在测试中遇到 LCD 液晶显示屏为不显示时 首先使用试测仪对电路进行测 试 观察是否存在漏焊 虚焊 或者元件损坏 滑动变阻器器没有调好 查看写入 的程序是否正确无误 对程序进行认真修改 6 3 2 测试结论 经过多次的反复测试与分析 可以对电路的原理及功能更加熟悉 同时提高了设 计能力与及对电路的分析能力 同时在软件的编程方面得到更到的提高 对编程 能力得到加强 同时对所学的知识得到很大的提高与巩固 32 参考文献 1 单片机的 C 语言应用程序设计 北京航空航天大学出版社 2 彭小军 用单片机实现电子钟 J 新余高专学报 2004 年 4 月第 9 卷第 2 期 3 付家才 单片机控制工程实践技术 M 北京 化学工业出版社 2004 3 4 刘军等 单片机原理与接口技术 M 上海 华东理工大学出版社 2006 2 5 刘守义 单片机应用技术 M 西安 西安电子科技大学出版社 2002 98 107 6 刘勇 数字电路 M 北京 电子工业出版社 2004 111 118 7 康光华 电子技术基础 模拟部分 M 第五版 高等教育出版社 2005 247 261 8 李晓静等 液晶显示控制器与单片机的接口及编程 J 电子技术 2004 年 第 6 期 9 谭浩强 C 程序设计 M 第三版 北京 清华大学出版社 2005 256 278 10 周润景 张丽娜 刘印群 PROTEUS 入门实用教程 M 北京 机械工业出 版社 2007 314 325 11 戴佳 戴卫恒 51 单片机 C 语言应用程序设计实例精讲 M 北京 电子 工业出版社 2006 231 246 33 致谢 本电子钟具有如下优点 走时准确 掉电长时间后时间不需要重新设置 功耗低 操作界面简单 操作简便 最大的特点是人性化的设计 本课程设计从软件设计到仿真到硬件制作和调试 我收获不小 特别是在 仿真编程和硬件调试方面 在编程过程中一直灌输给自己 编程是一种思想 一定要用编程的思想去编程 如模块化思想 文件管理思想 头文件和接口函 数的思想 设计程序时要考虑到程序的可扩充性 兼容性 可维护性以及重用 性 并归纳和总结各种功能算法 在编程方面有了一定的进步 在使用仿真软 件时得到了一些启示 仿真只是提供一个实现的大概参考 真正的功能实现仍 需在实际硬件调试中完善 在这次毕业设计过程中 我知道光靠我个人的力量是不可达到的 同时要 有学校给我们这个机会 非常感谢学校给我这个机会 培训的机会 让我有一 个动手的机会 让我得到实践的机会 经过此次的毕业设计 我受益非浅 也翻阅了大量的书籍和浏览了无数的 网页 这次的设计是我的一次实践 也刚刚打开科技的大门 今后我还想拥有 更多的机会去实践 让我得到更多的锻炼 感谢老师在本次毕业设计中的耐心指导 引导我 让我学会了解决问题的 方法 感谢同学们的热心帮助 才有这次毕业设计的圆满完成 感谢系各位老 师对我的教导和指引 通过本次毕业设计 对我三年里所学的知识有了一个系统的掌握与理解 为我今后的学习与工作打下了扎实的基本功 使我能更好地适应去做相关技术 工程的项目开发与应用 34 附录 附录一 系统程序如下 include include 位定义 sbit lb P2 0 sbit io P3 3 ds1302 的串行数据 I O 口 sbit clk P3 2 ds1302 的时钟口 sbit rst P3 4 ds1302 的复位口 sbit busy P0 7 lcd 忙标志位 sbit rs P3 0 lcd 数据状态位 sbit rw P3 1 lcd 读写控件位 sbit re P3 5 lcd 使能位 sbit menu P1 0 菜单 sbit inc P1 1 加一 sbit dec P1 2 减一 sbit quit P1 3 退出 全局变量 unsigned char cmin chour sec min hour day month week year 闹分 闹时 秒 分 时 日 月 星期 年 char newclockhour newclockmin newsec newmin newhour newday newmonth newwee k newyear 重写数据用的秒 分 时 unsigned char clockmin clockhour bksec bkmin bkhour bkweek bkday bkmonth bkyear dow 35 n count 闪烁标志位 unsigned char flag daflag dflag 加减标志位 时间日期标志位 unsigned char timete 8 timede 10 clocktimete 5 分别存放 时分秒 年月日 闹铃时分 unsigned char week1 3 Sun 星期日 unsigned char week2 3 Mon 一 unsigned char week3 3 Tes 二 unsigned char week4 3 Wed 三 unsigned char week5 3 Thu 四 unsigned char week6 3 Fri 五 unsigned char week7 3 Sta 六 unsigned char name 欢迎使用万年历 unsigned char name1 闹铃 函数申明 void delay unsigned char ms 延时 void writebyte unsigned char wdat 写一字节到 ds1302 unsigned char readbyte 从 ds1302 中读一字节 void writedat unsigned char waddr unsigned char x 写数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字营销 课件 第1章 绪论
- 千之家加盟合同范本
- 委托销售珠宝合同范本
- 玉产品采购合同范本
- 医院工程就业合同范本
- 房屋按揭银行合同范本
- 防水供销合同范本
- 居委 调解 追债合同范本
- 连锁餐饮合伙合同范本
- 社区安全知识培训教材课件
- 企业融资过程中的税务问题解析
- 2025年广西职业院校技能大赛中职组(婴幼儿保育赛项)参考试题库及答案
- 足球俱乐部股权转让协议
- 高中主题班会 高一下学期《安全教育-开学第一课》主题班会课件
- 职业健康知识培训
- 电子商务在文化创意产业的应用与案例
- 龋病龋病的临床表现及诊断讲解
- DB50T 1342-2022 预制菜生产加工行为规范
- 设备吊装搬运施工方案范文
- 医务人员职业暴露与防护讲课
- 全过程造价咨询服务的质量承诺及保证措施
评论
0/150
提交评论