找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1630|回复: 1
打印 上一主题 下一主题
收起左侧

在数码管显示的时候问什么没有指定的数码管会跟着各位或者十位数字变化显示,

[复制链接]
跳转到指定楼层
楼主
ID:399373 发表于 2018-9-18 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define Data_Outport P0
sbit Lotch_Duan=P2^2;
sbit Lotch_Wei=P2^3;
sbit KEY_ADD=P3^3;
sbit KEY_DEC=P3^4;
void delay1(unsigned int t);
void delay2(unsigned int t);
void disply(unsigned char FirstBit,unsigned char Num);

unsigned char code Wei_Ma[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code Duan_Ma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char Huan_Chun[8];
void Shi_Jian(void);

void main()
{         unsigned char num=0;
    Shi_Jian();
    while(1)
        {
                    if(KEY_ADD==0)
                 {
                    delay2(10);
                        if(KEY_ADD==0)
                        {
                           while(!KEY_ADD);
                                    if(num<99)
                                  {
                                  num++;
                                    }

                        }
                 }
                 if(KEY_DEC==0)
                 {
                    delay2(10);
                        if(KEY_DEC==0)
                        {
                           while(!KEY_DEC);
                                    if(num>0)
                                  {
                                  num--;
                                    }

                        }
                 }
                 Huan_Chun[0]=Duan_Ma[num/10];
                 Huan_Chun[1]=Duan_Ma[num%10];

        }
}

void delay1(unsigned int t)
{
   while(--t);
}
void delay2(unsigned int t)
{
    while(t--)
{
     //大致延时1mS
     delay1(245);
         delay1(245);
}
}
void disply(unsigned char FirstBit,unsigned char Num)
{
static unsigned char i=0;

    Data_Outport=0;
        Lotch_Duan=1;
        Lotch_Duan=0;

        Data_Outport=Huan_Chun[i];
        Lotch_Duan=1;
        Lotch_Duan=0;

        Data_Outport=Wei_Ma[i+FirstBit];
        Lotch_Wei=1;
        Lotch_Wei=0;
        i++;
        if(i==Num)
        {
            i=0;
        }

}
void Shi_Jian(void)
{
   TMOD |=0x01;
   TH0=(65536-2000)/256;
   TL0=(65536-2000)%256;
   EA=1;
   ET0=1;
   TR0=1;
}
void Ding_Shi(void)interrupt 1
{
    TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        disply(0,8);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:387733 发表于 2018-9-18 18:59 | 只看该作者
        Data_Outport=0;
        Lotch_Duan=1;
        Lotch_Duan=0;

        Data_Outport=Wei_Ma[i+FirstBit];
        Lotch_Wei=1;
        Lotch_Wei=0;

        Data_Outport=Huan_Chun[i];
        Lotch_Duan=1;
        Lotch_Duan=0;

        i++;
        if(i==Num)
        {
            i=0;
        }


次序换一下,先关闭段码,再设置位码,然后打开段码。否则位还没换,就打开段码,显示就错位了

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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