标题: 单片机数码管动态显示时1,2,3报错 显示2,2,3就正常,怎么回事,请帮忙指教,谢谢 [打印本页]

作者: liupeng03    时间: 2022-6-10 08:37
标题: 单片机数码管动态显示时1,2,3报错 显示2,2,3就正常,怎么回事,请帮忙指教,谢谢
如图

51hei图片_20220610082805.png (82.62 KB, 下载次数: 73)

51hei图片_20220610082805.png

51hei图片_20220610082816.png (32.91 KB, 下载次数: 81)

51hei图片_20220610082816.png

作者: lkc8210    时间: 2022-6-10 10:48
啥叫报错?
哪里报错?
报错信息呢?
作者: wulin    时间: 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);
        }
}

作者: zhxiufan    时间: 2022-6-10 14:40
加上消隐应该就可以了。
作者: 兴安xa    时间: 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);
作者: liupeng03    时间: 2023-11-10 09:03
兴安xa 发表于 2022-6-10 18:41
这种写法复杂化了,还是用查表法更好
        while (1)
        {

厉害厉害厉害厉害




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