首页 > 其他分享 >大实验2:用DS1302时钟芯片设计一个高精度时钟

大实验2:用DS1302时钟芯片设计一个高精度时钟

时间:2023-07-26 20:22:20浏览次数:47  
标签:字节 高精度 SCLK DS1302 CE 按键 时钟

需求:

1.在LCD1602上面显示年,月,日,星期,时,分,秒,并且按秒更新动态显示

2.4个独立按键各有各的功能,按键1能够实现进入暂停;按键2实现数值增大;按键3实现数值减小;按键4设定为功能选择键

3.具有闹钟设定以及到时报警功能,报警响起时,按任何按键均可以取消报警

完成:

1.根据DS1302的特性,读取DS1302中保存的date信息。

2.按键1判定之后,LCD进入功能设置模式,按键4移动修改的位置,按键2实现增加,按键3实现减小。

3.闹钟功能需要不断减少DS1302中的数值。(暂时未实现)

 

 

DS1302芯片原理

DS1302内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。

通过三个管脚与单片机通信,SCLK,CE,I/O。

SCLK是时钟线

CE输入驱动高启动所有的数据传输。CE输入有两个功能。首先,CE打开控制逻辑,允许访问的移位寄存器的地址/命令序列。其次,CE提供了一个终止单字节或多字节数据传输方法。

I/O是数据线

 ps:SCLK为低电平时,CE才能置为高电平。

指令和地址字节:

第7位固定为1,如果是0则禁止对DS1302的写入,第6位为1则是读取或写入RAM区,为0则是读取或写入时钟,第1-5为是地址,第0位置1时对地址进行读取,第0位置0是对地址进行写入。

DS1302的时序逻辑

 

 

DS1302初始化需要将CE和SCLK都置0;

一旦进行工作,CE将保持高电平。

对地址的写入均采用上升沿,写字节和读字节的区别在于第二个数据,写字节是上升沿有效,读字节是下降沿有效。

同时,我们可以注意到,数据的传输是从低位到高位。

void DS1302_Init(){  //将DS1302_SCLK和DS1302_CE均置为0,实现初始化
    DS1302_SCLK = 0;
    DS1302_CE = 0;
}

void Write_byte(uchar address, byte){ //
    uchar i;
    address = address &0xfe;   //最后一位为0,表示写数据
    DS1302_CE = 1;  //开启片选
    for(i = 0;i<8;i++){
        DS1302_SCLK = 0;    
        DS1302_IO = address &(0x01<<i);
        DS1302_SCLK = 1;//上升沿写
    }
    for(i = 0;i<8;i++){
        DS1302_SCLK = 0;
        DS1302_IO = byte& (0x01<<i);
        DS1302_SCLK = 1;
    }
    DS1302_CE = 0; //释放
    
}

uchar Read_byte(uchar address){
    uchar i,dat;
    address = address |0x01;  //最后一位置为1,表示读数据
    for(i = 0;i<8;i++){
        DS1032_SCLK = 0;
        DS1302_IO = address &(0x01<<i);
        DS1302_SCLK = 1;//上升沿写
    }
    for(i = 0;i<8;i++){
        DS1032_SCLK = 0;
        DS1302_SCLK = 1;//上升沿写
        dat = DS1302_IO &(0x01<<i);
        
    }
    DS1302_CE = 0;
    return dat;
    
}

 

功能逻辑:

  1. 初始化:LCD1602,DS1302和定时器均需要初始化,在Init()函数中实现这三个功能的初始化
  2. 按下K1键时,需要暂停DS1302内部的计时,设定setflag为1,再按则设定setflag为0,根据setflag的值选择不同的操作:
    1.   setflag==0,则不干涉DS1302的计时,读取其内部时间
    2.   setflag==1,根据K2,K3,K4的按键值设定DS1302的时间,同时加上闪烁功能,最后写入到DS1302内部的时间数组中。
      1.   K4按下,将setplace自增,同时在对应的位置设定闪烁模式
      2.   K2按下,进行时间增加,同时约束时间范围
      3.        K3按下,时间减少,约束时间范围
      4.   完成时间设定之后,消除闪烁
      5.     DS1302写入时间数组DS1302_SetTime();
    3.   Show_Time()在LCD1602屏幕上,显示DS1302的时间

 

 

 

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:字节,高精度,SCLK,DS1302,CE,按键,时钟
From: https://www.cnblogs.com/ustc2122zy/p/17576549.html

相关文章

  • 《安富莱嵌入式周报》第318期:无线电扫描仪,高精度功耗分析仪,单片机JavaScript引擎,平头
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 【实战技能视频】基于硬件垂直消隐的多缓冲技术在LVGL,emWin,GUIX和TouchGFX应用https://www.armbbs.cn/forum.php?mod=viewthread&tid=120114视频版:https://www.bilibili.......
  • 高精度/前缀和/差分
    高精度存储方式:整数的长度一般小于1e6大整数的每一位存储到数组里存储时低位在前,高位在后,方便进位高精度加法每一位相加Ai+Bi+t,t表示进位取值0/1,逢十进一模板://存储方式stringa,b;//a="123456"vector<int>A,B;//A=[6,5,4,3,2,1]for(inti=a.......
  • 05. STM32F1的时钟树
    一、STM32的时钟树二、时钟源  对于STM32F1,输入时钟源(InputClock)主要包括HSI,HSE,LSI,LSE。其中,从时钟频率来分可以分为高速时钟源和低速时钟源,其中HSI、HSE是高速时钟,LSI和LSE是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振......
  • 【FPGA基础】时钟设计与异步复位同步撤离设计
    一、时钟设计1、时钟分频设计累加器时钟分频(32分频)always@(posedgeclkandnegedgerst_n)beginif(!rst_n)clk_cnt<=5'b0;elseclk_cnt<=clk_cnt+1'b1;end 异步时钟分频(32分频)always@(posedgeclk)clk_2<=~clk_2;alwa......
  • 关于高精度计算的研究(1)——高精度加、减运算(2023-07-21)
    1、引入在C++中,我们常会需要做加减乘除等等运算首先我们来熟悉一下c++的计算符号:+(加号)             -(减号、负号)                  *(乘号)                    /(除号......
  • 论高精度算法
    一、概念:高精度也可以称之为大整数,我们对于超出整型(int)甚至是(longlong)数据范围的数称为高精度数。(注int范围:-2147483648~2147483647   longlong范围:-9223372036854775808~9223372036854775808)二、用途:对于这些高精度数计算机无法快速,准确无误地算出来,甚至有时无法正常存......
  • Si5351时钟芯片控制
    Si5351一、SI5351频率计算公式:f(out)=f(pl......
  • 1307:高精度乘法
    1307:【例1.3】高精度乘法时间限制:1000ms      内存限制:65536KB【题目描述】输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。【输入】输入两个高精度正整数M和N。【输出】求这两个高精度数的积。【输入样例】363【输出样例】......
  • Azure VM (43) Azure VM时钟同步
    《WindowsAzurePlatform系列文章目录》 本文主要介绍AzureLinuxVM时钟同步问题在CentOS8.x上,默认采用chrony配置为使用PTP源同步。Chrony所选时间来源是可以配置的,你可以选择让他从Azure物理机进行时间同步(也就是通过PTP时钟)。具体可以参考:https://l......
  • 14款超时尚的HTML5时钟动画
    时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画。今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟、3D时钟、个性化时钟等,强大的HTML5为时钟动画增添了不少精彩,希望能给大家带来帮助。1、可爱的CSS3圆盘时钟......