⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5026.txt

📁 51单片机20mm双色(2R1G)显示模组扫描程序。 涉及芯片有
💻 TXT
字号:

20mm双色(2R1G)显示模组扫描程序。

涉及芯片有,5026,245。

为静态扫描。

/***********头文件***************/
#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char

/************扫描****************/
uchar disp0 = 0x00;
uchar disp1 = 0xff;
uchar code disp[8][16] = {

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00},
{0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00},      
{0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00},     
{0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00},           
{0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00},        
{0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00},        
{0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
};


uchar code disp2[16][16] = {

{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},      
{0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 

{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},    

{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},  

{0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},        
{0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20},      
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},     
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},           
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},        
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02},        
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
};
uchar disp3[] = {0x80,0x40,0x20,0x01,0x08,0x04,0x02,0x01};
 
/************位口定义*************/
sbit STB = 0x93;
sbit SCLK = 0x94;
sbit RDD = 0x95;
sbit GDD = 0x96;
sbit OE = 0x97;

bit flag = 0;
uchar n = 2;

/************子函数声明***********/
void init();
void int0();
void SendRDate_5026(uchar RDate1,uchar RDate2);
void SendGDate_5026(uchar GDate1,uchar GDate2);
void SendRGDate_5026(uchar RGDate1,uchar RGDate2);
void Delay(uchar n);
void SendRRDate_5026(uchar RDate1,uchar RDate2);
void SendGGDate_5026(uchar RDate1,uchar RDate2);
void SendRRGGDate_5026(uchar RDate1,uchar RDate2);

/************主函数**************/
void main(void)
{
  uchar i,j,k;
  
  OE = 0; 
  init();
  
  for(i=0;i<8;i++)
  { 
    SendRGDate_5026(disp1,disp1);
  Delay(10);
  }

  if(flag)
  {
    flag = 0;
    while(1)
  {
    if(n==0)
      {
    for(i=0;i<8;i++)
    {
      SendGDate_5026(disp1,disp1);
    _nop_();       
    }
  }

      else if(n==1)
  {
    for(i=0;i<8;i++)
    {
      SendRDate_5026(disp1,disp1);
    _nop_();
    }
  }

  else if(n==2)
      {
      for(j=0;j<8;j++)
    {
          for(i=0;i<8;i++)
      {
      SendRRDate_5026(disp[j][2*i],disp[j][2*i+1]); 
        _nop_();
      }
      STB = 1;
      _nop_();
      _nop_();
      STB = 0;
    for(k=0;k<10;k++)
    {
      Delay(100);
      }
    }

    for(j=0;j<16;j++)
    {
          for(i=0;i<8;i++)
      {
      SendRRDate_5026(disp2[j][2*i],disp2[j][2*i+1]); 
        _nop_();
      }
      STB = 1;
      _nop_();
      _nop_();
      STB = 0;
    for(k=0;k<10;k++)
    {
      Delay(100);
      }
    }

      for(j=0;j<8;j++)
    {
          for(i=0;i<8;i++)
      {
      SendGGDate_5026(disp[j][2*i],disp[j][2*i+1]); 
        _nop_();
      }
      STB = 1;
      _nop_();
      _nop_();
      STB = 0;
    for(k=0;k<10;k++)
    {
      Delay(100);
      }
    }

    for(j=0;j<16;j++)
    {
          for(i=0;i<8;i++)
      {
      SendGGDate_5026(disp2[j][2*i],disp2[j][2*i+1]); 
        _nop_();
      }
      STB = 1;
      _nop_();
      _nop_();
      STB = 0;
    for(k=0;k<10;k++)
    {
      Delay(100);
      }
    }

    for(j=0;j<8;j++)
    {
          for(i=0;i<8;i++)
      {
      SendRRGGDate_5026(disp[j][2*i],disp[j][2*i+1]); 
        _nop_();
      }
      STB = 1;
      _nop_();
      _nop_();
      STB = 0;
    for(k=0;k<10;k++)
    {
      Delay(100);
      }
    }

    for(j=0;j<16;j++)
    {
          for(i=0;i<8;i++)
      {
      SendRRGGDate_5026(disp2[j][2*i],disp2[j][2*i+1]); 
        _nop_();
      }
      STB = 1;
      _nop_();
      _nop_();
      STB = 0;
    for(k=0;k<10;k++)
    {
      Delay(100);
      }
    }
  }
  }
  }
}


