标题: 单片机是自已提前自学的,我在网上看完了的课程里面,没有点阵的内容,求学习资料 [打印本页]

作者: 电ac    时间: 2020-7-8 23:15
标题: 单片机是自已提前自学的,我在网上看完了的课程里面,没有点阵的内容,求学习资料
还有就是我自已尝试模仿了一下别人写的程序,并修改了一些,但是显示不了我想要显示的字,求大佬赐教。以下是程序和电路图
#include<reg51.h>
unsigned int zimo[]={
0x7F,0xBF,0xCF,0xE1,0xEF,0xEF,0xEF,0x00,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,
0xBF,0xBF,0xBD,0xBD,0xBD,0xBD,0xBD,0x80,0xBD,0xBD,0xBD,0xBD,0xBD,0xBF,0xBF,0xFF,
0xFF,0xFF,0xFF,0x01,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x01,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x00,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0x1F,0xFF,0x00,0xEF,0xDF,0xF7,0xF7,0xF7,0x00,0xF7,0xF7,0x07,0xFF,0xFF,0xFF,
0xFE,0xFF,0xFF,0x00,0xFF,0x7E,0xBE,0xCE,0xF2,0xFC,0xF2,0xCE,0xBE,0x7E,0x7E,0xFF,
0xFF,0xFF,0x1F,0x63,0x7B,0x7B,0x7B,0x0B,0x7D,0x7D,0x7C,0x7D,0x7F,0x7F,0xFF,0xFF,
0xFF,0xDF,0xEF,0xF7,0xF9,0xBF,0x7F,0x80,0xFF,0xFF,0xFD,0xFB,0xF7,0xCF,0xFF,0xFF
};
int time=0;
int flag=0;
int num=0;
int s=9;
int counter=120;
void delay(unsigned int i)
{
        while(i--);
}
void t0()
{
        TMOD=0X01;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        TR0=1;
        ET0=1;
        EA=1;
}
void display(unsigned char qian,unsigned char hou,int col)
{
if(col==1)  
{
   P3=0x7f;
   P1=0xff;
}
else if(col==2)
{
   P3=0xbf;
   P1=0xff;
}
else if(col==3)
{
   P3=0xdf;
   P1=0xff;
}
else if(col==4)  
{
   P3=0xef;
   P1=0xff;
}
else if(col==5)  
{
   P3=0xf7;
   P1=0xff;
}
else if(col==6)  
{
   P3=0xfb;
   P1=0xff;
}
else if(col==7)  
{
   P3=0xfd;
   P1=0xff;
}else if(col==8)  
{
   P3=0xfe;
   P1=0xff;
}else if(col==9)  
{
   P3=0xff;
   P1=0x7f;
}else if(col==10)  
{
   P3=0xff;
   P1=0xbf;
}else if(col==11)  
{
   P3=0xff;
   P1=0xdf;
}else if(col==12)  
{
   P3=0xff;
   P1=0xef;
}else if(col==13)  
{
   P3=0xff;
   P1=0xf7;
}else if(col==14)  
{
   P3=0xff;
   P1=0xfb;
}else if(col==15)  
{
   P3=0xff;
   P1=0xfd;
}else if(col==16)  
{
   P3=0xff;
   P1=0xfe;
}
P2=qian;
P0=hou;
}

void main()
{   t0();
        while(1)
              {
                                        int t=0;
                                        for(t=0;t<16;t++)
                                        {
                                                display(zimo[(t+flag)*2],zimo[(t+flag)*2+1],t+1);
                                                delay(10000);
                                        }
     }
}
void zd() interrupt 1
{
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        time++;
        if(time==s)
        {
                num++;
                flag=flag+1;
                if(num>counter)
                {
                        num=0;
                        flag=0;
                }
                time=0;
         }
}

无标题.png (366 KB, 下载次数: 51)

无标题.png

作者: YJGG    时间: 2020-7-9 08:20
动态扫描,是不是延时过长
display(zimo[(t+flag)*2],zimo[(t+flag)*2+1],t+1);
                                                delay(10000);
作者: 电ac    时间: 2020-7-9 09:41
YJGG 发表于 2020-7-9 08:20
动态扫描,是不是延时过长
display(zimo[(t+flag)*2],zimo[(t+flag)*2+1],t+1);
                       ...

不是啊,延时我改成短一点的也不行
作者: YJGG    时间: 2020-7-9 18:07
你先试着点亮一个点的LED灯,看能否点亮,确定硬件电路是否正常
作者: 电ac    时间: 2020-7-9 18:21
YJGG 发表于 2020-7-9 18:07
你先试着点亮一个点的LED灯,看能否点亮,确定硬件电路是否正常

做这个点阵之前就已经点亮过了




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