找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机+DS1302无法改变数字

查看数: 1788 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-12-21 01:47

正文摘要:

io和clk引脚加了1k的电阻

回复

ID:584814 发表于 2024-12-24 15:02
1、贴上全部程序让大家协助调试;
2、本站找类似的程序读通后修改;
你粘图片是让大家按图录入后猜电路然后再找问题 ?
ID:1002146 发表于 2024-12-22 20:14
而且这个屏幕的第二行坏掉了显示不了任何东西
ID:1140846 发表于 2024-12-22 16:51
DS1302_WriteByte,写入了2次command,没有写入data
ID:1002146 发表于 2024-12-22 11:19
whwteng 发表于 2024-12-21 13:28
先用示波器或者逻辑分析仪抓通信时序是否正常,再一步一步根据通信时序排查硬件和程序

手边没有示波器
ID:255377 发表于 2024-12-21 16:36
/***发送一个字节***/
void 1302Write(unsigned char dat)
{
    unsigned char mask;
    for(mask= 0x01;mask!=0;mask <<= 1)  //低位在前,逐位移出
    {
        if((mask & dat) != 0)           //首先输出该位数据
            DS1302_IO = 1;
        else
            DS1302_IO = 0;
        DS1302_CK = 1;                  //然后拉高时钟
        DS1302_CK = 0;                  //在拉低时钟,完成一个位的操作
    }
    DS1302_IO = 1;                      //最后确保释放IO引脚
}

/***读取一个字节***/
unsigned char 1302Read()
{
    unsigned char mask;
    unsigned char dat = 0;
    for(mask = 0x01;mask != 0; mask <<= 1)  //低位在前,逐位读取
    {
        if(DS1302_IO != 0)                  //首先读取此时IO引脚,并设置dat中的对应位
        {
            dat  |= mask;
        }
        DS1302_CK = 1;                      //然后拉高时钟
        DS1302_CK = 0;                      //再拉低时钟,完成一个位的操作
    }
    return dat;                             //最后返回读到的字节数据
}

读出1302数据DATA,LCD1602 加个‘0’ ,  数码管不用加‘0’
buf [0]=(DATA >> 4)+‘0’ ;   高
buf[1]=(DATA & 0X0F)+‘0’ ;低
ID:327265 发表于 2024-12-21 13:28
先用示波器或者逻辑分析仪抓通信时序是否正常,再一步一步根据通信时序排查硬件和程序
ID:161164 发表于 2024-12-21 10:58
试试把数据输出代码改为
if(Command & (0x01<<i))
    DS1302_IO = 1;
else
    DS1302_IO = 0;

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

Powered by 单片机教程网

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