数字实时时钟设计

上传人:无*** 文档编号:160832023 上传时间:2022-10-11 格式:DOC 页数:42 大小:1.19MB
收藏 版权申诉 举报 下载
数字实时时钟设计_第1页
第1页 / 共42页
数字实时时钟设计_第2页
第2页 / 共42页
数字实时时钟设计_第3页
第3页 / 共42页
资源描述:

《数字实时时钟设计》由会员分享,可在线阅读,更多相关《数字实时时钟设计(42页珍藏版)》请在装配图网上搜索。

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

2、实现,电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。由于系统所用元器件较少,嵌入式ARM所被占用的I/O口不多,因此系统具有一定的可扩展性。软件程序采用均采用C语言编写,便于移植与升级。报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。关键词数字时钟;嵌入式;S3C2410;DS1302;LCD1602目 录系统概述3系统工作原理3硬件方案设计4封装:7引脚描述:7芯片操作命令字8复位和时钟控制8数据输出(见上图)9突发模式(多字节操作)9时钟/日历10上午-下午/12-24小时制11写保护位11时钟/日历 突发模式11读写操作详细

3、时序图12硬件电路设计13键盘模块13LCD显示程序设计14电源模块14软件方案设计151、软件功能模块设计152、模块程序流程图153、程序代码(见附录)15系统调试16总结17参考文献1附 录2系统及IO初始化(汇编)2实时时钟芯片DS1302时间整体程序(C语言)8实时时钟数据读取并更新到屏幕(C语言)21 II / 42系统概述从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进着计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。在以往单片机构成的装置中,实时时钟是必不可少的部件。而目前常用的实时时钟,很多采用单片机的中断服务来实

4、现,这种方式一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许;有的则使用并行接口的时钟芯片,如MC146818、DS12887等,它们虽然能满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂,占用地址、数据总线多,芯片体积大,占用空间多,给其它设计带来诸多不便。本设计选取串行接口时钟芯片DS1302与同步通信构成数字时钟电路。其简单的三线接口能为单片机节省大量资源,DS1302的后背电源及对后背电源进行涓细电流充电的能力保证电路断电后仍能保存时间和数据信息等。这些优点解决了目前常用的实时时钟所无法解决的问题。该时钟电路

5、强大的功能和优越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的测控系统等对时钟精确性和可靠性有较高要求的场合,具有很高的使用价值。系统工作原理1、嵌入式ARM处理器S3C2410简介 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

6、 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410处理器最高可运行在203MHz。2、实时时钟芯片DS1302简介 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源Vc

7、cSQW/OUTSDASCLGNDVbatX2X1电源控制器逻辑控制时钟/日历寄存器多路选择器RAM存储分频处理晶体振荡器RAM存储I2C控制总线1Hz引脚,同时提供了对后备电源进行涓细电流充电的能力。 DS1302内部结构硬件方案设计1、硬件方案 实时时钟芯片:DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。DS1302的在实时显示时间中的应用。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。所以本嵌入式实时时钟系统采用此实时时钟芯片作为首选。2、核心器件实时时钟芯片:DS1302嵌入式处理器:S3C24103、主要参数实时时钟芯

8、片: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控制器,一个LCD专业DMA。4) 4个带外部请求线的DMA。5) 3个通用异步串行端口(I

9、rDA1.0,16-Byte Tx FIFO and 16-Byte Rx FIFO),2通道SPI6) 一个多主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) 电源控制模式:标准、慢速、休眠、掉电。15) 8通道10位ADC和触摸屏接口。16) 带日历功能的实时时钟。17) 芯片内置PLL。18) 设计用于手持设备和通用嵌入式系统。19)

