实时时钟设计 - 副本

  • 格式:doc
  • 大小:460.84 KB
  • 文档页数:21

成绩_______指导教师评定成绩:审定成绩:重庆邮电大学移通学院课程设计报告设计题目:基于数码管显示的实时时钟学校:重庆邮电大学移通学院学生姓名:专业:电气工程及其自动化班级:学号:指导教师:设计时间:2015年10 月重庆邮电大学移通学院《嵌入式系统》课程设计任务书引言:嵌入式系统课程设计是电气工程及其自动化专业的一个重要教学环节,既有别于毕业设计,又不同于课堂教学。

它需要学生统筹运用所学各个专业的基本理论、基本方法对现实生活中的实际问题进行设计和调试。

一、设计题目:基于数码管显示的实时时钟掌握嵌入式系统设计的基本方法,熟悉S3C2440的开发环境及软硬件的调试过程,了解S3C2440芯片各个引脚功能,工作方式,计时/定时,I/O口,中断等的相关原理,根据控制要求进行编程,解决时钟在数码管的显示问题。

巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。

二、实验要求:1. 作业由两人一组完成,作业完成时要提交设计报告书、固化在教学平台中的可执行代码(附录)。

2. 设计报告书要求:(1)对设计题目的描述。

(2)设计思路说明,包括功能实现方法要点,硬件资源的使用,显示符号的约定说明等。

(3)软件总体结构,层次,功能划分等,核心代码注解。

(4)软件的调试修改过程,其中遇到的问题如何解决的,有什么技术难点问题。

(5)对完成的设计进行总结,说明哪些地方没有达到设计要求,是什么原因;哪些地方超过了设计要求,有什么优点和特色;有哪些改进设想和建议。

(6)程序代码固化在平台的片内flash中,上电后可以自动运行。

(7)结课时收纸质版作业。

摘要本设计采用ARM9(S3C2440)开发板实现实时时钟(RTC)的功能,在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒和年、月、日。

即使系统处于关机状态下,它也能够正常工作(通常采用后备电池供电能够可靠工作十年)其外围也不需要太多的辅助电路,只需要一个高精度的晶振。

S3C2440A集成了具有日历功能的RTC模块,它可以在系统关闭的情况下使用备用电池工作。

RTC使用STRB/LDRB ARM操作传输二进制编码的十进制数(BCD)的8位数据给CPU。

数据包括年、月、日、星期、小时、分钟、秒的时间信息。

此外,RTC模块还可以实现报警功能。

RTC模块采用32.768 kHz 的外部晶体振荡器,外部晶体振荡器与S3C2440A的连接。

XTIrtc和XTOrtc 分别是RTC的32.768 kHz晶体振荡器输入和输出,2个22 pF电容是晶体振荡器的匹配电容,只有在外部所接电容为匹配电容的情况下,晶体振荡器频率才能保证在标称频率附近的误差范围内。

【关键词】ARM9;实时时钟;晶振;报警;目录摘要 (I)第一章绪论 (1)一、设计目的 (1)二、设计内容 (1)三、实现目标 (1)第二章系统分析及硬件设计 (2)一、S3C2440芯片介绍 (2)二、系统基础知识 (2)第三章系统软件设计 (9)一、基本思路 (9)二、基本方案 (9)四、系统调试 (10)总结 (12)参考文献 (13)附录 (14)第一章绪论一、设计目的(1)掌握系统IO口的配置(2)掌握嵌入式系统中断的编程(3)掌握嵌入式系统实时时钟的编程二、设计内容(1)完成时钟滴答功能,用数码管显示当前时间。

(2)可设置当前日期、时间。

三、实现目标(1)时钟数据采用BCD编码或二进制表示;(2)能够对闰年的年、月、日进行自动处理;(3)具有告警功能,当系统处于关机状态时,能产生告警中断;(4)具有独立的电源输入;(5)提供毫秒级的时钟中断,该中断可用于嵌入式操作系统的内核时钟。

