找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

做了一个8路抢答器,可是数码管显示乱码,请大家帮忙看看

查看数: 4381 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-7-22 15:22

正文摘要:

程序源码 #include<reg51.h> #include<intrins.h> sbit smg1=P2^0;                //定义数码管第一位 sbit smg2=P2^1;     &nbs ...

回复

ID:375003 发表于 2018-7-23 01:33
终于搞好了
增加
#define uchar unsigned char //¸Ä¶t′|
#define uint unsigned int
sbit smg4=P2^3;                //¶¨òåêyÂë1üμúèyλ
void delayms(uint x)  //¸Äèy′|         //Ñóê±oˉêy
{
uchar i;
while(x--)
{
  for(i=50;i>0;i--); //¸Äò»′|;
}
}
void Timer0_init()                        //¶¨ê±Æ÷03õê¼»ˉ
{
      js=0;  TMOD=0x01;                   //T0Îa¶¨ê±Æ÷·½ê½1
      TH0=0x4c;
          TL0=0x00;                        
      //TR0=1;//IT1=1;
          ET0=1;//EX1=1;
          EA=1;        
}
void timer0() interrupt 1 using 1        //¶¨ê±Æ÷0ÖD¶Ï·tÎñoˉêy
{
        TF0=0;
        TH0=0x4c;
        TL0=0x00;                                        //¸33õÖμ
        js++;
        if(js==15)
        {
                js=0;
          djs--;                                        //2úéú1sμÄμ1¼Æê±
        //led1=~led1;
        }
}

void djsxs()                                   //ÏÔê¾μ1¼Æê±oˉêy
{
          uchar shi,ge;
                shi=djs/10;
                ge=djs%10;
        // ½«μ1¼Æê±ê±¼ä·Ö3é¸ßμíλ
                smg1=0;  
                //delayms(3);        //ÏÔê¾ê®Î»êy×Ö
                P0=table[shi];
                smg3=1;
                delayms(3);                                 //ÏÔ꾸öλêy×Ö
                smg3=0;
                //delayms(3);
          P0=table[ge];
                smg4=1;
                delayms(3);
                smg4=0;
                smg2=0;
}
void djsxs22()                                 
{        
         P0=0xc0;
    smg1=1;
    delayms(3);
    smg1=0;                                        //μúò»Î»êyÂë1üÏÔê¾-
    smg2=1;
    delayms(3);                           //μúèyλêyÂë1üÏÔê¾-
    smg2=0;
                smg3=1;
                delayms(3);
                smg3=0;  
                smg4=1;
                delayms(3);
                smg4=0;         //μúËÄλêyÂë1üÏÔê¾-
}

void djsxs1(uchar aa)
{
        P0=table[aa];
    smg1=0;
    delayms(3);
    smg1=1;                                   //μúò»Î»êyÂë1üÏÔê¾1

}
//把程序中的void djsxs1()留着,
void djsxs2(),void djsxs3(),void djsxs4(),void djsxs5(),void djsxs6(),void djsxs7(),void djsxs8(),
子函数删了
调用处这样djsxs1(1);
调用djsxs2();处改成djsxs1(2);
调用djsxs3();处改成djsxs1(3);
直到8

122.PNG (35.64 KB, 下载次数: 45)

122.PNG
ID:330538 发表于 2018-7-22 21:16

你也出现这种问题?、
ID:330538 发表于 2018-7-22 20:28
guangshi_wq 发表于 2018-7-22 17:30
不知道你弄好了没有,用上面一个数组;
写了个测试代码放在主函数里,
int djs1=60;

是不是我画板有问题
ID:330538 发表于 2018-7-22 20:26
guangshi_wq 发表于 2018-7-22 17:30
不知道你弄好了没有,用上面一个数组;
写了个测试代码放在主函数里,
int djs1=60;

在开发板上可以显示1,然后在那里就不行额
ID:330538 发表于 2018-7-22 20:14
guangshi_wq 发表于 2018-7-22 17:30
不知道你弄好了没有,用上面一个数组;
写了个测试代码放在主函数里,
int djs1=60;

是插入我上面的代码里吗
ID:377510 发表于 2018-7-22 19:41
同求解
ID:375003 发表于 2018-7-22 17:30
不知道你弄好了没有,用上面一个数组;
写了个测试代码放在主函数里,
int djs1=60;
Timer0_init();         //初始化定时器中断
spk=1;                          //蜂鸣器不响
        djs=60;                //倒计时赋值
while(1)
{
        TR0=1;
        if(js)
                {
                        P0=table[js];
                        smg3=1;
                        smg1=1;
                        smg2=1;
                        js=0;//
          }
}

tset1.PNG (32.08 KB, 下载次数: 42)

tset1.PNG

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

Powered by 单片机教程网

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