




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目目 录录 中文摘要 1 英文摘要 2 1 引言 3 1 1 单片机发展及其特点 3 1 1 1 单片机发展概述 3 1 1 2 单片机的特点 4 2 硬件系统设计 6 2 1 总体框图设计 6 2 2 单片机选型 6 2 2 1 AT89C51 的特点 6 2 2 2 主要性能参数 7 2 2 3 引脚功能说明 8 2 2 4 单片机附属电路 10 2 3 独立式按键控制电路 12 2 3 1 自动报时系统的按键接口及功能工作原理 13 2 3 2 按键开关的去除抖动功能 13 2 4 LED 动态显示电路 14 2 4 1 数码管简介 14 2 4 2 显示的种类 15 2 5 时钟芯片 DS1302 18 2 5 1 DS1302 简介 18 2 5 2 DS1302 芯片的特点及引脚功能 18 2 5 3 DS1302 的工作原理 19 2 5 4 DS1302 的寄存器和控制命令 19 2 6 电路原理 22 3 软件设计 23 3 1 设计思路 23 3 2 主程序模块 23 3 3 显示程序模块 25 3 4 DS1302 的写时钟程序模块 27 3 5 按键程序模块 27 3 6 定时器程序模块 29 结 论 31 谢 辞 32 参考文献 33 附录 1 34 1 基于单片机的自动报时系统设计 摘要 本设计是利用单片机原理设计的自动报时系统 其中 自动报时系统以 AT89C51 单片机为核心 采用 4 个独立式按键来调整时间和设置闹铃 用共阴极动态 6 个八段数码管来动态显示时间 计时方案采用时钟芯片 DS1302 以 8 路反向动态缓冲器 74LS240 作为数码管的动态扫描的段码 控制驱动信号 用 P2 0 P2 5 外接一片集电极开路反向门电路 74LS06 OC 门 做 6 位数码管的位选信号驱动口 6 个数码管的 8 根段选 线分别接 74LS240 的输出 数码管的共阴极端与 74LS06 的输出端相连 从 左到右依次来显示时 分 秒 正文中首先简单描述了硬件系统的工作 原理 且附以硬件系统的设计框图 论述了本次毕业设计所应用的各种 硬件接口技术和各个接口模块的功能及工作过程 本文撰写的主导思想 是软 硬件相结合 以硬件为基础 来进行各功能模块的编写 关键词关键词 单片机 自动报时系统 位码 段码 显示 2 Design On Automatic Timekeeping System Based On Microcontroller Abstract This design is the use of single chip design principles of the automatic timekeeping system In the paper automatic timekeeping system is with AT89C51 microcontroller as the core and is with four stand alone buttons to adjust time and alarm settings and is with 6 a total of eight out of digital dynamic cathode tube to dynamic display time The program uses time clock chip DS1302 To reverse the dynamic buffer 74LS240 8 as a digital tube section of the dynamic scan code control drive signal P2 0 P2 5 external one with open collector reverse gate 74LS06 OC doors do 6 bit digital tube port selection signal driven 6 paragraph 8 digital tube alignment respectively connects with the output of 74LS240 Digital control of a total of cathode connects with the output of 74LS06 From left to right to display the hours minutes seconds This paper is written by the leading ideas of hardware and software combination of hardware based to the preparation of various functional modules Keywords Microcontroller Automatic timekeeping system Bit section Code section Display 3 1 引言 1 1 单片机发展及其特点 1 1 1 1 单片机发展概述 单片机的全称是单片微型计算机 Single Chip Micro computer 为了使 用方便 它把组成计算机的主要功能部件 中央处理器 CPU 数据存储器 RAM 程序存储器 ROM EPROM E2PROM 或 FLASH 定时 计数器和各种输 入 输出接口电路等都集成在一块半导体芯片上 构成了一个完整的计算机系统 与通用的计算机不同 单片机的指令功能是按照工业控制的要求设计 因此它 又被称为微控制器 Microcontroller 单片机具有体积小 重量轻 耗能省 价格低 可靠性高和通用灵活等优点 近几年来 单片机的发展更为迅速 它 已渗透到诸多学科的领域 以及人们生活的各个方面 如今单片机已广泛地应 用在智能仪器仪表 机电设备过程控制 自动检测 家用电器和数据处理等各 个方面 MCS51 系列单片机是美国 Intel 公司于 1980 年推出的一种 8 位单片机系列 它以优异的性价比使得它从面世以来就获得用户的认可 MCS 51 单片机指令系 统中为适应控制的需要设有极强的位处理功能 具有加 减 乘 除指令 具 有多机通信功能 可作为多机系统中的一个子系统 Intel 公司把这种单片机 的内核 即 8051 内核 以出售或互换专利的方式授权给一些公司 如 Atmel Philips 等 这些公司的这类产品也被称为 8051 兼容芯片 这些 8051 兼容芯片在原来的基础上增加了许多特性 本文应用电路中采用了 Atmel 公司 的 AT89C51 芯片 它与 MCS51 单片机指令集兼容 同时它的内部包含用作程序 存储器的 4KB 的基于 FLASH 技术的只读存储器 采用这款芯片既克服了采用 8031 需要添加外部程序存储器导致电路复杂的缺点 又克服了采用 8751 导致 电路制作成本高的缺点 单片机出现的历史并不长 它的产生与发展与微处理器的产生与发展大体 上同步 也经历了四个阶段 第一阶段 1971 1974 年 4 位微处理器 Intel 4004 及 8 位微处理器 Intel 8008 这些计算机价格便宜 功能有限 只用于消耗类电子产品 第二阶段 1974 1978 年 初级单片机阶段 以 Intel 公司的 MCS 48 为 代表的 8 位单片机 4 第三阶段 1978 1983 年 高性能单片机阶段 以 Intel 公司的 MCS 51 Motorola 公司的 6801 和 Zilog 公司的 Z8 等为代表 这一阶段推出的单 片机普遍带有串行口 有多级中断处理系统 16 位定时器 计数器 有的片内 还带有 A D 转换器接口 片内 RAM ROM 容量加大 寻址范围可达 64K 字节 第四阶段 1983 年至今 8 位单片机巩固发展及 16 位单片机推出阶段 例如 Mostek 公司的 MK6800 Intel 公司的 MCS 96 等 MCS 96 指令能处理位 字节 字 有 16 位乘 16 位乘法 32 位除 16 位除法指令 1 1 2 单片机的特点 随着半导体集成工艺的不断发展 单片机的集成度将更高 体积将更小 功能将更强 在单片机家族中 80C51 系列是其中的佼佼者 加之 Intel 公司 将其 MCS 51 系列中的 80C51 内核使用权以专利互换或出售形式转让给全世界 许多著名 IC 制造厂商 如 Philips NEC Atmel AMD 华邦等 这些公司都 在保持与 80C51 单片机兼容的基础上改善了 80C51 的许多特性 这样 80C51 就变成有众多制造厂商支持的 发展出上百品种的大家族 现统称为 80C51 系 列 80C51 单片机已成为单片机发展的主流 专家认为 虽然世界上的 MCU 品 种繁多 功能各异 开发装置也互不兼容 但是客观发展表明 80C51 可能最 终形成事实上的标准 MCU 芯片 综合看来 单片机主要有如下特点 1 可外部扩展存储器 受集成度限制 片内存储容量较小 一般 8 位单片 机的 ROM 小于 4 8K 字节 RAM 小于 256 字节 但可在外部扩展 通常 ROM RAM 可分别扩展至 64K 字节 2 可靠性好 芯片本身是按工业测控环境要求设计的 其抗噪声干扰优于 一般通用 CPU 许多信号通道均在一个芯片内 故可靠性高 3 易扩展 片内具有计算机正常运行所必需的部件 芯片外部有许多供扩 展用的总线及并行 串行 I O 管脚 很容易构成各种规模的计算机应用系统 4 控制功能强 为了满足工业控制要求 一般单片机的指令系统中具有极 丰富的条件分支转移指令 I O 口的逻辑操作以及位处理功能 一般说来 单 片机的逻辑控制功能及运行速度均高于同一档次的微处理器 本设计采用的是 ATMEL 公司的 AT89C51 芯片 此芯片根据了充分的静止 CMOS 控制器与三级节目记忆锁 共有 32 条 I O 线 2 个定时计数器 6 个中断来源 4 K 闪存 128 8 位的内部 RAM 5 由于本设计所做的是一个自动报时系统简单 所以要用到单片机的最小应 用系统模块 1 还需要用独立式键盘和动态显示模块 而我的硬件设计详见第二章 主要介绍了需要哪几部分硬件电路和硬件系 统的概叙 在 2 1 节介绍了主要的硬件框架 2 2 节简单的介绍了单片机最小 应用系统的性能和附属电路 2 3 节详细介绍了键盘控制电路 2 4 节介绍了动 态显示电路 2 5 介绍了 DS1302 芯片 在第三章中我们详细的解说了软件系统 的设计 3 1 节介绍了我们做这个设计的程序设计思路 3 2 节介绍了主程序模 块及其框图 3 3 节介绍了显示程序模块及其框图 下面就是我对此设计的总 体概括 体会和心得 我所设计的这个自动报时系统简单 实用性强 成本低 使用维护方便 软件功能强 运行稳定可靠等优点 6 2 硬件系统设计 2 1 总体框图设计 我所设计的是一个自动报时系统 自动报时系统用到的单片机芯片是 AT89C51 芯片 除此之外还包括 晶振电路和复位电路构成单片机最小应用系 统 还有独立式按键电路 动态显示电路 DS1302 时钟芯片电路等等 总体设 计框图如图 2 1 所示 AT89C51 LED 动 态 显 示 蜂 鸣 器 按键电路 89 路 晶振电路 DS1302 芯片电路 复位电路 图 2 1 总体设计框图 2 2 单片机选型 2 3 2 2 1 AT89C51 的特点 AT89C51 是美国 ATMEL 公司生产的低电压 高性能 CMOS 8 位单片机 片内 含 4k bytes 的可反复擦写的只读程序存储器 EPROM 和 128 bytes 的随机存 取数据存储器 RAM 器件采用 ATMEL 公司的高密度 非易失性存储技术生产 兼容标准 MCS 51 指令系统 片内置通用 8 位中央处理器 CPU 和 Flash 存储 单元 功能强大的 AT89C51 单片机可灵活应用于各种控制领域 AT89C51 的管 脚图如图 2 2 所示 7 图 2 2 AT89C51 管脚图 2 2 2 主要性能参数 1 与 MCS 51 兼容 2 4K 字节可编程闪烁存储器 3 寿命 1000 写 擦循环 4 数据保留时间 10 年 5 全静态工作 0Hz 24Hz 6 三级程序存储器锁定 7 128 8 位内部 RAM 8 32 个可编程 I O 线 9 两个 16 位定时器 计数器 10 6 个中断源 11 可编程串行通道 12 低功耗的闲置和掉电模式 8 13 片内振荡器和时钟电路 2 2 3 引脚功能说明 1 Vcc 电源电压 2 GND 地 3 P0 口 P0 口是一组 8 位漏极开路型双向 I O 口 也即地址 数据总线复 用口 作为输出口用时 每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路 对 端口写 1 可作为高阻抗输入端用 在访问外部数据存储器或程序存储器时 这组口线分时转换地址 低 8 位 和数据总线复用 在访问期间激活内部上拉电阻 在 Flash 编程时 P0 口接收指令字节 而在程序校验时 输出指令字节 校验时 要求外接上拉电阻 4 P1 口 P1 口是一个带内部上拉电阻的 8 位双向 I O 口 P1 的输出缓冲 级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对端口写 1 通过内部 的上拉电阻把端口拉到高电平 此时可作输入口 作输入口使用时 因为内部 存在上拉电阻 某个引脚被外部信号拉低时会输出一个电流 IIL Flash 编程和程序校验期间 P1 接收低 8 位地址 5 P2 口 P2 是一个带有内部上拉电阻的 8 位双向 I O 口 P2 的输出缓冲 级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对端口写 1 通过内部 的上拉电阻把端口拉到高电平 此时可作输入口 作输入口使用时 因为内部 存在上拉电阻 某个引脚被外部信号拉低时会输出一个电流 IIL 在访问外部程序存储器或 16 位地址的外部数据存储器 例如执行 MOVX DPTR 指令 时 P2 口送出高 8 位地址数据 在访问 8 位地址的外部数据存储 器 例如执行 MOVX R1 指令 时 P2 口线上的内容 也即特殊功能寄存器 SFR 区中 R2 寄存器的内容 在整个访问期间不改变 Flash 编程或校验时 P2 亦接收高位地址和其它控制信号 6 P3 口 P3 口是一组带有内部上拉电阻的 8 位双向 I O 口 P3 口输出缓 冲级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对 P3 口写入 1 时 它们被内部上拉电阻拉高并可作为输入端口 作输入端时 被外部拉低的 P3 口 将用上拉电阻输出电流 IIL P3 口除了作为一般的 I O 口线外 更重要的用途是它的第二功能 见表 2 1 所示 9 表 2 1 P3 口第二功能表 端口引脚第二功能 P3 0 RXD 串行输入口 P3 1 TXD 串行输出口 P3 2 外部中断 0 INT0 P3 3 外部中断 1 INT1 P3 4 T0 定时 计数器 0 P3 5 T1 定时 计数器 1 P3 6 外部数据存储器写选通 WR P3 7 外部数据存储器读选通 RD P3 口还可接受一些用于 Flash 闪速存储器编程和程序校验的控制信号 7 RET 复位输入 当振荡器工作时 RET 引脚出现两个机器周期以上高 电平将使单片机复位 8 ALE 当访问外部程序存储器或数据存储器时 ALE 地址锁存允许 输 出脉冲用于锁存地址的低 8 位字节 即使不访问外部存储器 ALE 仍以时钟振 荡频率的 1 6 输出固定的正脉冲信号 因此它可对外输出时钟或用于定时目的 要注意的是 每当访问外部数据存储器时将跳过一个 ALE 脉冲 如有必要 可通过对特殊功能寄存器 SFR 区中的 8EH 单元的 D0 位置位 可禁止 ALE 操作 该位置位后 只有一条 MOVX 和 MOVC 指令 ALE 才会被激活 此外 该引脚会被微弱拉高 单片机可执行外部程序时 应设置 ALE 无效 9 程序存储允许 输出是外部程序存储器的读选通信号 PSENPSEN 当 AT89C51 由外部程序存储器取指令 或数据 时 每个机器周期两次 有效 即输出两个脉冲 在此期间 当访问外部数据存储器 这两次有PSEN 效的信号不出现 PSEN 10 VPP 外部允许访问 欲使 CPU 仅访问外部程序存储器 地址为EA 0000H 0FFFFH 端必须保持低电平 接地 需注意的是 如果加密位EA LB1 被编程 复位时内部会锁存端状态 EA 如 EA 端位高电平 接 Vcc 端 CPU 则执行内部程序存储器中的指令 Flash 存储器编程时 该引脚需要加上相应的编程允许电源 Vpp 10 11 XTAL1 振荡器反相放大器的输出端及内部时钟发生器的输入端 12 XTAL2 振荡器反相放大器的输出端 2 2 4 单片机附属电路 单片机附属电路主要有晶体振荡电路和复位电路 一 晶体振荡电路 1 晶体振荡器的作用 石英晶体振荡器也称石英晶体谐振器 它用来稳定 频率和选择频率 是一种可以取代LC谐振回路的晶体谐振元件 2 本设计所用的晶体振荡电路如图2 3所示 图2 3 晶体振荡电路 此晶振电路所选用的石英晶振频率为12MHZ 时钟周期就是单片机外接晶振的倒数 例如12M的晶振 它的时间周期就是 1 12 us 是计算机中最基本的 最小的时间单位 在一个时钟周期内 CPU仅完成一个最基本的动作 对于某种单片机 若采 用了1MHZ的时钟频率 则时钟周期为1us 若采用4MHZ的时钟频率 则时钟周期 为0 25us 由于时钟脉冲是单片机的基本工作脉冲 它控制着单片机的工作节 奏 使单片机的每一步都统一到它的步调上来 显然 对同一种机型的单片 机 时钟频率越高 单片机的工作速度就越快 但是 由于不同的单片机的硬 件电路和器件不完全相同 所以其需要的时钟频率范围也不相同 我们学习的 51系列单片机的时钟范围是1 2MHz 12MHz 二 复位电路 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态 并从这个状态开始工作 例如复位后PC 0000H 使单片机从第一个单元取指令 无论是在单片机刚开始接上电源时 还是断电后或者发生故障后都要复位 所 11 以我们必须弄清楚MCS 51型单片机复位的条件 复位电路和复位后状态 单片机复位的条件是 必须使RST Vpd或RST引脚加上持续两个机器周期 即 24个振荡周期 的高电平 例如 若时钟频率为12MHz 每机器周期为1us 则只 需2us以上时间的高电平 在RST引脚出现高电平后的第二个机器周期执行复位 单片机常用的复位电路如图2 4和图2 5所示 图2 4 复位电路 图2 5 与单片机相连的复位电路 图2 4所示复位电路 其电阻阻值的选择和电容容量的选择都是经过计算的 而最后计算的结果时间常数可以满足我们的需求 其计算过程如下 12 0 7RC 0 7 1000 10 10 6 0 7ms 此值远远大于2us 所以此复位电路可用 图2 4所示复位电路是我设计中用到的复位单路 为按键复位电路 该电路 除具有上电复位功能外 若要复位 只需按图中的SW PB键 此时电源VCC经电 阻R1分压 在RESET端产生复位高电平 2 3 独立式按键控制电路 4 独立式键盘的接口电路 在单片机应用系统中 有时只需要几个简单的按 键向系统输入信息 这时 可将每个按键直接接在一根 I O 接口线上 这种连 接方式的键盘称为独立式键盘 如图 2 6 所示 每个独立按键单独占有一根 I O 接口线 每根 I O 接口线的工作状态不会影响到其他 I O 接口线 这种按 键接口电路配置灵活 硬件结构简单 但每个按键必须占用一根 I O 线 I O 接口线浪费较大 故只在按键数量不多时采用这种按键电路 在此电路中 按键输入都采用低电平有效 上拉电阻保证了按键断开时 I O 接口线有确定的高电平 当 I O 接口内部有上拉电阻时 外电路可以不配 置上拉电阻 独立式按键具体在自动报时系统中的应用 在 2 3 1 中有详细介 绍 图 2 6 独立式键盘电路 13 2 3 1 自动报时系统的按键接口及功能工作原理 在自动报时系统中采用 4 个独立的键盘 其中一个为功能键 一个为数字 调整键 一个为取消设置键 用来设定时间 一个为 ALM 键 用来设定定时时 间 按键的接口由 P1 7 P1 6 P1 5 P1 4 来完成 1 时间调整 按下功能键 系统停止计时显示 进入时间设定状态 系统 只显示小时的内容 其余 4 位 LED 处于全暗状态 等待按键设置 此时按动数 字调整键后小时将会加 1 按动取消键后又重新回到原来的时间显示状态 若 再按动功能键则用来调整分钟 此时小时和秒的 4 位 LED 指示全暗 按数字调 整键后可以对分钟增 1 调整 按动取消键后又重新回到原来的时间显示状态 再按动功能键则用来调整秒 此时小时和分钟的 4 位 LED 指示全暗 秒显示当 前的秒数 按数字调整键可以对秒进行增 1 调整 按动取消键后又重新回到原 来的时间显示状态 按动功能键后系统将自动由设定后的时间开始计时显示 2 闹钟设置 启闹 按下 ALM 键 系统继续计时 但显示为 00 00 00 此 时再按动功能键后进入闹钟设置状态 设置过程和时间调整相同 但是最后按 功能键确定后显示定时时间 30S 后自动启动定时闹钟功能 并恢复时间显示 定时时间到 蜂鸣器鸣叫 1min 后自动停闹 每次设置时只能定一次 下次需重 新设置 2 3 2 按键开关的去除抖动功能 目前 MCS 51 单片机应用系统上的按键常采用机械触点式按键 它在断 开 闭合时输入电压波形如图 2 7 所示 可以看出机械触点在闭合及断开瞬间均 有抖动过程 时间长短与开关的机械特性有关 一般为 5 10ms 由于抖动 会 造成被查询的开关状态无法准确读出 例如 一次按键产生的正确开关状态 由于键的抖动 CPU 多次采集到低电平信号 会被误认为按键被多次按下 就 会多次进行键输入操作 这是不允许的 为了保证 CPU 对键的一次闭合仅在按 键稳定时作一次键输入处理 必须消除产生的前沿 后沿 抖动影响 所以我 在软件设计中作了相应设计 14 后沿前沿识别区 按键过程 图 2 7 按键过程 2 4 LED 动态显示电路 5 6 2 4 1 数码管简介 1 数码管结构 数码管由 8 个发光二极管 以下简称字段 构成 通过不同的组合可用来 显示数字 0 9 字符 A F 及小数点 数码管的外形结构如图 2 8 a 所示 数码管又分为共阴极和共阳极两种结构 分别如图 2 8 b 和图 2 8 c 所示 R 8R 8 5V a b c d e f g dp a b c d e f g dp e 1 d 2 GND 3 c 4 dp 5 b 6 a 7 GND 8 f 9 g 10 dp a b c d e f g a b c a 外型结构 b 共阴极 c 共阳极 图 2 8 数码管结构图 15 2 数码管工作原理 由于我们采用的是共阴极数码管 所以介绍共阴极数码管的工作原理如下 共阴极数码管的 8 个发光二极管的阴极 二极管负端 连接在一起 通常 公共阴极接低电平 一般接地 其它管脚接段驱动电路输出端 当某段驱动电 路的输出端为高电平时 则该端所连接的字段导通并点亮 根据发光字段的不 同组合可显示出各种数字或字符 此时 要求段驱动电路能吸收额定的段导通 电流 还需根据外接电源及额定段导通电流来确定相应的限流电阻 共阳极数码管的工作原理与共阴极的正好相反 3 数码管字形编码 要使数码管显示出相应的数字或字符 必须使段数据口输出相应的字形编 码 LED 显示字型码表见表 2 2 表 2 2 LED 显示字型码表 显示字符共阴极共阳极显示字符共阴极共阳极 03FHC0H96FH90H 106HF9HA77H88H 25BHA4HB7CH83H 34FHB0HC39HC6H 466H99HD5EHA1H 56DH92HE79H86H 67DH82HF71H8EH 707HF8H 87FH80H 2 4 2 显示的种类 1 静态显示概念 静态显示是指数码管显示某一字符时 相应的发光二极管恒定导通或恒定 截止 这种显示方式的各位数码管相互独立 公共端恒定接地 共阴极 或接 正电源 共阳极 每个数码管的 8 个字段分别与一个 8 位 I O 口地址相连 I O 口只要有段码输出 相应字符即显示出来 并保持不变 直到 I O 口输出 新的段码 采用静态显示方式的优点 较小的电流即可获得较高的亮度 且占 16 用 CPU 时间少 编程简单 显示便于监测和控制 但其占用的接口线多 硬件 电路复杂 成本高 只适合于显示位数较少的场合 2 动态显示概念 动态显示是一位一位地轮流点亮各位数码管 这种逐位点亮显示器的方式 称为位扫描 通常 各位数码管的段选线相应并联在一起 由一个8位的I O口 控制 各位的位选线 公共阴极或阳极 由另外的I O口线控制 动态方式显示 时 各数码管分时轮流选通 要使其稳定显示 必须采用扫描方式 即在某一 时刻只选通一位数码管 并送出相应的段码 在另一时刻选通另一位数码管 并送出相应的段码 依此规律循环 即可使各位数码管显示将要显示的字符 虽然这些字符是在不同的时刻分别显示 但由于人眼存在视觉暂留效应 只要 每位显示间隔足够短就可以给人以同时显示的感觉 采用动态显示方式比较节 省I O口 硬件电路也较静态显示方式简单 但其亮度不如静态显示方式 而且 在显示位数较多时 CPU要依次扫描 占用CPU较多的时间 我们这个设计所使用的显示属于动态显示 其显示电路图形如图2 9所示 图2 9 动态显示电路 显示器由6个共阴极数码管组成 同时采用动态扫描方式依次循环点亮数码 管 即构成多位动态显示电路 图中 6位数码管均采用共阴极LED P0接口外 接8路反相三态缓冲器74LS240作LED动态扫描的段码控制驱动信号 用P2接口的 P2 0 P2 5外接一片集电极开路反相门电路74LS06做为8段LED数码管的位选信号 驱动口 LED共阴极端与74LS06的输出端相连 17 3 74LS240的功能 74LS240 是原码三态输出的 8 缓冲数码驱动器 其管脚分布图如图 2 10 所 示 图 2 10 74LS240 管脚图 G 为控制端 又称为使能端 其工作原理如下 当 G 0 时 A 输入为低电平时 Y 输出为高电平 当 G 0 时 A 输入为高电平时 Y 输出为低电平 当 G 1 时 A 不论输入高电平还是低电平 Y 皆为高阻状态 4 74LS06 的功能 74LS06 是六缓冲的数码驱动器 它是由 6 个集电极开路的非门所组成 当 使能端为低电平时 输入为高电平时输出为低电平 当输入为低电平时输出为 高电平 其逻辑表达式为 Y A 18 2 5 时钟芯片 DS1302 7 2 5 1 DS1302 简介 DS1302 是美国 DALLAS 公司推出的一种高性能 低功耗的实时时钟芯片 附加 31 字节静态 RAM 采用 SPI 三线接口与 CPU 进行同步通信 并可采用突发 方式一次传送多个字节的时钟信号和 RAM 数据 实时时钟可提供秒 分 时 日 星期 月和年 一个月小于 31 天时可以自动调整 且具有闰年补偿功能 工作电压宽达 2 5 5 5V 采用双电源供电 主电源和后备电源 可设置备用 电源充电方式 提供了对后备电源进行涓细电流充电的能力 DS1302 的外部引 脚分配如图 2 11 所示 DS1302 用于数据记录 特别是对某些具有特殊意义的 数据点的记录上 能实现数据与出现该数据的时间同时记录 因此广泛应用于 测量系统中 图 2 11 DS1302 引脚图 2 5 2 DS1302 芯片的特点及引脚功能 一 DS1302 芯片具有以下特点 1 实时时钟 日历 实时时钟 日历提供秒 分 时 日 星期 月和年等 信息 每月天数以及闰年能自动调整 时钟可以采用 24h 或 AM PM 的 12h 格式 2 31 字节的静态 RAM 用于存储数据 3 带慢速充电控制备份电源的充电特性 4 简单的三线串行接口 该芯片使用同步串行通信 与时钟 RAM 通信共需 要 3 根线 复位 数据线 串行时钟 数据可以以每次 1 个字节的形式传送到 时钟 RAM 或从其读出 19 二 DS1302 芯片的引脚功能 1 Vcc2 主电源 Vcc1 后备电源 在主电源关闭的情况下 也能保持时 钟的连续运行 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电 当 Vcc2 Vcc1 0 2V 时 Vcc2 给 DS1302 供电 当 Vcc2 小于 Vcc1 时 DS1302 由 Vcc1 供电 2 X1 和 X2 是振荡源 外接 32 768kHz 晶振 3 复位 片选线 通过把输入驱动置高电平来启动所有的数据RSTRST 传送 输入有两种功能 首先 接通控制逻辑 允许地址 命令序列RSTRST 送入移位寄存器 其次 提供终止单字节或多字节数据的传送手段 当RST 为高电平时 所有的数据传送被初始化 允许对 DS1302 进行操作 如果RST 在传送过程中置为低电平 则会终止此次数据传送 I O 引脚变为高阻状RST 态 上电运行时 在 Vcc2 2 0V 之前 必须保持低电平 只有在 SCLK 为RST 低电平时 才能将置为高电平 RST 4 SCLK 串行时钟 输入 控制数据的输入与输出 5 I O 串行数据输入输出端 双向 2 5 3 DS1302 的工作原理 1 DS1302 组成 串行时钟芯片主要由移位寄存器 控制逻辑 振荡器 实时时钟 RAM 电源组成 如图 2 12 所示 电源控制 输入寄存 器 实时时钟 命令控制 逻辑 地址总线 数据总线 振荡及分频器 图 2 12 DS1302 内部结构组成 20 2 5 4 DS1302 的寄存器和控制命令 1 DS1302 内部寄存器 对 DS1302 的操作就是对其内部寄存器的操作 DS1302 内部共有 12 个寄存 器 其中有 7 个寄存器与日历 时钟相关 存放的数据位为 BCD 码形式 此外 DS1302 还有年份寄存器 控制寄存器 充电寄存器 时钟突发寄存器及与 RAM 相关的寄存器等 时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存 器 日历 时间寄存器及控制字如表 2 3 所示 表2 3 日历 时钟寄存器与控制字对照表 76543210 寄存器名称 1RAM CKA4A3A2A1A0RD W 秒寄存器1000000 分寄存器1000001 小时寄存器1000010 日寄存器1000011 月寄存器1000100 星期寄存器1000101 年寄存器1000110 写保护寄存器1000111 慢充电寄存器1001000 时钟突发寄存器1011111 最后一位 RD W 为 0 时表示进行写操作 为 1 时表示读操作 DS1302内部寄存器列表如表2 4所示 表2 4 DS1302内部主要寄存器分布表 命令字各位内容 寄存器名称 写读 取值范围 76543210 秒寄存器 80H81H00 59CH10SECSEC 分寄存器 82H83H00 59010MINMIN 小时寄存器 84H85H 01 12或00 23 12 240AHRHR 日期寄存器 86H87H01 28 29 30 310010DATEDATE 月份寄存器 88H89H01 1200010MMONTH 周寄存器 8AH8BH01 0700000DAY 年份寄存器 8CH8DH00 9910YEARYEAR DS1302 内部的 RAM 分为两类 一类是单个 RAM 单元 共 31 个 每个单元 为一个 8 位的字节 其命令控制字为 COH FDH 其中奇数为读操作 偶数为写 操作 再一类为突发方式下的 RAM 此方式下可一次性读写所有的 RAM 的 31 个 字节 命令控制字为 0FEH 写 0FFH 读 21 2 电气原理图 电路原理图如图 2 13 所示 DS1302 与单片机的连接也仅需要 3 条线 CE 引脚 SCLK 串行时钟引脚 I O 串行数据引脚 Vcc2 为主电源 外接 32 768kHz 晶振 为芯片提供计时脉冲 图 2 12 DS1302 电气原理图 3 操作方式 芯片的操作受地址 命令字节控制 每一组数据的传送由命令字节初始化 地址 命令字节格式如图 2 13 所示 图 2 13 地址 命令字节 DS1302 是 SPI 总线驱动方式 它不仅要向寄存器写入控制字 还需要读取 相应寄存器的数据 位 7 必须为逻辑 1 如果它是 0 禁止写 DS1302 位 6 逻辑 0 指定为时钟 日历数据 为逻辑 1 指定为 RAM 数据 位 5 位 1 指定输入或输出的寄存器单 元地址 位 0 指定输入 输出数据 命令字节总是从最低有效位开始输入 4 数据输入 当命令字节为写命令时 最低位为 0 在下 8 个 SCLK 周期的上升沿输入字 节 数据从最低位开始输入 数据输出 当命令字节为读命令时 最低位为 1 在下 8 个 SCLK 周期的下降沿输出数据字节 这时被传送的第一数据为发生 22 在命令字节的最后一位之后的第一个下降沿 所以 在非多字节方式 每次读 或写的脉冲个数为 16 个 前 8 个为命令脉冲 后 8 个为读或写的脉冲 这样在 单字节传送数据时 每次命令为 16 个脉冲即可完成 多余的脉冲将忽略不计 通过对地址 31 寻址 可以把时钟 日历或 RAM 寄存器规定为多字节读写方式 读或写仍从地址 0 单元的最低位开始 当以多字节方式写时钟寄存器时 必须 按数据的次序写最先的 8 个寄存器 这样 8 个时钟字节的读或写共需 72 个脉冲 时钟 31 个 RAM 的读或写共需 256 脉冲时钟 其时序如图 2 14 所示 图 2 14 DS1302 的时序 2 6 电路原理 电路的核心是 AT89C51 单片机 其内部带有 4KB 的 FlashROM 无须扩展程 序存储器 电脑没有大量的运算和暂存数据 现有的 128B 片内 RAM 已能满足要 求 也不必扩展片外 RAM 系统配备 6 位 LED 显示和 4 个单接口键盘 采用 P0 接口外接 8 路反相三态缓冲器 74LS240 作 LED 动态扫描的段码控制驱动信号 用 P2 接口的 P2 0 P2 5 外接一片集电极开路反相门电路 74LS06 做为 6 位 LED 的位选信号驱动口 6 个数码管的 8 根段选线分别与 74LS240 的输出端相连 LED 共阴极端与 74LS06 的输出端相连 按键接口由 P1 7 P1 6 P1 5 P1 4 来完成 DS1302 实时时钟芯片接口由 P1 0 P1 1 P1 2 来控制 P3 7 接闹钟 蜂鸣器 其硬件原理总图见附录 1 23 3 软件设计 3 1 设计思路 因为我做的是自动报时系统 它需要具有校时 调时 定时 闹钟等功能 而且用到了 DS1302 芯片 此芯片具有自动计时功能 所以编写程序相对简单 考虑到用单片机语言来做我们的毕业设计 对于程序我的设计思路是 1 在此设计中用定时器来完成动态扫描显示 用定时器T0定2ms的时间间 隔 每次定时时间到时就输出一个LED信号 即显示一位 定时器每中断6次后 循环到第一位LED显示 这样动态显示占用CPU的时间只有输出段码和输出位码 的有限时间 提高了CPU的工作效率 2 要有主程序 3 本设计使用按键来对DS1302写入时间校时 对时 设定时间的 所以要 有DS1302的写时钟程序 4 系统资源分配 1 定时器 定时器T0用做显示定时 按方式1工作 每隔2ms溢出中断一次 2 片内RAM及标志位的分配 a 显示缓冲区 使用 30H 35H 6个RAM作LED的显示缓冲区 每一个 缓冲区对应一个LED 在定时时间到时就把6个缓冲区中的数据送给相应的 LED显示 b 时间缓冲区 使用 36H 3BH 6个RAM来保存当前从DS1302中读出 来的时间 在主程序运行时大约每一秒钟把其中的数据更新到显示缓冲区 用以显示 c 定时缓冲区 使用 40H 45H 6个RAM保存设定的定时时间 并在 时间缓冲区的内容更新的同时进行比较 若相同则表明定时时间到了 开 始调用报时子程序 24 3 2 主程序模块 8 主程序与按键控制 读时间并对定时时间进行判断 主程序初始化后 就 开始进行对 DS1302 读时间 读完后送显示缓冲区 同时并对定时时间进行判断 比较 然后开始依次扫描 4 个按键来判别是否进入相应的按键子程序中 再对 DS1302 读时间完成主循环程序 流程图如 3 1 所示 开始 主程序初始化 对DS1302读时间 显示缓冲区 按键扫描 图 3 1 主程序流程图 LCALL KEY SET LCALL ALM SET LCALL ALM MOV ADDR 1302 85H LCALL READ CLOCK MOV A DATA 1302 ANL A 10H MOV 36H A MOV A DATA 1302 ANL A 0FH MOV 37H A 25 MOV ADDR 1302 83H LCALL READ CLOCK MOV A DATA 1302 ANL A 0F0H MOV 38H A MOV A DATA 1302 ANL A 0FH MOV 39H A MOV ADDR 1302 81H LCALL READ CLOCK MOV A DATA 1302 ANL A 70H MOV 3AH A MOV A DATA 1302 ANL A OFH MOV 3BH A MOV R4 6 3 3 显示程序模块 9 显示程序采用动态显示 由位码控制哪一个数码管显示 由段码控制数码 管显示什么数值 根据中断程序显示时间来查表显示数值 从第一位到第六位 逐个点亮 同时每显示一位判断一次六位显示完了吗 没有显示完进行显示下 一位 显示完了从头开始再循环 显示子程序的流程图如图 3 2 所示 26 图 3 2 显示子程序流程图 DESPLAY MOV R2 01H 将位码送 R2 MOV R0 30 将段码送 R0 NEXT3 MOV A R0 MOV DPTR TAB2 MOVC A A DPTR MOV P0 A 将段码送 P0 口 MOV P1 R2 将位码送 P1 口 LCALL DELAY1 调用延时程序 MOV A R2 JB ACC 3 U2 显示完转 U2 开始 地址指针设置 取段码 输出一位段码 延时 显示结束否 子程序返回 N Y 取位码 位码左移一位 段码地址加 1 27 RL A 未显示完 将位码左移 MOV R2 A 将位码重送 R2 中 INC R0 指向 31H LJMP NEXT3 U2 RET 显示返回 3 4 DS1302 的写时钟程序模块 10 DS1302 的写时程序 WRITE CLOCK NOP DS1302 的写时钟程序 入口 ADDR 1302 作地址 ATA 1302 作数据 功能 在 ADDR 地址单元中写入 DATA 数据 CLR CLK CLK RST NOP SETB RST MOV R3 ADDR 1302 LCALL CLOCK OUT MOV R3 DATA 1302 LCALL CLOCK OUT CLR RST SETB CLK RST 3 5 按键程序模块 11 进入按键程序 判断有键按下吗 没有 则调用延时重新判断 如果到了 调用延时去抖程序 再次判断有键按下否 没有则返回延时程序 如果有按 键 则判断键号 入栈 判断键是否释放 没有 继续判断 释放了 则输入 键号送往累加器 然后返回主程序 按键程序流程图如图 3 3 所示 28 开始 有键闭合 否 调用子程序延时6秒 调用子程序延时12秒 有键闭合 否 判断闭合键键号 入栈 键闭合释放否 输入键号 送到A 返回 Y N Y N Y N 图 3 3 按键程序流程图 KEY ACALL KS 调用 KS 判断有键按下吗 JNZ K1 有键按下则转移 ACALL DL6ms 无键按下则调用延时子程序 AJMP KEY 延时返回 29 K1 ACALL DL6ms 调用延时程序 3 6 定时器程序模块 12 定时器 T0设置中断服务子程序 主要是为了完成循环显示 定时器 T0每隔 2ms 溢出中断一次 则循环中断 6 次 完成循环点亮 6 个 LED 数码管各一次 系统使用 12MHZ 的晶振 定时器 T0工作在方式 1 则 2ms 定时对应的定时器初值可由下式计算得到 定时时间 216 定时器 T0初值 12 振荡周期 因此 定时器 T0初值 0F830H 即 TH0 0F8H TL0 30H 当系统使用其 他频率的晶振时 也可以由上式计算出相应的定时器 T0初值 如单片机的主脉冲频率为 12MHz 经过 12 分频 方式 0 定时时间 213 1 微秒 8 192 毫秒 方式 1 定时时间 216 1 微秒 65 536 毫秒 秒钟已经超过了计数器的最大定时时间 所以我们只有采用定时器和软件 相结合的办法才能解决这个问题 定时器需定时 50 毫秒 故定时器 T0工作在 方式 1 定时 20 次 就可定时 1 秒 定时器程序 T0 TIMER NOP PUSH ACC PUSH PSW SETB RS0 DJNZ DIS COUNT T0 TIMER1 MOV DIS COUNT 6 MOV DUAN ADDR 30H MOV WEI MA 00100000B T0 TIMER1 NOP MOV R0 DUAN ADDR MOV P2 0 MOV A R0 30 MOV DPTR TAB MOVC A A DPTR MOV P0 A MOV P2 WEI MA INC R0 MOV A WEI MA RR A MOV WEI MA A MOV TH0 0F8H MOV TL1 30H POP PSW POP ACC 31 结 论 经过这段时间的设计 终于完成了我的毕业论文 虽然只是一个非常简单 的自动报时系统 但是我还是经过了一翻很大的努力才达到设计的要求 从心 底里说 还是挺高兴的 毕竟这次设计所要求的东西都做了出来 然而高兴之 余不得不深思呀 本设计采用 AT89C51 单片机的设计 以单片机为核心部件的自动报时系统 利用 74LS240 作为断码驱动器 74LS06 作为位码驱动器 LED 六个数码管作为 计时显示用 用发光二极管指示计时 用按键进行校时 调整闹铃时间 使时 间得到调整和使闹铃开启和关闭 依据本论文设计以 AT89C51 单片机为核心的 电子时钟 经过差不多 3 个月时间的设计 最后按设计要求终于设计完成了自 动报时系统的硬件和软件部分 本电子时钟系统简单 具有实用性强 成本低 使用维护方便 软件功能强 运行稳定可靠等优点 从这次的毕业设计中 我真真正正的意识到 在以后的学习中 要理论联 系实际 把我们所学的理论知识用到实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省郯城县2025年数学高三上期末调研模拟试题
- 云南省金平县第一中学2025年高三数学第一学期期末复习检测模拟试题
- 苏泊尔专业知识培训课件
- 支部知识竞赛试题及答案
- 2025年治安类的题目及答案
- 探针基础知识介绍讲课文档
- 2025年湖南长沙电力职业技术学院非事业编制学历教育教师及辅导员岗位招聘17人考试参考试题及答案解析
- 2025重庆市合川区住房和城乡建设委员会招聘2人考试参考试题及答案解析
- 小学生文明礼仪知识竞赛试题(附答案)
- 机动车驾驶员考试《科目一》试题及解答参考(2025年)
- 急性阑尾炎病人护理课件
- 2026年高考政治一轮复习:高考政治主观题背诵提纲汇编
- 骨科手术切口感染的预防与控制
- 电商数据分析报告顾问合同
- 电子信息类专业导论(第3版)课件全套 张有光 00 课程简介 - 12 中国大学教育:理念与实践
- 馕小屋管理办法
- (2025)全国辅警考试题库及答案
- 2025至2030全球及中国石油天然气中的人工智能行业项目调研及市场前景预测评估报告
- 钢结构设计质量保证体系及措施
- 2025年财会类考试-精算师-寿险精算实务历年参考题库含答案解析(5卷100道集合-单选题)
- 道路桥梁施工管理课件
评论
0/150
提交评论