实时时钟设计 - 副本_第1页
实时时钟设计 - 副本_第2页
实时时钟设计 - 副本_第3页
实时时钟设计 - 副本_第4页
实时时钟设计 - 副本_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、成绩 _指导教师评定成绩: 审定成绩: 重 庆 邮 电 大 学 移 通 学 院课程设计报告 设计题目: 基于数码管显示的实时时钟学 校: 重庆邮电大学移通学院 学 生 姓 名: 专 业: 电气工程及其自动化 班 级: 学 号: 指 导 教 师: 设计时间: 2015年 10 月重庆邮电大学移通学院嵌入式系统课程设计任务书引言:嵌入式系统课程设计是电气工程及其自动化专业的一个重要教学环节,既有别于毕业设计,又不同于课堂教学。它需要学生统筹运用所学各个专业的基本理论、基本方法对现实生活中的实际问题进行设计和调试。一、 设计题目:基于数码管显示的实时时钟掌握嵌入式系统设计的基本方法,熟悉S3C244

2、0的开发环境及软硬件的调试过程,了解S3C2440芯片各个引脚功能,工作方式,计时/定时,I/O口,中断等的相关原理,根据控制要求进行编程,解决时钟在数码管的显示问题。巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。二、实验要求:1. 作业由两人一组完成,作业完成时要提交设计报告书、固化在教学平台中的可执行代码(附录)。2. 设计报告书要求:(1)对设计题目的描述。(2)设计思路说明,包括功能实现方法要点,硬件资源的使用,显示符号的约定说明等。(3)软件总体结构,层次,功能划分等,核心代码注解。(4)软件的调试修改过程,其中遇到的问题如何解决的,有什么技术难点问题。(5)对完成的

3、设计进行总结,说明哪些地方没有达到设计要求,是什么原因;哪些地方超过了设计要求,有什么优点和特色;有哪些改进设想和建议。(6)程序代码固化在平台的片内flash中,上电后可以自动运行。(7)结课时收纸质版作业。摘 要本设计采用ARM9(S3C2440)开发板实现实时时钟(RTC)的功能,在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒和年、月、日。即使系统处于关机状态下,它也能够正常工作(通常采用后备电池供电能够可靠工作十年)其外围也不需要太多的辅助电路,只需要一个高精度的晶振。S3C2440A集成了具有日历功能的RTC模块,它可以在系统关闭的情况下使用备用电池工作。RTC使

4、用STRBLDRB 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第二章 系统

5、分析及硬件设计2一、S3C2440芯片介绍2二、系统基础知识2第三章 系统软件设计9一、基本思路9二、基本方案9四、系统调试10总 结12参考文献13附 录14第一章 绪论一、设计目的(1)掌握系统IO口的配置 (2)掌握嵌入式系统中断的编程 (3)掌握嵌入式系统实时时钟的编程 二、设计内容(1)完成时钟滴答功能,用数码管显示当前时间。 (2)可设置当前日期、时间。三、实现目标(1)时钟数据采用BCD编码或二进制表示;(2)能够对闰年的年、月、日进行自动处理;(3)具有告警功能,当系统处于关机状态时,能产生告警中断;(4)具有独立的电源输入;(5)提供毫秒级的时钟中断,该中断可用于嵌入式操作系

6、统的内核时钟。第二章 系统分析及硬件设计一、S3C2440芯片介绍S3C2440A以 ARM920T为核心,采用0.13um CMOS标准单元和存储器编译器开发。它的低功耗,简单,优雅和全静态设计特别适合于成本和功耗敏感的应用。它采用了被称为高级微控制器总线架构(AMBA)的新的总线架构。S3C2440提供了出色的功能,其CPU内核,一个32位ARM920T RISC处理器设计的高级RISC机, ARM920T实现了MMU,AMBA总线,和哈佛缓存架构与独立的16KB指令和16KB数据高速缓存,每一个字线的长度为8。S3C2440减少了系统整体成本,无需配置额外的组件通过提供一套完整的通用系统

7、外设。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.76

8、8 kHz晶振提供,可以实现闹钟(报警)功能及时间片中断、置0计数功能,如图2-1。图2-1 RTC模块示意图RTC最重要的功能就是显示时间,是通过读/写寄存器实现的。要显示秒、分、时、日期、月、年,CPU必须读取存于BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON与BCDYEAR寄存器中得值。时间的设置也是通过以上的寄存器实现的,即以上寄存器是可读写的。(2)RTC特殊功能寄存器所有RTC寄存器都是字节型的,必须使用字节型访问指令(STRB、LDRB)或者字符型指令访问。在小端模式和大端模式中所采用的地址不同,这里采用小端模式的地址。 时钟BCD数据寄存

9、器时钟BCD数据寄存器用于保存RTC的实时数据,包括BCDSEC、BCDMIN、BCDHOUR、BCDDATE、BCDDAY、BCDMON和BCDYEAR等7个寄存器,如图2-2所列。寄存器地 址读写操作描 述未定义BCDYEAR0x57000088读/写BCD年数据寄存器未定义图2-2 时钟BCD数据寄存器BCDSEC用于保存报警的秒数据,其中的位6:0SECDATA保存报警秒数据的BCD码,位6:4取值0-5,位3:0取值09。BCDMIN用于保存报警的分数据,其中的位6:0MINDATA保存报警分数据的BCD码,位6:4取值0-5,位3:0取值0-9。BCDHOUR用于保存报警的时数据,

10、其中的位5:0HOURDATE保存报警时数据的BCD码,位5:4取值0-2,位3:0取值0-9。BCDDATE用于保存报警的日数据,其中的位5:0DATEDATA保存报警日数据的BCD码,取值0-28、29、30、31,位5:4取值0-3,位3:0取值0-9。BCDDAY用于保存报警的星期数据,其中的位2:0DAYDATA保存报警星期数据的BCD码,取值1-7。BCDMON用于保存报警的月数据,其中的位4:0MONDATA保存报警月数据的BCD码,位4取值0-1,位3:0取值0-9。BCDYEAR用于保存报警的年数据,其中的位7:0YEARDATA保存报警年数据的BCD码,取值00-99。 实

11、时时钟控制寄存器实时时钟控制寄存器RTCCON如图2-3所列,共有四位。寄存器地 址读写操作描 述复位值RTCCON0x57000040读/写RTC控制寄存器0x0图2-3实时时钟控制寄存器各位定义如下:3CLKRST:RTC时钟计数器复位。0=不复位;1=复位。2CNTSEL:BCD计数器选择。0=合并BCD计数器;1=保留(即分离BCD计数器)。1CLKSEL:BCD时钟选择。0=采用XTAL的1/215作为时钟;1=保留(XTAL时钟仪用于测试)。0RTCEN:RTC控制使能。0=禁止;1=使能。RTCEN控制BCD寄存器的读/写使能,CLKSEL、CNTSEL和CLKRST用于测试。R

12、TCEN控制着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位单扫描工作方式。处理器

13、使用内部RAM区作为显示缓存,并支持屏幕水平和垂直滚动显示。数据的传送采用DMA(直接内存访问)方式,以达到最小延迟。根据实际硬件水平和垂直像素点数、传送数据位数、时间线和帧速率方式等进行编程,以支持多种类型的显示屏。数码管控制器主要液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。2、存储器功能(1)控制存储器图2-4 控制存储器(2)告警控制存储器图2-5 告警控制存储器(3)实时时钟计数器图2-6 实时时钟计数器(4)告警时间寄存器图2-7 告警时间寄存器(5)实时时钟寄存器图2-8 实时时钟寄存器3、数码管显示原理7段数码管由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在

14、一起称共阳极接法,阴极连在一起称为共阴极接法。一般共阴极可以不需外接电阻,但共阳极接法中发光二极管必须外接电阻。数码管的结构及连接图见图2-9。图2-9 数码管结构及连接图当选用共阴极的数码管显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。因此要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制数码管的显示,此数据称为字符的段码。字符0、1、2F与数码管码段A、B、CF以及DP(小数点)的关系如表2-1所示。表2-1 数码管字符与码段对应表字符DPGFEDCBA段码(共阴)段码(共阳)0001111113F

15、HC0H10000011006HF9H2010110115BHA4H3010011114FHB0H40110011066H99H5011011016DH92H6011111017DH82H70000011107HF8H8011111117FH80H9011011116FH90HA0111011177H88HB011111007CH83HC0011100139HC6HD010111105EHA1HE0111100179H86HF0111000171H8EH-0100000040HBFH.1000000080H7FH熄灭0000000000HFFH说明:共阴的数码管,被选中时的段为高电平有效,熄灭

16、的段码为00H。共阳的数码管,被选中时的段为低电平有效熄灭的段码为FFH。4、数码管控制的电路原理图图2-10数码管控制的电路原理图第三章 系统软件设计一、基本思路(1)读写RTC模块S3C2440A内部集成了RTC模块,通过读取RTC模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR的值得到当前的相应的时间值。还可以往这些寄存器里写值以设置当前的时间值。(2)串口通信UART模块采用S3C44B0X的UART模块,利用PC机进行当前时钟时间和时钟报警时间的设置。设置时间时S3C2410A发送新的时间值到BCDYEAR、BCDMO

17、N、BCDDAY、BCDHOUR、BCDMIN、BCDSEC修改当前时间。(3)液晶屏数码管显示设计使用液晶屏显示最基本的是像素控制数据的使用。像素控制数据的存放与传送形式决定了显示的效果,图形显示可以直接使用像素控制函数实现,把像素控制数据按一定形式存入即可实现字符显示。本次课设通过调用字符显示函数,将读取的实时时钟送到数码管上显示。二、基本方案本课设电子时钟的设计主要是将RTC模块中的时间传到数码管上进行实时显示;此外,通过串口与PC机通信,设置RTC模块中当前时间及报警时间,其结构框图如图3-1所示:PC串口RTC模块数码管显示 图3-1 整体结构框图四、系统调试时钟滴答功能测试1) 首

18、先需设置TICK的周期,在例程中设置的是1秒,并打开TIME TICK中断rTICINT = 0x7f|0x80;计算公式:T = ( 1 + 0x7f ) / 128 秒2) 注册中断服务例程使用install_isr_handler(HandleRTC, (void*)rtc_int_isr)将中断服务例程的地址填写到中断地址表中;rtc_int_isr函数为RTC TIMETICK的处理例程,在该例程中我们首先要清除中断标志,接着可以刷新LED的显示,在例程中我们使用了一个全局变量来实现LED显示的更新。代码如下:rI_ISPC=BIT_TICK; /*清除时钟滴答中断标志*/*(U8*

19、) 0x02000006) = 0x3E;/* 使能第一个数码管 */*(U8*) 0x02000004) = seg7tableled_index&0xF; led_index+;3) 输入当前时间,并通过串口显示时间的运行情况设置当前时间,即向各个寄存器赋初值;rRTCCON = 0x01;rBCDYEAR = p_date-year;rBCDMON = p_date-mon;rBCDDAY = p_date-day;rBCDDATE = p_date-week_day;rBCDHOUR = p_date-hour;rBCDMIN = p_date-min;rBCDSEC = p_date

20、-sec;rRTCCON = 0x00;4) 每隔1秒读取一下时钟数据,并通过串口显示该数据old_index = led_index;/* 保存当前的TICK计数 */Uart_Printf(rn);/* 串口显示换行 */while(1)/* 每隔一秒更新一次数据 */if(old_index != led_index) rtc_get_date(&m_date); old_index = led_index;/* 实时时钟数据为BCD码格式,以16进制显示*/ Uart_Printf(r%02x:%02x:%02x, m_date.hour, m_date.min, m_date.sec

21、); ;时间告警功能测试首先设置告警时间,如下例程设置每分钟的第5秒告警m_date.sec= 0x05 ;rtc_alarm_set(&m_date, 0x41);模式0x41表示使能RTC告警,以及使能秒时钟告警;2) 注册中断例程,打开中断install_isr_handler(HandleRTC, (void*)rtc_int_isr);rINTMSK=( rINTMSK&(BIT_GLOBAL| BIT_RTC);3) 中断服务例程中清除中断事件;rI_ISPC=BIT_RTC; /*清除时钟告警中断*/if(alarm_count&1)*(unsigned char*)0x2000

22、000 = 0x0f; else*(unsigned char*)0x2000000 = 0xff; alarm_count +;总 结嵌入式系统是一门很有意思的课程。到了大四我才刚接触到嵌入式这门学科,学得还不够深入,可以说仅仅只是了解皮毛。即使如此我也愿意花时间去了解、去学习这们课。由于基础还不够扎实,理所当然的,在实验中遇到了种种困难,包括不了解专业术语、C语言编程、嵌入式开发板的使用等。第一次接触开发平台时也是一头雾水,不知道从何处下手。于是我查阅了许多网上的资料,虽然调试过程遇到了一些程序上的麻烦,以及软件或者电脑的问题(电脑与嵌入式实验平台连接不上,系统提示ADT发现不了硬件设备)

23、,不过在老师的帮助下,还是顺利的完成了这次实验。通过这次课程设计,我发现了自己在课本知识上掌握的不足,同时把以前所学过的知识重新温故,巩固了所学的知识。我觉得这次的成功很大部分取决与团队合作与冷静,耐心与细心。团队合作可以增强我们的创新能力与加大我们的完成速度,而程序的修改,调试,编译则离不开冷静,耐心和细心等心理素质。另外这次课程设计的完满结束,给了我们日后毕业设计宝贵的经验,使我们受益匪浅。参考文献1 朱恺主编嵌入式系统基础M.北京:机械工业出版社,201242 刘彦文.嵌入式系统原理及接口技术.清华大学出版社2011年3月.3 三星公司ARM9三星S3C2440英文数据手册4 王波波.A

24、RM9完全学习手册附 录一、 源程序#include def.h#include option.h#include 2440addr.hU8 beep=1;void _irq IsrAlarm(void);/下面这些都是函数声明void delay(int x);void RTC_Alm_Set(U8 almyear,U8 almmon,U8 almdate,U8 almhour,U8 almmin,U8 almsec);void RTC_Time_Set( U8 wRTCyear,U8 wRTCmon,U8 wRTCdate,U8 wRTCday,U8 wRTChour,U8 wRTCmin

25、,U8 wRTCsec );void OpenAlarm(void);void CloseAlarm(void);/=void RTC_Time_Set( U8 wRTCyear,U8 wRTCmon,U8 wRTCdate,U8 wRTCday,U8 wRTChour,U8 wRTCmin,U8 wRTCsec )/时间设置函数,操作是不是比较简单?呵呵rRTCCON = 1 ;/RTC 读写使能rBCDYEAR = wRTCyear ;/年rBCDMON= wRTCmon ;/月rBCDDATE = wRTCdate ;/日rBCDDAY= wRTCday ;/星期rBCDHOUR = w

26、RTChour ;/小时rBCDMIN= wRTCmin ;/分rBCDSEC= wRTCsec ;/秒rRTCCON &= 1 ;/RTC read and write disablevoid RTC_Alm_Set(U8 almyear,U8 almmon,U8 almdate,U8almhour,U8 almmin,U8 almsec)/年、月、日、时、分、秒/闹钟设置rRTCCON=0x01; /RTCCON实时时钟控制寄存器, /【0】位RTC使能信号控制位,0为禁止,1为允许 /对RTC模块进行读写操作前应对其最低位至1rALMYEAR = almyear;rALMMON= almmon;rALMDATE = almdate;rALMHOUR = almhour;rALMMIN= almmin;r

温馨提示

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

评论

0/150

提交评论