📄 dot_9.c
字号:
/*--------------------------------------------------------------*/
//Note: LED16*16滚动显示
//Date: 09-2-14
//Time: 19:56
/*--------------------------------------------------------------*/
//包含头文件
#include<reg52.h>
/*--------------------------------------------------------------*/
//代码区
//取码规则:纵向取模,字节倒序
//取码顺序:左到右,上到下(← → ↑ ↓)
unsigned char code table[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 不 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x02,0x02,0x02,0x02,0x82,0x42,0xFE,0x06,0x42,0xC2,0x82,0x02,0x03,0x02,0x00,
0x00,0x08,0x04,0x02,0x01,0x00,0x00,0x7F,0x00,0x00,0x00,0x01,0x07,0x02,0x00,0x00,
/*-- 文字: 是 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x80,0x80,0x80,0xBE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBE,0x80,0x80,0x80,0x00,
0x00,0x40,0x20,0x10,0x0E,0x10,0x20,0x3F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,
/*-- 文字: 因 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xFE,0x02,0x22,0x22,0x22,0xA2,0xFE,0x22,0x22,0x22,0x22,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x40,0x50,0x48,0x46,0x43,0x40,0x41,0x42,0x5C,0x48,0x40,0xFF,0x00,0x00,
/*-- 文字: 为 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x10,0x12,0x14,0x1C,0x10,0xF0,0x9F,0x10,0x10,0x10,0x10,0xF8,0x10,0x00,
0x00,0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x11,0x26,0x40,0x20,0x1F,0x00,0x00,
/*-- 文字: 寂 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x18,0x04,0x04,0xFC,0x24,0x24,0x25,0xC6,0x24,0x24,0x24,0xE4,0x0C,0x04,0x00,
0x20,0x11,0x4D,0x81,0x7F,0x05,0xB9,0x51,0x20,0x13,0x0C,0x12,0x21,0xC0,0x40,0x00,
/*-- 文字: 寞 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x0C,0x14,0xD4,0x54,0x7C,0x55,0x56,0x54,0x7C,0x54,0xD4,0x14,0x0C,0x04,0x00,
0x00,0x90,0x90,0x57,0x55,0x35,0x35,0x1D,0x35,0x55,0x55,0x97,0x90,0x80,0x00,0x00,
/*-- 文字: 才 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x10,0x10,0x10,0x10,0x10,0xD0,0x30,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,
0x00,0x10,0x10,0x08,0x04,0x02,0x01,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 想 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0xC8,0x38,0xFF,0x18,0x68,0x08,0x00,0xFE,0x2A,0x2A,0x2A,0x2A,0xFE,0x00,0x00,
0x01,0x40,0x70,0x01,0x38,0x40,0x40,0x44,0x59,0x41,0x41,0x61,0x01,0x09,0x30,0x00,
/*-- 文字: 你 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00,
0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
#define num sizeof(table) //获得汉字个数
/*--------------------------------------------------------------*/
//延时500+0us 函数定义
void delay1(void)
{
unsigned char i, j;
for(i = 99; i > 0; i--)
for(j = 1; j > 0; j--);
}
/*--------------------------------------------------------------*/
//主函数
void main(void)
{
unsigned char i, n; //n控制滚动速度
unsigned int m; //汉字移动变量
unsigned char buffer[64]; //两个汉字的缓冲区
unsigned char k; //指向第几个汉字的变量
bit next = 1, neg; //控制是否缓冲,反色显示
while(1)
{
if(next)
{
for(i = 0; i < 16; i++) //写入两个汉字进缓冲区12-23-34
{
buffer[i] = table[32*k+15-i];
buffer[i+16] = table[32*(k+1)+15-i];
buffer[i+32] = table[32*k+31-i];
buffer[i+48] = table[32*(k+1)+31-i];
}
}
for(i = 0; i < 16; i++) //单列扫描
{
if(neg) //反色显示
{
P0 = ~buffer[i+m]; //字的上半部分
P2 = ~buffer[i+m+32]; //字的下半部分
}
else //正常显示
{
P0 = buffer[i+m]; //字的上半部分
P2 = buffer[i+m+32]; //字的下半部分
}
P1 = ~((0x8000>>i)&0xff); //列扫描
P3 = ~((0x8000>>i)>>8);
delay1();delay1();delay1(); //延时
P1 = 0xff; //关显示
P3 = 0xff;
}
n++;
if(n == 10) {n = 0; m++;} //控制滚动速度
if(m == 16) {m = 0; k++; next = 1;} //下一组汉字
else next = 0; //控制是否缓冲
if(k == num/32-1) {k = 0; neg = ~neg;} //循环滚动
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -