📄 16led.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 + -