找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Ds1302时钟进位出错怎么办?

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

正文摘要:

大家好,本人初学51单片机,按照B站中RunesKee的51单片机入门教程中DS1302时钟的教程编写,时钟的进位有问题,第八位满十进位到第四位,第四位满十进位到第二位,但是0报错0警告。各位大佬,可能是什么原因呢?

回复

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

已经解决了,感谢大佬
ID:624769 发表于 2021-11-13 02:03

进位错了, 你这是38译码器吧? A是低位,C是高位, 你把 LSA 和 LSC 对换一下
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: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:35873 发表于 2021-11-12 23:48
如果走时正确 单纯只是显示错位    把位选口调换一下
ID:624769 发表于 2021-11-12 23:42
到底是时钟进位有问题, 还是你数码管显示有问题,这,你搞明白没有?

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

Powered by 单片机教程网

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