10、 16/32位RISC体系结构,使用ARM920T CPU核的强大指令集。20) 带MMU的先进的体系结构支持WinCE、EPOC32、Linux。21) 指令缓存(Cache)、数据缓存、写缓存和物理地址TAG RAM,减小了对主存储器带宽和性能的影响。22) ARM920T CPU核支持ARM调试的体系结构。23) 内部先进的位控制器总线(AMBA)(AMBA2.0,AHB/APB)。24) (2)系统管理25) 小端/大端支持26) 地址空间:每个BANK128MB(全部为1GB)。27) 每个BANK可编程为8/16/32位数据总线。28) BANK0到BANK6为固定起始地址。29)

11、 BANK7可编程BANK起始地址和大小。30) 一共8个存储器BANK。31) 前6个存储器BANK用于ROM、SRAM和其它。32) 两个存储器BANK用于ROM、SRAM、和SDRAM(同步随机存储器)。33) 支持等待信号用以扩展总线周期。34) 支持SDRAM掉电模式下的自刷新。35) 支持不同类型的ROM用于启动(NOR/NAND Flash、EEPROM和其它)。4. DS1302时钟芯片接口参数封装: 引脚描述:X1,X2接标准的32.768kHz石英晶振GND接地/RST复位引脚, 由于在读写操作期间要求为高电平, 所以可以作片选来使用 I/O3线通信接口的数据输入/输出(双

12、向)SCLK串行同步时钟输入Vcc1提供电池备份电源Vcc2主电源供应, 可以用于给Vcc1充电; 当Vcc2-Vcc102V时由Vcc2供电, 当Vcc22.0V之前必须保证为0 - 试问: 怎么来设计这样的电路?SCLK 在 /RST 由0变为1的时候必须为0.数据输入到DS1302 在通过8个SCLK输入一个写命令字后, 在下8个上升沿数据被输入到DS1302 , 数据位从LSB开始 注:先在IO上放置数据, 然后产生一个上升沿.多余的SCLK将被忽略单字节读写操作时序:数据输出(见上图) 在通过8个SCLK输入一个写命令字后, 在下8个上升沿数据从DS1302输出 , 数据位从LSB开

13、始 .注意:第1个被输出的数据位是在写完命令字的最后一位的第1个下降沿被输出多余的SCLK的效果是重复发送数据, 不产生其它影响突发模式(多字节操作) 多字节突发读取/写入可用于时钟, 同样可用于RAM的读取, 在命令控制中的位6中指示. 位5到位1=逻辑1.时钟的9到31号寄存器没有数据存储能力, RAM的31号也没有(0-30).突发模式从地址0的第0位开始数据传输.在写时钟寄存器时(共8个), 必须按照寄存器的顺序依次写入.在写RAM数据时,不需要同时写所有31个寄存器.时钟/日历如下图所示. 这些寄存器中的相关数据都是以BCD码的形式保存的.寄存器说明: 秒寄存器:第7位为时钟停摆标志

14、位; 10SEC和SEC分别代表秒的十位和个位. 分寄存器:10MIN和MIN分别代表分的十位和个位. 时寄存器:第7位为12/24小时时制选择位,见下面的描述. 日寄存器:10DATE和DATE分别用来表示日的十位和个位. 月寄存器:10M和MONTH分别用来表示月份的十位和个位. 星期寄存器:DAY用来表示星期 年寄存器:10YEAR表示年的十位,最大为99, 表示2099年; YEAR表示年份的个位. 控制寄存器:见写保护位描述.涓流充电器寄存器:见涓流充电器描述.时钟停摆标志 秒寄存器的第7位被定义为时钟停摆标志.当该位被置为1的时候, 时钟停摆, DS1302被置于低功耗模式, 当前

15、电源损耗低于100nA.当该位被写清除的时候, 时钟就开始摆动. 开始上电时该位未定义. 上午-下午/12-24小时制 时寄存器的第7位被定义为12小时/24小时选择位. 当该位为高, 选择12小时制.在12小时制模式中, 第5位为AM/PM标志, 逻辑高表示PM.在24小时制模式中, 第5位为第2个10小时位(仅该位时表示20-23小时, 懂了吧?).写保护位 控制寄存器的第7位为写保护标志位. 第6到第0位被强制为0, 读的时候也是0. 上电初始化状态未定义.写之前记得去除写保护位.时钟/日历 突发模式 该模式下, 时钟/日历寄存器的前8个可以被连续地读或写, 从地址0的第0位开始.涓流寄

