数字实时时钟设计.doc

上传人:土8路 文档编号:10484633 上传时间:2021-05-19 格式:DOC 页数:42 大小:1.15MB
返回 下载 相关 举报
数字实时时钟设计.doc_第1页
第1页 / 共42页
数字实时时钟设计.doc_第2页
第2页 / 共42页
数字实时时钟设计.doc_第3页
第3页 / 共42页
数字实时时钟设计.doc_第4页
第4页 / 共42页
数字实时时钟设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《数字实时时钟设计.doc》由会员分享,可在线阅读,更多相关《数字实时时钟设计.doc(42页珍藏版)》请在三一文库上搜索。

1、四四 川川 理理 工工 学学 院院 课 程 设 计 书 学学 院院 计算机学院 专专 业业 计算机科学与技术 班班 级级 2011 级 3 班 课课 程程 嵌入式接口技术 题题 目目 数字实时时钟设计 教教 师师 凌军 学学 生生 摘 要 本设计以 S3C2410 处理机核心,以实时时钟芯片 DS1302 和液晶显示 LCD1602 为主体设计了一款简易数字时钟。该时钟系统主要由 ARM 的最小系统、 时钟模块、闹钟模块、液晶显示模块、键盘控制模块组成。系统具有简单清 晰的操作界面,能够准确显示时间(显示格式为时时:分分:秒秒,24 小时 制),可随时进行时间调整,具有闹钟时间设置、闹钟开/关

2、。设计以硬件软 件化为指导思想,充分发挥嵌入式功能,大部分功能通过软件编程来实现, 电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的 特点,具有很强的实用性。由于系统所用元器件较少,嵌入式 ARM 所被占用 的 I/O 口不多,因此系统具有一定的可扩展性。软件程序采用均采用 C 语言 编写,便于移植与升级。报告详细介绍了整个系统的硬件组成结构、工作原 理和系统的软件程序设计。 关键词关键词数字时钟;嵌入式;S3C2410;DS1302;LCD1602 目 录 系统概述系统概述.3 系统工作原理系统工作原理 .3 硬件方案设计硬件方案设计 .4 封装封装:.7 引脚描述: .7

3、 芯片操作命令字.8 复位和时钟控制.8 数据输出(见上图).9 突发模式(多字节操作).9 时钟时钟/日历日历 .10 上午-下午/12-24 小时制.11 写保护位 .11 时钟/日历 突发模式.11 读写操作详细时序图.12 硬件电路设计硬件电路设计 .13 键盘模块 .13 LCD 显示程序设计 .14 电源模块 .14 软件方案设计软件方案设计 .15 1、软件功能模块设计.15 2、模块程序流程图.15 3、程序代码(见附录).15 系统调试系统调试.16 总结总结 .17 参考文献参考文献.1 附附 录录 .2 系统及 IO 初始化(汇编).2 实时时钟芯片 DS1302 时间整

4、体程序(C 语言).8 实时时钟数据读取并更新到屏幕(C 语言).21 系统概述 从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准 确的测量和记录时间,人们一直在努力改进着计时工具。钟表的数字化,大力 推动了计时的精确性和可靠性。在以往单片机构成的装置中,实时时钟是必不 可少的部件。 而目前常用的实时时钟,很多采用单片机的中断服务来实现,这种方式一 方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样 耗费单片机的资源,而且某些测控系统可能不允许;有的则使用并行接口的时 钟芯片,如 MC146818、DS12887 等,它们虽然能满足单片机系统对实时时钟的 要求

5、,但是这些芯片与单片机接口复杂,占用地址、数据总线多,芯片体积大, 占用空间多,给其它设计带来诸多不便。 本设计选取串行接口时钟芯片 DS1302 与同步通信构成数字时钟电路。 其简单的三线接口能为单片机节省大量资源,DS1302 的后背电源及对后背电源 进行涓细电流充电的能力保证电路断电后仍能保存时间和数据信息等。这些优 点解决了目前常用的实时时钟所无法解决的问题。该时钟电路强大的功能和优 越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的 测控系统等对时钟精确性和可靠性有较高要求的场合,具有很高的使用价值。 系统工作原理 1、嵌入式 ARM 处理器 S3C2410 简介

