找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机数码管显示错误问题,偶数次循环出错

查看数: 3362 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-4-21 17:42

正文摘要:

我在练习数码管循环显示时,奇数次循环没有问题如第一张图,偶数次循环都会出现第二张图的问题,反复看了代码感觉没有问题,还想请教各位我这里是出现了什么问题,谢谢 #include<reg52.h> #include<in ...

回复

ID:476725 发表于 2019-4-27 22:20
snni00 发表于 2019-4-22 08:06
timer1中断里面提取段码译码位选

感谢,问题已解决,我改成在打开段选和位选控制之前先给P0赋值就没问题了。
ID:476725 发表于 2019-4-27 22:20
wulin 发表于 2019-4-22 11:47
动态数码管显示需要1~5ms显示1位,根据数码管显示位数扫描一轮不要超过20ms。改这样试试。
#include
#inc ...

感谢,问题已解决,我改成在打开段选和位选控制之前先给P0赋值就没问题了。
ID:462827 发表于 2019-4-22 14:04
你想要实现什么效果?这个不说清楚不行的
ID:213173 发表于 2019-4-22 11:47
动态数码管显示需要1~5ms显示1位,根据数码管显示位数扫描一轮不要超过20ms。改这样试试。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code tabledu[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};       //,0x07,0x6f,0x77,0x7c,0x58,0x5e,0x7b,0x71};
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};          //,0xbf,0x7f};
sbit wela=P2^7;
sbit dula=P2^6;
uchar num1,num2;
uint b;
bit a;
void init();

void main()
{
        init();
        while(1)
        {
                if(a==1)
                {
                        a=0;
                        b++;
                        num1++;
                        if(num1>5)
                                num1=0;
                        if(b>=500)
                        {
                                b=0;
                                num2--;
                                if(num2>5)
                                        num2=5;
                        }
                        P0=tablewe[num1];
                        wela=1;
                        wela=0;
                        P0=tabledu[num2];
                        dula=1;
                        dula=0;
                }
        }
}

void init()
{
    TMOD=0x10;
    TH1=(65536-2000)/256;
    TL1=(65536-2000)%256;
    EA=1;
    ET1=1;
    TR1=1;
    num1=0;
    num2=5;
//    wela=1;
//    P0=tablewe[num1];
//    wela=0;
//    dula=1;
//    P0=tabledu[num2];
//    dula=0;        
}

void timer1() interrupt 3
{      
    TH1=(65536-2000)/256;
    TL1=(65536-2000)%256;        
    a=1;
}
ID:434390 发表于 2019-4-22 08:06
timer1中断里面提取段码译码位选

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

Powered by 单片机教程网

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