16、存器无法在突发模式下访问.在开始读之前,当前时间值被传送到第2套内部寄存器中.因此读到的数据被锁定了, 此时真正的时间寄存器仍然在走,以免在读完之前对新的时间造成干扰读写操作详细时序图硬件电路设计时钟模块电路如图所示,其中晶振采用的是32.768kHz,经内部电路分频后可获得一个标准的秒脉冲信号;电阻R3、R4是I2C总线的上拉电阻。DS1302电路链接VBAT3X11X22SCL6SDA5SOUT7U2DS1302X2R3R4+5VP2.6P2.7 DS1302电路图 键盘模块 键盘模块设置了四个按键:KEY1、KEY2、KEY3、KEY4。其中KEY1为模式切换键,KEY2为设定值上升键,

17、用KEY3为设定值减小键,KEY4是返回键。电路连接如图2-10所示。4个上拉电阻可以保证在没有按键输入时,进入单片机四个I/O口的按键状态均为高电平,防止干扰产生;当有按键按下时,相应的端口线状态转为低电平。 键盘电路LCD显示程序设计LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,LCD就可以按如图显示。开始LCD初始化光标定位显示字符返回LCD显示程序流程图电源模块用220V市电经整流、滤波、稳压后,输出稳定的+5V的直流电为其供电。+5V稳压器采用CW7805,其应用电路如图所示。图中,滤波电容C6和C8的值为1000uF,C7和C9为0.33uF。发光二极管

18、D6的作用是显示读写器的电源是否接通,若接通则D6灯亮,无接通则D6灯灭。电源电路图软件方案设计1、软件功能模块设计 该嵌入式实时时钟包含以下软件模块:1) 嵌入式单片机S3C2410系统初始化2) 系统I/O初始化3) 实时时钟初始时间预设4) 循环读取实时时钟数据5) 刷新时钟数据到显示器(屏幕)开始2、模块程序流程图系统IO初始化实时时钟初始时间预设读取当前时间显示时间到屏幕重复读取当前时间3、程序代码(见附录)系统调试本设计的核心采用是S3C2410处理器,以时钟芯片DS1302和液晶LCD1602作为外围元件,构成了一个多功能的数字时钟系统。图示为程序运行结果S3C2410数码管显示

19、结果。 系统通过仿真调试后,可以稳定运行。同时可以对时间、日期、星期进行设置。设计采用串行器件具有线路简单、体积小、价格低等优点。同时该系统稍加改造,就可以作为工业实时采集中的一个模块。总结通过本课程设计,提高了我们对嵌入式应用设计的分析问题、解决问题的能力。巩固了嵌入式系统的基本理论知识,进一步了解和掌握嵌入式接口课程中所讲授的概念和编程方法,同时增强对嵌入式接口的理解和利用嵌入式接口开发应用产品的能力。了解了嵌入式系统的设计方法,掌握了正确地选择嵌入式接口和外设,同时再一次掌握了用C语言对嵌入式接口进行编程的方法,提高了利用网络进行资料查找的能力本设计以功能齐全适用于大众为指导思想,同时系

20、统经组装、调试后,可以稳定运行。而且可以对时间、日期、星期和闹钟进行设置。系统采用串行器件具有线路简单、体积小、价格低等优点。为便于对系统进行更换升级和移植!报告特此详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。参考文献1贾金玲.单片机原理及应用M.成都:电子科技大学出版社,2004.82贾金玲.微型计算机原理及应用M.重庆:重庆大学出版社,2001.123贾智平.嵌入式系统原理与接口技术M.北京:清华大学出版社,2009.84DS1307 datasheet http:/www.maxim-5刘守义.单片机应用技术.西安:西安电子科技大学出版社,20026房小翠.单片机实用

