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

📄 16led.c

📁 16X16的LED点阵控制(附原理图)
💻 C
字号:
#include <reg51.h>
#define uchar unsigned char
#define uint  unsigned int

//LED16x16的片选信号,其它数据信号,地址信号,写信号接开发板的相应信号.本例中片选信号通过1片138译码得到(相应的地址为0xb00x)。
xdata unsigned char RowLow  _at_ 0xb002;   //行低八位地址
xdata unsigned char RowHigh _at_ 0xb003;   //行高八位地址
xdata unsigned char ColLow  _at_ 0xb000;   //列低八位地址
xdata unsigned char ColHigh _at_ 0xb001;   //列高八位地址

//字模   每个16x16点阵汉字为: 8位x2x16 = 256位, 32字节
code uchar Font[][32] = {
  //南
  0x08,0x40,0x14,0x41,0x04,0x41,0x04,0x41,0xF4,0x5F,0x04,0x41,0x04,0x41,0xF4,0x5F,
  0x44,0x44,0x24,0x48,0xFE,0x7F,0x04,0x01,0x00,0x01,0xFE,0xFF,0x04,0x01,0x00,0x01,
  //京
  0x00,0x02,0x08,0x25,0x18,0x11,0x30,0x09,0x40,0x09,0x00,0x01,0xF0,0x1F,0x10,0x10,
  0x10,0x10,0x10,0x10,0xF8,0x1F,0x10,0x00,0xFE,0xFF,0x04,0x01,0x00,0x01,0x00,0x02,
  };

void delay(uchar t)
{
   uchar i,j;

   for(i= t; i>0; i--){
     for(j=0; j<100; j++);
   }
}

void main()
{
  uchar i,j;
  uchar count;
  uint bitmask;

  //清屏
  ColLow = 0xff;  //行驱动低有效
  ColHigh= 0xff;
  RowLow = 0x00;  //列驱动高有效
  RowHigh= 0x00;

  while(1){
    for(j=0; j<10; j++){
      for(count =0; count <50; count ++){
        bitmask = 0x01;
        for(i=0;i<16;i++){

          RowLow  = 0x00;              //首先清屏
          RowHigh = 0x00;
          ColLow  = ~ Font[j][i*2  ];  //写出一行数据
          ColHigh = ~ Font[j][i*2+1];
          RowLow  = bitmask & 0xff;    //点亮此行
          RowHigh = bitmask >> 8;

          bitmask <<= 1;               //移位,指向下一行
          delay(1);
        }
      }
      ColLow  = 0xff;
      ColHigh = 0xff;
    }
  }
}

⌨️ 快捷键说明

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