找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机数码管动态显示时1,2,3报错 显示2,2,3就正常,怎么回事,请帮忙指教,谢谢

查看数: 1986 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-6-10 08:37

正文摘要:

如图

回复

ID:975058 发表于 2023-11-10 09:03
兴安xa 发表于 2022-6-10 18:41
这种写法复杂化了,还是用查表法更好
        while (1)
        {

厉害厉害厉害厉害
ID:979299 发表于 2022-6-10 18:41
这种写法复杂化了,还是用查表法更好
        while (1)
        {
                P0=0x00;DU1=1;DU1=0;
                WE1=1;P0=0xfe;WE1=0;
                DU1=1;P0=0x06;DU1=0;//1
                delay(10);
                P0=0x00;DU1=1;DU1=0;
                WE1=1;P0=0xfd;WE1=0;
                DU1=1;P0=0x5b;DU1=0;//2
                delay(10);
                P0=0x00;DU1=1;DU1=0;
                WE1=1;P0=0xfb;WE1=0;
                DU1=1;P0=0x4f;DU1=0;//3
                delay(10);
ID:121859 发表于 2022-6-10 14:40
加上消隐应该就可以了。
ID:213173 发表于 2022-6-10 12:19
你对照一下就知道哪里不对
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char

sbit dula=P2^6;
sbit wela=P2^7;

//顺序共阴极数码管段码表,段码a-h顺序接PX0-PX7
uchar code table[]={//共阴数码管段码"0~f-."
                0x3f,0x06,0x5b,0x4f,
                0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,
                0x39,0x5e,0x79,0x71,0x40,0x80};

void Delay_ms(uint t)
{
        uint i,j;
        for(i=t;i>0;i--)
                for(j=110;j>0;j--);
}
void main()                                                       
{
        uchar i;
        while(1)
        {
                P0=0x00;dula=1;dula=0;
                P0=~(0x01<<i);wela=1;wela=0;
                P0=table[i+1];dula=1;dula=0;
                i=++i%6;
                Delay_ms(1);
        }
}
ID:161164 发表于 2022-6-10 10:48
啥叫报错?
哪里报错?
报错信息呢?

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

Powered by 单片机教程网

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