蓝桥杯单片机之模块代码《新DS1302》

文章介绍了DS1302实时时钟芯片的工作原理、功能特点以及在单片机开发中的驱动编写和使用方法,包括如何通过串行接口与微控制器通信,以及相关寄存器的操作。示例代码展示了如何初始化、写入和读取DS1302的数据。
摘要由CSDN通过智能技术生成

过往历程

历程1:秒表

历程2:按键显示时钟

历程3:列矩阵按键显示时钟

历程4:行矩阵按键显示时钟


一、前期准备

1:本文使用的头文件是由stc生成
在这里插入图片描述
点击保存文件之后,保存至自己文件目录下方即可
在这里插入图片描述
2:本文使用的都是官方提供的底层驱动代码
在这里插入图片描述

二.驱动的处理

驱动写法讲解

直接跳转以前的文章即可
蓝桥杯驱动处理

三.功能简介

  DS1302是一款实时时钟(RTC)芯片,由美国达拉斯半导体(Dallas Semiconductor)公司生产。它被广泛应用于各种电子设备中,如数字时钟、计时器、温度计等。

  DS1302采用串行接口与控制器通信,可以通过三线串行总线(Data、Clock、RST)与微控制器相连。它内部包括了一个时钟电路、一个时钟频率发生器、一个时钟计数器、静态RAM存储器和控制逻辑电路。

  DS1302的时钟电路可以提供给外部系统一个稳定的时钟信号,其精度高,误差非常小。时钟频率发生器可以产生不同的时钟频率,以适应不同的应用需求。时钟计数器可以记录当前的时间和日期,包括年、月、日、时、分、秒等信息。

  DS1302还具有一个静态RAM存储器,用于存储温度补偿系数、控制寄存器、时钟计数器的时间和日期等数据。通过串行通信接口,可以读写这些数据。

  DS1302具有低功耗特性,工作电流低,非常适合用于电池供电的系统。此外,它还具有防止数据丢失的特性,可以在断电情况下保持时间和日期的准确性。

  总之,DS1302是一款功能强大、稳定可靠的实时时钟芯片,广泛应用于各种电子设备中,提供准确的时间和日期信息。

四.相关寄存器

注:下面的图部分引用至小蜜蜂老师的,讲的真的很好可以去看
ds1302视频详解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五.本期代码


#include<stc15f2k.h>
#include<ds1302.h>

char ds1302_write[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
char ds1302_read[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
char time[]={0x50,0x59,0x14,0x15,0x01,0x04,0x22};
char dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
char disdula[]={0,0,0,0,0,0,0,0};
int diswei;

void buzz()
{
	P2=((P2&0x1f)|0xa0);
	P0=0x00;
	P2&=0x1f;
	
	P2=((P2&0x1f)|0x80);
	P0=0xff;
	P2&=0x1f;
}	
	

void ds1302_xie()
{
	char i;
	Write_Ds1302_Byte(0x8e,0x00);
	for(i=0;i<7;i++)
	{
		Write_Ds1302_Byte(ds1302_write[i],time[i]);
	}
	Write_Ds1302_Byte(0x8e,0x80);
}

void ds1302_du()
{
	char i;
	for(i=0;i<7;i++)
	{
		time[i]=Read_Ds1302_Byte(ds1302_read[i]);
	}
}

void display()
{
	P2=((P2&0x1f)|0xe0);
	P0=0xff;
	P2&=0x1f;
	
	P2=((P2&0x1f)|0xc0);
	P0=1<<diswei;
	P2&=0x1f;

	P2=((P2&0x1f)|0xe0);
	P0=dula[disdula[diswei]];
	P2&=0x1f;
	
	if(diswei++>=8)diswei=0;
}

void display_1()
{
	disdula[0]=time[2]/16;
	disdula[1]=time[2]%16;
	disdula[2]=10;
	disdula[3]=time[1]/16;
	disdula[4]=time[1]%16;
	disdula[5]=10;	
	disdula[6]=time[0]/16;
	disdula[7]=time[0]%16;
}

void din()
{
	TMOD=0X10;
	TH1=(65536-110592/12)/256;
	TL1=(65536-110592/12)%256;
	ET1=1;
	EA=1;
	TR1=1;
}

void main()
{
	ds1302_xie();
	din();
	buzz();
	while(1)
	{
	  display_1();
		ds1302_du();
	}
}

void qa() interrupt 3
{
	TH1=(65536-11059/12)/256;
	TL1=(65536-11059/12)%256;	
	display();
}
	



省赛代码传送门

第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值