第二章系统分析及硬件设计一、S3C2440芯片介绍S3C2440A以ARM920T为核心,采用0.13um CMOS标准单元和存储器编译器开发。

它的低功耗,简单,优雅和全静态设计特别适合于成本和功耗敏感的应用。

它采用了被称为高级微控制器总线架构(AMBA)的新的总线架构。

S3C2440提供了出色的功能,其CPU内核,一个32位ARM920T RISC处理器设计的高级RISC机,ARM920T实现了MMU,AMBA总线,和哈佛缓存架构与独立的16KB指令和16KB数据高速缓存,每一个字线的长度为8。

S3C2440减少了系统整体成本,无需配置额外的组件通过提供一套完整的通用系统外设。

S3C2440的特征:(1)手持设备和通用嵌入式应用的集成系统。

(2)16/32-位RISC架构和以ARM920T CPU为核心的强大的指令集。

(3)增强ARM架构的MMU支持WinCE,EPOC32和Linux。

(4)指令缓存,数据缓存,写缓冲和物理地址TAG RAM性能,以减少主内存。

带宽和延迟的效果。

二、系统基础知识1、设计原理(1)实时时钟RTC模块S3C2440A 实时时钟单元是处理器集成的片内外设,由开发板上的后备电池供电,可以在系统电源关闭的情况下运行,RTC发送8位BCD码数据到CPU。

传送的数据包括秒、分、时、星期、日期、月份和年份。

RTC单元时钟源频率由外部32.768 kHz晶振提供,可以实现闹钟(报警)功能及时间片中断、置0计数功能,如图2-1。

图2-1 RTC模块示意图RTC最重要的功能就是显示时间,是通过读/写寄存器实现的。

要显示秒、分、时、日期、月、年,CPU必须读取存于BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON与BCDYEAR寄存器中得值。

时间的设置也是通过以上的寄存器实现的,即以上寄存器是可读写的。

(2)RTC特殊功能寄存器所有RTC寄存器都是字节型的,必须使用字节型访问指令(STRB、LDRB)或者字符型指令访问。

在小端模式和大端模式中所采用的地址不同,这里采用小端模式的地址。

①时钟BCD数据寄存器时钟BCD数据寄存器用于保存RTC的实时数据,包括BCDSEC、BCDMIN、BCDHOUR、BCDDATE、BCDDAY、BCDMON和BCDYEAR等7个寄存器,如图2-2所列。

寄存器地址读写操作描述未定义BCDYEAR 0x57000088 读/写BCD年数据寄存器未定义图2-2时钟BCD数据寄存器BCDSEC用于保存报警的秒数据,其中的位[6:0]SECDATA保存报警秒数据的BCD码,位[6:4]取值0-5,位[3:0]取值0-9。

BCDMIN用于保存报警的分数据,其中的位[6:0]MINDATA保存报警分数据的BCD码,位[6:4]取值0-5,位[3:0]取值0-9。

BCDHOUR用于保存报警的时数据,其中的位[5:0]HOURDATE保存报警时数据的BCD码,位[5:4]取值0-2,位[3:0]取值0-9。

BCDDATE用于保存报警的日数据,其中的位[5:0]DATEDATA保存报警日数据的BCD码,取值0-28、29、30、31,位[5:4]取值0-3,位[3:0]取值0-9。

BCDDAY用于保存报警的星期数据,其中的位[2:0]DAYDATA保存报警星期数据的BCD码,取值1-7。

BCDMON用于保存报警的月数据,其中的位[4:0]MONDATA保存报警月数据的BCD码,位[4]取值0-1,位[3:0]取值0-9。

BCDYEAR用于保存报警的年数据,其中的位[7:0]YEARDATA保存报警年数据的BCD码,取值00-99。

②实时时钟控制寄存器实时时钟控制寄存器RTCCON如图2-3所列,共有四位。

寄存器地址读写操作描述复位值RTCCON 0x57000040 读/写RTC控制寄存器0x0图2-3实时时钟控制寄存器各位定义如下:[3]CLKRST:RTC时钟计数器复位。

