16×16点阵LED电子显示屏的设计
假设如果原本某个汉字的字型(第一个字型),其编码为:
00H,10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H; 第二个字型的编码为:
10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H,
也就是把第一个字型的编码中,第1行显示数据,变为第2行显示数据;第2行显示数据,变成第3行显示数据;第3行显示数据,变成第4行显示数据;第4行显示数据,变成第5行显示数据,以此类推。
5.3 汉子取模
一个国标汉字是由16X16即256个点(像素)来构成的,显示一个汉字该亮哪些点这些复杂的工作都交给取模软件来完成,同时,取模软件也负责把要显示的汉字转化成程序中要用到的显示代码,代码以一定的规律表征了该亮的点(一般用“1”表示)与不该亮的点(一般用“0”表示),一共256位。单片机负责将这些代码一段一段有规律地送到LED屏,比如第一次输出表示第1列的16位代码点亮第1列、紧接着再输出16位代码去点亮第2列……直到点亮第16列然后再重新点亮第1列……,如此循环,就完成了这个汉字的显示。单片机输出的速度足够快时,由于视觉暂留现象使得人眼在同一时刻感受到了这16列输出的信息,也就是看到了这个汉字。
图5.3 汉字取模软件
5.4 程序代码
#include
8
16×16点阵LED电子显示屏的设计
#define uint unsigned int
#define uchar unsigned char uchar code zhaoS[]= {
/*-- 文字: 福 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x10,0x90,0x73,0x1D,0x10,0x00,0x40,0x5E,0x52,0x52,0x52,0x52,0x52,0x5E,0x40,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };
uchar code zhaoX[]= {
/*-- 文字: 福 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x40,0x80,0xFF,0x00,0xC0,0x00,0xFF,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };
uchar code shang[]={ /*-- 文字: 北 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x04,0x04,0x04,0x04,0xFF,0x00,0x00,0x00,0xFF,0x02,0x04,0x08,0x10,0x00,0x00,
/*-- 文字: 京 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x20,0x20,0x27,0x24,0x24,0xA4,0x64,0x24,0x24,0x24,0x27,0x20,0x20,0x20,0x00,
/*-- 文字: 交 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x10,0x11,0x16,0x10,0x10,0x90,0x70,0x10,0x10,0x11,0x14,0x12,0x11,0x10,0x00,
/*-- 文字: 通 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x42,0x33,0x00,0x00,0x47,0x44,0x54,0x54,0x4F,0x54,0x64,0x44,0x07,0x00,0x00,
/*-- 文字: 大 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
/*-- 文字: 学 --*/
9
16×16点阵LED电子显示屏的设计
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x0C,0x88,0x69,0x09,0x09,0x89,0x69,0x09,0x09,0x19,0x28,0xC8,0x0A,0x0C,0x00,
/*-- 文字: --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 电 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x1F,0x11,0x11,0x11,0x11,0xFF,0x11,0x11,0x11,0x11,0x1F,0x00,0x00,0x00,
/*-- 文字: 子 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x41,0x41,0x41,0x41,0x41,0x41,0x47,0x45,0x49,0x51,0x61,0x41,0x01,0x01,0x00,
/*-- 文字: 信 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x01,0x06,0x1F,0xE0,0x00,0x20,0x24,0x24,0xA4,0x64,0x24,0x24,0x24,0x20,0x00,
/*-- 文字: 息 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x3F,0x2A,0x2A,0x6A,0xAA,0x2A,0x2A,0x2A,0x3F,0x00,0x00,0x00,0x00,
/*-- 文字: 工 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,
/*-- 文字: 程 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x24,0x24,0x25,0x7F,0xC4,0x44,0x00,0x7C,0x44,0x44,0x44,0x44,0x44,0x7C,0x00,0x00,
/*-- 文字: 学 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x0C,0x88,0x69,0x09,0x09,0x89,0x69,0x09,0x09,0x19,0x28,0xC8,0x0A,0x0C,0x00,
10
16×16点阵LED电子显示屏的设计
/*-- 文字: 院 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x7F,0x44,0x5A,0x61,0x08,0x30,0x24,0x24,0xA4,0x64,0x24,0x24,0x28,0x30,0x00}; uchar code xia[]={
0x04,0x06,0x04,0x08,0x08,0xFF,0x00,0x00,0x00,0xFC,0x02,0x02,0x02,0x02,0x1E,0x00,
0x00,0x02,0x04,0xD8,0x40,0x42,0x41,0x7E,0x40,0x40,0x40,0xD0,0x08,0x06,0x00,0x00,
0x01,0x81,0x02,0x02,0x84,0x44,0x28,0x10,0x28,0x44,0x82,0x02,0x01,0x81,0x01,0x00,
0x01,0x02,0xFC,0x02,0x01,0xFF,0x91,0x91,0x91,0xFD,0x91,0x95,0x93,0xFD,0x01,0x00,0x01,0x01,0x02,0x04,0x08,0x30,0xC0,0x00,0xC0,0x30,0x08,0x04,0x02,0x01,0x01,0x00,
0x20,0x20,0x20,0x20,0x20,0x22,0x21,0x7E,0x60,0xA0,0x20,0x20,0x20,0x20,0x20,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,0x00,0x00,0xF8,0x10,0x10,0x10,0x10,0xFE,0x11,0x11,0x11,0x11,0xF9,0x01,0x0F,0x00,
0x00,0x00,0x00,0x00,0x00,0x02,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xFF,0x00,0x00,0x00,0x9F,0x92,0x92,0x92,0x92,0x92,0x9F,0x00,0x00,
0x02,0x0C,0x00,0xC0,0x9C,0x82,0x82,0xA2,0x9A,0x82,0x82,0xCE,0x00,0x10,0x0C,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
0x10,0x60,0x80,0xFF,0x80,0x60,0x02,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x82,0x00,
0x20,0x20,0x20,0x20,0x20,0x22,0x21,0x7E,0x60,0xA0,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0xFF,0x20,0x10,0xE0,0x01,0x82,0x8C,0xF0,0x80,0x80,0xFC,0x82,0x82,0x8E,0x00 };
//shang[]xia[]这两个数组中存放的就是要显示的编码,shang[]代表上八行显示的编码,xia[]代表下八行要显示的编码 uchar code oneS[]= { };
uchar code oneX[]= { };
ucharshanghang[16],xiahang[16];//存放当前要显示的编码 uintb,e,x,y,o,m,n,q,p,i,j,k; sbit g2=P3^0; voiddelayms(uint); voidmovr(void); voidplayflash(void);
void display(ucharshanghang[16],ucharxiahang[16]); void main()
11
0x01,0x06,0xF8,0x04,0xFE,0x22,0x22,0x02,0x12,0x22,0xC2,0x02,0xC2,0x32,0x02,0x00
0x02,0x12,0x12,0x12,0xFF,0x12,0x12,0x00,0x20,0x10,0x0C,0x03,0x0C,0x70,0x00,0x00
相关推荐: