为什么我8*8的点阵加了延时后只是闪了一下

2019-03-24 19:08发布

为什么我8*8的点阵加了延时后只是闪了一下,而不是亮一会儿了呢#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code table1[]={0x00,0x00,0x02,0x03,0x02,0x00,0x00,0x00};
uchar code table2[]={0x00,0x00,0x04,0x06,0x04,0x00,0x00,0x00};
void delay(uint z)
{
 while(z--);
}void main()
{
        uint i; for(i=0;i<8;i++)
 {
  P2=table;
  P0=table1;
  delay(50);
  
 }    delay(50000);
 for(i=0;i<8;i++)
 {
  P2=table;
  P0=table2;
  delay(50);
 } delay(50000);
 
 while(1);} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
常见泽1
1楼-- · 2019-03-24 23:18
fangzai 放在while(1)循环里面要 for(i=0;i<8;i++)
{
  P2=table;
  P0=table1;
  delay(50);
  
}   

delay(50000);
for(i=0;i<8;i++)
{
  P2=table;
  P0=table2;
  delay(50);
}

delay(50000);
ylf175300
2楼-- · 2019-03-25 00:57
一开始放在的就是亮了一下就直接到下面一个的,不过现在好了中断不是的
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code table1[]={0x00,0x00,0x02,0x03,0x02,0x00,0x00,0x00};
uchar code table2[]={0x00,0x00,0x04,0x06,0x04,0x00,0x00,0x00};

uint t,m;

void delay(uint z)
{
        while(z--);
}
void t0() interrupt 1
{
        TH0=(65536-50000)/256;
        TH0=(65536-50000)%256;
        m++;

}         
void display1()
{
        uchar i;
        for(i=0;i<8;i++)
        {
                P2=table;
                P0=table1;
                delay(2);
               
         }

}
void display2()
{
        uchar i;
        for(i=0;i<8;i++)
        {
                P2=table;
                P0=table2;
                delay(2);
               
         }
}

void main()
{
        uint i;         
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TH0=(65536-50000)%256;
        EA=1;
        TR0=1;
        ET0=1;

        while(1)
        {
                for(m=0;m<2000;m++)
                {
                        display1();
                }
                m=0;
                for(m=0;m<2000;m++)
                {
                        display2();
                }
                        m=0;
        }
       

   
}
常见泽1
3楼-- · 2019-03-25 01:05
中断里m 和你的for(m=0;m<2000;m++) 冲突了把 中断里的m没用了把 给你个简单的8*8点阵的例子把  你这样的话用不着中断
常见泽1
4楼-- · 2019-03-25 02:26
  1. #include<reg52.h>
    #define uchar unsigned char
    #define uint unsigned int

    void delay(uint z)
    {
    uint x,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);

    }

    unsigned char code table[]={0x00,0x20,0x28,0x78,0x28,0x20,0x00,0x00};
    uchar code colum[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

    uchar i;
    main()
    {
    while(1)
    {

    for(i=0;i<8;i++)
    {

    P0=table[i];
    P2=colum[i];

    delay(5);
    P2=0xff;
    }
    }

    }
复制代码
ylf175300
5楼-- · 2019-03-25 08:05
嗯,谢谢了,但是现在我想用按键控制这个的,可以不用到中断延时吗

一周热门 更多>