欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 基于STM32的八位数码管显示和闹钟计时【Proteus仿真】

基于STM32的八位数码管显示和闹钟计时【Proteus仿真】

2024/10/23 21:32:03 来源:https://blog.csdn.net/JaneZJW/article/details/140088901  浏览:    关键词:基于STM32的八位数码管显示和闹钟计时【Proteus仿真】

某鱼:两栖电子

一、系统功能

采用矩阵键盘,按下对应的数字再按下确认按键,数码管会显示自己输入的数字,如果按错可以使用删除按钮进行删除。点击计时按钮可以显示当前的时间。

二、使用器件

DS1302实时时钟芯片,8位数码管,STM32芯片,4×4矩阵按键

三、实物图展示

显示输入的数字:

 当前时间:

四、原理

DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。

DS1302有三根线,分别是 CE、I/O 和 SCLK,其中 CE 是使能线,SCLK 是时钟线,I/O 是数据线。

数码管:

 

共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳极数码管在应用时将公共极COM接到+5V,当某一字段的发光二极管的阴极为低电平时,相应字段点亮,当某一字段的阴极为高电平时,相应字段不亮。
共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阳极数码管在应用时将公共极COM接到地线GND,当某一字段的发光二极管的阳极为低电平时,相应字段点亮,当某一字段的阳极为高电平时,相应字段不亮。

五、核心代码

/*
读时间函数,顺序为:年周月日时分秒
*/
void ReadDS1302Clock(u8 *p)
{DS1302_OUT();DS1302_RST_L();DS1302_CLK_L();DS1302_RST_H();DelayNOP(100);DS1302SendByte(0xbf); //突发模式DS1302_IN();p[5] = DS1302ReceiveByte(); //秒p[4] = DS1302ReceiveByte(); //分p[3] = DS1302ReceiveByte(); //时p[2] = DS1302ReceiveByte(); //日p[1] = DS1302ReceiveByte(); //月p[6] = DS1302ReceiveByte(); //周p[0] = DS1302ReceiveByte(); //年DS1302ReceiveByte(); //保护标志字节DelayNOP(100);DS1302_RST_L();}/*
写时间函数,顺序为:年周月日时分秒
*/
void WriteDS1302Clock(u8 *p)
{Write1302(DS1302_WRITE,0x00); //关闭写保护DS1302_OUT();DS1302_RST_L();DS1302_CLK_L();DS1302_RST_H();DelayNOP(100);DS1302SendByte(0xbe); //突发模式DS1302SendByte(p[5]); //秒DS1302SendByte(p[4]); //分DS1302SendByte(p[3]); //时DS1302SendByte(p[2]); //日DS1302SendByte(p[1]); //月DS1302SendByte(p[6]); //周,设置成周一,没有使用DS1302SendByte(p[0]); //年DS1302SendByte(0x80); //保护标志字节DelayNOP(100);DS1302_RST_L();
}void InitClock(void)
{u8 tmp;tmp = ReadDS1302Ram(0);if(tmp^0xa5){WriteDS1302Ram(0,0xa5);Write1302(DS1302_WRITE,0x00); //关闭写保护Write1302(0x90,0x03);    //禁止涓流充电Write1302(DS1302_HOUR,0x00); //设置成24小时制Write1302(DS1302_SECOND,0x00); //使能时钟运行Write1302(DS1302_WRITE,0x80); //打开写保护}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com