基于51单片机+DS1302时钟模块+4位数码管显示

一、DS1302时钟模块简介

二、绘制Proteus 仿真电路图

三、编写51单片机代码

#include "DS1302.h"

// 位定义
sbit DS1302_DATA = P3^3;
sbit SCLK = P3^2;
sbit RST = P3^1;

// 向DS1302写一个字节
void DS1302_Write_Byte(unsigned char addrOrData)
{
	unsigned char i;
	for (i = 0; i < 8; i++)
	{
		DS1302_DATA = addrOrData&(0x01<<i);
		SCLK = 1;
		SCLK = 0;
	}
}

// 向DS1302寄存器写数据
void DS1302_Write(unsigned char addr, unsigned char dat)
{
	RST = 0;
	SCLK = 0;
	RST = 1;
	DS1302_Write_Byte(addr); // 写入寄存器地址
	DS1302_Write_Byte(dat);  // 写入数据
	RST = 0;
}

// 读取数据
unsigned char ds1302_read_byte()
{
	unsigned char dat = 0x00;
	unsigned char i;
	for (i = 0; i < 8; i++)
	{
		if(DS1302_DATA)
		{
			dat|=(0x01<<i);
		}
		SCLK = 1;
		SCLK = 0;
	}

	return dat;
}

unsigned char ds1302_read(unsigned char addr)
{
	unsigned char dat;
	RST = 0;
	SCLK = 0;
	RST = 1;
	DS1302_Write_Byte(addr);
	dat = ds1302_read_byte();
	RST = 0;

	return dat;
}



void DS1302_Init()
{
	DS1302_Write(0x8E, 0x00);

	DS1302_Write(0x84, 0x19);	// 写入时
	DS1302_Write(0x82, 0x06);	// 写入分
	DS1302_Write(0x80, 0x30);	// 写入秒

	DS1302_Write(0x8E, 0x80);
}

四、仿真效果

五、完整源码和Proteus仿真电路图下载

链接:https://pan.baidu.com/s/1b0QVVlKWSNABu2LsQcFE0A?pwd=pvjs
提取码:pvjs

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lilihewo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值