51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真


  • 🎬Proteus仿真
    在这里插入图片描述
  • 🔧取模软件:pctolcd2002,或者使用88点阵取模软件取模

📝程序代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <reg51.h>

typedef unsigned char uchar;
typedef unsigned int uint;

unsigned char code taba[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //行选
//unsigned char code tabb[] = {0x08, 0x49, 0x49, 0x7F, 0x08, 0x49, 0x49, 0x7F}; //选列"出"
unsigned char code tabb[] = {0x10,0x92,0x92,0xFE,0x10,0x92,0x92,0xFE}; //选列"出"
unsigned char code tabc[] = {0x00, 0x02, 0x04, 0x08, 0x18, 0x24, 0x42, 0x81}; //"入"
unsigned char code tabd[] = {0xFF, 0x4A, 0x2A, 0x1C, 0xFF, 0x08, 0x08, 0x08}; //"平"
unsigned char code tabe[] = {0x08, 0xFF, 0x89, 0x04, 0x7F, 0x14, 0x1C, 0x63}; //"安"
unsigned char i, j;


void delay(uint x) //毫秒延时函数
{
unsigned int i = 0, j = 0;
for(i = 0; i < x; i++)
for(j = 0; j < 120; j++);
}

void main(void)
{

while(1)
{
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tabb[i];//显示‘出’
delay(5);
}
}
delay(100);
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tabc[i];//显示‘入’
delay(5);
}
}
delay(100);
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tabd[i]; //显示"平"
delay(5);
}
}
delay(100);
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tabe[i];//显示‘安’
delay(5);
}
}
delay(100);

}
}


⛳自主DIY显示内容

👉🏻如需自己DIY显示内容,可以自行使用取模软件绘制和设计显示图案,生成相对应的取模后的代码,拷贝到程序当中。
  • 🔖由于8X8点阵像素,显示内容有限,只能设计一些较为简单符号或简单汉字作为显示内容。
  • 📋示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <reg51.h>

typedef unsigned char uchar;
typedef unsigned int uint;

unsigned char code taba[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //行选
//unsigned char code tabb[] = {0x08, 0x49, 0x49, 0x7F, 0x08, 0x49, 0x49, 0x7F}; //选列"出"
unsigned char code tab1[] = {0x10,0x92,0x92,0xFE,0x10,0x92,0x92,0xFE}; //选列"出"
unsigned char code tab2[] = {0x00, 0x02, 0x04, 0x08, 0x18, 0x24, 0x42, 0x81}; //"入"
unsigned char code tab3[] = {0xFF, 0x4A, 0x2A, 0x1C, 0xFF, 0x08, 0x08, 0x08}; //"平"
unsigned char code tab4[] = {0x08, 0xFF, 0x89, 0x04, 0x7F, 0x14, 0x1C, 0x63}; //"安"
unsigned char code tab5[] = {0x24,0x7E,0xFF,0xFF,0xFF,0x7E,0x3C,0x18}; //爱心图案

unsigned char i, j;


void delay(uint x) //毫秒延时函数
{
unsigned int i = 0, j = 0;
for(i = 0; i < x; i++)
for(j = 0; j < 120; j++);
}

void main(void)
{

while(1)
{
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tab1[i];//显示‘出’
delay(5);
}
}
delay(100);
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tab2[i];//显示‘入’
delay(5);
}
}
delay(100);
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tab3[i]; //显示"平"
delay(5);
}
}
delay(100);
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tab4[i];//显示‘安’
delay(5);
}
}
delay(100);
for(j = 0; j < 10; j++)
{
for(i = 0; i < 8; i++)
{
P2 = taba[i];
P3 = tab5[i];//显示‘爱心图案’
delay(5);
}
}
delay(100);
}
}


  • 🎞新增显示一个爱心图案
    在这里插入图片描述
  • 🖍取模方式:
    在这里插入图片描述

🔨取模方式:逆向,阴码,逐行式扫描

在这里插入图片描述
在这里插入图片描述

📚程序源码

1
2
3
链接:https://pan.baidu.com/s/1tEFqbtE6kLzhyeihxa-xxw 
提取码:1t2a