求大神指导用595和138控制16*16的点阵,如何实现动态显示。

2019-07-16 03:04发布

#include<reg52.h>
#define  uchar unsigned char
#define  uint unsigned int
#include<intrins.h>
sbit C1=P1^0;
sbit B1=P1^1;
sbit A1=P1^2;
sbit E=P1^3;
sbit D=P1^4;
sbit R_CLK=P1^5;                                                                //输出存储器锁存时钟线
sbit C_LK=P1^6;                                                                    //数据输入时钟
sbit DATA=P1^7;

uchar code table1[8]={0,1,0,1,0,1,0,1};
uchar code table2[8]={0,0,1,1,0,0,1,1};
uchar code table3[8]={0,0,0,0,1,1,1,1};         
void wr138(uchar k)
{
        D=0;
          if(k<9)
          {
                          E=0;
                          A1=table1[k-1];
                        B1=table2[k-1];
                        C1=table3[k-1];
           }
                else
                {
                        E=1;
                        A1=table1[k-9];
                        B1=table2[k-9];
                        C1=table3[k-9];       
                }

}                                                                                          //控制行
void wr595(uchar temp)
{
                  uchar m;
                  for(m=0;m<8;m++)
                  {
                          C_LK=0;
                          DATA=temp&0x80;
                          C_LK=1;
                          temp=temp<<1;
                   }
}
void delay(uint z)
{         uint x;
        for(x=z;z>0;z--)
                for(x=110;x>0;x--);
}
void hsm()
{
        uint k;
         for(k=0;k<16;k++)
         {        wr138(k+1);delay(100);}
}                                                                                                                                         //行扫描
void out595()
{
        R_CLK=0;hsm();
        R_CLK=1;
}


void main()
{       
        while(1)
        {
                uint k;
                uchar temp=0xfe;
                wr595(temp);
                out595();
        }

}

点阵模块原理图.pdf 下载积分: 积分 -1 分
53.7 KB, 下载次数: 31, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。