找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机+四位数码管如何进行动态显示-菜鸟求助

[复制链接]
ID:723643 发表于 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
批注 2020-04-06 210311.jpg
回复

使用道具 举报

ID:70069 发表于 2020-4-6 21:34 | 显示全部楼层
we1=1;
  P0=0xF9;
delay(100);
we1=0;
we2=1;
P0=0xC0;
delay(100);
we2=0;

试一下这样呢
回复

使用道具 举报

ID:213173 发表于 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--);
}
回复

使用道具 举报

ID:490330 发表于 2020-4-6 22:01 | 显示全部楼层
去普中那,找个demo改一下直接用。
回复

使用道具 举报

ID:723643 发表于 2020-4-7 09:26 | 显示全部楼层
wulin 发表于 2020-4-6 21:41
#include
#define uchar unsigned char
#define uint  unsigned int

实测有效,谢谢大神!!!
回复

使用道具 举报

ID:723643 发表于 2020-4-7 09:28 | 显示全部楼层
benclee 发表于 2020-4-6 21:34
we1=1;
  P0=0xF9;
delay(100);

如果这样灯就不亮了,不过还是谢谢提醒
回复

使用道具 举报

ID:388929 发表于 2020-4-7 09:48 | 显示全部楼层
流水灯你写过没,把流水灯的方式用在这里,每个灯就是一位数码管
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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