基于LPC2148RTC的实时时钟课题设计_第1页
基于LPC2148RTC的实时时钟课题设计_第2页
基于LPC2148RTC的实时时钟课题设计_第3页
基于LPC2148RTC的实时时钟课题设计_第4页
基于LPC2148RTC的实时时钟课题设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

课题设计 设计 论文 题目 数字时钟系统设计 学 院 名 称 专 业 班 级 姓 名 学 号 指 导 教 师 发放日期 2012 年 12 月 11 日 课程设计报告课程设计报告 1 课题名称课题名称 数字时钟系统设计 2 摘摘 要要 1 基本要求 基本要求 利用 LPC2148 ARM7 嵌入式系统实验箱上的按键与 UART 串行通讯接口设 计数字时钟系统 要求如下 使用 LPC2148 内部的 RTC 模块建立数字时钟系统的基础 初始时间为 2012 年 12 月 1 日 0 时 0 分 0 秒 串口调试助手显示 每隔一秒在串口调试助手上显示当前时间 包括年 月 日 星期 小时 分 秒 在满足以上功能描述的前提下 可使用定时器模块替代 RTC 模块 注意星 期 闰年的情况考虑 2 发挥部分 发挥部分 1 加入三个按键 可以设计时间信息 第一个按键选择年 月 日 星 期 小时 分 秒 第二个按键循环设置 第三个按键在设置完成后启动时钟 2 利用数码管代替串口调试助手的显示功能 数码管上显示分 秒信息 即可 3 设计方案描述 LPC2148 系统微控制器内部集成一个功能完整的实时时钟 RTC 模块 RTC 提 供一套计数器 在系统工作时对时间进行测量 RTC 消耗的功率非常低 这使 其适合于由电池供电的 CPU 不连续工作的系统 由于 LPC2148 微控制器的 RTC 模块没有独立的时钟源 使用的时钟频率是 对 Fpclk 分频得到 输入到时 钟的发生器的时钟频率是 32 768KHZ 时间计数器与报警寄存器不断进行比较 当匹配时 可以产生报警中断 此外 时间计数器的增加也可以产生中断信号 RTC 模块中主要的寄存器 ILR 中断位置寄存器 位 0 为 1 时计数器增量中断模块产生中断 该位写入 1 时清除中断 位 1 为 1 时报警中断寄存器产生中断 该位写入 1 时清除中断 计数器增量中断寄存器 位 0 为 1 时秒值的增加产生一次中断 时钟控制寄存器 CCR 位 0 时钟使能 该位为 1 时 时间计数器使能 为 0 是时间计数器被禁止 主程序设计主程序设计 include include 系统时钟宏定义 define FOSC 12000000 XTAL frequency in Hz define PCLK FOSC 4 pclk must always be XTALFREQ 4 define key 1 0 x01 13 define LED1 0 x01 16 define key 2 0 x01 12 define key 3 0 x01 11 函数声明 void sendByte char byte void delayn unsigned long n void sendStr char Str int putchar int c char buf int key val1 0 int key val2 0 void RTC Init void PREINT int PCLK 32768 1 预分频整数寄存器 PREFRAC PCLK PREINT 32768 预分频小数寄存器 YEAR 2012 初始化时间 MONTH 3 DOM 7 DOW 3 HOUR 17 MIN 15 SEC 0 CIIR 0X01 一秒产生一个中断 CCR 0X01 启动 RTC void UART Init void 配置连接 UART1 的 IO 口 PINSEL0 bit P0 8 1 PINSEL0 bit P0 9 1 PINSEL0 PINSEL0 PINSEL0 0 x00050000 配置 UART1 的寄存器 U1LCR 1 7 写入寄存器使能 U1LCR 3 长度选择 8 位数据 U1LCR 没有校验位 U1LCR 高八位 U1LCR dly for i 0 i 500 i Void Print week void if DOW 0 sendStr sunday n if DOW 1 sendStr monday n if DOW 2 sendStr tuesday n if DOW 3 sendStr wednesday n if DOW 4 sendStr thursday n if DOW 5 sendStr friday n if DOW 6 sendStr saturday n void Print time void printf The real time is d HOUR printf d MIN printf d n SEC sprintf buf d d d r n HOUR MIN SEC sendStr buf void set time void 按键 2 设置小时 分 秒 按键 3 每按一下小时或分或秒加 1 if IO0PIN if IO0PIN if key val2 3 key val2 0 if IO0PIN if IO0PIN if IO0PIN if SEC 60 SEC 0 break case 1 if IO0PIN if IO0PIN if MIN 60 MIN 0 break case 2 if IO0PIN if IO0PIN if HOUR 24 HOUR 0 break 主函数 void main void UART Init RTC Init Logo while 1 set time 设置时间 while 0 ILR Print time Print date Print week ILR 0X03 delayn 100000 发送字符串 void sendStr char Str while Str 0 sendByte Str Str int putchar int c while U1LSR return U1THR c 发送单个字符 void sendByte char byte while U1LSR 数据为空时才写入 U1THR byte 写发送保持寄存器 延时函数 void delayn unsigned long n while n 问题 1 实验中不知道为什么波特率设置为 9600 的时候 显示时部分会出现乱 码 在电子通信领域 波特率 Baud rate 即调制速率 指的是信号被调制以后在 单位时间内的变化 即单位时间内载波参数变化的次数 它是对符号传输速率 的一种度量 1 波特即指每秒传输 1 个符号 理论上我在程序中设置了 9600 波特率 串口窗口中把波特率设置为 9600 可 以正常传输 但实际情况中出现部分乱码 改进 将串口窗口中把波特率改成 4800 将程序中波特率设置为 4800 串

温馨提示

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

评论

0/150

提交评论