文档详情

ARM——报时表及闹钟的设计实验

aa****6
实名认证
店铺
PDF
288.71KB
约14页
文档ID:35535805
ARM——报时表及闹钟的设计实验_第1页
1/14

1EasyEasyEasyEasy ARM2131ARM2131ARM2131ARM2131 开发板实验报告开发板实验报告开发板实验报告开发板实验报告 实验名称:报时表及闹钟的设计实验 系 部:物理与机电工程学院 专业班级:07 电子信息工程(2)班 学生姓名: 学 号: 指导教师: 完成时间:2010 年 5 月 6 日 报告成绩: 2报时表及闹钟的设计实验报时表及闹钟的设计实验报时表及闹钟的设计实验报时表及闹钟的设计实验 (结合(结合(结合(结合 GPIO、SPI,万年历改装实验),万年历改装实验),万年历改装实验),万年历改装实验) 一一一一、、、、 实验目的实验目的实验目的实验目的:::: 1) 设计一个由万年历改装的报时表和闹钟 2) 复习 GPIO、SPI 的 7 段数码显示管的工作原理和应用 3) 了解和掌握实时时钟的工作原理及应用 4) 学会综合以前所学的知识实现新的功能 5) 更加熟悉 Easy-ARM2138 开发板的结构和使用方法 二二二二、、、、 实验仪器实验仪器实验仪器实验仪器:::: 硬件:Easy-ARM 实验开发板一套 计算机一台(内装有 ADS1.2 及 EasyJTAG 仿真器) 软件:Windows xp 系统,ADS1.2 集成开发环境 三三三三、、、、 实验原理实验原理实验原理实验原理:::: 1. 概述: 1) 实时时钟(RTC,Real Time Clock)提供一套计数器在系统上电和关闭 操作时对时间 进行测量,RTC消耗的功率非常低。

2) LPC2131的RTC时钟可由独立的32.768KHz 振荡器或基于VPB时钟的 可编程预分频器来提供 3) 另外,RTC还具有专用的电源管脚Vbat,可连接到电池或其它器件使用 的相同的 3.3V 电压上 4)4)4)4) 要使RTC中断能够唤醒掉电的CPU,必须选择外部时钟源 2. RTC 的特性: l 测量保持日历或时钟的时间通路; l 超低功耗设计,支持电池供电系统; l 提供秒、分、小时、日、月、年和星期; l 指定的 32KHz 振荡器或可编程 VPB 时钟预分频器;  l 专用电源管脚可与电池或 3.3V 的电压相连 3. RTC结构: RTC功能结构如图4.116 所示: 34. 时间计数器: ((((1))))时间计数器寄存器: 地址地址地址地址 名称名称名称名称 规格规格规格规格 描述描述描述描述 访问访问访问访问 0xE0024020 SEC 6 秒值 该值的范围为 0~59 R/W 0xE0024024 MIN 6 分值 该值的范围为 0~59 R/W 0xE0024028 HOUR 5 小时值 该值的范围为 0~23 R/W 0xE002402C DOM 5 日期(月)值该值的范围为1~28,29,30 ,31 R/W 0xE0024030 DOW 3 星期值 该值的范围为 0~6 R/W 0xE0024034 DOY 9 日期(年)值 该值的范围为 1~365 R/W 0xE0024038 MONTH 4 月值 该值的范围为 1~12 R/W 0xE002403C YEAR 12 年值 该值的范围为 0~4095 R/W ((((2 2 2 2))))时间计数器的关系和值: 计数器计数器计数器计数器 规格规格规格规格 使能使能使能使能 最小值最小值最小值最小值 最大值最大值最大值最大值 秒 6 Clk1(图4.116) 0 59 分 6 秒 0 59 小时 5 分 0 23 日期(月) 5 小时 1 28, 29, 30 或 31 星期 3 小时 0 6 日期(年) 9 小时 1 365 或 366(闰年) 月 4 日期(月) 1 12 年 12 月或日期(年) 0 4095 45. 预分频器: 预分频器允许从任何频率高于65.536KHz(2×32.768KHz)的外设时钟源 产生一个32.768KHz 的基准时钟。

这样,不管外设时钟的频率为多少RTC总是 以正确的速率运行预分频器通过一个包含整数和小数部分的值对外设时钟 (pclk)进行分频这样就产生了一个不是恒定频率的连续输出,有些时钟周期比 其它周期多1个pclk周期,但是每秒钟的计数总数总是32768 基准时钟分频器包含一个13位整数计数器和一个15位小数计数器使用该 规格的原因如下: 1) 对于 LPC2131 所支持的频率,13 位整数计数器是必要的可以这样 进行计算:频率 160MH 除以 32768 再减去 1 等于 4881,余数为 26,624保存 4881 需要 13 个位13 位实际所能支持的᳔高频率为 268.4MHz(32768×8192) 2) 余数的᳔大值为 32767,需要 15 位来保存 6. RTC 中断: 中断的产生由中断位置寄存器(ILR)、计数器递增中断寄存器(CIIR)、报警寄 存器和报警 屏蔽寄存器(AMR) 控制,只有转换到中断状态才能产生中断ILR 单独使能CIIR和AMR中断(ILR 寄存器实际是一个中断标志寄存器) CIIR 中的每个位都对应一个时间计数器, 如果 CIIR 使能用于一个特定的计 数器,那么该 计数器的值每增加一次就产生一个中断,如图 4.118 所示。

