基于TFT-LCD的指针式时钟设计钟毕业论文.doc_第1页
基于TFT-LCD的指针式时钟设计钟毕业论文.doc_第2页
基于TFT-LCD的指针式时钟设计钟毕业论文.doc_第3页
基于TFT-LCD的指针式时钟设计钟毕业论文.doc_第4页
基于TFT-LCD的指针式时钟设计钟毕业论文.doc_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于基于 TFT LCD 的指针式时钟设计的指针式时钟设计 摘摘 要要 自时钟发明的那天起 它就注定了与人们有着密不可分的关系 但科学技 术在不断发展 人们随着时间的推移对时间计量的精度要求越来越高 机械式 时钟也越来越满足不了人们日益增高的要求了 取而代之的事具有高度准确性 和直观性且无机械装置 使用寿命更长更长等优点的电子时钟 电子时钟更具 人性化 更能提高人们的生活质量 更受人们欢迎 机械时代已经远去 电子 时代已经到来 因此本设计是基于 ATMEL 公司的 ATmega128 单片机开发平台 实现一种高精度 智能化的指针式时钟系统 采用单片机与时钟芯片 DS1302 设 计电子时钟时 通常是数字显示 这是由于选用数码管和 1602 等器件的显示能力 有限 而 12864 是基于点阵式的液晶屏 其像素点为 128 64 但 12864 自身像素 较低 使其显示指针式时钟效果远低于 1 8 寸 TFT LCD 液晶 但两者所基于的原 理相同 因此本设计采用 ATmega128 单片机为控制核心 辅以 DS1302 时钟采 集系统 1 8 寸 TFT LCD 液晶作为显示芯片 构成了一个指针式电子时钟 关键词 关键词 ATmega128 单片机 DS1302 TFT LCD The design based on TFT LCD ClockTop Abstract Since the invention of the clock it is destined to have a close relationship with people but science and technology in development higher and higher over time the accuracy of time measurement requirements the mechanical clock increasingly meet not the increasing requirements Instead things have a high degree of accuracy and intuitive and no mechanical device service life longer longer and the advantages of the electronic clock The electronic clock is more humane more to improve people s quality of life but also welcomed by the people has passed the Mechanical Age the electronic age has arrived This design is based on the ATMEL ATmega128 MCU development platform to achieve a high precision intelligent analog clock systems Using a single chip clock chip DS1302 design electronic clock digital display which is due to the limited capacity of the display of the selected digital tube and 1602 devices 12864 is based on a dot matrix LCD screen the pixels of 128 64 but 12 864 pixel itself low to display analog clock effect is much lower than the 1 8 inch TFT LCD LCD but both are based on the principle of the same This design uses the ATmega128 MCU for the control of the core supplemented by the DS1302 clock acquisition system 1 8 inch TFT LCD liquid crystal display chips to form a pointer electronic clock Key words ATmega128microcontroller DS1302 TFT LCD 目 录 第第 1 章章 绪论绪论 1 1 1 引言 1 1 2 本设计的目的和意义 1 1 2 1 设计目的 1 1 2 2设计意义 1 1 3 本设计的主要研究内容 2 第第 2 章章 方案设计及方案论证方案设计及方案论证 3 2 1 时钟系统的总体设计思路 3 2 2 时钟系统方案论证 3 2 2 1 单片机的选择 3 2 2 2时钟系统方案选择 3 2 2 3显示系统的方案比较 4 第第 3 章章 硬件系统设计硬件系统设计 5 3 1 系统框图与说明 5 3 2 硬件设计部分 5 3 2 1 单片机芯片选择 5 3 2 2 单片机管脚说明 7 3 2 3 单片机最小系统 9 3 2 4 时钟系统电路设计 12 3 2 5 TFT LCD显示电路设计 16 3 2 6 硬件电路总图 22 第第 4 章章 软件系统设计软件系统设计 23 4 1 主程序设计 23 4 1 1 主程序设计框图 23 4 1 2 主程序设计框图源程序 24 4 2 DS1302 芯片的实时时钟日历子程序 27 4 2 1 DS1302时钟程序设计框图 27 4 2 2 DS1302时钟主要源程序 28 4 3 TFT LCD 显示子程序 31 4 3 1 LCD液晶显示程序设计框图 31 4 3 2 LCD液晶显示程序 32 4 4 时钟的绘制及走时 40 4 4 1 时钟表针的绘制 40 4 4 2 时钟表盘的绘制 44 4 4 3 时钟走时部分 47 第第 5 章章 系统的安装与调试系统的安装与调试 49 5 1 系统运行环境 49 5 2 硬件连接以及驱动的安装 49 5 3 系统调试及说明 49 5 3 1项目建立 程序的编写与编译 49 5 3 2程序下载 50 结结 论论 53 致致 谢谢 54 参考文献参考文献 55 附录附录 A 译文译文 56 DS1302 涓流充电时钟芯片 56 附录附录 B 外文原文外文原文 67 DS1302 TRICKLE CHARGE TIMEKEEPING CHIP 67 第第 1 章章 绪论绪论 1 1 引言引言 随着科学技术的发展和电子技术产业结构调整 单片机开始迅速发展 由 于家用电器逐渐普及 市场对于智能时钟控制系统的需求也越来越大 单片机 以其芯片集成度高 处理功能强 可靠性高等优点 成功应用于工业自动化 智能仪器仪表 家电产品等领域 近些年 人们对数字钟的要求也越来越高 传统的时钟已不能满足人们的 需求 多功能数字钟不管在性能还是在样式上都发生了质的变化 有电子闹钟 数字闹钟等等 而目前 对于指针式时钟来说 所用的指针大多是靠机械装置 驱动达到显示时间的目的 例如手表 挂钟 钟楼等等 单片机在指针式时钟 中的应用也已经非常普遍的 人们对指针时钟的功能及工作顺序都非常熟悉 但是却很少知道它的内部结构以及工作原理 由单片机作为指针时钟的核心控 制器 可以通过它的时钟信号进行计时实现计时功能 将其时间数据经单片机 输出 利用显示器显示出来 输出设备显示器可以用液晶显示技术 1 2 本设计的本设计的目的和意义目的和意义 1 2 1 设计目的设计目的 1 巩固 加深和扩大 AVR 系列单片机应用的知识面 提高综合及灵活运 用所学知识解决工业控制的能力 2 培养针对课题需要 选择和查阅有关手册 图表及文献资料的自学能力 提高组成系统 编程 调试的动手能力 3 对课题设计方案的分析 选择 比较 熟悉用 AVR 单片机做系统开发 研 制的过程 软硬件设 计的方法 内容及步骤 4 进一步掌握 C 语言在硬件编程中的应用 熟悉怎样用 C 语言实现 TFT LCD 上的绘图功能 5 掌握时钟芯片 DS1302 的原理和应用 1 2 2 设计意义设计意义 数字指针式时钟是采用数字电路实现对时 分 秒 星期 年 月 日等数字 以及指针表盘显示的计时装置 广泛用于个人家庭 车站 码头办公室等公共场所 成为人们日常生活中不可少的必需品 由于数字集成电路的发展和石英晶体振荡 器的广泛应用 使得数字钟的精度 远远超过老式钟表 钟表的数字化给人们生产 生活带来了极大的方便 而且大大地扩展了钟表原先的报时功能 诸如定时自 动报警 按时自动打铃 时间程序自动控制 定时广播 自动起闭路灯 定时 开关烘箱 通断动力设备 甚至各种定时电气的自动启用等 所有这些 都是 以钟表数字化为基础的 因此 研究数字钟及扩大其应用 有着非常现实的意 义 1 3 本设计的主要研究内容本设计的主要研究内容 1 在硬件设计方面 本系统采用 AVR 单片机作为整个电子钟系统的核 心处理器 通过高精度时钟芯片 DS1302 来控制时间和日期的读取 最后再通 过单片机对 TFT LCD 液晶进行驱动并实现在液晶上显示整个指针式电子时钟 2 在软件设计方面 重点研究了下列内容 A TFT LCD 的驱动函数如何编写 包括 LCD 的读函数 读数据 读 LCD 状态 写函数 写数据 写命令 初始化函数 清屏函数等一系列驱动函 数 B 用 C 语言在 LCD 上绘图必须先写出打点函数 这是绘图的基本要求 由 于本设计需要在液晶屏上模拟指针式时钟 因而还要写出绘圆和画线函数 于 是便实现了表盘的绘制 时分秒指针的绘制等 从而在 LCD 上可以模拟指针式 电子钟 C 时钟芯片 DS1302 负责时间和日期信息的读取 自动计时 调整等一列 功能 通过掌握 DS1302 的时序图 指令和功能表完成其驱动函数的编写 如 读一字节函数 写一字节函数 指定位置读数据函数 指定位置写数据函数等等 再通过读时间函数实现与 LCD 信息传输 第第 2 章章 方案设计及方案论证方案设计及方案论证 2 1 时钟系统的总体设计思路时钟系统的总体设计思路 按照系统的设计功能要求 本时钟系统的设计必须采用单片机软件系统实 现 用单片机的自动控制能力配合ds1302来控制时钟的调整显示 获得时钟数 据信息 单片机对其进行一系列的处理 最后通过液晶显示出来 2 2 时钟系统方案论证时钟系统方案论证 2 2 1 单片机的选择单片机的选择 对于单片机的选择 如果用8031 系列 由于它没有内部RAM 系统又需 要大量内存存储数据 因而不可用 51 系列单片机的ROM 为4K 对于我们设 计的系统可能有点小 AVR单片机具有高速度 低功耗的特点 在和51单片机 外接相同晶振条件下 AVR单片机的工作速度是51单片机的30 40倍 并且增 加了休眠功能及CMOS技术 其功耗远低于51单片机 ATmeaga128A单片机作 为主控单片机 该型单片机具有丰富的资源和接口 内部ROM和RAM完全能满 足AVR单片机高级开发要求 内置大容量程序Flash空间和SRAM数据空间 还 包含非易失性存储器EEPROM 对于那些实际项目中的数据存储也不需要扩展 外部存储空间因此 我们选择ATMEL公司megaAVR系列的单片机 ATmeaga128A 2 2 2 时钟系统方案选择时钟系统方案选择 方案1 本方案通过单片机内部的定时器 计数器 用软件实现 直接用单片机的定 时器编程以实现时钟 方案2 本方案用专门的时钟芯片 DS1302 实现时钟的记时 再把时间数据送入 单片机 由单片机控制显示 虽然用软件实现时钟硬件线路简单 但是程序运 行的每一步都需要时间 多一步或少一步程序都会影响记时的准确度 对定时 器定时也不是十分准确 时钟精度很低 对于我们实现所需要的功能造成软件 编程非常复杂 用专用时钟芯片硬件成本相对较高 但它的精度很高 软件编 程很简单 综上所述 选择方案2 2 2 3 显示系统的方案比较显示系统的方案比较 方案1 用数码管或点阵LED 显示 方案2 用液晶1602 显示 方案3 用液晶12864 显示 方案4 用1 8寸TFT LCD彩屏显示 时钟的显示可以用数码管或LED 而且价格便宜 但是数码管的只能显示 简单的设计的系统 与我们设计要求也不相符 有很多东西需要显示 还是用 显示功能更好的液晶显示器比较好 它能显示更多的数据 用1602 液晶显示数 据有限 1602 不能够显示指针时钟 只能够显示一些基本的西文字符 显示数 据的可读性不好 用可以显示汉字的12864 液晶显示器还可以增加显示信息的 可读性 用12864 的绘图功能即可绘制出指针时钟的框架 至于指针的转动则 采用12864 加ds1302同步控制 让人看起来会很方便 当然12864液晶和1 8寸 TFT LCD彩屏的显示所基于的原理都一样 只是彩屏的分辨率更高 能显示的 颜色更是丰富多彩 由于1602只能显示字符的缺陷 不能达到我们的要求 所 以我们只能选择12864液晶或者TFT彩屏 虽然它们在价格上有差距 但是1 8寸 TFT彩屏显示显示效果更好 因此我选择了TFT彩屏作为显示芯片 第第 3 章章 硬件系统设计硬件系统设计 3 1 系统框图与说明系统框图与说明 初步确定设计系统由AVR单片机主控模块 时钟模块DS1302 TFT LCD显 示模块组成 电路系统框图 系统框图如下图3 1所示 图 3 1 系统框图 图 3 1 系统框图 3 2 硬件设计部分硬件设计部分 3 2 1 单片机芯片选择单片机芯片选择 作为电子爱好者或者电子行业硬件工程的开发者 单片机技术的掌握是必 须的 但是目前很多的初学者选择入门的单片机都是基于MCS 51 内核的单片 机 虽然此类单片机学习简单 使用方便 但是其性能在很多场合却是大打折 扣 要么速度欠缺 要么存储空间欠缺 因此 由于MCS 51 自身的结构所限 制 与目前的新技术有明显的脱节 AVR单片机是近10年来发展起来的新型的 基于增强型RISC结构的单片机 AVR在运行速度 存储器空间 内部功能模块 的集成化 以串行接口为主的外围扩展 适合使用高级语言编程 以及在开发 技术和仿真调试方面都比MCS 51内核的单片机要先进 ATmega128 具有如下特点 128K 字节的系统内可编程Flash 具有在写的过程中还可以读的能力 即 RWW 4K 字节的EEPROM 4K 字节的SRAM 53 个通用I O 口线 32个通 用工作寄存器 实时时钟RTC 4 个灵活的具有比较模式和PWM 功能的定时 器 计数器 T C 两个USART 面向字节的两线接口TWI 8 通道10 位ADC 具有可选的可编程增益 具有片内振荡器的可编程看门狗定时器 SPI 串行端 口 与IEEE 1149 1 规范兼容的JTAG 测试接口 此接口同时还可以用于片上调 主 控 单 片 机 ATmeaga128A DS1302 时钟系统 1 8 寸 TFT 彩屏显示系 统 最小电路 系统 试 以及六种可以通过软件选择的省电模式 空闲模式时CPU 停止工作 而 SRAM T C SPI 端口以及中断系统继续工作 掉电模式时晶体振荡器停止振 荡 所有功能除了中断和硬件复位之外都停止工作 寄存器的内容则一直保持 省电模式时异步定时器继续运行 以允许用户维持时间基准 器件的其他部分 则处于睡眠状态 ADC 噪声抑制模式时CPU 和所有的I O 模块停止运行 而 异步定时器和ADC 继续工作 以减少ADC 转换时的开关噪声 Standby 模式 时振荡器工作而其他部分睡眠 使得器件只消耗极少的电流 同时具有快速启 动能力 扩展Standby 模式则允许振荡器和异步定时器继续工作 器件是以 Atmel 的高密度非易失性内存技术生产的 片内 ISP Flash 可以通过SPI 接口 通用编程器 或引导程序多次编程 引导程序可以使用任何接口来下载应用程 序到应用Flash存储器 在更新应用Flash存储器时引导Flash区的程序继续运行 实现RWW操作 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯 片内 ATmega128 为许多嵌入式控制应用提供了灵活而低成本的方案 ATmega128 的封装图如下图图3 2所示 图3 2 ATmega128 的封装图 ATmega128 的引脚图如下图图3 3所示 图3 3 ATmega128 的引脚图 3 2 2 单片机管脚说明单片机管脚说明 VCC 数字电路的电源 GND 接地 端口A PA7 PA0 端口A 为8 位双向I O 口 并具有可编程的内部上拉电 阻 其输出缓冲器具有对称的驱动特性 可以输出和吸 收 大电流 作为输入使用时 若内部上拉电阻使能 则端 口 被外部电路拉低时将输出电流 复位发生时端口A 为三 态 端口B PB7 PB0 端口B 为8 位双向I O 口 并具有可编程的内部上拉电 阻 其输出缓冲器具有对称的驱动特性 可以输出和吸 收 大电流 作为输入使用时 若内部上拉电阻使能 则端 口 被外部电路拉低时将输出电流 复位发生时端口B 为三 态 端口C PC7 PC0 端口C 为8 位双向I O 口 并具 有 可编程的内部上拉电阻 其输出缓冲器具有对称的驱动 特 性 可以输出和吸收大电流 作为输入使用时 若内部 上 拉电阻使能 则端口被外部电路拉低时将输出电流 复 位 发生时端口C 为三态 在ATmega103 兼容模式下 端口C 只能作为输出 而 且 在复位发生时不是三态 端口D PD7 PD0 端口D 为8 位双向I O 口 并具有可编程的内部上拉电 阻 其输出 缓冲器具有对称的驱动特性 可以输出和吸 收大电流 作为输入使用时 若内部上拉电阻使能 则 端 口被外部电路拉低时将输出电流 复位发生时端口D 为 三态 端口E PE7 PE0 端口E 为8 位双向I O 口 并具有可编程的内部上拉电 阻 其输出缓冲器具有对称的驱动特性 可以输出和吸 收 大电流 作为输入使用时 若内部上拉电阻使能 则端 口 被外部电路拉低时将输出电流 复位发生时端口E 为三 态 端口F PF7 PF0 端口 F 为ADC 的模拟输入引脚 如果不作为ADC 的模拟输入 端口 F 可以作为8 位双 向I O 口 并具有可编程的内部上拉电阻 其输出缓冲 器具有对称的驱动特性 可以输出和吸收大电流 作为 输入使用时 若内部上拉电阻使能 则端口被外部电路 拉低时将输出电流 复位发生时端口 F 为三态 如果使 能了JTAG接口 则复位发生时引脚PF7 TDI PF5 TMS 和PF4 TCK 的上拉电阻使能 端口 F 也可以作为JTAG 接口 在ATmega103 兼容模式下 端口F 只能作为输入引脚 端口G PG4 PG0 端口G 为5 位双向I O 口 并具有可编程的内部上拉电 阻 其输出缓冲器具有对称的驱动特性 可以输出和吸 收 大电流 作为输入使用时 若内部上拉电阻使能 则端 口 被外部电路拉低时将输出电流 复位发生时端口G 为三 态 端口G 也可以用做其他不同的特殊功能 在ATmega103 兼容模式下 端口G 只能作为外部存储 器 的所存信号以及32 kHz 振荡器的输入 并且在复位时这 些引脚初始化为PG0 1 PG1 1 以及PG2 0 PG3 和PG4 是振荡器引脚 RESET 复位输入引脚 超过最小门限时间的低电平将引起系统 复位 门限时间在P 47Table 19说明 低于此时间的脉冲 不能保证可靠复位 XTAL1 反向振荡器放大器及片内时钟操作电路的输入 XTAL2 反向振荡器放大器的输出 AVCC AVCC为端口F以及ADC转换器的电源 需要与VCC相 连接 即使没有使用ADC也应该如此 使用ADC 时应 该通过一个低通滤波器与VCC 连接 AREF AREF 为ADC 的模拟基准输入引脚 PEN PEN是SPI串行下载的使能引脚 在上电复位时保持PEN 为低电平将使器件进入SPI串行下载模式 在正常工作过 程中PEN 引脚没有其他功能 3 2 3 单片机最小系统单片机最小系统 单片机最小系统主要由复位电路 晶振电路 电源等几部分组成 1 复位电路 ATmega128已经内置了上电复位设计 并且在熔丝位里 可以控制复位时 的额外时间 故AVR外部的复位线路在上电时 可以设计得很简单 直接拉一 只5 1K的电阻到VCC即可 R26 为了可靠 再加上一只0 1uF的电容 C9 以消除干扰 杂波 当AVR在工作时 按下S3开关时 复位脚变成低电平 触发AVR芯片复位 重要说明 实际应用时 如果你不需要复位按钮 复位脚可以不接任何的 零件 AVR芯片也能稳定工作 即这部分不需要任何的外围零件 复位电路如下图3 4所示 图3 4 复位电路原理图 2 晶振电路 ATmega128已经内置RC振荡线路 可以产生1M 2M 4M 8M的振荡频 率 不过 内置的毕竟是RC振荡 在一些要求较高的场合 比如要与RS232通 信需要比较精确的波特率时 建议使用外部的晶振线路 早期的90S系列 晶振两端均需要接27pF左右的电容 Mega系列实际使用 时 这两只小电容不接也能正常工作 不过为了线路的规范化 我们仍建议接 上 重要说明 实际应用时 如果你不需要太高精度的频率 可以使用内部RC 振荡 即这部分不需要任何的外围零件 晶振电路原理图如下图3 5所示 图3 5 晶振电路原理图 选取原则 电容选取27pF 晶振为7 3728MHz 3 电源电路 系统电源模块提供整个开发板的电源 该开发板支持USB接口和外接电源 供电 使用USB供电显得尤其方便 一条USB线即可供电 开发板支持3 3V系 统和5V系统 板上集成5V到3 3V的电压稳压芯片ASM1117 3 可以通过跳线自 由选择 确定使用何种电压 对于低功耗场所使用提供了方便 有助于项目开 发的使用 电源电路原理图如下图3 6所示 图3 6 电源电路原理图 4 JTAG仿真接口设计 仿真接口也是使用双排2 5插座 需要一只10K的上拉电阻 R30 R33 JTAG仿真接口原理图如下图3 7所示 图3 7 JTAG仿真接口原理图 5 ISP下载接口设计 ISP下载接口 不需要任何的外围零件 使用双排2 5插座 由于没有外围 零件 故PE0 MOSI PE1 MISO PB1 SCK 复位脚仍可以正常使 用 不受ISP的干扰 RST连接倒RESET 20 即单片机的管脚20 ISP下载接口原理图如下图3 8所示 图3 8 ISP下载接口原理图 3 2 4 时钟系统电路设计时钟系统电路设计 1 时钟芯片选择与介绍 我们采用的是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗 实时时钟电路DS1302 它可以对年 月 日 周日 时 分 秒进行计时 且 具有闰年补偿等多种功能 主要特点是采用串行数据传输 采用普通32 768kHz 晶振 工作电压为2 5V 5 5V DS1302内部有一个31 8的用于临时性存放数 据的RAM寄存器 DS1302 可以对年 月 日 周日 时 分 秒进行计时 可以达到我们设 计的基本的要求 内部的寄存器为我们调时 闹钟定时提供了寄存空间 备用 用电源也实现了当系统断电后 时钟仍然可以保持 而且它是串行接口 与单 片机通信所需要的接口少 不像DS12887 等芯片并行通信需要很多IO 口 DS1302的外部引脚分配如下图3 9所示 图3 9 DS1302的外部引脚分配图 DS1302的内部结构如下图3 10所示 图3 10 DS1302的内部结构图 2 DS1302 管脚及寄存器说明 DS1302的引脚排列 1 Vcc1 为后备电源 VCC2 为主电源 在主电源关闭的情况下 也能保持 时钟的连续运行 DS1302 由Vcc1 或Vcc2 两者中的较大者供电 当Vcc2 大于 Vcc1 0 2V 时 Vcc2 给DS1302 供电 当Vcc2 小于Vcc1时 DS1302 由Vcc1 供电 因此 我们vcc1 用3V 的纽扣电池作为备用电源 vcc2 用系统电源作为 主电源 X1 和X2 是振荡源 外接32 768kHz晶振 RST 是复位 片选线 通过 把RST 输入驱动置高电平来启动所有的数据传送 RST 输入有两种功能 首 先 RST 接通控制逻辑 允许地址 命令序列送入移位寄存器 其次 RST 提 供终止单字节或多字节数据的传送手段 当RST 为高电平时 所有的数据传送 被初始化 允许对DS1302进行操作 如果在传送过程中RST 置为低电平 则 会终止此次数据传送 I O 引脚变为高阻态 上电运行时 在Vcc 2 5V 之前 RST 必须保持低电平 只有在SCLK 为低电平时 才能将RST 置为高电平 I O 为串行数据输入输出端 双向 SCLK 为时钟输入端 DS1302的寄存器说明 2 DS1302有关日历 时间的寄存器共有12个 其中有7个寄存器 读时 81h 8Dh 写时80h 8Ch 存放的数据格式为BCD码形式 如下图3 11所示 图3 11 DS1302有关日历 时间的寄存器 小时寄存器 85h 84h 的位7用于定义DS1302是运行于12小时模式还是 24小时模式 当为高时 选择12小时模式 在12小时模式时 位5是 当为1时 表示PM 在24小时模式时 位5是第二个10小时位 秒寄存器 81h 80h 的位7定义为时钟暂停标志 CH 当该位置为1时 时钟振荡器停止 DS1302处于低功耗状态 当该位置为0时 时钟开始运行 控制寄存器 8Fh 8Eh 的位7是写保护位 WP 其它7位均置为0 在 任何的对时钟和RAM的写操作之前 WP位必须为0 当WP位为1时 写保护位 防止对任一寄存器的写操作 DS1302有关RAM的地址 3 DS1302中附加31字节静态RAM的地址如下图3 12所示 图 3 12 DS1302 有关 RAM 的地址 读写时序说明 4 DS1302是SPI总线驱动方式 它不仅要向寄存器写入控制字 还需要读取 相应寄存器的数据 要想与DS1302通信 首先要先了解DS1302的控制字 DS1302的控制字如 下图3 13所示 图 3 13 控制字 即地址及命令字节 控制字的最高有效位 位7 必须是逻辑1 如果它为0 则不能把数据写入 到DS1302中 位6 如果为0 则表示存取日历时钟数据 为1表示存取RAM数据 位5至位1 A4 A0 指示操作单元的地址 位0 最低有效位 如为0 表示要进行写操作 为1表示进行读操作 控制字总是从最低位开始输出 在控制字指令输入后的下一个SCLK时钟的 上升沿时 数据被写入DS1302 数据输入从最低位 0位 开始 同样 在紧 跟8位的控制字指令后的下一个SCLK脉冲的下降沿 读出DS1302的数据 读出 的数据也是从最低位到最高位 数据读写时序如下图3 14所示 图 3 14 数据读写时序 DS1302时钟电路 5 DS1302时钟电路如下图3 15所示 图 3 15 DS1302 时钟电路原理图 DS1302 与单片机的连接仅需3 条线 时钟线SCLK 数据线I O 和复位线 RST 时钟线SCLK 与PE5 相连 数据线I O 与PE6 相连 复位线RST 与PE7 相 连 由于DS1302 是靠涓细电流充电来实现串行输入输出的 因此 在SCLK I O RST 线上要加上拉电阻 其中 它们的电流应该在500u 1mA 之间 若 电源为5V 则R 约为5k 因此 我们的电阻R 4 7K 在单电源与电池供电系统 中 vcc1 提供低电源并提供低功率的备用电源 Vcc2 提供高电源作为芯片供电 的主电源 因此 这里vcc1 用10uf 的电容做电池 Battery vcc2 用5V 的系统电 源 晶振为32 768KHz 接入X1 X2 引脚 3 2 5 TFT LCD 显示电路设计显示电路设计 1 TFT LCD液晶介绍 彩屏TFT型液晶一直在我们日常生活中也经常用到 比如我们常见的 MP3 MP4和手机等 我们可以通过ATmega128完成对TFT液晶进行控制 DMAVR 128板载了TFT液晶接口 液晶选用了TX05D99VM1AAA模组 该模组实际上是一款手机液晶屏 包含主屏和副屏2个屏幕 尺寸大小1 8 分 辨率分别为128x160和96x64 最大支持26万色 用单片机控制也相对较简单 实物图如下图3 16所示 图3 16 TFT LCD实物图 主屏尺寸图如下图3 17所示 图3 17 主屏尺寸图 分别是主屏和副屏的外观 该液晶模组特点如下 工作电压2 7 3 3V 1 主屏分辨率128x3 R G B x160 副屏分辨率96 x3 R G B x48 2 色数260K 3 视角6点钟方向 4 驱动芯片HD66772 Drain 和HD66774S Gate 5 总线类型支持8 9 16 18bit 总线 80 CPU series 6 背光为发光LED 7 TFT LCD液晶接口引脚说明如下表1所示 表1 液晶接口引脚说明 接口引脚接口引脚 说说 明明 VCCTFT LCD 显示板电源 推荐3 0V AD7 AD08 位数据总线 RS控制寄存器 数据寄存器选择 低电平选择控制寄存器 RD读信号 低电平有效 RW写信号 低电平有效 EC片选 低电平有效 PWM背光控制 RSTReset 复位 低电平复位 GND接地 TFT LCD液晶显示RAM 区映射情况 模块的1 8英寸TFT LCD显示面板上 共分布着128 160个像素点 而模块 内部的TFT LCD驱动控制芯片内置有与这些像素点对应的显示数据RAM 简称 显存 模块中每个像素点需要16 位的数据 即2 字节长度 来表示该点的 RGB 颜色信息 所以模块内置的显存共有128 160 16bit 的空间 通常我 们以字节 byte 来描述其的大小 模块的显示操作非常简便 需要改变某一个像素点的颜色时 只需要对该 点所对应的2 个字节的显存进行操作即可 而为了便于索引操作 模块将所有 的显存地址分为X 轴地址 X Address 和Y轴地址 Y Address 分别可以寻 址的范围为X Address 0 127 Y Address 0 159 X Address 和Y Address交叉 对应着一个显存单元 2byte 这样只要索引到了某一个X Y 轴地址时 并 对该地址的寄存器进行操作 便可对TFT LCD 显示器上对应的像素点进行操 作了 提示 以上的描述意味着 当我们对某一个地址上的显示进行操作时 需 要对该地址进行连续两次的8 位数据写入或读出的操作 方可完成对一个显存 单元的操作 显存与像素点对应关系示意图如下图3 18所示 图3 18 显存与像素点对应关系示意图 TFT LCD液晶显示操作时序 模块支持标准intel8080 总线 总线的最高速度可达8MHz 也就是说 如 果控制MCU 速度足够快的话 是可以支持视频的显示的 为模块的总线时序图如下图3 19所示 127 159 图3 19 模块的总线时序图 注意 模块的总线接口是8 位的 也就意味着对显存的某一个地址操作时 需要连续进行两次操作方可完成 先传高字节再传低字节 TFT LCD液晶模块控制方法 对模块的操作主要分为两种 一是对控制寄存器的读写操作 二是对显存 的读写操作 而这两种操作实际上都是通过对LCD 控制器 SPFD5408 的寄 存器 register 进行操作完成的 SPFD5408提供了一个索引寄存器 Index register 对该Index register 寄存器的写入操作可以指定操作的寄存器索引 以便于完成控制寄存器 显存操作寄存器的读写操作 提供了RS 有些资料称 A0 控制线 并以此线的高低电平状态来区别这对Index register 操作还是对所 指向的寄存器进行操作 当RS 为低电平时 表示当前的总线操作是对Index register 进行操作 即指明接下去的寄存器操作是针对哪一个寄存器的 当RS 为高电平时 表示为对寄存器操作 模块内部有控制寄存器 用户在使用之前 以及对其进行操作过程当中 需要对一些寄存器进行写操作以完成对LCD 的初 始化 或者是完成某些功能的设置 如当前显存操作地址设置等 对控制寄 存器进行操作前 需要先对索引寄存器 Index register 进行定入操作 以指明 接下去的寄存器读写操作是针对哪一个寄存器的 操作的步骤如下 EC RS EC RW RD AD0 A D7 AD0 A D7 1 在RS 为低电平的状态下 写入两个字节的数据 第一个字节为零 第二字节为寄存器索引值 2 然后在RS 为主电平的状态下 写入两个字节数据 第一字节为高八 位 第二字节为低八位 如 要读出指定寄存器的数据 则需要连续三次读操作方能完成一次读出操作 第一个字节为无效数 据 第二字节为高八位 第三字节为低八位 注意 的显存操作也是通过寄存器操作来完成的 即对0 x22 寄存器进行 操作时 就是对当 前位置点的显示进行读写操作 模块的控制寄存器当中 最常被调用的是寄存器除了对显存操作的0 x22 寄 存器外 还有当前显存地址的寄存器display RAM bus address counter AC 一 共由两个的寄存器组成 分别存放有XAddress和Y Adderss 表示当前对显存数 据的读写操作是针对于该地址所指向的显存单元 而每一个显存单元在前面已 经用图示意过 每个单元有16 位 最高的5 位为R 红 的分量 最低的5 位 为B 蓝 的10分量 中间6 位为G 绿 分量 显存单元示意图如下图3 20所示 图3 20 显存单元示意图 所以 当需要对LCD 显示面板上某一个点 X Y 进行操作时 需要先 设置AC 以指向需要操作的点所对应的显存地址 然后连续写入或者读出数据 才完成对该点的显存单元的数据操作 而当对某一个显存单元完成写入数据操 作后 AC 会自动的进行调整 或者是不进行调整 根据控制寄存器中的设置 而决定 保持原来指向 AC 的这个特性对于模块来说非常有用 可以根据此 特性设计出快速的LCD 显示操作功能函数 以适应不同用户的需求 2 TFT LCD液晶显示电路 在DMAVR 128上的TFT接口为固定8位数据线方式 连接原理图如下图3 21 所示 图3 21 TFT LCD液晶显示电路连线图 其中RS RD RW EC PWM和 RST管脚分别为数据 命令使能 写控制 读控制 片选控制 背光控制以及复位控制管脚 分别连接单片机的 PF1 PG4 PF2 PF3 PG2和PD7 AD0 AD7为数接口 接PA口 采用固定8 位数据总线方式 3 2 6 硬件电路总图硬件电路总图 电路总图如下图3 22所示 图3 22 电路连接总图 第第 4 章章 软件系统设计软件系统设计 整个软件系统采用模块化思想 把TFT液晶 DS1302的驱动程序分别集成 在一起 形成统一的函数接口 方便在在功能程序中调用 采用这种方法不仅 使程序模块化 使程序结构层次分明 便于管理和维护 同时可方便以后开发 的调用 只要按照函数接口参数的定义 在功能程序模块中调用接口函数即可 而不必关心底层驱动是如何实现的 这样缩短了开发周期 开发效率大大提高 本设计的软件系统分为三个部分 DS1302时钟芯片的时间采集系统子程序 TFT LCD彩屏的显示子程序和主程序 4 1 主程序设计主程序设计 4 1 1 主程序设计框图主程序设计框图 主程序首先是要初始化AVR单片机各个I O口 DS1302时钟芯片和TFT LCD液晶模块 再对LCD进行清屏 之后调用DS1302日历时钟的子程序 完成 对日历时钟的初始化和时间数据的读写 最后调用LCD液晶模块的显示子程序 显示数据 主程序的组成就是通过分别调用各个子程序组成一个完整的指针式 时钟系统功能 主程序流程图如下图4 1所示 图4 1 主程序流程图 4 1 2 主程序设计框图源程序主程序设计框图源程序 int main void delay ms 100 McuInit LCD RD1 LCD Init LCD clear 0 ds1302 init DS1302初始化 delay ms 10 ds1302 write time 向DS1302写初始数据 如年月和时间等 GUIclock 画时钟界面框 对单片机的各个 I O 进行初始化 对 LCD 液晶模块初始化 向 DS1302 写初始数据 年月和时间 开始 对 DS1302 时钟芯片初始化 对 LCD 进行清屏 从 DS1302 读数据 在 LCD 液晶上显示数据 结束 while 1 delay ms 900 ds1302 read time 读DS1302数据 GUIline 64 64 sxi syi 0 清除秒指针显示痕迹 TimeGet if time h 0 x02 DisplayGB2312 16 3 5 0 x079ff 下 else DisplayGB2312 15 3 5 0 x79ff 上 DisplayGB2312 17 4 5 0 x79ff 午 DisplayData if time sec 00 hxi 64 cos PI 0 5 PI time hour 6 PI time min 1 360 30 小时根据分钟的变化轨迹横坐标计算公式 hyi 64 sin PI 0 5 PI time hour 6 PI time min 1 360 30 小时根据分钟的变化轨迹纵坐标计算公式 GUIline 64 64 hxi hyi 0 小时指针在小时更新后清除前一痕迹 hxi 64 cos PI 0 5 PI time hour 6 PI time min 360 30 hyi 64 sin PI 0 5 PI time hour 6 PI time min 360 30 GUIline 64 64 hxi hyi 0 x2ee0 小时指针在分钟更新后显示新的位置 else hxi 64 cos PI 0 5 PI time hour 6 PI time min 360 30 hyi 64 sin PI 0 5 PI time hour 6 PI time min 360 30 GUIline 64 64 hxi hyi 0 x2ee0 小时指针在分钟不更新时显 示原来位置 if time sec 00 分钟指针在秒更新后清除前一痕迹 mxi 64 cos PI 0 5 PI time min 1 30 40 myi 64 sin PI 0 5 PI time min 1 30 40 GUIline 64 64 mxi myi 0 mxi 64 cos PI 0 5 PI time min 30 40 myi 64 sin PI 0 5 PI time min 30 40 GUIline 64 64 mxi myi 0 x2e0 分钟指针在秒更新后显示新的位置 else mxi 64 cos PI 0 5 PI time min 30 40 分钟的变化轨迹横坐 标计算公式 myi 64 sin PI 0 5 PI time min 30 40 分钟的变化轨迹纵坐 标计算公式 GUIline 64 64 mxi myi 0 x2e0 分钟指针在秒不更新 时显示原来的位置 sxi 64 cos PI 0 5 PI time sec 30 50 秒指针的变化轨迹横 坐标计算公式 syi 64 sin PI 0 5 PI time sec 30 50 秒指针的变化轨迹纵 坐标计算公式 GUIline 64 64 sxi syi 0 xffe0 显示秒指针位置 GUIfull 61 60 67 67 0 xf800 显示时钟中心 4 2 DS1302 芯片的实时时钟日历子程序芯片的实时时钟日历子程序 4 2 1 DS1302 时钟程序设计框图时钟程序设计框图 该程序主要实现对DS1302写保护 充电 对年 月 日 时 分 秒等寄 存器的读写操作 在读写操作子程序中都执行了关中断指令 因为在串行通信 时对时序要求比较高 而且在此时用I O口软件模拟串行时钟脉冲 所以在通信 过程中最好保证传输的延续性 不要允许中断 DS1302与CPU的连线只需要三条线 即SCLK PE5 I O PE6 REST PE7 DS1302的读写需要初始化时序 读时序 写时序 所有的时序都是将单片机 作为主设备 单总线期间作为从设备 每一次命令合数的传输都是从单片机启 动写时序开始 如果要求单总线期间回送是低位在先 读写都是16位数据高8位 是地址 低8位是数据 在读写时要严格这也能从读写时序 否则读写将会失效 DS1302每次上电时自动处于暂停状态 必须把秒寄存器的位7置位0 时钟 才开始计时 当然如果DS1302一直没有掉电 则不存在此问题 在进行写操作时 需要解除写保护寄存器的 禁止 状态 当用多字节模 式进行操作时 必须写够8字节 其流程图如下图4 2所示 开始 DS1302 初始化 向 DS1302 写入数据 初值 开始计时 从 DS1302 读出数据 返回 图4 2 时钟子程序流程图 DS1302的读写流程图如下图4 3所示 a 时钟读 b 时钟写 图 4 3 DS1302 的读写流程图 4 2 2 DS1302 时钟主要源程序时钟主要源程序 DS302初始化函数 void ds1302 init void RST CLR RST脚置低 SCK CLR SCK脚置低 RST OUT RST脚设置为输出 SCK OUT SCK脚设置为输出 开始 REST 置 1 发送一位命令码 写一位数据 REST 置 0 返回 8 位送完 数据写完 完 开始 REST 置 1 发送一位命令码 8位送完 读一位数据 数据读完 完 REST 置 0 返回 否 否否 否 向DS1302写入一字节数据 void ds1302 write byte unsigned char addr unsigned char d unsigned char i RST SET 启动DS1302总线 写入目标地址 addr IO OUT addr addr 最低位置零 for i 0 i 1 写入数据 d IO OUT for i 0 i 1 RST CLR 停止DS1302总线 从DS1302读出一字节数据 unsigned char ds1302 read byte unsigned char addr unsigned char i unsigned char temp RST SET 启动DS1302总线 写入目标地址 addr IO OUT addr addr 0 x01 最低位置高 for i 0 i 1 输出数据 temp IO IN for i 0 i 1 if IO R temp 0 x80 else tem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论