0=不复位;1=复位。

[2]CNTSEL:BCD计数器选择。

0=合并BCD计数器;1=保留(即分离BCD 计数器)。

[1]CLKSEL:BCD时钟选择。

0=采用XTAL的1/215作为时钟;1=保留(XTAL 时钟仪用于测试)。

[0]RTCEN:RTC控制使能。

0=禁止;1=使能。

RTCEN控制BCD寄存器的读/写使能,CLKSEL、CNTSEL和CLKRST 用于测试。

RTCEN控制着CPU和RTC的所有接口,为了使能数据可读/写,在系统复位后RTCEN应该置1。

(3)串口通信模块S3C2440A串行通信单元UART提供2个独立的异步串行通信口,皆可工作于中断和DMA模式。

最高波特率达115200b/s。

每个UART单元包含一个16字节FIFO,用于数据接收和发送。

此外,每个UART模块还包含可编程波特率、红外发送/接收、1个或2个停止位、5/6/7/8位数据宽度和奇偶校验。

通过初始化好串口,与RTC进行通信,来设置RTC当前时间及报警时间。

(4)液晶显示LCD模块S3C2410A处理器集成了数码管控制器,支持4位单扫描、4位双扫描和8位单扫描工作方式。

处理器使用内部RAM区作为显示缓存,并支持屏幕水平和垂直滚动显示。

数据的传送采用DMA(直接内存访问)方式,以达到最小延迟。

根据实际硬件水平和垂直像素点数、传送数据位数、时间线和帧速率方式等进行编程,以支持多种类型的显示屏。

数码管控制器主要液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。

2、存储器功能(1)控制存储器图2-4控制存储器(2)告警控制存储器图2-5告警控制存储器(3)实时时钟计数器图2-6实时时钟计数器(4)告警时间寄存器图2-7告警时间寄存器(5)实时时钟寄存器图2-8实时时钟寄存器3、数码管显示原理7段数码管由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。

一般共阴极可以不需外接电阻,但共阳极接法中发光二极管必须外接电阻。

数码管的结构及连接图见图2-9。

图2-9 数码管结构及连接图当选用共阴极的数码管显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。

因此要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制数码管的显示,此数据称为字符的段码。

字符0、1、2…F 与数码管码段A 、B 、C…F 以及DP (小数点)的关系如表2-1所示。

表2-1 数码管字符与码段对应表说明:共阴的数码管,被选中时的段为高电平有效,熄灭的段码为00H 。

共阳的数码管,被选中时的段为低电平有效.熄灭的段码为FFH 。

4、数码管控制的电路原理图图2-10数码管控制的电路原理图字符 DP G F E D C B A 段码(共阴) 段码(共阳) 0 0 0 1 1 1 1 1 1 3FH C0H 1 0 0 0 0 0 1 1 0 06H F9H 2 0 1 0 1 1 0 1 1 5BH A4H 3 0 1 0 0 1 1 1 1 4FH B0H 4 0 1 1 0 0 1 1 0 66H 99H 5 0 1 1 0 1 1 0 1 6DH 92H 6 0 1 1 1 1 1 0 1 7DH 82H 7 0 0 0 0 0 1 1 1 07H F8H 8 0 1 1 1 1 1 1 1 7FH 80H 9 0 1 1 0 1 1 1 1 6FH 90H A 0 1 1 1 0 1 1 1 77H 88H B 0 1 1 1 1 1 0 0 7CH 83H C 0 0 1 1 1 0 0 1 39H C6H D 0 1 0 1 1 1 1 0 5EH A1H E 0 1 1 1 1 0 0 1 79H 86H F 0 1 1 1 0 0 0 1 71H 8EH - 0 1 0 0 0 0 0 0 40H BFH . 1 0 0 0 0 0 0 0 80H 7FH 熄灭00HFFH第三章系统软件设计一、基本思路(1)读写RTC模块S3C2440A内部集成了RTC模块,通过读取RTC模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR的值得到当前的相应的时间值。