6、S3C2410 处理器是 Samsung 公司基于 ARM 公司的 ARM920T 处理器核,采用 FBGA 封装,采用 0.18um 制造工艺的 32 位微控制器。该处理器拥有:独立的 16KB 指令 Cache 和 16KB 数据 Cache,MMU,支持 TFT 的 LCD 控制器,NAND 闪存 控制器,3 路 UART,4 路 DMA,4 路带 PWM 的 Timer ,I/O 口,RTC,8 路 10 位 ADC,Touch Screen 接口,IIC-BUS 接口,IIS-BUS 接口,2 个 USB 主机,1 个 USB 设备,SD 主机和 MMC 接口,2 路 SPI。S3C

7、2410 处理器最高可运行在 203MHz。 2、实时时钟芯片 DS1302 简介 Vcc SQW/OUT SDA SCL GND Vba t X2 X1 电源控制 器 逻辑控制 时钟/日历 寄存器 多路选择 器 RAM 存储 分频处理晶体振荡 器 RAM 存储 I2C 控制 总线 1Hz DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时 钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功 能,工作电压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突 发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 内

8、部有一个 318 的 用于临时性存放数据的 RAM 寄存器。DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细 电流充电的能力。 DS1302 内部结构 硬件方案设计 1、硬件方案 实时时钟芯片:DS1302 是由美国 DALLAS 公司推出的具有涓细电流充 电能力的低功耗实时时钟芯片。DS1302 的在实时显示时间中的应用。它可 以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种 功能。所以本嵌入式实时时钟系统采用此实时时钟芯片作为首选。 2、核心器件 实时时钟芯片:DS1302 嵌入式处理器:S

9、3C2410 3、主要参数 实时时钟芯片: 1) 实时时钟,对年月日,时分秒,星期计数; 闰年自己补偿(调整), 有 效计数到 2100 年 2) 31*8 位 RAM 高速数据存储器 3) 串行数据输入/输出,3 线接口 4) 2.0-5.5V 全操作供电范围 5) 2.0V 时电流低于 300nA 6) 单字节/突发模式的时钟/RAM 数据读写 嵌入式 ARM 处理器: (1)功能单元 1) 内部 1.8V,存储器 3.3V,外部 I/O3.3V,16KB 数据 Cache,16KB 指令 Cache,MMU。 2) 内置外部存储器控制器(SDRAM 控制和芯片选择逻辑)。 3) LCD

10、控制器,一个 LCD 专业 DMA。 4) 4 个带外部请求线的 DMA。 5) 3 个通用异步串行端口(IrDA1.0,16-Byte Tx FIFO and 16-Byte Rx FIFO),2 通道 SPI 6) 一个多主 I2C 总线,一个 I2S 总线控制器。 7) SD 主接口版本 1.0 和多媒体卡协议版本 2.11 兼容。 8) 两个 USB HOST,一个 USB DEVICE(VER1.1)。 9) 4 个 PWM 定时器和一个内部定时器。 10) 看门狗定时器。 11) 117 个通用 I/O。 12) 56 个中断源。 13) 24 个外部中断。 14) 电源控制模式:

