找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1227|回复: 6
收起左侧

Ds1302时钟进位出错怎么办?

[复制链接]
ID:980433 发表于 2021-11-12 21:18 | 显示全部楼层 |阅读模式
大家好,本人初学51单片机,按照B站中RunesKee的51单片机入门教程中DS1302时钟的教程编写,时钟的进位有问题,第八位满十进位到第四位,第四位满十进位到第二位,但是0报错0警告。各位大佬,可能是什么原因呢?

51hei图片20211112210759.jpg
51hei图片20211112210810.jpg

0错误0警告

0错误0警告
回复

使用道具 举报

ID:624769 发表于 2021-11-12 23:42 | 显示全部楼层
到底是时钟进位有问题, 还是你数码管显示有问题,这,你搞明白没有?
回复

使用道具 举报

ID:35873 发表于 2021-11-12 23:48 | 显示全部楼层
如果走时正确 单纯只是显示错位    把位选口调换一下
回复

使用道具 举报

ID:980433 发表于 2021-11-13 01:00 | 显示全部楼层
188610329 发表于 2021-11-12 23:42
到底是时钟进位有问题, 还是你数码管显示有问题,这,你搞明白没有?

void DigDisplay()
{
u8 i;
        for(i=0;i<8;i++)
        {
         switch(i)
         {
                 case(0):
                         LSA=0;LSB=0;LSC=0;break;
                 case(1):
                         LSA=0;LSB=0;LSC=1;break;
                 case(2):
                         LSA=0;LSB=1;LSC=0;break;
                 case(3):
                         LSA=0;LSB=1;LSC=1;break;
                 case(4):
                         LSA=1;LSB=0;LSC=0;break;
                 case(5):
                         LSA=1;LSB=0;LSC=1;break;
                 case(6):
                         LSA=1;LSB=1;LSC=0;break;
                 case(7):
                         LSA=1;LSB=1;LSC=1;break;
         }
         P0=DisplayData[7-i];
         delay(100);
         P0=0x00;
        }
}

void main()
{
  Ds1302Init();
  while(1)
        {
         datapros();
         DigDisplay();
       
        }

}
这是我的数码管显示函数,我感觉数码管显示应该没问题吧?
回复

使用道具 举报

ID:980433 发表于 2021-11-13 01:04 | 显示全部楼层
jialishoushi 发表于 2021-11-12 23:48
如果走时正确 单纯只是显示错位    把位选口调换一下

void DigDisplay()
{
u8 i;
        for(i=0;i<8;i++)
        {
         switch(i)
         {
                 case(0):
                         LSA=0;LSB=0;LSC=0;break;
                 case(1):
                         LSA=0;LSB=0;LSC=1;break;
                 case(2):
                         LSA=0;LSB=1;LSC=0;break;
                 case(3):
                         LSA=0;LSB=1;LSC=1;break;
                 case(4):
                         LSA=1;LSB=0;LSC=0;break;
                 case(5):
                         LSA=1;LSB=0;LSC=1;break;
                 case(6):
                         LSA=1;LSB=1;LSC=0;break;
                 case(7):
                         LSA=1;LSB=1;LSC=1;break;
         }
         P0=DisplayData[7-i];
         delay(100);
         P0=0x00;
        }
}

void main()
{
  Ds1302Init();
  while(1)
        {
         datapros();
         DigDisplay();
       
        }

}
大佬能帮我看看数码管显示函数有问题吗?还有位选口该如何调换呢?谢谢
回复

使用道具 举报

ID:624769 发表于 2021-11-13 02:03 | 显示全部楼层

进位错了, 你这是38译码器吧? A是低位,C是高位, 你把 LSA 和 LSC 对换一下
回复

使用道具 举报

ID:980433 发表于 2021-11-13 10:03 | 显示全部楼层
188610329 发表于 2021-11-13 02:03
进位错了, 你这是38译码器吧? A是低位,C是高位, 你把 LSA 和 LSC 对换一下

已经解决了,感谢大佬
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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