1.20 LCD12864 并口屏(来自 wsr 的贡献)
1.20.1 模块来源
采购链接: https://m.tb.cn/h.5dxW1Uc?tk=BQIldw7lzmm
资料下载:(基于该模块的资料,百度云链接等) https://pan.baidu.com/s/1swOuPlqVC5B0hjdzstihHA 提取码:yg0h
1.20.2 规格参数
工作电压:3.3V-5V
工作电流:20mA
通信方式:8 位并行
引脚数量:20PIN(2.54 间距)
厂家资料:相关使用说明手册
1.20.3 产品尺寸规格
1.20.4 资料讲解
选择解读通讯协议,当我们的 RS 引脚为高低电平时为开始,此时 RW 引脚置于低电平,E 引脚高电平。开始通过 DB0-DB7 的 8 根引脚进行通讯,对应二进制中的 8 位。当我们传输到一半时 E 引脚开始拉低,随后各引脚恢复初始状态,一次通讯结束
协议的编写为此屏幕中的重点!!!
1.20.5 移植工程
我们的目标是将例程移植至梁山派 GD32F470 上。按照以下步骤,即可完成移植。
- 将模板导入工程;
- 新建文件
- 配置引脚
- 编写协议
- 编写初始化
6.配置功能
1.20.6 引脚选择
LCD12864 并 | 立创·梁山派 | 接线图 |
---|
1.20.7 移植步骤
在 lcd12864.c 当中的协议代码。
c
/******************************************************************
* 函 数 名 称:lcd12864_gpio_data
* 函 数 说 明:LCD写十六进制数据进引脚
* 函 数 形 参:Command 命令(0xXX)
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_gpio_data(uint8_t Command)
{
DB7((Command >> 7) & 1);
DB6((Command >> 6) & 1);
DB5((Command >> 5) & 1);
DB4((Command >> 4) & 1);
DB3((Command >> 3) & 1);
DB2((Command >> 2) & 1);
DB1((Command >> 1) & 1);
DB0((Command >> 0) & 1);
}
/******************************************************************
* 函 数 名 称:lcd12864_Write_instruction
* 函 数 说 明:LCD写指令
* 函 数 形 参:Command 指令(0xXX)
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_Write_instruction(uint8_t Command)
{
RS(0);
RW(0);
EN(1);
lcd12864_gpio_data(Command);
delay_1ms(1);
EN(0);
delay_1ms(1);
}
/******************************************************************
* 函 数 名 称:lcd12864_Write_Command
* 函 数 说 明:LCD写数据
* 函 数 形 参:Command 数据(0xXX)
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_Write_Command(uint8_t Command)
{
RS(1);
RW(0);
EN(1);
lcd12864_gpio_data(Command);
delay_1ms(1);
EN(0);
delay_1ms(1);
}
/******************************************************************
* 函 数 名 称:lcd12864_init
* 函 数 说 明:LCD12864初始化
* 函 数 形 参:无
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_init(void)
{
lcd12864_gpio_Init(); // GPIO初始化
// 串行模式选择端口(一般不开启也可以使用,如果要开启电路板上要有相应电路)宏定义,GPIO初始化已注释,使用开启
// gpio_bit_write(LCD12864_GPIO_PSB,LCD12864_PIN_PSB,SET);//串行模式(一般不开启也可以使用,如果要开启电路板上要有相应电路)
// 复位端口(一般不开启也可以使用,如果要开启电路板上要有相应电路)宏定义,GPIO初始化已注释,使用开启
// gpio_bit_write(LCD12864_GPIO_RST,LCD12864_PIN_RST,RESET);
// delay_1ms(100);
// gpio_bit_write(LCD12864_GPIO_RST,LCD12864_PIN_RST,SET);
lcd12864_Write_instruction(0x38); // 显示模式设置
delay_1ms(1);
lcd12864_Write_instruction(0x08); // 显示关闭
delay_1ms(1);
lcd12864_Write_instruction(0x01); // 显示清屏
delay_1ms(1);
lcd12864_Write_instruction(0x06); // 显示光标移动设置
delay_1ms(1);
lcd12864_Write_instruction(0x0C); // 显示光标开及光标设置
}
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
83
84
85
86
87
88
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
83
84
85
86
87
88
可以直接使用的函数,显示字符串和数字
c
/******************************************************************
* 函 数 名 称:lcd12864_Cursor_position
* 函 数 说 明:LCD12864设置光标位置
* 函 数 形 参:line行(1-4)column列(1-8)
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_Cursor_position(uint8_t line,uint8_t column)
{
switch (line)
{
case 1:lcd12864_Write_instruction(0x80+(column-1));break;
case 2:lcd12864_Write_instruction(0x90+(column-1));break;
case 3:lcd12864_Write_instruction(0x88+(column-1));break;
case 4:lcd12864_Write_instruction(0x98+(column-1));break;
}
}
/******************************************************************
* 函 数 名 称:lcd12864_Displaying_characters
* 函 数 说 明:LCD12864指定位置显示一个字符
* 函 数 形 参:line行(1-4)column列(1-8)word一个字符
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_Displaying_characters(uint8_t line, uint8_t column, uint8_t word)
{
lcd12864_Cursor_position(line, column);
lcd12864_Write_Command(word);
}
/******************************************************************
* 函 数 名 称:lcd12864_Displaying_strings
* 函 数 说 明:LCD12864指定位置显示字符串
* 函 数 形 参:line行(1-4)column列(1-8)character字符串
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_Displaying_strings(uint8_t line, uint8_t column, uint8_t *character)
{
uint8_t i;
lcd12864_Cursor_position(line, column);
for (i = 0; character[i] != '\0'; i++)
{
lcd12864_Write_Command(character[i]);
}
}
/******************************************************************
* 函 数 名 称:lcd12864_Display_number
* 函 数 说 明:LCD12864指定位置显示数字
* 函 数 形 参:line行(1-4)column列(1-8)Numbers数字(0-65535)
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void lcd12864_Display_number(uint8_t line, uint8_t column, uint16_t numbers)
{
uint8_t i;
char numeric_data[8];//数据
lcd12864_Cursor_position(line, column); // 位置
snprintf(numeric_data, sizeof(numeric_data), "%u", numbers);
for (i = 0; numeric_data[i] != '\0'; i++)
{
lcd12864_Write_Command(numeric_data[i]);
}
}
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
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
1.20.8 移植验证
c
/********************************************************************************
* 测试硬件:立创·梁山派开发板GD32F470ZGT6 使用主频200Mhz 晶振25Mhz
* 版 本 号: V1.0
* 修改作者: LCKFB
* 修改日期: 2022年04月19日
* 功能介绍:
******************************************************************************
* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 其余模块移植手册:https://dri8c0qdfb.feishu.cn/docx/EGRVdxunnohkrNxItYTcrwAnnHe
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
*********************************************************************************/
#include "gd32f4xx.h"
#include "systick.h"
#include "stdio.h"
#include "lcd12864.h"//LCD12864
int main(void)
{
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2); // 优先级分组
systick_config(); // 滴答定时器初始化 1us
lcd12864_init(); // LCD12864初始化
lcd12864_Displaying_strings(1,1," www.lckfb.com");
lcd12864_Displaying_strings(2,2,"立创开发板");
lcd12864_Displaying_strings(3,4,"嵘");
lcd12864_Displaying_strings(4,1,"2023-8-15 wsr");
while (1)
{
}
}
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
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
案例现象:连接完线后显示如下字符.
移植成功示例