找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1946|回复: 2
打印 上一主题 下一主题
收起左侧

单片机+ds1302读取问题00:00

[复制链接]
跳转到指定楼层
楼主
ID:370473 发表于 2020-3-3 10:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"delay.h"
#include"stc8.h"
#include"ds1302.h"
sbit SCK=P1^4;//DS1302的时钟引脚        
sbit SDA=P1^5;//DS1302的数据引脚        
sbit RST=P1^6;//DS1302的片选引脚

int m,h;
int readm(){return m;}
int readh(){return h;}
/****************************************************************************/
void ds1302_byte_write(unsigned char temp)
{
unsigned char i;
for (i=0;i<8;i++)//共8位  
  {
   SDA=(bit)(temp&0x01);//送出一位(从最低位开始)
   SCK=1;//上升沿
   delay_ms(15);//延时
   SCK=0;//下降沿
   temp>>=1;//移位
  }
}


/******************************DS1302读字节****************************************/
unsigned char ds1302_byte_read(void )
{
unsigned char i,temp=0;
for(i=0;i<8;i++)//共8位
  {
   SDA=1;//数据引脚置位
   temp>>=1;//移位
   if(SDA)//读数据
   temp|=0x80;
   SCK=1;//上升沿
   delay_ms(15);//延时
   SCK=0;//下降沿
  }
return(temp);//返回数据
}


/***********************************************************************************/
void ds1302_write( unsigned char add,unsigned char dat )   
{
RST=0;//片选置0
SCK=0;//时钟置0
RST=1;//片选置位
ds1302_byte_write(add);//写地址
ds1302_byte_write(dat);//写数据
RST=0;//片选置0
}


/************************************************************************************/
unsigned char ds1302_read (unsigned char add)
{
unsigned char dat;
RST=0;//片选置0
SCK=0;//时钟置0
RST=1;//片选置位
ds1302_byte_write(add);//写地址
dat=ds1302_byte_read();//读数据
RST=0;//片选置0
return(dat);//返回数据
}


/****************************************************************************************/
void read(){
static int hh,mm;
   mm=ds1302_read(0x83);//读取分钟
   m=((mm&0x70)>>4)*10+(mm&0x0f);//转换为10进制
   hh=ds1302_read(0x85);//读取小时
   h=((hh&0x70)>>4)*10+(hh&0x0f);//转换为10进制
}

/******************************************************************************************/
void ds1302_init(void)
{
ds1302_write(0x8e,0x00);//允许写操作
ds1302_write(0x80,0x00);//初始化秒(00)
ds1302_write(0x82,0x00);//初始化分(00)
ds1302_write(0x84,0x12);//初始化时(12)
ds1302_write(0xc0,0x07);//初始化闹钟小时(07)
ds1302_write(0xc2,0x00);//初始化闹钟分钟(00)
ds1302_write(0xc4,0x00);//初始化闹钟开关(关)
//ds1302_write(0x90,0xab); //二个二极管加8K电阻充电
ds1302_write(0x8e,0x80);//写保护
}
/***************************************************************************************/
#include "stc8.h"
#include"delay.h"
#include"lcddriver.h"
#include"ds1302.h"
void main(void)
{

init();
ds1302_init();
while(1){ delay(2000);
diplaynum2(0,readh());//00
diplaynum2(4,readm());//00
}
}



哪个地方读错了怎么是00 00
求救

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2020-3-9 17:24 | 只看该作者
这个东东网上大把现成的,下载一下对比一下就可以了。
回复

使用道具 举报

板凳
ID:734462 发表于 2020-5-3 14:39 | 只看该作者
你好  这个问题你解决了吗  我也遇到了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表