11、标准、慢速、休眠、掉电。 15) 8 通道 10 位 ADC 和触摸屏接口。 16) 带日历功能的实时时钟。 17) 芯片内置 PLL。 18) 设计用于手持设备和通用嵌入式系统。 19) 16/32 位 RISC 体系结构,使用 ARM920T CPU 核的强大指令集。 20) 带 MMU 的先进的体系结构支持 WinCE、EPOC32、Linux。 21) 指令缓存(Cache)、数据缓存、写缓存和物理地址 TAG RAM,减小 了对主存储器带宽和性能的影响。 22) ARM920T CPU 核支持 ARM 调试的体系结构。 23) 内部先进的位控制器总线(AMBA)(AMBA2.0,AH

12、B/APB)。 24) (2)系统管理 25) 小端/大端支持 26) 地址空间:每个 BANK128MB(全部为 1GB)。 27) 每个 BANK 可编程为 8/16/32 位数据总线。 28) BANK0 到 BANK6 为固定起始地址。 29) BANK7 可编程 BANK 起始地址和大小。 30) 一共 8 个存储器 BANK。 31) 前 6 个存储器 BANK 用于 ROM、SRAM 和其它。 32) 两个存储器 BANK 用于 ROM、SRAM、和 SDRAM(同步随机存储器)。 33) 支持等待信号用以扩展总线周期。 34) 支持 SDRAM 掉电模式下的自刷新。 35) 支

13、持不同类型的 ROM 用 于启动(NOR/NAND Flash、EEPROM 和 其它)。 4. DS1302 时钟芯片接口参数 封装: 引脚描述: X1,X2 接标准的 32.768kHz 石英晶振 GND接地 /RST复位引脚, 由于在读写操作期间要求为高电平, 所以可以作片选来使 用 I/O3 线通信接口的数据输入/输出(双向) SCLK 串行同步时钟输入 Vcc1提供电池备份电源 Vcc2主电源供应, 可以用于给 Vcc1 充电; 当 Vcc2-Vcc102V 时由 Vcc2 供电, 当 Vcc22.0V 之前必须保证为 0 - 试问: 怎么来设计这样的电路? BIT7必须为 1, 如

14、果是 0 的话, 将不能写入到 DS1302 内部 BIT6表示接下来要操作的是时钟/日历数据(如果为 0), 还是是 RAM(如果为 1) BIT5BIT1指定待读写的寄存器或 RAM 地址(030) BIT0指定是读操作还是写操作, 如果是 0 则为写, 是 1 则为读 SCLK 在 /RST 由 0 变为 1 的时候必须为 0. 数据输入到 DS1302 在通过 8 个 SCLK 输入一个写命令字后, 在下 8 个上升沿数据被输入到 DS1302 , 数据 位从 LSB 开始 注:先在 IO 上放置数据, 然后产生一个上升沿. 多余的 SCLK 将被忽略 单字节读写操作时序: 数据输出(

15、见上图) 在通过 8 个 SCLK 输入一个写命令字后, 在下 8 个上升沿数据从 DS1302 输出 , 数据 位从 LSB 开始 . 注意:第 1 个被输出的数据位是在写完命令字的最后一位的第 1 个下降沿被输出 多余的 SCLK 的效果是重复发送数据, 不产生其它影响 突发模式(多字节操作) 多字节突发读取/写入可用于时钟, 同样可用于 RAM 的读取, 在命令控制中 的位 6 中指示. 位 5 到位 1=逻辑 1. 时钟的 9 到 31 号寄存器没有数据存储能力, RAM 的 31 号也没有(0-30). 突发模式从地址 0 的第 0 位开始数据传输. 在写时钟寄存器时(共 8 个),

16、 必须按照寄存器的顺序依次写入. 在写 RAM 数据时,不需要同时写所有 31 个寄存器. 时钟/日历 如下图所示. 这些寄存器中的相关数据都是以 BCD 码的形式保存的. 寄存器说明: 秒寄存器:第 7 位为时钟停摆标志位; 10SEC 和 SEC 分别代表秒的十位和个 位. 分寄存器:10MIN 和 MIN 分别代表分的十位和个位. 时寄存器:第 7 位为 12/24 小时时制选择位,见下面的描述. 日寄存器:10DATE 和 DATE 分别用来表示日的十位和个位. 月寄存器:10M 和 MONTH 分别用来表示月份的十位和个位. 星期寄存器:DAY 用来表示星期 年寄存器:10YEAR