/***********子函数***************/
void init()
{
  EA = 1;
  EX0 = 1;
  IT0 = 1;
}

void int0() interrupt 0
{
  flag = ~flag;
  if(n<2)
  {
    ++ n;
  }
  else
  {
    n = 0;
  }
}

void SendRRDate_5026(uchar RDate1,uchar RDate2)
{
  uchar i;

  for(i=0;i<8;i++)
  {
    SCLK = 0;
  if(RDate1&(0x80>>i))
  {
      RDD = 1;
  GDD = 0;
  }
  else
  {
    RDD = 0;
  GDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  for(i=8;i<16;i++)
  {
    SCLK = 0;
  if(RDate2&(0x80>>(i-8)))
  {
      RDD = 1;
  GDD = 0;
  }
  else
  {
    RDD = 0;
  GDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
}

void SendRDate_5026(uchar RDate1,uchar RDate2)
{
  uchar i;

  for(i=0;i<8;i++)
  {
    SCLK = 0;
  if(RDate1&(0x80>>i))
  {
      RDD = 1;
  GDD = 0;
  }
  else
  {
    RDD = 0;
  GDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  for(i=8;i<16;i++)
  {
    SCLK = 0;
  if(RDate2&(0x80>>(i-8)))
  {
      RDD = 1;
  GDD = 0;
  }
  else
  {
    RDD = 0;
  GDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  STB = 1;
  _nop_();
  _nop_();
  STB = 0;
}

void SendGGDate_5026(uchar GDate1,uchar GDate2)
{
  uchar i;

  for(i=0;i<8;i++)
  {
    SCLK = 0;
  if(GDate1&(0x80>>i))
  {
      GDD = 1;
  RDD = 0;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  for(i=8;i<16;i++)
  {
    SCLK = 0;
  if(GDate2&(0x80>>(i-8)))
  {
      GDD = 1;
  RDD = 0;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
}
 
void SendGDate_5026(uchar GDate1,uchar GDate2)
{
  uchar i;

  for(i=0;i<8;i++)
  {
    SCLK = 0;
  if(GDate1&(0x80>>i))
  {
      GDD = 1;
  RDD = 0;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  for(i=8;i<16;i++)
  {
    SCLK = 0;
  if(GDate2&(0x80>>(i-8)))
  {
      GDD = 1;
  RDD = 0;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
    STB = 1;
  _nop_();
  _nop_();
    STB = 0;
}


void SendRRGGDate_5026(uchar RGDate1,uchar RGDate2)
{
  uchar i;

  for(i=0;i<8;i++)
  {
    SCLK = 0;
  if(RGDate1&(0x80>>i))
  {
      GDD = 1;
   RDD = 1;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  for(i=8;i<16;i++)
  {
    SCLK = 0;
  if(RGDate2&(0x80>>(i-8)))
  {
      GDD = 1;
   RDD = 1;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
}

void SendRGDate_5026(uchar RGDate1,uchar RGDate2)
{
  uchar i;

  for(i=0;i<8;i++)
  {
    SCLK = 0;
  if(RGDate1&(0x80>>i))
  {
      GDD = 1;
   RDD = 1;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  for(i=8;i<16;i++)
  {
    SCLK = 0;
  if(RGDate2&(0x80>>(i-8)))
  {
      GDD = 1;
   RDD = 1;
  }
  else
  {
    GDD = 0;
  RDD = 0;
  }
    SCLK = 1;
  _nop_();
  }
  STB = 1;
  _nop_();
  _nop_();
  STB = 0;
}
           
void Delay(uchar n)
{
  uchar i;

  for(;n>0;n--)
  {
    for(i=0;i<125;i++)
  ;
  }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -