数码之家

 找回密码
 立即注册
搜索
查看: 1436|回复: 17

[C51] 刚学 问下数码管0到9 的问题

[复制链接]
发表于 2022-6-15 22:20:20 | 显示全部楼层
你这个消隐有问题。当i=0时,wei=1,显示数码“0”;当i=1时,即使P0 =smg[1] ,但wie取反了,wei=0,不显示“1”;当i=2时,wei再取反,wei=1,显示“2”;当i=3时,wei=1,wei取反,wei=0,不能显示3。。。。。。。当i=9时,wei取反过程是i为奇数,wei=1,所以显示13579。

打赏

参与人数 1家元 +10 收起 理由
慕名而来 + 10 精彩回帖

查看全部打赏

回复 支持 2 反对 0

使用道具 举报

发表于 2022-6-15 22:26:54 | 显示全部楼层
本帖最后由 温力口 于 2022-6-16 07:08 编辑

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,  //???0-9???????
                        0xf8,0x80,0x90};
void delay(uint);
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
void main()
{
        uchar i=0;
        while(1)
        {
                P2=0x00;   //刷新太低,不要这个也不影响实际显示效果。
                P0=smg;  //怎么打不出smg?
                P2=0x0f;
                i++;
                if(i>=10)
                i=0;
                delay(300);
        }
}

void delay(uint z)
{
        uint i,j;
        for(i=z;i>0;i--)
                        for(j=113;j>0;j--);
}
回复 支持 反对

使用道具 举报

发表于 2022-6-19 18:10:49 | 显示全部楼层
lunerlee 发表于 2022-6-19 17:06
已搜索理解,是软件延时。
那么这个循环运行了300*113次?

是的,让MCU空跑,让显示的内容有足够长的时间显示出来被人眼观察 到。

打赏

参与人数 1家元 +10 收起 理由
kyhwhb + 10

查看全部打赏

回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-10 10:11 , Processed in 0.156000 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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