17、表示年的十位,最大为 99, 表示 2099 年; YEAR 表示年份 的个位. 控制寄存器:见写保护位描述.涓流充电器寄存器:见涓流充电器描述. 时钟停摆标志 秒寄存器的第 7 位被定义为时钟停摆标志. 当该位被置为 1 的时候, 时钟停摆, DS1302 被置于低功耗模式, 当前电源损耗 低于 100nA. 当该位被写清除的时候, 时钟就开始摆动. 开始上电时该位未定义. 上午-下午/12-24 小时制 时寄存器的第 7 位被定义为 12 小时/24 小时选择位. 当该位为高, 选择 12 小时制. 在 12 小时制模式中, 第 5 位为 AM/PM 标志, 逻辑高表示 PM.在 24 小

18、时制模式 中, 第 5 位为第 2 个10小时位(仅该位时表示 20-23 小时, 懂了吧?). 写保护位 控制寄存器的第 7 位为写保护标志位. 第 6 到第 0 位被强制为 0, 读的时 候也是 0. 上电初始化状态未定义. 写之前记得去除写保护位. 时钟/日历 突发模式 该模式下, 时钟/日历寄存器的前 8 个可以被连续地读或写, 从地址 0 的第 0 位开始. 涓流寄存器无法在突发模式下访问. 在开始读之前,当前时间值被传送到第 2 套内部寄存器中.因此读到的数据被锁 定了, 此时真正的时间寄存器仍然在走,以免在读完之前对新的时间造成干扰 读写操作详细时序图 硬件电路设计 时钟模块电路

19、如图所示,其中晶振采用的是 32.768kHz,经内部电路分频 后可获得一个标准的秒脉冲信号;电阻 R3、R4 是 I2C 总线的上拉电阻。 DS1302 电路图 键盘模块 键盘模块设置了四个按键: KEY1、KEY2、KEY3、KEY4。其中 KEY1 为模式切 换键,KEY2 为设定值上升键,用 KEY3 为设定值 减小键,KEY4 是返回键。 电路连接如图 2-10 所示。4 个上拉电阻可以保证 在没有按键输入时,进入单片机四个 I/O 口的按 键状态均为高电平,防止干扰产生;当有按键按 下时,相应的端口线状态转为低电平。 VBAT 3 X1 1 X2 2 SCL 6 SDA 5 SOU

20、T 7 U2 DS1302 X2 R3R4 + 5 V P2.6 P2.7 R5 R6 R7 R8 +5V KEY1 KEY2 KEY3 KEY4 P0.0 P0.1 P0.2 P0.3 键盘电路 LCD 显示程序设计 LCD 显示程序的设计一般先要确定 LCD 的初始化、光标定位、确定显示 字符后,LCD 就可以按如图显示。 开始 LCD 初始化 光标定位 显示字符 返回 LCD 显示程序流程图 电源模块 用 220V 市电经整流、滤波、稳压后,输出稳定的+5V 的直流电为其供电。 +5V 稳压器采用 CW7805,其应用电路如图所示。图中,滤波电容 C6 和 C8 的 值为 1000uF,

21、C7 和 C9 为 0.33uF。发光二极管 D6 的作用是显示读写器的电源 是否接通,若接通则 D6 灯亮,无接通则 D6 灯灭。 C6 C7 13 2 VV GND INOUT U2CW7805 R4 D6 C8 C9 1 2 3 4 220/10V + - 5V 220AC 电源电路图 软件方案设计 1、软件功能模块设计 该嵌入式实时时钟包含以下软件模块: 1) 嵌入式单片机 S3C2410 系统初始化 2) 系统 I/O 初始化 3) 实时时钟初始时间预设 4) 循环读取实时时钟数据 5) 刷新时钟数据到显示器(屏幕) 2、模块程序流程图 3、程序代码(见附录) 开始 系统 IO 初始

