标题: 单片机+四位数码管如何进行动态显示-菜鸟求助 [打印本页]

作者: 西西弗    时间: 2020-4-6 21:05
标题: 单片机+四位数码管如何进行动态显示-菜鸟求助
请问四位数码管如何进行动态显示,端选和位选分别是P0和P2控制,我希望结果是一个显示1,一个显示0,我的单片机主函数是这样的:
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uint x,y;
sbit we1=P2^0;
sbit we2=P2^1;
void delay(uint a);
void main()
{
        while(1)
        {
                we1=1;
                P0=0xF9;
                we1=0;
                delay(100);

                we2=1;
                 P0=0xC0;
                we2=0;
                delay(100);
        }
}

void delay(uint a)
{
        for(x=a;x>0;x--)
                for(y=150;y>0;y--);
}
但是烧录之后就是接替闪烁0和1(因为比较快,所以看起来就是两个0),而不是一个显示0,一个显示1


批注 2020-04-06 210348.jpg (58.35 KB, 下载次数: 94)

批注 2020-04-06 210348.jpg

批注 2020-04-06 210311.jpg (30.14 KB, 下载次数: 80)

批注 2020-04-06 210311.jpg

作者: benclee    时间: 2020-4-6 21:34
we1=1;
  P0=0xF9;
delay(100);
we1=0;
we2=1;
P0=0xC0;
delay(100);
we2=0;

试一下这样呢
作者: wulin    时间: 2020-4-6 21:41
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uint x,y;
sbit we1=P2^0;
sbit we2=P2^1;
void delay(uint a);
void main()
{
        while(1)
        {
                P0=0xff;
                we1=1;we2=0;
                P0=0xF9;
                delay(1);

                P0=0xff;
                we1=0;we2=1;
                P0=0xC0;               
                delay(1);
        }
}

void delay(uint a)
{
        uint x,y;
        for(x=a;x>0;x--)
                for(y=125;y>0;y--);
}
作者: 温酒斩华腾    时间: 2020-4-6 22:01
去普中那,找个demo改一下直接用。
作者: 西西弗    时间: 2020-4-7 09:26
wulin 发表于 2020-4-6 21:41
#include
#define uchar unsigned char
#define uint  unsigned int

实测有效,谢谢大神!!!
作者: 西西弗    时间: 2020-4-7 09:28
benclee 发表于 2020-4-6 21:34
we1=1;
  P0=0xF9;
delay(100);

如果这样灯就不亮了,不过还是谢谢提醒
作者: billaj    时间: 2020-4-7 09:48
流水灯你写过没,把流水灯的方式用在这里,每个灯就是一位数码管




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1