21、系统设计技术.北京:国防工业出版社,20037李华.MCS-51系列单片机实用接口技术.北京:电子工业出版社,20008何立名.单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,2004附 录系统及IO初始化(汇编); /* 定义堆栈的大小 */; * 用户可根据实际需要修改 *USR_STACK_LEGTH EQU 64SVC_STACK_LEGTH EQU 16FIQ_STACK_LEGTH EQU 16IRQ_STACK_LEGTH EQU 64ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0Mode_USR EQU 0x10Mode

22、_FIQ EQU 0x11Mode_IRQ EQU 0x12Mode_SVC EQU 0x13Mode_ABT EQU 0x17Mode_UND EQU 0x1BMode_SYS EQU 0x1F I_BIT EQU 0x80 ; when I bit is set (1), IRQ is disabledF_BIT EQU 0x40 ; when F bit is set (1), FIQ is disabled/*/; /* 引入的外部标号在这声明 */IMPORT _main ; C语言主程序入口 IMPORT FIQ_Exception ; FIQ中断服务程序IMPORT IRQ_Ex

23、ception; IRQ中断服务程序 IMPORT TargetBusInit ; 针对目标板的总线系统初始化IMPORT TargetResetInit ; 调用main函数前目标板初始化代码; /* 给外部使用的标号在这声明 */ EXPORT Vectors EXPORT ResetInit EXPORT DisableMMU EXPORT EnableICache EXPORT DisableICache EXPORT EnableDCache EXPORT DisableDCache EXPORT _rt_div0 EXPORT _user_initial_stackheap ; /

24、*/ CODE32 AREA Startup,CODE,READONLY; /* 异常向量表 */Vectors LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0 LDR PC, IRQ_Addr LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD Prefetc

25、hAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD IRQ_ExceptionFIQ_Addr DCD FIQ_Handler; /* 未定义指令 */Undefined B Undefined ; /* 软中断 */SoftwareInterrupt CMP R0, #4 LDRLO PC, PC, R0, LSL #2 MOVS PC, LRSwiFunction DCD IRQDisable ;0 DCD IRQEnable ;1 DCDFIQDisable ;2 DCDFIQEnable ;3IRQDisable ; 关IR

26、Q中断 MRS R0, SPSR ORR R0, R0, #I_BIT MSR SPSR_c, R0 MOVS PC, LRIRQEnable ; 开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, LRFIQEnable ; 开FIQ中断 MRS R0, SPSR BIC R0, R0, #F_BIT MSR SPSR_c, R0 MOVS PC, LR ; /*

27、 取指中止 */PrefetchAbort B PrefetchAbort; /* 取数据中止 */DataAbort B DataAbort ; /* 快速中断 */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,

28、0; (MMU设置,异步总线模式) 读控制寄存器ORRR1,R1,#0xC0000000 ; 当HDIVN=1时操作有效MRCp15,0,R1,c1,c0,0 B _main; 跳转到c语言入口 B . ; 如果main返回,则死循环 ; /* 包含要烧写的bin文件 */ EXPORT FLASH_FUNCTION EXPORT FLASH_FUNCTION_END FLASH_FUNCTION INCBIN flash.binFLASH_FUNCTION_ENDDisableMMU MRC p15,0,R0,c1,c0,0 BIC R0,R0,#(10) MCR p15,0,R0,c1,c

29、0,0 MOV PC, LREnableICache MRC p15,0,R0,c1,c0,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, LRDisableDCache MRC p15,0,R0,c1,c0,0 BIC

30、 R0,R0,#(12) MCR p15,0,R0,c1,c0,0 MOV PC,LR _user_initial_stackheap LDR r0,=bottom_of_heap MOV pc,lr_rt_div0 B _rt_div0 ; /* 分配堆空间 */ AREA Myheap, DATA, NOINIT, ALIGN=2bottom_of_heap SPACE 256 ;库函数的堆空间; /* 分配堆栈空间 */ AREA MyStacks, DATA, NOINIT, ALIGN=2UsrStackSpace SPACE USR_STACK_LEGTH * 4 ;用户(系统)模

