毕业设计(论文)-基于AT89C51单片机的时钟设计.doc_第1页
毕业设计(论文)-基于AT89C51单片机的时钟设计.doc_第2页
毕业设计(论文)-基于AT89C51单片机的时钟设计.doc_第3页
毕业设计(论文)-基于AT89C51单片机的时钟设计.doc_第4页
毕业设计(论文)-基于AT89C51单片机的时钟设计.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计报告(论文) 报告(论文)题目:基于 AT89C51 的时钟设计 作者所在系部: 电子工程系 作者所在专业: 应用电子技术 作者所在班级: 07211 作 者 姓 名 : 作 者 学 号 : 指导教师姓名: 完 成 时 间 : 2010 年 6 月 5 日 北华航天工业学院教务处制 北华航天工业学院电子工程系 毕业设计(论文)任务书 姓姓 名:名:专专 业业: :应用电子技术班班 级级: :07211学号:学号:20073021103 指指导导教教师师: :王达伟职职 称:称:讲师完成完成时间时间: :2009 年 6 月 5 日 毕业设计毕业设计( (论论文)文)题题目:目:基于 AT89C51 的时钟设计 设计设计目目标标: : 利用51单片机的的理论知识,设计实现能够实现LED上显示年、月、日、星期、时、分、 秒,还具有时间校准等功能。 技技术术要求:要求: 1.对年、月、日、时、分、秒、星期进行计时 2. 具有时间校准功能 所需所需仪仪器器设备设备: : 计算机一台 成果成果验验收形式:收形式: 原理图、仿真结果 参考文献:参考文献: MCS51单片机应用教程、 51单片机C语言程序设计快速入门 时间时间 安排安排 15 周-6 周立题论证39 周-13 周仿真调试 27 周-8 周方案设计414 周-16 周成果验收 指指导导教教师师:王达伟 教研室主任教研室主任:王俊红 系主任系主任:陈刚 北华航天工业学院毕业论文 I 摘 要 随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计 时的消费需求也是越来越多。 单片机自 20 世纪 70 年代问世以来,以其极高的性能价格比,受到人们的重视和关 注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价 格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已 广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电 一体化设备等各个方面,而 51 单片机是各单片机中最为典型和最有代表性的一种。这次 毕业设计通过对它的学习、应用,以 AT89C51 芯片为核心,辅以必要的电路,设计了一 个电子日历时钟,从而到达学习、设计、开发软、硬件的能力! 本文介绍了基于 AT89C51 单片机的多功能电子万年历的硬件结构和软硬件设计方法。 系统以 AT89C51 单片机为控制器,以串行时钟日历芯片 DS1302 记录日历和时间,它可以 对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的 数字显示,可以在 LED 上显示年、月、日、星期、时、分、秒,还具有时间校准等功能。 此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有 广阔的市场前景。 关键词 AT89C51;电子日历; DS1302 北华航天工业学院毕业论文 II 目 录 第第 1 1 章章 设计要求与方案论证设计要求与方案论证 .3 3 1.1 引言.3 1.2 功能要求 .3 1.3 方案论证 .3 1.3.11.3.1 技术可行性技术可行性 .3 3 1.3.21.3.2 单片机的选择单片机的选择 .4 4 1.3.31.3.3 显示模块的选择显示模块的选择 .4 4 1.3.41.3.4 键盘的选择键盘的选择 .5 5 1.3.51.3.5 总体方案论证与选择总体方案论证与选择 .5 5 第第 2 2 章章 系统硬件电路的设计系统硬件电路的设计 .7 7 2.1 电路设计 .7 2.2 系统硬件概述 .8 2.2.12.2.1 主控制器主控制器 AT89C51AT89C51 .8 8 2.2.22.2.2 时钟电路时钟电路 DS1302DS1302 .8 8 2.3 主要单元电路的设计 .11 2.3.12.3.1 显示电路显示电路 .1111 2.3.22.3.2 MAX7219MAX7219 的工作原理的工作原理 .1313 2.3.22.3.2 键盘接口键盘接口 .1515 第第 3 3 章章 系统的软件设计系统的软件设计 .1717 3.1 显示驱动程序流程图.17 3.2 日历程序 .18 致致 谢谢 .3030 参参 考考 文文 献献 .3131 北华航天工业学院毕业论文 3 第第 1 章章 设计要求与方案论证设计要求与方案论证 1.1 引言引言 随着电子技术的发展,人类不断研究,不断创新纪录。 本文提出了一种基于 AT89C51 单片机的日历设计方案,本方案以 AT89C51 单片机作 为主控核心,与时钟芯片 DS1302、按键、LED 显示等模块组成硬件系统。在硬件系统中 设有独立按键和 LED 显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进 行校准、选择时间等,综上所述此电子日历历具有读取方便、显示直观、功能多样、电 路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 1.2 功能要求功能要求 本电子日历能动态显示年、月、日、星期、小时、分钟、秒。 1.3 方案论证方案论证 1.3.1 技术可行性技术可行性 随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成 技术的最新发展之一是将 CPU 和外围芯片,如程序存储器、数据存储器、并行 I/O 口、 串行 I/O 口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片 计算机(Single-Chip Microcomputer) 。而近年来推出的一些高档单片机还包括有许多 特殊功能单元,如 A/D、D/A 转换器、调制解调器、通信控制器、锁相环、DMA、浮点运 算单元、PWM 控制输出单元、PWM 输出时的死区可编程控制功能等。因此,只要外加一些 扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业流水线控制系统、 作为家用电器的主控制器、分布式控制系统的终端节点或作为其主控制节点起中继的作 用、数据采集系统、自动测试系统等。 单片机的出现,并在各技术领域中得到如此迅猛的发展,与单片机构成计算机应用 系统所形成的下述特点有关: 北华航天工业学院毕业论文 4 1) 单片机构成的应用系统有较大的可靠性。这些可靠性的获得除了依靠单片机芯片 本身的高可靠性以及应用有最少的联接外,还可以方便地采用软、硬件技术。 2) 系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统,应用系统有 较高的软、硬件利用系数。 3) 由于构成的应用系统是一个计算机系统,相当多的测、控功能由软件实现,故具 有柔性特征,不须改变硬件系统就能适当地改变系统功能。 4) 有优异的性能、价格比。 1.3.2 单片机的选择单片机的选择 方案一:采用传统的 AT89C51 作为电机的控制核心。单片机算术运算功能强,软件 编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体 积小、技术成熟和成本低等优点,使其在各个领域应用广泛。 方案二:采用 FTC10F04 单片机,还带有非易失性 Flash 程序存储器。它是一种高性 能、低功耗的 8 位 CMOS 微处理芯片,市场应用最多。其主要特点如下:8KB Flash ROM,可以擦除 1000 次以上,数据保存 10 年。 由于本系统对 CPU 运算速度要求很高,需要执行很复杂的运算,方案一成本比较低, 适合做设计,方案二运算速度高,性能好,所以两种方案都有可取之处。选用方案一作 为主方案,方案二作为备用方案。 1.3.3 显示模块的选择显示模块的选择 方案一: 使用液晶显示屏显示时间数字。 液晶显示屏(LCD)具有轻薄短小、低耗电量、无 辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨 率高,抗干扰能力强等特点。但由于液晶是以点阵的模式显示各种符号,需要利用控制 芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。在使用时, 不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。 方案二: 使用传统的 LED 数码管显示。 数码管具有:低能耗、低损耗、低压、寿命长、耐老 化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比 北华航天工业学院毕业论文 5 较高,称重轻,精确可靠,操作简单。数码管采用 BCD 编码显示数字,程序编译容易, 资源占用较少。 根据以上的论述,采用方案二。在本系统中,我们采用了八段四位一体数码管串口 的动态显示,由于显示位数较多,故应使用显示驱动,在本设计中采用 MAX7219 显示驱 动芯片。 1.3.4 键盘的选择键盘的选择 在对日期和时间进行切换,对日期和时间进行调节校准过程 中,系统需要产生激 励电流,因此需要用按键。 方案一: 使用独立式键盘。独立式键盘是指直接用 I/O 口线构成的单个按键电路。独立式按 键电路配置灵活,软件结构简单。 方案二: 使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上, 行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按 键数量较多的场合。 根据以上的论述,因本系统需要的按键不多,星期加 1 键,日期加 1 键,月数加 1 键,年数加 1 键,秒数加 1 键,分数加 1 键,时数加 1 键,时间/日期切换键,要求 简单。所以采用方案一独立式键盘。 1.3.5 总体方案论证与选择总体方案论证与选择 按照系统设计功能的要求,初步确定系统由主控模块、时控模块、显示 驱动及显 示模块和键盘接口模块共 5 个模块组成,电路系统构成框图如图 1.1 所示。 北华航天工业学院毕业论文 6 图 1.1 电子万年历电路系统构成框图 主控芯片使用 51 系列 AT89C51 单片机,时钟芯片使用美国 DALLAS 公司推出的一种 高性能、低功耗、带 RAM 的实时时钟 DS1302。采用 DS1302 作为计时芯片,可以做到计 时准确。更重要的是,DS1302 可以在很小电流的后备电源(2.55.5V 电源,再 2.5V 时耗电小于 300nA) ,而且 DS1302 可以编程选择多种充电电流来对后备电源进行慢速充 电,可以保证后备电源基本不耗电。显示驱动采用 MAX7219,MAX7219 是微处理器和共 阴极八段八位 LED 数码管显示、图条/柱图显示或 64 点阵显示接口的小型串行输入/ 输出芯片。 片内包括 BCD 译码器、多路扫描控制器、字和位驱动器和 88 静态 RAM。外部只 需要一个电阻设置所有 LED 显示器字段电流。MAX7219 和微处理器只需三根导线连接, 每位显示数字有一个地址由微处理器写入。允许使用者选择每位是 BCD 译码或不译码。 使用者还可选择停机模式、数字亮度控制、从 18 选择扫描位数和对所有 LED 显示 器的测试模式。显示模块采用普通的共阴极四位一体八段 LED 数码管。 北华航天工业学院毕业论文 7 第第 2 章章 系统硬件电路的设计系统硬件电路的设计 2.1 电路设计电路设计 图 2.1 日历电路原理图 北华航天工业学院毕业论文 8 图 2.1 示为电子日历电路设计原理图,系统由主控制器 AT89C51、时钟电路 DS1302、显示驱动 MAX7219 电路,显示电路及键扫描电路组成。 2.2 系统硬件概述系统硬件概述 2.2.1 主控制器主控制器 AT89C51 ATMEL 公司生产的 AT89C51 单片机采用高性能的静态 80C51 设计,并采用先进工艺 制造,还带有非易失性 Flash 程序存储器。它是一种高性能、低功耗的 8 位 CMOS 微处理 芯片,市场应用最多。其主要特点如下: 8KB Flash ROM,可以擦除 1000 次以上,数据保存 10 年。 256 字节内部 RAM; 电源控制模式; 时钟可停止和恢复; 空闲模式; 掉电模式; 6 个中断源; 4 个中断优先级; 4 个 8 位 I/O 口; 全双工增强型 TUAR; 3 个 16 位定时/计数器:T0、T1(标准 80C51)和增加的 T2(捕获和比较) ; 全静态工作方式:024MHZ。 2.2.2 时钟电路时钟电路 DS1302 1. DSI302d 的性能特性 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行比较; 用于高速数据暂存的 31*8 位 RAM; 最少引脚的串行 I/O; 2.55.5V 电压工作范围; 北华航天工业学院毕业论文 9 2.5V 时耗小于 300nA; 用于时钟或 RAM 数据读/写的单字节或多字节(脉冲方式)数据传送方式; 简单的三线接口; 可选的慢速充电(至 Vcc1)的能力。 DS1302 时钟芯片包括实时时钟/日历和 31 字节的静态 RAM。它经过一个简单的串行 接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小 于 31 天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用 24时或带 AM/PM 的 12 小时格式。采用三线接口与 CPU 进行同步通信,并可采用突发 方式一次传送多字节的时钟信号或 RAM 数据。 DS1302 有主电源/后备电源双电源引脚:Vcc1 在单电源与电池供电的系统中提供低 电源,并提供低功率的电磁备份;Vcc1 在双电池系统中提供主电源。在这种运行方式中, Vcc1 里连接到后备电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302 由 Vcc1 或 Vcc2 中较大者供电。当 Vcc2(Vcc1+0.2V)时,Vcc2 给 DS1302 供电;当 Vcc2Vcc1 时,DS1302 由 Vcc1 供电。 图 2.2 DS1302 引脚图 2. DS1302 数据操作原理 DS1302 在任何数据传送时必须先初始化,把 RST 脚置为高电平,然后把 8 位地址和 命令字装入移位寄存器,数据在 SCLK 的上升沿被访问到。在开始 8 个时钟周期,把命令 字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。 时钟脉冲的个数在单字节方式下为 8+8,在多字节方式下为 8+字节数,最大可达 248 字 节数。如果在传送过程中置 RST 脚为低电平,则会终止本次数据传送,并且 I/O 引脚变 为高阻态。上电运行时,在 Vcc2.5V 之前,RST 脚必须保持低电平。只有在 SCLK 为低 电平时,才能将 RST 置为高电平。 DS1302 的控制字如图 2.1 所示。DS1302 与微处理器作数据交换时,首先由微处理器 向芯片发送控制字节,控制字节的最高有效位(位 7)必须是逻辑 1,如果它为 0,则不 北华航天工业学院毕业论文 10 能把数据写入到 DS1302 中。位 6 如果为 0,则表示存取日历时钟数据;为 1 则表示存取 RAM 数据。位 51(A4A0)指示操作单元的地址。最低有效位(位 0)如果为 0,则表 示要进行写操作;为 1 表示进行读操作。控制字节总是从最低位开始输入/输出。 为了提高对 32 个地址寻址能力(地址/命令位 15=逻辑 1),可以把时钟/日历或 RAM 寄存器规定为多字节(burst)方式。位 6 规定时钟或 RAM,而位 0 规定读或写。在 时钟/日历寄存器中的地址 931 或 RAM 寄存器中的地址 31 不能存储数据。在多字节方 式下,读或写从地址 0 的位 0 开始。必须按数据传送的次序写最先的 8 个寄存器。但是, 当以多字节方式写 RAM 时,为了传送数据不必写所有的 31 字节,不管是否写了全部 31 字节,所写的每一字节都将传送至 RAM。 DS1302 共有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD 码形式。其日历、时间寄存器及其控制字如 2.2 表所示,其中奇数为读操作,偶数 为写操作。 时钟暂停:秒寄存器的位 7 定义位时钟暂停位。当它为 1 时,DS1302 停止振荡,进 入低功耗的备份方式,通常在对 DS1302 进行写操作时(如进入时钟调整程序),停止振 荡。当它为 0 时,时钟将开始启动。 AM-PM/12-24 小时方式:小时寄存器的位 7 定义为 12 或 24 小时方式选择位。它为 高电平时,选择 12 小时方式。在此方式下,位 5 为第二个 10 小时位(2023h) 。 DS1302 的晶振选用 32768Hz,电容推荐值为 6pF。因为振荡频率较低,也可以不接 电容,对计时精度影响不大。 北华航天工业学院毕业论文 11 表 2.2 内部寄存器地址和内容 2.3 主要单元电路的设计主要单元电路的设计 2.3.1 显示电路显示电路 显示部分采用普通的共阴数码管显示,采用动态扫描,以减少硬件电路。年月日时 分秒星期共需要 17 位数码显示,考虑到一次扫描 17 位数码管显示时会出现闪烁情况, 故采用动态扫描,可将数码管数量减少至 9 位,也就是两个四位一体八段 LED 显示数码 命令字符寄存器内容 写读 取值范围 76543210 寄存 器 名80H 81H0059 C H 10SECSEC 分钟 寄 存 器 82H83H0059010MINMIN 小时 寄 存 器 84H85H 0023 或 011 2 1 2 / 2 4 010A/PHRHR 日期 寄 存 器 86H87H 0128、29 、30 、31 0010DATEDATE 月份 寄 存 器 88H89H011200010MMONTH 周寄 存 器 8AH8BH010700000DAY 年寄 存 器 8CH8DH009910YEARYEAR 北华航天工业学院毕业论文 12 管和一个一位 LED 数码管设计时数码管同时扫描,显示时采用串行口输出段码,用 MAX7219 驱动数码管。 图 2.3 MAX7219 引脚图 MAX7219 和单片计算机连接有三条引线(DIN、CLK、LOAD) ,采用 16 位数据串 行移位接收方式; 八位 LED 显示、图条/柱图显示或 64 点阵显示; 包括 BCD 译码器、多路扫描控制器、字和位驱动器和 88 静态 RAM; 可选择停机模式、数字亮度控制、从 18 选择扫描位数和对所有 LED 显示器 的测试模式; 最多能驱动 8 位 LED 显示器; 内部 RAM 地址 0108H 分别对应于 DIG0DIG7; 扫描界限寄存器(地址 0BH):该寄存器中 D0D3 位数据设定值为 07H,设 定值表示显示器动态扫描个数位 18; 停机寄存器(地址 0CH):当 D0=0 时,MAX721 处于停机状态;当 D0=1 时,处 于正常工作状态; 显示测试寄存器(地址 0FH):当 D0=0 时,MAX7219 按设定模式正常工作;当 D0=1 时,处于测试状态。在该状态下,不管 MAX7219 处于什么模式,全部 LED 将按最大亮度显示; 亮度寄存器(地址 0AH):亮度可以用硬件和软件两种方法调节亮度寄存器中的 D0D3 位可以控制 LED 显示器的亮度。 北华航天工业学院毕业论文 13 表 2.3 MAX7219 引脚功能图 引脚号名称功能说明 1DIN 串行数据输入端。在 CLK 的上升沿数据被锁入,芯 片内部 16 位移位寄存器 2、3、5-8 10、11 DIGO-DI G7 8 位 LED 位选线,从共阴极 LED 中吸入电流 4、9 GND 地线(两个 GND 必须连在一起) 12LOAD 锁入输入的数据。在 LOAD 的上升沿最后的 16 位串 行数据被锁入 13CLK 时钟输入,最高时钟频率为 10MHZ,在 CLK 的上升 沿数据被锁入内部位移寄存器。在 CLK 的下降沿, 数据从 DOUT 脚输出 14-17 20-23 Sega-SegG, DP 7 段驱动和小数点驱动 18ISET 该脚通过一个电阻与 V+相连,设置峰值段电流 19V+ 电源电压,+5V 24DOUT 串行数据输出,输入到 DIN 的数据在 16.5 个时钟 周期后在 DOUT 脚发出,该脚用于与级联扩展 2.3.2 MAX7219 的工作原理的工作原理 MAX7219 和单片机连接有三条引线,采用 16 位数据串行移位接收方式。即单片机将 16 位二进制数逐位发送到 DIN 端,在 CLK 上升沿到来前准备就绪,CLK 的每个上升沿将 一位数据移入完,在 LOAD 引脚信号上升沿将 16 位数据装入 MAX7219 内的相应位置,在 AX7219 内部应将动态扫描显示控制电路作用下实现动态显示。 其中:D7-D0:8 位数据位,D7 最高位,D0 为最低位;D11-D8:4 位地址位;D15- D12:无关位,通常全取 1。 MAX7219 通过 D11D84 位地址位译码,可寻址 14 个内部寄存器,分别是 8 个 LED 显示位寄存器,5 个控制寄存器和 1 个空操作寄存器。LED 显示寄存器由内部 8 8 静 态 RAM 构成,操作者可直接对位寄存器进行个别寻址, 以刷新和保持数据, 只要 V 超过 北华航天工业学院毕业论文 14 +2 V(一般为 5V)。控制寄存器包括: 译码模式, 显示亮度调节, 扫描限制(选择扫描 位数),关断和显示测试寄存器。 MAX7219 的驱动程序首先必须对 5 个控制寄存器初始设置即初始化, 各控制寄存器 设置含义表 2.4。 表 2.4 寄存器地址分配表 地址 寄存器名称 D15D12D11D10D9D8 空操作 X X X X0000 Digit0X X X X0001 Digit1X X X X0010 Digit2X X X X0011 Digit3X X X X0100 Digit4X X X X0101 Digit5X X X X0110 Digit6X X X X0111 Digit7X X X X1000 译码模式 X X X X1001 亮度调节 X X X X1010 扫描限制 X X X X1011 关断模式 X X X X1100 显示测试 X X X X1111 译码模式选择寄存器(地址 F9H):MAX7219 有两种译码方式:B 译码方式和不译码 方式。当选择不译码即数据位全为 0 时, 8 个数据为分别一一对应 7 个段和小数点位;B 译码方式是 BCD 译码,直接送数据就可以显示。实际应用中可以按位设置选择 B 译码或 是不译码方式。 扫描限制寄存器(地址 FBH):用于设置显示的 LED 个数( 1 8 ) , 比如当设 置为 0 xX4 时,LED 05 显示。 亮度调节寄存器(地址 FAH):共有 16 级选择,用于 LED 显示亮度的强弱设置。 关断模式寄存器(地址 FCH):有两种模式选择:一种是关断状态模式(D00);一 种是正常操作状态(D01),通常选择正常操作状态。 显示测试寄存器(地址 FFH):有两种选择用于设置 LED 是测试状态还是正常操 作状态:当在测试状态时(D0 1)各位全应亮,一般选择正常操作状态(D0 0) 。 北华航天工业学院毕业论文 15 2.3.2 键盘接口键盘接口 键盘在单片机系统中是一个很重要的部件。为了输入数据、查询和控制系统的工作 状态,都要用到键盘,键盘是人工干预计算机的主要手段。 键盘可分为编码和非编码键盘两种。编码键盘采用硬件线线路来实现键盘编码,每 按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能。这种键盘 使用方便,但硬件较复杂,PC 机所用的键盘就属于这种。非编码键盘仅提供按键开关工 作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统 中广泛使用。此处主要介绍该类非编码键盘及其与 MCS51 型单片机的接口。 1. 按键开关去抖动问题 按键开关在电路中的连接如图所示。按键未按下时,A 点电位为高电平 5V;按键按 下时,A 点电位为低电平。A 点电位就用于向 CPU 传递按键的开关状态。但是由于按键的 结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳定, 引起 A 点电平不稳定,如图 2.4 所示,键盘的抖动时间一般为 510ms,抖动现象会引 起 CPU 对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良 后果。 图 2.4 键操作和键抖动 消除抖动的不良后果的方法有硬、软件两种。为了节省硬件,通常在单片机系统中, 一般不采用硬件方法消除键的抖动,而是用软件消除抖动的方法。根据抖动特性,在第 一次检测到按键按下后,执行一段延时 510ms 让前延抖动消失后再一次检测键的状态, 如果仍保持闭合状态电平,则确认真正有键按下。当检测到按键释放后,也要给 510ms 北华航天工业学院毕业论文 16 的延时,待后延抖动消失后才转入该键处理程序。 2. 查询式按键及其接口 按照键盘与 CPU 的连接方式可以分为查询按键和矩阵式键盘。查询式按键是各按键 相互独立,每个按键占用一根 I/O 口线,每根 I/O 口线上的按键工作状态不会影响其他 I/O 口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单,但每个按键必 须占用一根 I/O 口线,在按键数量较多时,I/O 口线浪费较大,且电路结构显得繁杂。 故这种形式适用于按键数量较少的场合。 3. 矩阵式键盘及其接口 矩阵式键盘又称行列式键盘,有 n 个行线和 m 个列线,经限流电阻接+5V 电源上, 按键跨接在行线和列线上,nm 行列结构可构成 mn 个按键,组成一个键盘。与独立式 按键相比,mn 个按键只占用 m+n 根 I/O 口线,因此适用于按键较多的场合。 当无键闭合时,相应的 I/O 之间开路。当有键闭合时,与闭合键相连接的两条 I/O 口线之间短路。判断有无键按下的方法是:第一步,置列线相关 I/O 口为输入态,从行 线相对应的 I/O 口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键 闭合。第二步,置行线相关 I/O 口输出低电平,读入列线数据,若某一列线为低电平, 则该列线上有键闭合。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进 行一次键功能操作,因此须等待近按键释放后,再进行键功能操作,否则按一次键,有 可能会连续多次进行同样的键操作。 4. 键盘扫描控制方式 在单片机应用系统中,对键盘的处理工作仅是 CPU 工作内容的一部分,CPU 还要进 行数据处理、显示和其他输入输出操作,因此键盘处理工作既不能占用 CPU 太多时间, 又需要 CPU 对键盘操作及时作出响应。CPU 对键盘处理控制的工作方式有以下几种: 1) 程序控制扫描方式 程序控制扫描方式是在 CPU 工作空余,调用键盘扫描子程序,响应键输入信号要求。 2) 定时控制扫描方式 定时控制扫描方式是利用定时/计数器每隔一段时间和生定时中断,CPU 响应中断后 对键盘进行扫描,并在有键闭合时转入该键的功能子程序。 北华航天工业学院毕业论文 17 3. 中断控制扫描方式 中断控制扫描方式是利用外部中断源,响应输入信号。当无按键按下时,CPU 执行 正常工作程序。当有按键按下时,CPU 立即产生中断。在中断服务子程序中扫描键盘, 判断是哪一个键被按下,然后执行该键的功能子程序。这种控制方式克服了前两种控制 方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高 CPU 运行效率,但要占用一个宝贵的中断资源。 第第 3 章章 系统的软件设计系统的软件设计 电子日历的程序主要包括 3 个方面的内容:一是 DS1302 从单片机中读取数据进行计 数,二是利用按键进行时间的调整,三是 MAX7219 从单片机中读取数据驱动 LED 数码管 显示时间。 3.1 显示驱动程序流程图显示驱动程序流程图 图 3.1 显示驱动程序流程图 N 初始化 MAX7219 寄存器定义 MAX7219 读入驱动程序 写入 MAX7219 地 址 向各地址发送数据 驱动 LED 显 示 LED 是否 显示完? DS1302 时 间控制程 序 Y 返回 北华航天工业学院毕业论文 18 3.2 日历程序日历程序 #include #include intrins.h #define uint unsigned char #define uint unsigned int uchar xingqi,nian,yue,ri,xiaoshi,fen,miao; uchar nianh,nianl,yueh,yuel,rih,ril,xiaoshih,xiaoshil,fenh,fenl,miaoh,miaol; uchar dd=2;sbit clk=p10; sbit dat=p11;sbit rst=p12; sbitA0=ACC0;sbitA1=ACC1; sbitA2=ACC2;sbitA3=ACC3; sbitA4=ACC4;sbitA5=ACC5; sbitA6=ACC6;sbitA7=ACC7; sbit p30=p30; sbit p31=p31; sbit p32=p32; sbit p33=p33; sbit p34=p34; 北华航天工业学院毕业论文 19 sbit p35=p35; sbit p36=p36; sbit p37=p37; sbit date=p20; sbit load=p21;sbit clkk=p22; uchar bdata bitmsb; sbit m7=bitmsb7; uchar x,y,c; bit flag=0; bit flagh=1; uchar code tab=0 xff, 0 x06,/*1*/ 0 x5B,/*2*/ 0 x4F,/*3*/ 0 x66,/*4*/ 0 x6D,/*5*/ 0 x7D,/*6*/ 0 x07,/*7*/ ; uchar code tab2=0 x7e,ox30,ox6d,ox7,ox33, ox5b,ox5f,ox70,ox7f,ox7b; uchar code tab1=ox00,ox01,ox02,ox03,ox04,ox05,ox06,ox07, ox08,ox09,ox010,ox11,ox12,ox13,ox14,ox15,ox16,ox17,ox18,ox19,ox20,ox21,ox22,o x23,ox24,ox25,ox26,ox27,ox28,ox29,ox30,ox31,ox32,ox33,ox34,ox35,ox36,ox37,ox3 8,ox39,ox40,ox41,ox42,ox43,ox44,ox45,ox46,ox47,ox48,ox49,ox50,ox51,ox52,ox53, ox54,ox55,ox56,ox57,ox58,ox59,ox60; 北华航天工业学院毕业论文 20 void send(void) uchar count; bitmsb=x; for(count=0;count8;count+) if(m7) clkk=0; date=1; -nop-() ; clkk=1; else clkk=0; date=0; nop-() ; clkk=1; bitmsb=1; 北华航天工业学院毕业论文 22 void OutputByte(void) /从 DS1302 中读出 i 个数据 uchar i; dat=1; for(i=8;i0;i-) ACC=ACC1; A7=dat; clk=1; clk=0; dd=ACC; void Write(uchar addr,uchar num) rst=0; clk=0; rst=1; InputByte(addr); /写地址 Write(ox8c,num); void DisableWp(void) Write(ox8e,ox00); 北华航天工业学院毕业论文 23 void Read(uchar addr) rst=0; clk=0; rst=1; InputByte(); clk=1; rst=0; /初始化设置时间,2010 年 6 月 3 号,14 时 53 分 00 秒 void main(void) uchar i; uint xt=0; uchar fen1,fen2,fen3,fen4; p3=oxff; Disable WP(); WriteSec(ox00); /秒 WriteMin(ox53); /分 WriteHr(ox12); /时 WriteDay(ox03); /日 WriteMn(ox06); /月 WriteYs(ox10); /年 WriteWe(ox04); /星期 /7219 设置 北华航天工业学院毕业论文 24 ready(); for(i=0;i=4; nian=fen3*10+fen2; nianh=nian/10; nianl=nian%10; Read(ox89); fen1=dd; fen2=fen1 fen3=fen1 fen34; yue=fen3*10+fen2; yueh=yue/10; yuel=yue%10; Read(ox87); fen1=dd; fen2=fen1 北华航天工业学院毕业论文 25 fen3=4; ri=fen3*10+fen2; rih=ri/10; ril=ri%10; Read(ox85); fen1=dd; fen2=fen1 fen3=fen1 fen3=4; xiaoshi=fen3*10+fen2; xiaoshih=xiaoshi/10; xiaoshil=xiaoshi%10; Read(ox83); fen1=dd; fen2=fen1 fen3=fen1 fen34; fen=fen3*10+fen2; fenh=fen/10; fenl=fen%10; Read(ox81); fen1=dd; fen2=fen1 fen3=fen1 fen34; 北华航天工业学院毕业论文 26 miao=fen3*10+fen2; miaoh=miao/10; miaol=miao%10; if(flagh) c=1; x=1; for(i=0;i4; nian=fen3*10+fen2; nian+; if(nian=51) nian=0; WriteYs(tab1nian); while(p31=0); if(p32=0) if(flag) Read(ox89); 北华航天工业学院毕业论文 27 fen

温馨提示

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

评论

0/150

提交评论