过往历程
一、前期准备
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();
}
省赛代码传送门
第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