本帖最后由 mdddkk 于 2019-12-5 17:36 编辑
单片机16x16led点阵实验:Proteus仿真加程序截图都有,自己做着玩的,可实现各种汉字的显示,需要自己取模
需要注意端口的标号和取模的方式,16x16是由4个8x8点阵拼接而成,每行每列相对应,我这个是每行对应每行,列的顺序正好相反,即第一列线对应8x8的最后一列灯,跟标号有关。
下面有一个拼接图,仅供参考
- #include <reg51.h>
- #define out0 P0
- #define out2 P2
- #define out1 P1
- typedef unsigned char u8;
- typedef unsigned int u16;
- void delay(u16 t)
- {
- while(t--);
- }
- u8 code string[]=
- {
- /*-- 文字: 单 --*/
- /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x10,0x10,0x08,0x20,0x04,0x40,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
- 0x21,0x08,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,
- /*-- 文字: 片 --*/
- /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x00,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x1F,0xFC,0x10,0x00,0x10,0x00,
- 0x10,0x00,0x1F,0xE0,0x10,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x20,0x20,0x40,0x20,
- /*-- 文字: 机 --*/
- /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x10,0x00,0x11,0xF0,0x11,0x10,0x11,0x10,0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,
- 0x55,0x10,0x55,0x10,0x91,0x10,0x11,0x12,0x11,0x12,0x12,0x12,0x12,0x0E,0x14,0x00,
- /*-- 文字: 点 --*/
- /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xFC,0x02,0x00,0x02,0x00,0x3F,0xF0,0x20,0x10,
- 0x20,0x10,0x20,0x10,0x3F,0xF0,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x80,0x04,
- /*-- 文字: 阵 --*/
- /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x00,0x40,0x7C,0x40,0x44,0x40,0x4B,0xFE,0x48,0x80,0x50,0xA0,0x49,0x20,0x49,0xFC,
- 0x44,0x20,0x44,0x20,0x44,0x20,0x6B,0xFE,0x50,0x20,0x40,0x20,0x40,0x20,0x40,0x20,
- /*-- 文字: 实 --*/
- /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x88,0x84,0x04,0x80,0x04,0x80,0x10,0x80,
- 0x08,0x80,0x08,0x80,0xFF,0xFE,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x08,0x60,0x04,
- /*-- 文字: 验 --*/
- /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x00,0x20,0xF8,0x20,0x08,0x50,0x48,0x50,0x48,0x88,0x49,0x04,0x4A,0xFA,0x7C,0x00,
- 0x04,0x44,0x04,0x24,0x1D,0x24,0xE4,0xA8,0x44,0x88,0x04,0x10,0x2B,0xFE,0x10,0x00,
- };
-
- void main()
- {
- u8 i,j,n;
- while(1)
- {
- for(j=0;j<7;j++) //字的个数
- {
- for(n=0;n<40;n++)
- {
- for(i=0;i<16;i++)
- {
- out1=i%16;
- out0=~string[i*2+j*32];
- out2=~string[i*2+1+j*32];
- delay(100);
- out0=0xff;
- out2=0xff;
- }
- }
- }
- }
- }
复制代码
点阵.zip
(151.79 KB, 下载次数: 40)
附源代码和仿真
|