您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > ARM课设----数字钟的设计--报告
《ARM嵌入式系统》课程设计报告题目:数字钟的设计院(系):信息科学与工程学院专业班级:通信工程1103学生姓名:学号:指导教师:2014年5月26日至2014年6月6日华中科技大学武昌分校制2嵌入式系统课程设计任务书一、设计(调查报告/论文)题目课题:数字钟的设计二、设计(调查报告/论文)主要内容掌握定时器的使用方法,利用串口、数码管、点阵或者液晶屏进行日期、时间的实时显示,并可以根据需要进行调整。三、原始资料开发板的原理图,课设讲义。四、要求的设计(调查/论文)成果使用开发板或实验箱实现一个数字钟;根据原理图完成实验方案的设计;实时显示日期、时间。可以利用串口发送到上位机显示或利用数码管、点阵、液晶屏显示;具备时间调整功能;在实验完成的基础上完成课程设计报告的撰写,按照模板的格式书写,要求有软件流程图和详细的调试过程。3五、进程安排时间内容地点15周周一上午课题讲解、选题11-60215周周一下午软硬件准备、清理实验楼402,40315周周二至周三课题分析、收集资料、完成设计方案实验楼402,403,图书馆15周周四至周五详细设计,编写代码实验楼402,40316周周一至周三系统调试实验楼402,40316周周四成果验收实验楼402,40316周周五整理文档,撰写提交课设报告实验楼402,403六、主要参考资料见下发的课程设计资料指导教师(签名):20年月日4目录一、设计原理及基本方案…………………………………………………………51、设计原理……………………………………………………………………52、基本方案………………………………………………………………………8二、软件设计………………………………………………………………………81、基本思路………………………………………………………………………82、软件流程图……………………………………………………………………83、主要代码说明…………………………………………………………………9三、软件模块………………………………………………………………………91、RTC时钟模块………………………………………………………………102、LCD驱动模块………………………………………………………………103、LCD显示模块………………………………………………………………114、字模模块…………………………………………………………………115、串口模块……………………………………………………………………12四、工程结构及软件流程图……………………………………………………12五、数字钟课设结果图………………………………………………………14六、课设问题……………………………………………………………………14七、总结…………………………………………………………………………15八、参考文献……………………………………………………………………15九、附录………………………………………………………………………155一、设计原理及基本方案1、设计原理(1)实时时钟RTC模块S3C2410A实时时钟单元是处理器集成的片内外设,由开发板上的后备电池供电,可以在系统电源关闭的情况下运行,RTC发送8位BCD码数据到CPU。传送的数据包括秒、分、时、星期、日期、月份和年份。RTC单元时钟源频率由外部32.768kHz晶振提供,可以实现闹钟(报警)功能及时间片中断、置0计数功能。如图1-1。图1-1RTC框图RTC最重要的功能就是显示时间,是通过读/写寄存器实现的。要显示秒、分、时、日期、月、年,CPU必须读取存于BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON与BCDYEAR寄存器中得值。时间的设置也是通过以上的寄存器实现的,即以上寄存器是可读写的。(2)RTC特殊功能寄存器所有RTC寄存器都是字节型的,必须使用字节型访问指令(STRB、LDRB)或者字符型指令访问。在小端模式和大端模式中所采用的地址不同,这里采用小端6模式的地址。①时钟BCD数据寄存器时钟BCD数据寄存器用于保存RTC的实时数据,包括BCDSEC、BCDMIN、BCDHOUR、BCDDATE、BCDDAY、BCDMON和BCDYEAR等7个寄存器,如表1-1所列。表1-1时钟数据寄存器寄存器地址读写操作描述复位值BCDSEC0x57000070读/写BCD秒数据寄存器未定义BCDMIN0x57000074读/写BCD分数据寄存器未定义BCDHOUR0x57000078读/写BCD时数据寄存器未定义BCDDATE0x5700007C读/写BCD日数据寄存器未定义BCDDAY0x57000080读/写BCD星期数据寄存器未定义BCDMON0x57000084读/写BCD月数据寄存器未定义BCDYEAR0x57000088读/写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如表1-2所列,共有四位。7表1-2实时时钟控制寄存器寄存器地址读写操作描述复位值RTCCON0x57000040读/写RTC控制寄存器0x0各位定义如下:[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)串口通信模块S3C2410A串行通信单元UART提供2个独立的异步串行通信口,皆可工作于中断和DMA模式。最高波特率达115200b/s。每个UART单元包含一个16字节FIFO,用于数据接收和发送。此外,每个UART模块还包含可编程波特率、红外发送/接收、1个或2个停止位、5/6/7/8位数据宽度和奇偶校验。通过初始化好串口,与RTC进行通信,来设置RTC当前时间及报警时间。(4)液晶显示LCD模块S3C2410A处理器集成了LCD控制器,支持4位单扫描、4位双扫描和8位单扫描工作方式。处理器使用内部RAM区作为显示缓存,并支持屏幕水平和垂直滚动显示。数据的传送采用DMA(直接内存访问)方式,以达到最小延迟。根据实际硬件水平和垂直像素点数、传送数据位数、时间线和帧速率方式等进行编程,以支持多种类型的显示屏。LCD控制器主要液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。82、基本方案本课设电子时钟的设计主要是将RTC模块中的时间传到LCD上进行实时显示;此外,通过串口与PC机通信,设置RTC模块中当前时间及报警时间,其结构框图如图1-2所示:图1-2整体结构框图二、软件设计1、基本思路(1)读写RTC模块S3C2410A内部集成了RTC模块,通过读取RTC模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR的值得到当前的相应的时间值。还可以往这些寄存器里写值以设置当前的时间值。(2)串口通信UART模块采用S3C44B0X的UART模块,利用PC机进行当前时钟时间和时钟报警时间的设置。设置时间时S3C2410A发送新的时间值到BCDYEAR、BCDMON、BCDDAY、BCDHOUR、BCDMIN、BCDSEC修改当前时间。(3)液晶屏LCD640*480显示设计使用液晶屏显示最基本的是像素控制数据的使用。像素控制数据的存放与传送形式决定了显示的效果,图形显示可以直接使用像素控制函数实现,把像素控制数据按一定形式存入即可实现字符显示。本次课设通过调用字符显示函数,将读取的实时时钟送到LCD上显示。2、软件流程图本次课设程序设计基于S3C2410A嵌入式开发平台,并结合PC的超级终端完成RTC模块的初始化、时间显示(显示于超级终端)、时间设置、重置测试、报警测试等功能。PC串口RTC模块LCD显示9其程序开发流程如图2-1所示。图2-1软件流程图3、主要代码说明各函数功能如下:Rtc_Init():RTC模块初始化函数。该函数主要实现对BCD数据初始化,当其他函数读取初始化时间时,可以调用此函数。Rtc_TineSet():时间设置功能函数。该函数调用Uart_GetIntNum()函数从超级终端读入整型数字,由用户完成对当前时间的修改。RndRst_Rtc():重置测试功能函数。该函数通过对Rtc_TimeSet()函数的调用完成用户当前时间设置,然后通过修改RTCRST寄存器,实现重置边界的修改,进而通过对Uart_Printf()函数的调用,显示输出时间。用户可以观察重置后的时间,来测试重置功能。Test_Rtc_Alarm():报警测试功能函数。该函数完成RTC初始化,通过清除RTC模块的中断屏蔽位,产生报警,然后再设置中断屏蔽位,关闭中断。Test_Rtc_Tick():时钟滴答测试功能函数。通过寄存器RTICNT设置时钟滴答周期,再通过调用Uart_Printf()输出时钟滴答具体值。报警中断开与时钟滴答完成相应中断状态位和中断挂起位开中断的功能。相应的功能可以查看S3C2410A的中断模块。Display_Rtc():显示时间功能函数。三、软件模块在本次软件设计中,采用C语言模块化的设计思想,分别编写RTC时钟模块;LCD驱动模块;LCD显示模块;UART模块;字模模块;延时模块;LED模块;组合各个模块功能设计实现数字时钟。RTC初始化时间显示LCD初始化时间设置程序入口点串口初始化主函数2410A初始化时设置分设置秒设置101、RTC时钟模块RTC最重要的功能就是显示时间,RTC模块能够在系统断电的情况下由后备电池供电继续工作,它能将8位数据转换为BCD码的格式传送给CPU。这些数据包括秒、分、时、日期、星期、月、年。RTC模块需要一个外部晶振提供32.768kHz的频率才能工作,它也能完成报警功能。通过CPU读取存于BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON与BCDYEAR寄存器中的值来实现显示时间。2、LCD驱动模块实现LCD相关寄存器的配置。包括LCD_Init和LCD_Refresh两个功能函数。定义全局数组LCDBufferII2[480][640],实现像素点的描绘。函数编写在LCD640.c文件中,每个函数封装在LCD640.h中供外部调用。113、LCD显示模块该模块包括汉字显示程序,数字显示程序;实现在LCD上的显示功能。4、字模模块字模就是对汉字,数字,图像等需要显示的东西进行编码。通过取模软件对需要显示的汉字和数字进行取模,因为在LCD显示的汉字和数字
本文标题:ARM课设----数字钟的设计--报告
链接地址:https://www.777doc.com/doc-6419177 .html