报警寄存器允许用户设定产生中断的日期或时间AMR 提供一个屏蔽报警比 较的机制,如果所有非屏蔽报警寄存器与它们对应的时间计数器的值相匹配时, 则会产生中断,如 图 4.119 所示 如果 RTC 使用独立的外部振荡器,RTC 中断可使 LPC2131 退出掉电模式 当 RTC 中 断唤醒使能并且所选中断事件出现时,将启动 XTAL 1/2 管脚相关的 振荡器,经过一定周期 后,CPU 被唤醒 57. 基本操作: LPC2131 的实时时钟, 可用来进行定时报警, 日期及时分秒计时等等 RTC 具有独立的电源和时钟源,电源消耗很低,特别适合于电池供电,CPU 不连续 工作(掉电模式)的系统通过设置中断唤醒寄存器(INTWAKE),RTC 中断 还能将 CPU 从掉电模式下唤醒设置时钟控制寄存器(CCR)可以选择 RTC 的计数时钟,由独立的 32.769KHz 振荡器提供或将 Fpclk 进行分频得到当 使用 Fpclk 作为时钟源时,它的基准时钟分频器允许调节任何频率高于 65.536KHz 的外设时钟源产生一个 32.768KHz 的基准时钟, 实现准确计时操作 如图 4.120 所示, 实时时钟 CTC 计数器的时钟源使用由 PCLK 通过基准时 钟分频器 (PREINT、PREFRAC)调整出的 32768Hz 时钟信号,或者直接使用 独立的外部 32.768KHz 振荡器产生的时钟信号。

CTC 是一个 15 位的计数器, 它位于秒计数器之前,CTC 每秒计数 32768 个时钟;当有 CTC 秒进位时,完 整时间 CTME0~2、RTC 时间寄存器(如 SEC、MIN 等)将会更新;RTC 中断有 两种,一种是增量中断,由 CIIR 进行控制,另一种为报警中断,由 AMR 寄存 器和各报警时间寄存器控制,如 ALSEC、ALMIN 等;报警位置寄存器 ILR 用来 产生相应的中断标志;RTC 时钟控制寄存器 CCR 用于使能实时时钟,CTC 复 位控制等 其中,日期寄存器(表示“日”)有两个,分别为 DOY 和 DOM,DOY 表示为一 年中的 第几日,值为 1~365(闰年为 366);而 DOM 则为一月中的第几日,值 为 1~28/29/30/31,一般日期计数使用 DOM 即可 RTC 基本操作方法: l 选择时钟源(CCR 寄存器); l 设置 RTC 基准时钟分频器(PREINT、PREFRAC)(根据上一步选择 执行此步操作);  l 初始化 RTC 时钟值,如 YEAR、MONTH、DOM 等; l 报警中断设置,如 CIIR、AMR 等; l 启动 RTC,即 CCR 的 CLKEN 位置位; l 读取完整时间寄存器值,或等待中断。

6四四四四、、、、 实验程序流程图实验程序流程图实验程序流程图实验程序流程图:::: 开始 选择引脚连接 SPI; 设置连接串口 0; P0.7、 P1.18、 P[21:16] 选择连接 GPIO; 设置 P0.7、P1.18 为输出状态,P[21:16] 为输入状态 SPI,串口 0 初始RTC 初始化 增量中断标志置位? 清除 RTC 中断 读取时钟,送到上位机显示 KEY1 按下 ? KEY2 按下 ? KEY3 按下 ? KEY4 按下 ? KEY5 按下 ? KEY6 按下 ? 月份 大于 12 ? 设置基准时钟; 设置年、月、日、星期、 时、分、秒; 设置秒增量产生中断; 启动 RTC 否 否 否 否 否 否 月份自增 MONTH+日期 大于 30 ? 小时 大于 23 ? 星期 大于 7 ? 分钟 大于 59 ? MONTH=1 DOM=1 DOW=1 HOUR=0 MIN=0 是 是 是 是 是 日期自增 DOM++ 星期自增 DOW++ 小时自增 HOUR++ 分钟自增 MIN++ 年份自增 1 YEAR++ 否 否 否 否 否 A 是 否 7五五五五、、、、 实验内容实验内容实验内容实验内容:::: 结合GPIO、SPI,用实时时钟实现报时和闹钟的功能。

六六六六、、、、 实验步骤实验步骤实验步骤实验步骤:::: 1) 按照开发板说明连接计算机, 打开ADS1.2和H-JTAG软件给开发板上电调 试 2) 观察实验现象,看看蜂鸣器是否鸣叫,程序是否正常运作 3) 适当调节定时器的定时时间,观察程序运行现象 4) 修改程序,观察程序运行后,是否符合预计程序的功能 七七七七、、、、 程序程序程序程序:::: 1.1.1.1.程序说明: 本程序是结合了GPIO、SPI和实时时钟设计的一个由万年历改装的报时表 和闹钟 2.2.2.2.实验程序(表格内和字体加粗部分为增加修改的程序表格内和字体加粗部分为增加修改的程序表格内和字体加粗部分为增加修改的程序表格内和字体加粗部分为增加修改的程序): #include “config.h“ #define HC595_CS (1 0; dly--) for (i=0; i 115200)) return (0); if ((set.datab 8)) return (0); if ((0 == set.stopb) || (set.stopb > 2)) return (0); if (set.parity > 4) return (0); // 设置串口波特率 U0LCR = 0x80; // DLAB=1 bak = (Fpclk >> 4) / baud; U0DLM = bak >> 8; U0DLL = bak 10// 设置串口模式 bak = set.datab - 5; if (2 == set.stopb) bak |= 0x04; if (0 != set.parity) { set.parity = set.parity - 1; bak |= 0x08; } bak |= set.。

下载提示
相似文档
正为您匹配相似的精品文档