有关32*64点阵屏的显示问题 大佬们谁来指点下迷津 卡在点亮这里好多天了

2019-03-24 16:59发布

小弟最近收了块595,138组成的32*64双 {MOD}点阵屏,可是就是点不亮啊。。第一次接触这个东西,查了很多资料,就是看不懂别人的程序,,惭愧。参考了https://www.cnblogs.com/menlsh/p/3780980.html这个,大佬们谁给我指点下一步怎么写呢?我现在很疑惑的就是 他上半屏用16个595控制,那我是不是在595传数据的那个函数应该写16个形参啊...然后主函数又该怎么办?真的没什么头绪
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
        sbit EN=P0^0;
        sbit R1=P0^1;
        sbit R2=P0^2;
        sbit LA=P2^7;
        sbit LB=P2^6;
        sbit LC=P2^5;
        sbit LD=P2^4;
        sbit G1=P2^3;
        sbit G2=P2^2;
        sbit STB=P2^1;
        sbit CLK=P2^0;
int hangnumber,lienumber;
void hangxuan(int hang);
void init();
void hc595GREENXIA(uchar date1,uchar date2,uchar date3,uchar date4);      
void hc595GREENSAHNG(uchar date1,uchar date2,uchar date3,uchar date4);
void hc595REDXIA(uchar date1,uchar date2,uchar date3,uchar date4);
void hc595REDSHANG(uchar date1,uchar date2,uchar date3,uchar date4);
void hc595YELLOWXIA(uchar date1,uchar date2,uchar date3,uchar date4);
void hc595YELLOWSHANG(uchar date1,uchar date2,uchar date3,uchar date4);
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void main()
{
          init();
          while(1)
        {
        for(hangnumber=1;hangnumber<17;hangnumber++)
                {
                        hangxuan(hangnumber);
                                        hc595YELLOWSHANG(0xfe,0xff,0xff,0xff);
                }               
                STB=0;
                STB=1;
        }
}
void hangxuan(int hang)
{
switch(hang)
{
        case 1:LA=0;LB=0;LC=0;LD=0;break;
        case 2:LA=0;LB=0;LC=0;LD=1;break;
        case 3:LA=0;LB=0;LC=1;LD=0;break;
        case 4:LA=0;LB=0;LC=1;LD=1;break;
        case 5:LA=0;LB=1;LC=0;LD=0;break;
        case 6:LA=0;LB=1;LC=0;LD=1;break;
        case 7:LA=0;LB=1;LC=1;LD=0;break;
        case 8:LA=0;LB=1;LC=1;LD=1;break;
        case 9:LA=1;LB=0;LC=0;LD=0;break;
        case 10:LA=1;LB=0;LC=0;LD=1;break;
        case 11:LA=1;LB=0;LC=1;LD=0;break;
        case 12:LA=1;LB=0;LC=1;LD=1;break;
        case 13:LA=1;LB=1;LC=0;LD=0;break;
        case 14:LA=1;LB=1;LC=0;LD=1;break;
        case 15:LA=1;LB=1;LC=1;LD=0;break;
        case 16:LA=1;LB=1;LC=1;LD=1;break;
        default:break;
}
STB=0;
_nop_();
_nop_();
STB=1;
}
void init()
{
  EN=1;
        R1=0;
        R2=0;
        G1=0;
        G2=0;
        STB=0;
        CLK=0;
        LA=0;
        LB=0;
        LC=0;
        LD=0;
  hangnumber=1;
  lienumber=1;
}
void hc595YELLOWSHANG(uchar date1,uchar date2,uchar date3,uchar date4)         //»Æé«éÏ°ëÆá
{
char i;
        for(i=0;i<8;i++)
        {
        R1=date1>>7;
        G1=date1>>7;
        date1<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R1=date2>>7;
        G1=date2>>7;
        date2<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R1=date3>>7;
        G1=date3>>7;
        date3<<=1;
       
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R1=date4>>7;
        G1=date4>>7;
        date4<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }

        STB=0;
        _nop_();
        _nop_();
        STB=1;
}
void hc595YELLOWXIA(uchar date1,uchar date2,uchar date3,uchar date4)               //»Æé«Ï°ëÆá
{
char i;
        for(i=0;i<8;i++)
        {
        R2=date1>>7;
        G2=date1>>7;
        date1<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R2=date2>>7;
        G2=date2>>7;
        date2<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R2=date3>>7;
        G2=date3>>7;
        date3<<=1;
       
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R2=date4>>7;
        G2=date4>>7;
        date4<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
        STB=0;
        _nop_();
        _nop_();
        STB=1;
}
void hc595REDSHANG(uchar date1,uchar date2,uchar date3,uchar date4)            //oìé«éÏ°ëÆá
{
        char i;
        for(i=0;i<8;i++)
        {
        R1=date1>>7;
        date1<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R1=date2>>7;
        date2<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R1=date3>>7;
        date3<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R1=date4>>7;
        date4<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
        STB=0;
        _nop_();
        _nop_();
        STB=1;       
}
void hc595REDXIA(uchar date1,uchar date2,uchar date3,uchar date4)     //oìé«Ï°ëÆá
{
        char i;
        for(i=0;i<8;i++)
        {
        R2=date1>>7;
        date1<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R2=date2>>7;
        date2<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R2=date3>>7;
        date3<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        R2=date4>>7;
        date4<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
        STB=0;
        _nop_();
        _nop_();
        STB=1;       
}
void hc595GREENSHANG(uchar date1,uchar date2,uchar date3,uchar date4)     //Âìé«éÏ°ëÆá
{
        char i;
        for(i=0;i<8;i++)
        {
        G1=date1>>7;
        date1<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        G1=date2>>7;
        date2<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        G1=date3>>7;
        date3<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        G1=date4>>7;
        date4<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
        STB=0;
        _nop_();
        _nop_();
        STB=1;       
}
void hc595GREENXIA(uchar date1,uchar date2,uchar date3,uchar date4)                 // Âìé«Ï°ëÆá
{
        char i;
        for(i=0;i<8;i++)
        {
        G2=date1>>7;
        date1<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        G2=date2>>7;
        date2<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        G2=date3>>7;
        date3<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
                for(i=0;i<8;i++)
        {
        G2=date4>>7;
        date4<<=1;
        CLK=0;
        _nop_();
        _nop_();
  CLK=1;               
        }
        STB=0;
        _nop_();
        _nop_();
        STB=1;       
}

此帖出自小平头技术问答
0条回答

一周热门 更多>