31、式堆栈空间SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ;管理模式堆栈空间IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ;中断模式堆栈空间FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ;快速中断模式堆栈空间AbtStackSpace SPACE ABT_STACK_LEGTH * 4 ;中止义模式堆栈空间UndtStackSpace SPACE UND_STACK_LEGTH * 4 ;未定义模式堆栈END实时时钟芯片DS1302时间整体程序(C语言)文件 DS1302.h#ifndef _D

32、S1302_H_#define _DS1302_H_#define DS1302_BURST_MODE 1typedef struct uint8_t second; uint8_t minute; uint8_t hour; uint8_t day; uint8_t month; uint8_t week; uint8_t year;DS1302;void ds1302_init(void);void ds1302_time(DS1302* pds,uint8_t dowhat);uint8_t ds1302_ram(uint8_t addr,uint8_t dowhat, uint8_t

33、dat);void ds1302_charger(uint8_t tcs,uint8_t ds, uint8_t rs);#ifdef _cplusplus#endif#endif/!_DS1302_H_文件:DS1302.c#include config.h / S3C2410配置文件#include ds1302.h/*文件名称:ds1302.c/ds1302.h文件功能:DS1302时钟芯片模块操作代码文件说明:*. 概要: *. 获取时间, 不支持单个寄存器的读取, 必须全部读走 *. 读写RAM, 0-30, 共31个字节, 只支持单字节读取*. 模块的配置 *. 根据是否需要突发模

34、式决定是否定义DS1302_BURST_MODE宏,在头文件中定义为好 *. 配置文件下面提到的 端口配置 *. 按需配置ds1302_init初始化函数 *. IO端口的配置: 很多的单片机的IO口在输入与输出时需要进行一些配置,请按需要配置spi3_io_switch函数 如果你的单片机是51, 则不需要配置; 是MSP430, STM32,ARM等就需要配置了,参见该函数的说明*. 模块文件使用方法: *. 按需调用 ds1302_init 初始化模块相关总线 *. 如需配置DS1302的时间,调用ds1302_time并将dowhat=1,结构体需完全初始化 *. 获取当前时间:调用d

35、s1302_time,并将dowhat=0,结构体无需初始化*. 关于DS1302结构体: *. 该结构体按照芯片顺序分布成员变量,不能对该结构体作不相关的任何修改 *. 成员的值已经进行了相应的数据转换, 成员的值即为实际值, 即: 比如2013年, 则year成员的值为13D, 而不是0x13 比如25号, 则day的值为25D, 而不是0x25*. 其它: *. 不需要管写保护位, 程序已处理*/*内部函数声明*/uint8_t ds1302_read(uint8_t cmd);void ds1302_write(uint8_t cmd,uint8_t dat);uint8_t ds13

36、02_base_conv(uint8_t dowhat,uint8_t dat);void spi3_io_switch(int8_t in_out);uint8_t spi3_recv_byte(void);void spi3_send_byte(uint8_t dat);/*/*端口配置*/#define DS1302_RST_H GPIO_SetBits(GPIOD,GPIO_Pin_0)#define DS1302_RST_L GPIO_ResetBits(GPIOD,GPIO_Pin_0)#define DS1302_SCK_H GPIO_SetBits(GPIOD,GPIO_Pin

37、_2)#define DS1302_SCK_L GPIO_ResetBits(GPIOD,GPIO_Pin_2)#define DS1302_IOP_H GPIO_SetBits(GPIOD,GPIO_Pin_1)#define DS1302_IOP_L GPIO_ResetBits(GPIOD,GPIO_Pin_1)#define DS1302_IOP GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_1)/*/*函 数:ds1302_init功 能:初始化DS1302的总线参 数:返 回:说 明:*/void ds1302_init(void) GPIO_InitT

