蓝桥杯之使用Ds1302驱动

在使用蓝桥杯单片机中官方给出的Ds1302的驱动时需要做出的修改
  • 需要把使用中的值从十进制转换到十六进制,否则显示乱码

解决方法有两步:

1、Ds1302_Single_Byte_Write()中的Write_Ds1302_Byte(dat)写成
Write_Ds1302_Byte((dat/10<<4)|(dat%10));

2、Ds1302_Single_Byte_Read()中新增dat1和dat2,
dat1 = temp/16;
dat2 = temp%6;
temp = dat1*10+dat2;
return temp;

  • 需补全官方给出的代码
    修改项:

官方DS1302示例代码中,DS1302_Single_Byte_Read(unsigned char addr)
RST_CLR;后面遗漏SDA_CLR;//电平置低

  • Ds1302初始化时间和获取时间所使用的函数是
shijian[]={ 00, 30, 8, 0, 0, 0, 0};


初始化时间函数

void Init_Time()
{
	unsigned i;
	unsigned char temp = 0x80;
	Ds1302_Single_Byte_Write(0x8e,0x00);//closs write protect
	for( i = 0;i < 7;i++)
	{
		Ds1302_Single_Byte_Write(temp,Time[i]);
		temp = temp+2;
	}
	Ds1302_Single_Byte_Write(0x8e,0x81);//open write protect
}

获取时间函数

void Get_Time()
{
	unsigned i;
	unsigned char temp = 0x81;
	for( i = 0;i < 7;i++)
	{
		Time[i] = Ds1302_Single_Byte_Read(temp);
		temp = temp + 2;
	}
}
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值