22、化 实时时钟初始时间预设 读取当前时间 显示时间到屏幕 重复读取当前时间 系统调试 本设计的核心采用是 S3C2410 处理器,以时钟芯片 DS1302 和液晶 LCD1602 作为外围元件,构成了一个多功能的数字时钟系统。 图示为程序运行结果 S3C2410 数码管显示结果。 系统通过仿真调试后,可以稳定运行。同时可以对时间、日期、星期进行 设置。设计采用串行器件具有线路简单、体积小、价格低等优点。同时该系统 稍加改造,就可以作为工业实时采集中的一个模块。 总结 通过本课程设计,提高了我们对嵌入式应用设计的分析问题、解决问题的 能力。巩固了嵌入式系统的基本理论知识,进一步了解和掌握嵌入式接口

23、课程 中所讲授的概念和编程方法,同时增强对嵌入式接口的理解和利用嵌入式接口 开发应用产品的能力。了解了嵌入式系统的设计方法,掌握了正确地选择嵌入 式接口和外设,同时再一次掌握了用 C 语言对嵌入式接口进行编程的方法,提 高了利用网络进行资料查找的能力本设计以功能齐全适用于大众为指导思想, 同时系统经组装、调试后,可以稳定运行。而且可以对时间、日期、星期和闹 钟进行设置。系统采用串行器件具有线路简单、体积小、价格低等优点。为便 于对系统进行更换升级和移植!报告特此详细介绍了整个系统的硬件组成结构、 工作原理和系统的软件程序设计。 参考文献 1贾金玲.单片机原理及应用M.成都:电子科技大学出版社,

24、2004.8 2贾金玲.微型计算机原理及应用M.重庆:重庆大学出版社,2001.12 3贾智平.嵌入式系统原理与接口技术M.北京:清华大学出版社,2009.8 4DS1307 datasheet http:/www.maxim- 5刘守义.单片机应用技术.西安:西安电子科技大学出版社,2002 6房小翠.单片机实用系统设计技术.北京:国防工业出版社,2003 7李华.MCS-51 系列单片机实用接口技术.北京:电子工业出版社,2000 8何立名.单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学 出版社,2004 附 录 系统及 IO 初始化(汇编) ; /* 定义堆栈的大小 */

25、; * 用户可根据实际需要修改 * USR_STACK_LEGTH EQU 64 SVC_STACK_LEGTH EQU 16 FIQ_STACK_LEGTH EQU 16 IRQ_STACK_LEGTH EQU 64 ABT_STACK_LEGTH EQU 0 UND_STACK_LEGTH EQU 0 Mode_USR EQU 0 x10 Mode_FIQ EQU 0 x11 Mode_IRQ EQU 0 x12 Mode_SVC EQU 0 x13 Mode_ABT EQU 0 x17 Mode_UND EQU 0 x1B Mode_SYS EQU 0 x1F I_BIT EQU 0 x

26、80 ; when I bit is set (1), IRQ is disabled F_BIT EQU 0 x40 ; when F bit is set (1), FIQ is disabled /* */ ; /* 引入的外部标号在这声明 */ IMPORT _main ; C 语言主程序入口 IMPORT FIQ_Exception ; FIQ 中断服务程序 IMPORT IRQ_Exception; IRQ 中断服务程序 IMPORT TargetBusInit ; 针对目标板的总线系统 初始化 IMPORT TargetResetInit ; 调用 main 函数前目标板初始 化

27、代码 ; /* 给外部使用的标号在这声明 */ EXPORT Vectors EXPORT ResetInit EXPORT DisableMMU EXPORT EnableICache EXPORT DisableICache EXPORT EnableDCache EXPORT DisableDCache EXPORT _rt_div0 EXPORT _user_initial_stackheap ; /* */ CODE32 AREA Startup,CODE,READONLY ; /* 异常向量表 */ Vectors LDR PC, ResetAddr LDR PC, Undefin

