赞助论坛
  • 3018阅读
  • 0回复

16X64LED点阵显示屏原理图+源代码 [复制链接]

楼层直达
发帖
23
精华
0
金币
118
威望
0
贡献
0
好评
0
注册
2012-09-29
楼主    执念姿态2012 发表于: 2013-08-05 10:08:50 
上淘宝搜索 16X64LED点阵显示屏原理图+源代码




部分代码如下:

//*****************************************************************//
sbit R=P2^2;                   //定义数据输入端口P2^0
sbit CLK=P2^0;                 //时钟信号
sbit STB=P2^1;                     //595锁存信号
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
uchar k1_flag=0,k2_flag=0,k3_flag=0,n;
uchar yd,h;   //m为移动计数器,h为行段计数器;
long zimo;           //字模计数器
uchar BUFF[10];       //缓存;
float d=40;
void key();             //按键处理函数
void tiaozheng_data(void);     //调整数据函数
void fasong_data(void);       //发送数据函数
void saomiao(void);           //行扫描函数
void writebyte(char dat);       //595写一字节函数

void main()
{
    uchar i;                 //d的大小决定移动速度
    yd=0;                 //移动计数器,记录移动字节数
    zimo=0;                   //字模计数器,记录字数
    while(1)
    {
          while(yd<16)
          {  
             
              for(i=0;i<d;i++)
              {  
                  key();         //按键扫描函数
                  saomiao();         //调用扫描函数
              }
              yd++;                 //移动一位
          }
          yd=0;
          zimo=zimo+32;             //向后移动一个字
          if(k1_flag==0)
          {
              if(zimo>=32*65)           //取决于字数 默认table1[]
              zimo=0;
          }
          if(k1_flag==1)                 //取决于字数 table2[]
          {
              if(zimo>=32*24)           //取决于字数
              zimo=0;
          }
          if(k1_flag==2)                 //取决于字数 table3[]
          {
              if(zimo>=32*141)               //取决于字数
              zimo=0;
          }
          if(k1_flag==3)                   //取决于字数 table2[]
          {
              if(zimo>=32*24)           //取决于字数
              zimo=0;
          }
          if(k1_flag==4)
          {
              if(zimo>=32*141)               //取决于字数   table3[]
              zimo=0;
          }
    }
}