38、ypeDef gpio; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); gpio.GPIO_Mode = GPIO_Mode_Out_PP; gpio.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; gpio.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD,&gpio);/#ifdef DS1302_BURST_MODE/*函 数:ds1302_time功 能:突发方式多字节时间读取,快速参 数: pds-DS1302结构体 dowhat:0-读,

39、1-写返 回:说 明:只支持24小时进制*/void ds1302_time(DS1302* pds,uint8_t dowhat) uint8_t cx=7; uint8_t* p = (uint8_t*)pds; if(dowhat=0)/-突发方式多字节读取 DS1302_RST_L; DS1302_SCK_L; DS1302_RST_H; spi3_send_byte(0xBF); /突发读命令字 while(cx-) *p+ = ds1302_base_conv(1,spi3_recv_byte()&0x7F); DS1302_RST_L; else/-突发方式多字节写入 ds130

40、2_write(0x8E,0x00); /去写保护 DS1302_RST_L; DS1302_SCK_L; DS1302_SCK_H; spi3_send_byte(0xBE); /突发方式多字节写入 while(cx-) spi3_send_byte(ds1302_base_conv(0,*p+); DS1302_RST_L; ds1302_write(0x8E,0x80); #else / - 非突发方式/*函 数:ds1302_time功 能:非突发方式读取所有时间数据参 数: pds-时间结构体 dowhat-读还是写:0-读,1-写返 回:说 明:只针对24小时制作处理,未处理12小

41、时制*/void ds1302_time(DS1302* pds,uint8_t dowhat) uint8_t* p=(uint8_t*)pds; uint8_t wp=0x8E; uint8_t start_addr; uint8_t cx=7; if(dowhat = 0)/-读时间 start_addr = 0x81; while(cx-) /由于&0x7F, 所以年份不能超过2079年 *p+ = ds1302_base_conv(1,ds1302_read(start_addr)&0x7F); start_addr += 2; else/-写时间 start_addr=0x80;

42、ds1302_write(wp,0x00); /去写保护 while(cx-) ds1302_write(start_addr,ds1302_base_conv(0,*p+); start_addr += 2; ds1302_write(wp,0x80); #endif/DS1302_BURST_MODE/*函 数:ds1302_ram功 能:读取/写入RAM的值参 数: addr:0-30的RAM地址 dowhat:0-读取,1-写入 dat:若是写入, 则为待写入的数据; 读取时无效返 回:若为读取,返回读取到的数据; 写操作总是返回0xFF说 明:*/uint8_t ds1302_ram

43、(uint8_t addr,uint8_t dowhat, uint8_t dat) uint8_t cmd = 0x80 + 0x40; uint8_t wp = 0x8E; cmd += (addr&0x1F)1; if(dowhat = 0)/-读取RAM cmd += 1; return ds1302_read(cmd); else/-写入RAM cmd += 0; ds1302_write(wp,0x00); ds1302_write(cmd,dat); ds1302_write(wp,0x80); return 0xFF; /*函 数:ds1302_charger功 能:设置涓流充

44、电器寄存器参 数: tcs - 固定为 0x0A ds - 二极管的个数,0-2 rs - 电阻的个数,0-3返 回:说 明:*/void ds1302_charger(uint8_t tcs,uint8_t ds, uint8_t rs) uint8_t wp = 0x8E; uint8_t tc = 0x90; uint8_t cmd = 0; cmd = tcs4 | (ds&0x03)2 | (rs&0x03); ds1302_write(wp,0x00); ds1302_write(tc,cmd); ds1302_write(wp,0x80);/*函 数:ds1302_read功 能:读DS1302寄存器或RAM,通过spi3总线参 数:cmd - 命令字返 回:寄存器值或RAM数据说 明:单字节读函数*/uint8_t ds1302_read(uint8_t cmd) uint8_t dat; DS1302_RST_L; DS1302_SCK_L; DS1302_RST_H; spi3_send_byte(cmd); dat=spi3_recv_byte(); DS1302_RST_L; return dat;/*

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!