28、edAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0 LDR PC, IRQ_Addr LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ_Addr DCD IRQ_Exception FIQ_Addr DCD

29、 FIQ_Handler ; /* 未定义指令 */ Undefined B Undefined ; /* 软中断 */ SoftwareInterrupt CMP R0, #4 LDRLO PC, PC, R0, LSL #2 MOVS PC, LR SwiFunction DCD IRQDisable ;0 DCD IRQEnable ;1 DCDFIQDisable ;2 DCDFIQEnable ;3 IRQDisable ; 关 IRQ 中断 MRS R0, SPSR ORR R0, R0, #I_BIT MSR SPSR_c, R0 MOVS PC, LR IRQEnable ;

30、开 IRQ 中断 MRS R0, SPSR BIC R0, R0, #I_BIT MSR SPSR_c, R0 MOVS PC, LR FIQDisable ; 关 FIQ 中断 MRS R0, SPSR ORR R0, R0, #F_BIT MSR SPSR_c, R0 MOVS PC, LR FIQEnable ; 开 FIQ 中断 MRS R0, SPSR BIC R0, R0, #F_BIT MSR SPSR_c, R0 MOVS PC, LR ; /* 取指中止 */ PrefetchAbort B PrefetchAbort ; /* 取数据中止 */ DataAbort B Da

31、taAbort ; /* 快速中断 */ FIQ_Handler STMFD SP!, R0-R3, LR BL FIQ_Exception; FIQ 中断处理 LDMFD SP!, R0-R3, LR SUBS PC, LR, #4 ResetInit BL InitStack ; 初始化堆栈 BL TargetBusInit ; 总线系统初始化 (函数中不允许 堆栈操作) BLTargetResetInit; 针对目标板的系统初始化 MRCp15,0,R1,c1,c0,0; (MMU 设置,异步总线模式) 读控制 寄存器 ORRR1,R1,#0 xC0000000 ; 当 HDIVN=1

32、时操作有效 MRCp15,0,R1,c1,c0,0 B _main; 跳转到 c 语言入口 B . ; 如果 main 返回,则死循环 ; /* 包含要烧写的 bin 文件 */ EXPORT FLASH_FUNCTION EXPORT FLASH_FUNCTION_END FLASH_FUNCTION INCBIN flash.bin FLASH_FUNCTION_END DisableMMU MRC p15,0,R0,c1,c0,0 BIC R0,R0,#(10) MCR p15,0,R0,c1,c0,0 MOV PC, LR EnableICache MRC p15,0,R0,c1,c0

33、,0 ORR r0,R0,#(112) MCR p15,0,R0,c1,c0,0 MOV PC, LR DisableICache MRC p15,0,R0,c1,c0,0 BIC R0,R0,#(112) MCR p15,0,R0,c1,c0,0 MOV PC, LR EnableDCache MRC p15,0,R0,c1,c0,0 ORR R0,R0,#(12) MCR p15,0,R0,c1,c0,0 MOV PC, LR DisableDCache MRC p15,0,R0,c1,c0,0 BIC R0,R0,#(12) MCR p15,0,R0,c1,c0,0 MOV PC,LR

34、_user_initial_stackheap LDR r0,=bottom_of_heap MOV pc,lr _rt_div0 B _rt_div0 ; /* 分配堆空间 */ AREA Myheap, DATA, NOINIT, ALIGN=2 bottom_of_heap SPACE 256 ;库函数的堆空间 ; /* 分配堆栈空间 */ AREA MyStacks, DATA, NOINIT, ALIGN=2 UsrStackSpace SPACE USR_STACK_LEGTH * 4 ;用户(系统)模式 堆栈空间 SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ;管理模式堆栈空间 IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ;中断模式堆栈空间 FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ;快速中断模式堆栈空 间 AbtS

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1