已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
芜湖职业技术学院论文 目录目录 摘摘 要要 1 1 第一章第一章 引言引言 2 2 1 11 1 设计任务设计任务 2 1 21 2 设计要求设计要求 2 第二章第二章 总体方案论证与设计总体方案论证与设计总体方案论证与设计总体方案论证与设计 3 3 第三章第三章 系统硬件设置系统硬件设置 4 4 3 13 1 AT89C51 单片机简介单片机简介 4 3 23 2 时钟模块设计时钟模块设计 7 3 2 13 2 1 DS1302DS1302 特性介绍特性介绍 7 3 2 23 2 2 DS1302DS1302 引脚介绍引脚介绍 7 3 2 33 2 3 DS1302DS1302 有关日历 时间的寄存器有关日历 时间的寄存器 9 3 2 43 2 4 DS1302DS1302 与单片机接口电路与单片机接口电路 9 3 33 3 显示模块设计显示模块设计 10 3 3 13 3 1 PG12864LCDPG12864LCD 的特性介绍的特性介绍 11 3 3 23 3 2 LCD12864LCD12864 引脚介绍引脚介绍 12 3 3 33 3 3 LCD12864LCD12864 的原理简图的原理简图 13 3 3 43 3 4 1286412864 内部功能器件及相关功能内部功能器件及相关功能 13 3 3 53 3 5 1286412864 液晶与单片机接口电路液晶与单片机接口电路 16 3 43 4 设置模块设置模块 18 3 53 5 振荡电路振荡电路 19 3 63 6 复位电路复位电路 20 第四章第四章 系统软件设计系统软件设计 2121 4 14 1 时钟函数模块时钟函数模块 21 4 1 14 1 1 实现功能实现功能 22 4 1 24 1 2 函数设计函数设计 22 4 24 2 指针时钟设计指针时钟设计 28 4 2 14 2 1 实现功能实现功能 28 4 2 24 2 2 函数设计函数设计 28 4 2 34 2 3 小结小结 30 芜湖职业技术学院论文 2 4 34 3 显示函数模块显示函数模块 31 4 3 14 3 1 实现功能实现功能 31 4 3 24 3 2 函数设计函数设计 31 4 3 34 3 3 小结小结 33 4 44 4 按键函数模块按键函数模块 33 4 4 14 4 1 实现功能实现功能 33 4 4 24 4 2 函数设计函数设计 33 4 4 34 4 3 小结小结 33 4 54 5 主函数模块主函数模块 33 附录附录 1 1 元器件表元器件表 5252 附录附录 2 2 仿真图仿真图 5353 附录附录 3 3 参考文献参考文献 5454 芜湖职业技术学院论文 1 摘摘 要要 单片机就是微控制器 是面向应用对象设计 突出控制功能的芯片 单片机 接上晶振 复位电路和相应的接口电路 装载软件后就可以构成单片机应用系统 本设计就是应用单片机强大的控制功能制作而成的指针式电子钟 该指针式电子 钟实现如下功能 液晶屏模拟表盘与时分秒指针显示当前时钟 K1 键用于选择 调节对象 K2 键用于调整时分秒 在按下 K4 键时确定调节值 时钟继续运行 本设计采用的是 AT89C51 单片机 AT89C51 单片机内部带有定时 计数功能 此定时功能是通过对外部晶振的脉冲进行计数 从而达到计时功能 只要使用 11 0592 的晶振就能实现零误差的计时 因此可以利用此功能实现计时 芯片采 用 DALLAS 公司的涓细充电时钟芯片 DS1302 该芯片通过简单的串行通信与单 片机进行通信 时钟 日历电路能够实时提供年 月 日 时分 秒信息 采用 双电源供电 当外部电源掉电时能够利用后备电池准确计时 显示器件采用 LCD12864 液晶 12864 是一种图形点阵液晶显示器 它主要由 行驱动器 列驱动器及 128 64 全点阵液晶显示器组成 可完成图形显示 也可 以显示 8 4 个 16 16 点阵 汉字 通过此次设计能够更加牢固的掌握单片机的应用技术 增强动手能力 硬件 设计能力以及软件设计能力 关键词关键词 单片机 AT89C51 单片机 时钟芯片 DS1302 LCD12864 液晶 芜湖职业技术学院论文 2 第一章第一章 引言引言 本例采用 PG12864LCD 液晶作为显示元件 液晶屏模拟表盘与时分秒指针 显示当前时钟 该指针式电子钟实现如下功能 液晶屏模拟表盘与时分秒指针显 示当前时钟 K1 键用于选择调节对象 K2 键用于调整时分秒 在按下 K4 键时 确定调节值 时钟继续运行 本例程序包含 main c lcd 12864 c lcd 12864 h 三个 文件 1 11 1 设计任务设计任务 利用单片机等实现一个简单的指针式电子钟 1 21 2 设计要求设计要求 a 实现时分秒指针式显示功能 b 用三个按键来实现调整时分秒的功能 芜湖职业技术学院论文 3 第二章第二章 总体方案论证与设计总体方案论证与设计总体方案论证与设计总体方案论证与设计 组成框图中包含显示模块 控制器 时间模块 设置模块 显示模块有 LCD12864 来控制显示 整个代码实现主要由控制器来实现 时间模块有 DS1302 来实现 可以显示系统时间 也可自行调整 设置模块为按键处理 具 体模块分析在相关的软硬件设计中详细介绍 本系统以 AT89C51 单片机为控制核心 通过与 DS1302 信获取实时时间 并 将得到的数据通过 LCD12864 液晶显示出来 同时通过相应的按键调整相应的值 因此本设计可分为一下模块 显示模块 实时时间计算模块 设置模块 时间设 置模块 下面对各个模块逐一进行论证分析 芜湖职业技术学院论文 4 第三章第三章 系统硬件设置系统硬件设置 3 3 1 1 AT89C51 单片机简介单片机简介 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器 FPEROM Flash Programmable and Erasable Read Only Memory 的低电压 高性能 CMOS8 位微 处理器 俗称单片机 该器件采用 ATMEL 高密度非易失存储器制造技术制造 与 工业标准的 MCS 51 指令集和输出管脚相兼容 由于将多功能 8 位 CPU 和闪烁存 储器组合在单个芯片中 ATMEL 的 AT89S51 是一种高效微控制器 为很多嵌入式 控制系统提供了一种灵活性高且价廉的方案 VCC 供电电压 GND 接地 P0 口 P0 口为一个 8 位漏级开路双向 I O 口 每脚可吸收 8TTL 门电流 当 P1 口的管脚第一次写 1 时 被定义为高阻输入 P0 能够用于外部程序数据存储 器 它可以被定义为数据 地址的第八位 在 FIASH 编程时 P0 口作为原码输入 口 当 FIASH 进行校验时 P0 输出原码 此时 P0 外部必须被拉高 P1 口 P1 口是一个内部提供上拉电阻的 8 位双向 I O 口 P1 口缓冲器能接 芜湖职业技术学院论文 5 收输出 4TTL 门电流 P1 口管脚写入 1 后 被内部上拉为高 可用作输入 P1 口 被外部下拉为低电平时 将输出电流 这是由于内部上拉的缘故 在 FLASH 编程 和校验时 P1 口作为第八位地址接收 P2 口 P2 口为一个内部上拉电阻的 8 位双向 I O 口 P2 口缓冲器可接收 输出 4 个 TTL 门电流 当 P2 口被写 1 时 其管脚被内部上拉电阻拉高 且作 为输入 并因此作为输入时 P2 口的管脚被外部拉低 将输出电流 这是由于 内部上拉的缘故 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行 存取时 P2 口输出地址的高八位 在给出地址 1 时 它利用内部上拉优势 当对外部八位地址数据存储器进行读写时 P2 口输出其特殊功能寄存器的内容 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号 P3 口 P3 口管脚是 8 个带内部上拉电阻的双向 I O 口 可接收输出 4 个 TTL 门电流 当 P3 口写入 1 后 它们被内部上拉为高电平 并用作输入 作 为输入 由于外部下拉为低电平 P3 口将输出电流 ILL 这是由于上拉的缘故 P3 口除了作为一般的 I O 口外 更重要的用途是他的第二功能 如下所示 P3 0 RXD 串行输入口 P3 1 TXD 串行输出口 P3 2 INT0 外部中断 0 P3 3 INT1 外部中断 1 P3 6 WR 外部数据寄存器写选通 P3 7 RD 外部数据寄存器读选通 P3 口同时为闪烁编程和编程校验接受一些控制信号 RST 复位输入 当振荡器复位器件时 要保持 RST 脚两个机器周期的高电 平时当 8051 通电 时钟电路开始工作 在 RESET 引脚上出现 24 个时钟周期以上 的高电平 系统即初始复位 初始化后 程序计数器 PC 指向 0000H P0 P3 输出 口全部为高电平 堆栈指钟写入 07H 其它专用寄存器被清 0 RESET 由高电 芜湖职业技术学院论文 6 平下降为低电平后 系统即从 0000H 地址开始执行程序 然而 初始复位不改变 RAM 包括工作寄存器 R0 R7 的状态 特殊功能寄存器 初始态 特殊功能寄存器 初始态 ACC 00H B 00H PSW 00H SP 07H DPH 00H TH0 00H DPL 00H TL0 00H IP xxx00000B TH1 00H IE 0 xx00000B TL1 00H TMOD 00H TCON 00H SCON xxxxxxxxB SBUF 00H P0 P3 1111111B PCON 0 xxxxxxxB 8051的初始态 表2 1 ALE PROG 当访问外部存储器时 地址锁存允许的输出电平用于锁存地址的 地位字节 在 FLASH 编程期间 此引脚用于输入编程脉冲 在平时 ALE 端以不 变的频率周期输出正脉冲信号 此频率为振荡器频率的 1 6 因此它可用作对外 部输出的脉冲或用于定时目的 然而要注意的是 每当用作外部数据存储器时 将跳过一个 ALE 脉冲 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0 此时 ALE 只有在执行 MOVX MOVC 指令是 ALE 才起作用 另外 该引脚被略微拉高 如果微处理器在外部执行状态 ALE 禁止 置位无效 PSEN 外部程序存储器的选通信号 在由外部程序存储器取指期间 每个机 器周期两次 PSEN 有效 但在访问外部数据存储器时 这两次有效的 PSEN 信号 将不出现 芜湖职业技术学院论文 7 EA VPP 当 EA 保持低电平时 则在此期间外部程序存储器 0000H FFFFH 不管是否有内部程序存储器 注意加密方式 1 时 EA 将内部锁定为 RESET 当 EA 端保持高电平时 此间内部程序存储器 在 FLASH 编程期间 此引脚也用于 施加 12V 编程电源 VPP XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2 来自反向振荡器的输出 振荡器特性 XTAL1 和 XTAL2 分别为反向放大器的输入和输出 该反向放大 器可以配置为片内振荡器 石晶振荡和陶瓷振荡均可采用 如采用外部时钟源驱 动器件 XTAL2 应不接 有余输入至内部时钟信号要通过一个二分频触发器 因 此对外部时钟信号的脉宽无任何要求 但必须保证脉冲的高低电平要求的宽度 芜湖职业技术学院论文 8 3 23 2 时钟模块设计时钟模块设计 实时时间计算模块 方案 1 AT89C51 单片机内部带有定时 计数功能 此定时功能是通过对 外部晶振的脉冲进行计数 从而达到计时功能 只要使用 11 0592 的晶振就能实 现零误差的计时 因此可以利用此功能实现计时 但因为只有单一的计时功能要 实现 万年历 的功能需要较复杂的程序 而且如果单片机掉电无法继续进行计 时 所以使用不便 方案 2 DS1302 是美国 DALLAS 公司推出的一种高性能 低功耗的实 时时钟芯片 附加 31 字节静态 RAM 采用 SPI 三线接口与 CPU 进行通信 并 可采用突发方式一次传送多个字节的时钟信号和 RAM 数据 实时时钟可提供秒 分 时 日 星期 月和年 一个月小与 31 天时可以自动调整 且具有闰年补 偿功能 工作电压宽达 2 5 5 5V 采用双电源供电 主电源和备用电源 可设 置备用电源充电方式 提供了对后备电源进行涓细电流充电的能力 利用单片机 强大的控制功能就可实现实时计时的功能 而且消耗的系统资源少 程序简单 综合上述两种方案 宜采用方案 2 实现实时计时功能 3 2 13 2 1 DS1302DS1302 特性介绍特性介绍 DS1302 是美国 DALLAS 公司推出的一种高性能 低功耗的实时时钟芯片 附加 31 字节静态 RAM 采用 SPI 三线接口与 CPU 进行通信 并可采用突发方 式一次传送多个字节的时钟信号和 RAM 数据 实时时钟可提供秒 分 时 日 星期 月和年 一个月小与 31 天时可以自动调整 且具有闰年补偿功能 工作 电压宽达 2 5 5 5V 采用双电源供电 主电源和备用电源 可设置备用电源充 电方式 提供了对后备电源进行涓细电流充电的能力 利用单片机强大的控制功 能就可实现实时计时的功能 而且消耗的系统资源少 程序简单 芜湖职业技术学院论文 9 DS1302 可以对年 月 日 星期 时 分 秒进行计时 且具有闰年补偿 等多种功能 DS1302 有 12 个寄存器 其中有 7 个寄存器与日历 时钟相关 存 放的数据位为 BCD 码形式 采用单片机计时 一方面需要采用计数器 占用硬 件资源 另一方面需要设置中断 查询等 同样耗费单片机的资源 而采用时钟 芯片 DS1302 3 2 23 2 2 DS1302DS1302 引脚介绍引脚介绍 图 3 1 8 Vcc1 备用电池端 1 Vcc2 5V 电源 当 Vcc2 Vcc1 0 2V 时 由 Vcc2 向 DS1302 供电 当 Vcc2 Vcc1 时 由 Vcc1 向 DS1302 供电 7 SCLK 串行时钟 输入 6 I O 数据输入输出口 5 CE RST 复位脚 2 3 X1 X2 是外接晶振脚 32 768KHZ 的晶振 4 地 GND 芜湖职业技术学院论文 10 3 2 33 2 3 DS1302DS1302 有关日历 时间的寄存器有关日历 时间的寄存器 表 3 1 3 2 43 2 4 DS1302DS1302 与单片机接口电路与单片机接口电路 图 3 2 由于 DS1302 是依靠外部晶振与其内部的电容配合来产生时钟脉冲 因为 DS1302 在芯片本身已经集成了 6pF 电容 所以 为了获得稳定的可靠的时钟 必须选用具有 6pF 负载电容的晶振 当它工作于所要求的负载电容时 所以要选 用 32768HZ 的晶振 石英晶振用 12M 因为一个机器周期为 1 12 时钟周期 所以这样用 12M 的 话 一个时钟周期为 12us 那么定时器计一次数就是 1us 了 电容范围是在 20 40pf 之间的都行 芜湖职业技术学院论文 11 表 3 2 引脚号DS1302AT89C51 1I OP1 0 2SCLKP1 1 3RSTP1 2 3 33 3 显示模块设计显示模块设计 液晶显示模块 方案 1 数码管是利用发光二极管的特性组合而成数字显示器件 通过 控制相应的二极管的状态显示相应的数字 要使数码管正常显示就得有驱动电路 驱动相应的段码 数码管的现实方式可分为静态显示和动态显示 静态显示方式 只适合显示单个的数字 因此本设计应采用动态显示方式 由于动态显示方式利 用的是人眼视觉暂留的特性 扫描的时间应不大于 20 毫秒 占用系统资源大 而且显示的个数和字型有限 在本设计中不易采用 芜湖职业技术学院论文 12 方案 2 12864 是一种图形点阵液晶显示器 它主要由行驱动器 列驱动器 及 128 64 全点阵液晶显示器组成 可完成图形显示 也可以显示 8 4 个 16 16 点阵 汉字 该类液晶显示模块 即 KS0108B 及其兼容控制驱动器 的 指令系统比较简单 总共只有七种 关于行列和页的解释 从上向下共 64 行 每 8 行为一页 共八页 从左到右共 128 列 左半屏 0 到 63 列 右半屏 0 到 63 列 显示时 每页以列为单位显示 综合比较上述两种方案 应采用 12864 液晶组成本设计的显示模块 3 3 13 3 1 PG12864LCDPG12864LCD 的特性介绍的特性介绍 PG12864LCD 是像素可寻址的图形液晶显示屏模块 芯片特性 1 工作电压为 5V 可自带驱动 LCD 所需的负电压 2 全屏幕点阵 点阵数为 128 列 64 行 可显示 8 行 4 行个 16 16 点阵 汉字 也可完成图像 字符的显示 3 与 CPU 接口采用 5 条位控制总线和 8 位并行数据总线输入输出 4 内部有显示数据锁存器 自带 EL 驱动 5 简单的操作指令 显示开关设置 显示起始行设置 地址指针设置和数据 读 写等指令 芜湖职业技术学院论文 13 3 3 23 3 2 LCD12864LCD12864 引脚介绍引脚介绍 表 3 3 管脚 号 管脚名称 LEVER 管脚功能描述 1VSS0 电源地 2VDD 5 0V 电源电压 3V0 液晶显示器驱动电压 4D I RS H L D I H 表示 DB7 DB0 为显示数据 D I L 表示 DB7 DB0 为显示指令数据 5R WH L R W H E H 数据被读到 DB7 DB0R W L E H L 数据被写 到 IR 或 DR 6EH L R W L E 信号下降沿锁存 DB7 DB0R W H E H DDRAM 数据读 到 DB7 DB0 7DB0H L 数据线 8DB1H L 数据线 9DB2H L 数据线 10DB3H L 数据线 11DB4H L 数据线 12DB5H L 数据线 13DB6H L 数据线 14DB7H L 数据线 15CS1H L H 选择芯片 右半屏 信号 16CS2H L H 选择芯片 左半屏 信号 17RETH L 复位信号 低电平复位 18VOUT 10V LCD 驱动负电压 19LED LED 背光板电源 20LED LED 背光板电源 芜湖职业技术学院论文 14 3 3 33 3 3 LCD12864LCD12864 的原理简图的原理简图 图 3 3 通过 DB0 DB7 数据线和 AT89C51 连接 对应的管脚必须有效 在显示的时 候 要通过列驱动和行驱动来控制液晶屏显示 在各个驱动时 对应的都有相应 的控制器来控制 显示部分分为左右半屏 当 CS0 为有效电平时 左半屏显示 CS1 为有效电 平时 右半屏显示 3 3 43 3 4 1286412864 内部功能器件及相关功能内部功能器件及相关功能 1 指令寄存器 IR IR 是用于寄存指令码 与数据寄存器数据相对应 当 D I 0 时 在 E 信号 下降沿的作用下 指令码写入 IR 2 数据寄存器 DR DR 是用于寄存数据的 与指令寄存器寄存指令相对应 当 D I 1 时 在下 降沿作用下 图形显示数据写入 DR 或在 E 信号高电平作用下由 DR 读到 DB7 DB0 数据总线 DR 和 DDRAM 之间的数据传输是模块内部自动执行的 芜湖职业技术学院论文 15 3 忙标志 BF BF 标志提供内部工作情况 BF 1 表示模块在内部操作 此时模块不接受外 部指令和数据 BF 0 时 模块为准备状态 随时可接受外部指令和数据 利用 STATUS READ 指令 可以将 BF 读到 DB7 总线 从检验模块之工作状态 4 显示控制触发器 DFF 此触发器是用于模块屏幕显示开和关的控制 DFF 1 为开显示 DISPLAY OFF DDRAM 的内容就显示在屏幕上 DFF 0 为关显示 DISPLAY OFF DDF 的状态是指令 DISPLAY ON OFF 和 RST 信号控制的 5 XY 地址计数器 XY 地址计数器是一个 9 位计数器 高 3 位是 X 地址计数器 低 6 位为 Y 地 址计数器 XY 地址计数器实际上是作为 DDRAM 的地址指针 X 地址计数器为 DDRAM 的页指针 Y 地址计数器为 DDRAM 的 Y 地址指针 X 地址计数器是没有记数功能的 只能用指令设置 Y 地址计数器具有循环记数功能 各显示数据写入后 Y 地址自动加 1 Y 地 址指针从 0 到 63 6 显示数据 RAM DDRAM DDRAM 是存储图形显示数据的 数据为 1 表示显示选择 数据为 0 表示显示 非选择 DDRAM 与地址和显示位置的关系见 DDRAM 地址表 7 Z 地址计数器 Z 地址计数器是一个 6 位计数器 此计数器具备循环记数功能 它是用于显 示行扫描同步 当一行扫描完成 此地址计数器自动加 1 指向下一行扫描数据 RST 复位后 Z 地址计数器为 0 Z 地址计数器可以用指令 DISPLAY START LINE 预置 因此 显示屏幕的起 始行就由此指令控制 即 DDRAM 的数据从哪一行开始显示在屏幕的第一行 此模 块的 DDRAM 共 64 行 屏幕可以循环滚动显示 64 行 芜湖职业技术学院论文 16 各功能指令分别介绍如下 显示开 关指令 R WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0 0000111111 0 当 DB0 1 时 LCD 显示 RAM 中的内容 DB0 0 时 关闭显示 2 显示起始行 ROW 设置指令 R WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0 00 11 显示起始行 0 63 该指令设置了对应液晶屏最上一行的显示 RAM 的行号 有规律地改变显示起 始行 可以使 LCD 实现显示滚屏的效果 3 页 PAGE 设置指令 R WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0 00 10111 页号 0 7 显示 RAM 共 64 行 分 8 页 每页 8 行 4 列地址 Y Address 设置指令 R WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0 00 01 显示列地址 0 63 设置了页地址和列地址 就唯一确定了显示 RAM 中的一个单元 这样 MPU 就 可以 用读 写指令读出该单元中的内容或向该单元写进一个字节数据 5 读状态指令 R WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0 10BUSY0ON OFFREST0000 该指令用来查询液晶显示模块内部控制器的状态 各参量含义如下 BUSY 1 内部在工作 0 正常状态 ON OFF 1 显示关闭 0 显示打开 芜湖职业技术学院论文 17 RESET 1 复位状态 0 正常状态 在 BUSY 和 RESET 状态时 除读状态指令外 其它指令均不对液晶显示模块 产生作用 在对液晶显示模块操作之前要查询 BUSY 状态 以确定是否可以对液晶显示 模块进行操作 6 写数据指令 R WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0 01 写数据 读数据指令 R WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0 11 读显示数据 读 写数据指令每执行完一次读 写操作 列地址就自动增一 必须注 意的是 进行读操作之前 必须有一次空读操作 紧接着再读才会读出所要读的 单元中的数据 芜湖职业技术学院论文 18 3 3 53 3 5 1286412864 液晶与单片机接口电路液晶与单片机接口电路 图 3 4 表 3 4 引脚号12864 引脚AT89C51 引脚 1数据线 DB0 DB7P0 0 P0 7 2寄存器选择 CDP2 0 3写 WRP3 6 4读 RDP3 7 5使能端 CEP2 7 6复位 RST低电平 芜湖职业技术学院论文 19 排阻的计算公式 上拉电源 硬件额定电流 单片机输出电流 一 最大值的计算原则 要保证上拉电阻明显小于负载的阻抗 以使高电平 时输出有效 例如 负载阻抗是 10K 供电电压是 5V 如果要求高电平不小于 4 5V 那 么 上拉电阻最大值 R 大 5 4 5 10 5 R 大 1K 也就是最大值 1k 如果超过了 1k 输出的高电平就小于 4 5V 了 二 最小值的计算原则 保证不超过管子的额定电流 如果不是场效应管而 是三极管也可依照饱和电流来计算 例 管子的额定电流 150mA 放大倍数 100 基极限流电阻 10k 工作在 5v 的系统中 那么 算法如下 Ib U R 5 0 7 10 0 47 mA Ic 100 0 47 47mA 小于额定的 150 所以可以按饱和法来算最小值 上拉电阻最小值 R 小 5v 47mA 106 欧姆 如果小于这个电阻 管子就会过饱和而没有意 义了 如果大于这个值 管子的导体电阻就会变大一些 所以太高也不利于低电 平的输出 芜湖职业技术学院论文 20 3 43 4 设置模块设置模块 设置模块采用三个按键与 P3 2 经过与门连接 按键与单片机的接口电路 图 3 5 按键问题 通过与门来控制 程序是中断驱动的 其中 K1 为选择按键 K2 为调整按键 K3 是确定按钮 实现时分秒的调整 相应的引脚接到 P3 0 P3 1 P3 3 上 共同控制电子时钟的调整 选用轻触按钮型号为 XDJT1102S 轻触开关贴系列 芜湖职业技术学院论文 21 3 53 5 振荡电路振荡电路 本设计 51 芯片选用内部振荡器方式 由于本设计的时间由内部定时器中断 与软件计数相结合产生的 所以从计算方便以及系统的效率上考虑 本设计选用 12MHz 频率的晶振 电路原理图如下 图 3 6 AT89C51 的振荡电路 经厂家推荐稳定电路的电容 C1 C2 30pF 10p 附录资料 AT89C51 PDF 第 4 32 页 芜湖职业技术学院论文 22 3 63 6 复位电路复位电路 本设计使用上电复位电路 单片机晶振为 12MHz 起振时间将近 1ms 单片 机 2 个机器周期的时间为 2us 单片机每次上电复位所需的最短延时应该不小于 treset 这里 treset 等 于上电延时与起振延时之和 从实际上讲 延迟一个 treset 往往还不够 不能 够保障单片机有一个良好的工作开端 复位电路把单片机锁定在复位状态上并且维持一个延时 记作 TRST 以便 给予电源电压从上升到稳定的一个等待时间 在电源电压稳定之后 再插入一个 延时 给予时钟振荡器从起振到稳定的一个等待时间 在单片机开始进入运行状 态之前 还要至少推迟 2 个机器周期的延时间 单片机是高电平的时候复位 一 般是用电阻和电容组成的 电容充电的时 RST 复位端为高电平 此时单片机开始 复位 电容充电完成 此时单片机复位完成 由此电容值可取 22uf 电阻值取 10K 详细见附录文件 电容充电时间的 计算方法 pdf 图 3 7 AT89C51 上电复位电路 芜湖职业技术学院论文 23 第四章第四章 系统软件设计系统软件设计 软件设计是本设计的关键 软件程序编写的好坏直接影响着系统运行情况的 良好 因本程序涉及的模块较多 所以程序编写也采用模块化设计 C 语言具有 编写灵活 移植方便 便于模块化设计的特点 所以本系统的软件采用 C51 编写 程序框图如下 芜湖职业技术学院论文 24 4 1 4 14 1 时钟函数模块时钟函数模块 具体实现含有向 DS1302 串行写入一字节即 Write A Byte T0 DS1302 从 DS1302 读取一字节即 Get A Byte FROM DS1302 从 DS1302 指定位置读数据 Read Data 向 DS1302 某地址写入数据 Write DS1302 设置时间 SET DS1302 芜湖职业技术学院论文 25 从 DS1302 获取时间 读取当前时间 GetTime 利用这些函数来实现时间 最终 显示在液晶屏上 可以自行调整 你可以显示系统时间 也可以显示调整时间 具体实现是设置时间函数 4 1 14 1 1 实现功能实现功能 能够显示年月日时分秒和星期 完成了 24 小时和 12 小时之间的切换 并设 有闹钟 闹钟存放于 EEPROM 中 时间和星期以及闹钟均可调 其中闹钟掉电数 据不会丢失 4 1 24 1 2 函数设计函数设计 1 void write a byte to ds1302 uchar x 1 功能 向 DS1302 中写入一字节数据 2 依据 DS1302 时序图 详见 SD1302 技术资料 可知 在启动 DS1302 时每产生一 个下降沿可向 DS1302 中 写入一位数据 芜湖职业技术学院论文 26 3 右图为流程图 2 uchar get a byte from ds1302 1 功能 从 DS1302 中读取一字节数据 2 依据 DS1302 时序图 详见 SD1302 技术资料 可知 在启动 DS1302 时每产生一 个上升沿可向 DS1302 中 读取一位数据 3 右图为流程图 芜湖职业技术学院论文 3 uchar read ds1302 uchar addr 1 功能 从指定的地址中读取一字节数据 2 依据 DS1302 时序图 详见 SD1302 技术资料 可知 在启动 DS1302 时每产生一 个下降沿可向 DS1302 中写入一位数据 在启动 DS1302 时每产生一个上升沿可向 DS1302 中读取一位数据 3 下图为流程图 芜湖职业技术学院论文 28 4 void write ds1302 uchar addr uchar dat 1 功能 向 DS1302 指定地址中写入一字节数据 2 依据 DS1302 时序图 详见 SD1302 技术资料 可知 在启动 DS1302 时每产生一 个下降沿可向 DS1302 中写入一位数据 在启动 DS1302 时每产生一个上升 沿可向 DS1302 中读取一位数据 3 右图为流程图 5 uchar Tran Input uchar value 1 功能 输入数据入转换函数 将十进制转换成 BCD 码 2 依据 转换公式 3 下图为流程图 芜湖职业技术学院论文 29 6 void Gettime 1 功能 读取当前时间 并判断当前是 12 小时显示还是 24 小时显示 2 依据 通过对标志位的判断来确定当前为 12 小时制还是 24 小时制 如果为 12 小 时时要将 DS1302 寄存器内相应位置 1 3 右图为流程图 芜湖职业技术学院论文 7 void set ds1302 1 功能 向 DS1302 中写入初始时间 启动 DS1302 振荡器 判断上下午 2 依据 DS1302 时序图 详见 SD1302 技术资料 3 下图为流程图 8 void format datetime uchar d uchar a 1 功能 将数字转换成字符 2 依据 芜湖职业技术学院论文 31 ASII 码表 9 uchar isleepyear uint y 1 功能 判断是否为闰年 2 依据 闰年的判断方法 10 void Init DS1302 1 功能 启动 DS1302 振荡器 2 依据 由 DS1302 的技术资料知 DS1302 的秒寄存器的最高位为振荡器控制位 向 该位置一即可启动振荡器 11 void DS1302 setProtect bit flag 1 功能 DS1302 寄存器写保护函数 2 依据 由 DS1302 的技术资料知 DS1302 的 0 x80 地址处写一则启动寄存器保护 写零则去除寄存器保护功能 芜湖职业技术学院论文 32 4 24 2 指针时钟设计指针时钟设计 4 2 14 2 1 实现功能实现功能 本文件实现了指针时钟的显示 同时也实现了在 12864 显示器上花点以 画 线以及花圆的功能 4 2 24 2 2 函数设计函数设计 1 void Pixel uchar x uchar y uchar Mode 1 功能 从指定坐标处绘制一个点或擦除 一个点 依据 利用 LCD set XY 确定坐标 然后 2 根据 点在坐标的位置 判断是擦除还是绘 制再使 用 LCD write byte 函数写入数据 3 右图为流程图 2 void Line uchar x1 uchar y1 uchar x2 uchar y2 bit Mode 1 功能 在 lcd 上绘制一条线段 2 依据 利用直线两点式公式在直线点的轨迹上绘制 擦除点以达到绘线的目的 3 右图为流程图 芜湖职业技术学院论文 3 void Clock Plate 1 功能 绘制一个指针时钟的圆盘 2 依据 利用圆的公式找到点的轨迹 在轨迹上绘制点即可实现 3 右图为流程图 4 void Repaint A Hand uchar i 1 功能 根据当前的时间绘制相对应的指针 并擦除原状态的指针 2 依据 芜湖职业技术学院论文 34 利用圆的弧度制与时间的相映射 时间变化弧度也随之变化 从圆心到圆弧 对应时间的位置画出直线就是指针 3 下图为流程图 5 void Display HMS Hand 1 功能 重新绘制秒 分 时针 2 依据 调用 Repaint A Hand 函数设置不同的参数即可实现 6 void Display ClockZhizhen 1 功能 读取时间绘制指针时钟到 lcd 上 芜湖职业技术学院论文 35 2 依据 读取从 ds1302 得到的时间 随时间的变化 指针也随之变化 形成一 个完整的模拟指针时钟 另外还要判断按键扫描的键值是否为退出键的键值 若是则返回菜单界面 3 右图为流程图 4 2 34 2 3 小结小结 用圆的弧度制与时间值相映射 使得圆上点的轨迹随着时间而跳动 实现了 指针的走动 另外读取的时间与闹钟时间相比较达到实时闹钟报警的功能 芜湖职业技术学院论文 36 4 34 3 显示函数模块显示函数模块 检测 LCD 是否忙 LCD Check Busy 向 LCD 发送命令 LCD Write Command 向 lcd 发送数据 void LCD Write Data 初 始化 12864 显示屏 LCD Initialize 初始化 12864 显示屏 Common Show 通用显示函数 显示字符和汉字的字模是用相应的软件导出的 根据液晶显 示屏的要求对应圆盘的大小都是可以规定的 4 3 14 3 1 实现功能实现功能 通过 12864 显示指针式电子时钟 4 3 24 3 2 函数设计函数设计 1 uchar LCD Write Command P2 uchar cmd uchar para1 uchar para2 1 功能 写双参的命令 2 依据 通过判断状态位 char Status BIT 01 是读 写指令还是读 写数 据 2 uchar LCD Write Command P1 uchar cmd uchar para1 1 功能 芜湖职业技术学院论文 37 写单参数的指令 2 依据 通过判断状态位 char Status BIT 01 是读 写指令还是读 写数 据 3 uchar LCD Write Command uchar cmd 1 功能 写无参数指令 2 依据 通过判断状态位 char Status BIT 01 是读 写指令还是读 写 数据 4 uchar LCD Write Data uchar dat 1 功能 写数据 2 依据 通过判断状态位 char Status BIT 03 数据是否为自动写状态 3 流程图 芜湖职业技术学院论文 38 5 void Set LCD POS uchar row uchar col reentrant 1 功能 设置当前地址 2 依据 先通过调用写双参数命令 使 LCD 准备工作 来达成我们的需要 6 void cls 1 功能 清屏 2 依据 通过调用双参数和无参数函数来设置地址指针和是否自动写 再 通过判断状态位 Status BIT 3 是否要写数据 然后调用 LCD Write Data 当向 LCD 写好后 在调用无参函数来完成自 动写结束 最后在重置地址指针 芜湖职业技术学院论文 39 3 流程图 7 char LCD Initialise 1 功能 LCD 的初始化 2 依据 通过写双参数 LCD Write Command P2 来完成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 维修工常识考试题及答案
- 物理师范专业职业生涯规划书
- 物业消防自查报告
- 信息安全真实性问答测试题及答案
- 新工人入场安全教育试卷及答案
- 浙江省行政执法证考试卷试题库题集及答案
- 政治经济学与意识形态发展关联分析试题集及答案及答案
- 医疗器械经营管理制度培训试题及答案
- 智能健康助手与患者互动设计考核试卷及答案
- 中国移动人力资源部专员笔试测试题及答案
- 水害事故及其防治培训课件
- 2026年重庆渝中区社区工作者及后备人员公开招聘55人笔试备考试题(含答案解析)
- 建筑设计阶段风险识别与防范措施
- 飞机构造基础(完整课件)
- 急性呼吸道梗阻的急救护理-2
- 第3讲矿石管理
- 旅行社员工培训指南
- 洗护发技术(美发与形象设计专业高职)全套教学课件
- 华晨宝马汽车有限公司新建10米法电磁兼容实验室项目环境影响报告
- 头孢菌素类抗生素生产工艺课件
- GB/T 7306.2-200055°密封管螺纹第2部分:圆锥内螺纹与圆锥外螺纹
评论
0/150
提交评论