1602显示屏
模块来源
采购链接:
https://item.taobao.com/item.htm?spm=a21n57.1.0.0.7171523cYLjveZ&id=20090565604&ns=1&abbucket=0
资料下载链接:
http://pan.baidu.com/s/1c0ARSIk
规格参数
工作电压:3~5V
工作电流:最大24mA
模块尺寸:12(H) x 38(V) MM
像素大小:16列2行 每一列8x8的点阵
通信协议:8位并口
移植过程
我们的目标是将例程移植至立创开发板GD32E230C8T6上。按照以下步骤,即可完成移植。
- 将源码导入工程;
- 根据编译报错处进行粗改;
- 修改引脚配置;
- 修改时序配置;
- 移植验证。
查看资料
我们主要修改的是引脚的初始化与时序的延时修改。
移植至工程
将厂家资料路径下的1602.c文件,复制到自己的工程中。自己的工程至少需要有毫秒级延时函数。(工程可以参考入门手册空白工程(工程模板)下载)
打开自己的工程,将我们刚刚复制过来的文件导入.c文件。
这样我们的工程中就出现了刚刚添加的C文件(原工程目录见图1.18.3.5 C文件导入步骤 )
新建一个文件命名为1602.h,并放置在Hardware文件夹下。
- 点击新建和保存。
- 然后选择Hardware文件夹,取名字为1602.h
- 这样我们的h文件就创建好了
这里我们不需要包含Hareware文件夹路径了,因为在空白工程中已经给大家设定好了,就不需要大家动手了。
引脚选择
选择好引脚后,进入工程开始编写屏幕引脚初始化代码。
为了方便后续移植,我在 1602.h 处宏定义了每一个引脚,后续根据需要进行修改即可。
c
#define RCU_LCD_RS RCU_GPIOC//RS
#define PORT_LCD_RS GPIOC
#define GPIO_LCD_RS GPIO_PIN_13
#define RCU_LCD_RW RCU_GPIOC//RW
#define PORT_LCD_RW GPIOC
#define GPIO_LCD_RW GPIO_PIN_14
#define RCU_LCD_E RCU_GPIOC//E
#define PORT_LCD_E GPIOC
#define GPIO_LCD_E GPIO_PIN_15
#define RCU_LCD_DB0 RCU_GPIOA//DB0
#define PORT_LCD_DB0 GPIOA
#define GPIO_LCD_DB0 GPIO_PIN_0
#define RCU_LCD_DB1 RCU_GPIOA//DB1
#define PORT_LCD_DB1 GPIOA
#define GPIO_LCD_DB1 GPIO_PIN_1
#define RCU_LCD_DB2 RCU_GPIOA//DB2
#define PORT_LCD_DB2 GPIOA
#define GPIO_LCD_DB2 GPIO_PIN_2
#define RCU_LCD_DB3 RCU_GPIOA//DB3
#define PORT_LCD_DB3 GPIOA
#define GPIO_LCD_DB3 GPIO_PIN_3
#define RCU_LCD_DB4 RCU_GPIOA//DB4
#define PORT_LCD_DB4 GPIOA
#define GPIO_LCD_DB4 GPIO_PIN_4
#define RCU_LCD_DB5 RCU_GPIOA//DB5
#define PORT_LCD_DB5 GPIOA
#define GPIO_LCD_DB5 GPIO_PIN_5
#define RCU_LCD_DB6 RCU_GPIOA//DB6
#define PORT_LCD_DB6 GPIOA
#define GPIO_LCD_DB6 GPIO_PIN_6
#define RCU_LCD_DB7 RCU_GPIOA//DB7
#define PORT_LCD_DB7 GPIOA
#define GPIO_LCD_DB7 GPIO_PIN_7
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
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
将 1602.c 修改为如下代码。
c
/******************************************************************************
* 测试硬件:立创开发板·GD32E230C8T6 使用主频72Mhz 晶振8Mhz
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2023年11月02日
* 功能介绍:
*****************************************************************************
* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 其余模块移植手册:【立创·GD32E230C8T6开发板】模块移植手册
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#include "1602.h"
void send_data(unsigned char dat)
{
gpio_bit_write(PORT_LCD_DB7, GPIO_LCD_DB7,(dat>>7)&0x01 );
gpio_bit_write(PORT_LCD_DB6, GPIO_LCD_DB6,(dat>>6)&0x01 );
gpio_bit_write(PORT_LCD_DB5, GPIO_LCD_DB5,(dat>>5)&0x01 );
gpio_bit_write(PORT_LCD_DB4, GPIO_LCD_DB4,(dat>>4)&0x01 );
gpio_bit_write(PORT_LCD_DB3, GPIO_LCD_DB3,(dat>>3)&0x01 );
gpio_bit_write(PORT_LCD_DB2, GPIO_LCD_DB2,(dat>>2)&0x01 );
gpio_bit_write(PORT_LCD_DB1, GPIO_LCD_DB1,(dat>>1)&0x01 );
gpio_bit_write(PORT_LCD_DB0, GPIO_LCD_DB0,(dat>>0)&0x01 );
}
/******************************************************************
* 函 数 名 称:WriteDataLCD
* 函 数 说 明:向1602写数据
* 函 数 形 参:WDLCD=写的数据
* 函 数 返 回:无
* 作 者:LC
* 备 注:放弃忙检测
******************************************************************/
void WriteDataLCD(unsigned char WDLCD)
{
//ReadBusy();
LCD_RS(1);
//delay_ms(2);
LCD_RW(0);
//delay_ms(2);
LCD_E(0); //若晶振速度太高可以在这后加小的延时
//delay_ms(2);
LCD_Data(WDLCD);
// delay_1ms(3);
LCD_E(1);
delay_1ms(2);
LCD_E(0);
}
/******************************************************************
* 函 数 名 称:WriteCommandLCD
* 函 数 说 明:向1602写指令
* 函 数 形 参:WCLCD=写的指令 BuysC=未使用
* 函 数 返 回:无
* 作 者:LC
* 备 注:放弃忙检测
******************************************************************/
void WriteCommandLCD(unsigned char WCLCD) //BuysC为0时忽略忙检测
{
//ReadBusy();
LCD_RS(0);
// delay_ms(2);
LCD_RW(0);
// delay_ms(2);
LCD_E(0);
// delay_ms(2);
LCD_Data(WCLCD);
// delay_1ms(3);
LCD_E(1);
delay_1ms(2);
LCD_E(0);
}
/******************************************************************
* 函 数 名 称:LCDInit
* 函 数 说 明:LCD1602初始化
* 函 数 形 参:无
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void LCDInit(void) //LCD初始化
{
/* 开启引脚时钟 */
// rcu_periph_clock_enable(RCU_LCD_RS);
// rcu_periph_clock_enable(RCU_LCD_RW);
// rcu_periph_clock_enable(RCU_LCD_E);
// rcu_periph_clock_enable(RCU_LCD_DB0);
// rcu_periph_clock_enable(RCU_LCD_DB1);
// rcu_periph_clock_enable(RCU_LCD_DB2);
// rcu_periph_clock_enable(RCU_LCD_DB3);
// rcu_periph_clock_enable(RCU_LCD_DB4);
// rcu_periph_clock_enable(RCU_LCD_DB5);
// rcu_periph_clock_enable(RCU_LCD_DB6);
// rcu_periph_clock_enable(RCU_LCD_DB7);
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOA);
/* RS配置为上拉推挽输出50MHZ模式 */
gpio_mode_set(PORT_LCD_RS,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_RS);
gpio_output_options_set(PORT_LCD_RS,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_RS);
gpio_mode_set(PORT_LCD_RW,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_RW);
gpio_output_options_set(PORT_LCD_RW,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_RW);
gpio_mode_set(PORT_LCD_E,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_E);
gpio_output_options_set(PORT_LCD_E,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_E);
gpio_mode_set(PORT_LCD_DB0,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB0);
gpio_output_options_set(PORT_LCD_DB0,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB0);
gpio_mode_set(PORT_LCD_DB1,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB1);
gpio_output_options_set(PORT_LCD_DB1,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB1);
gpio_mode_set(PORT_LCD_DB2,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB2);
gpio_output_options_set(PORT_LCD_DB2,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB2);
gpio_mode_set(PORT_LCD_DB3,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB3);
gpio_output_options_set(PORT_LCD_DB3,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB3);
gpio_mode_set(PORT_LCD_DB4,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB4);
gpio_output_options_set(PORT_LCD_DB4,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB4);
gpio_mode_set(PORT_LCD_DB5,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB5);
gpio_output_options_set(PORT_LCD_DB5,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB5);
gpio_mode_set(PORT_LCD_DB6,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB6);
gpio_output_options_set(PORT_LCD_DB6,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB6);
gpio_mode_set(PORT_LCD_DB7,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_LCD_DB7);
gpio_output_options_set(PORT_LCD_DB7,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_LCD_DB7);
LCD_Data(0);
WriteCommandLCD(0x38); //三次显示模式设置,不检测忙信号
delay_1ms(5);
WriteCommandLCD(0x38);
delay_1ms(5);
WriteCommandLCD(0x38);
delay_1ms(5);
WriteCommandLCD(0x38); //显示模式设置,开始要求每次检测忙信号
delay_1ms(5);
WriteCommandLCD(0x08); //关闭显示
delay_1ms(5);
WriteCommandLCD(0x01); //显示清屏
delay_1ms(5);
WriteCommandLCD(0x06); // 显示光标移动设置
delay_1ms(5);
WriteCommandLCD(0x0C); // 显示开及光标设置
}
/******************************************************************
* 函 数 名 称:DisplayOneChar
* 函 数 说 明:按指定位置显示一个字符
* 函 数 形 参:X=x轴坐标 Y=Y轴坐标 DData=显示的ASCII字符
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
X |= 0x80; // 算出指令码
WriteCommandLCD(X); //这里不检测忙信号,发送地址码
WriteDataLCD(DData);
}
/******************************************************************
* 函 数 名 称:DisplayListChar
* 函 数 说 明:按指定位置显示一串字符
* 函 数 形 参:X=x轴坐标 Y=Y轴坐标 DData=显示的ASCII字符串
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char* DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[]>=0x20) //若到达字串尾则退出
{
if (X <= 0xF) //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[]); //显示单个字符
ListLength++;
X++;
}
}
}
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
将1602.h修改如下。
c
/******************************************************************************
* 测试硬件:立创开发板·GD32E230C8T6 使用主频72Mhz 晶振8Mhz
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2023年11月02日
* 功能介绍:
*****************************************************************************
* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 其余模块移植手册:【立创·GD32E230C8T6开发板】模块移植手册
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#ifndef __1602_H__
#define __1602_H__
#include "gd32e23x.h"
#include "systick.h"
#ifndef u8
#define u8 uint8_t
#endif
#ifndef u16
#define u16 uint16_t
#endif
#ifndef u32
#define u32 uint32_t
#endif
#define RCU_LCD_RS RCU_GPIOC//RS
#define PORT_LCD_RS GPIOC
#define GPIO_LCD_RS GPIO_PIN_13
#define RCU_LCD_RW RCU_GPIOC//RW
#define PORT_LCD_RW GPIOC
#define GPIO_LCD_RW GPIO_PIN_14
#define RCU_LCD_E RCU_GPIOC//E
#define PORT_LCD_E GPIOC
#define GPIO_LCD_E GPIO_PIN_15
#define RCU_LCD_DB0 RCU_GPIOA//DB0
#define PORT_LCD_DB0 GPIOA
#define GPIO_LCD_DB0 GPIO_PIN_0
#define RCU_LCD_DB1 RCU_GPIOA//DB1
#define PORT_LCD_DB1 GPIOA
#define GPIO_LCD_DB1 GPIO_PIN_1
#define RCU_LCD_DB2 RCU_GPIOA//DB2
#define PORT_LCD_DB2 GPIOA
#define GPIO_LCD_DB2 GPIO_PIN_2
#define RCU_LCD_DB3 RCU_GPIOA//DB3
#define PORT_LCD_DB3 GPIOA
#define GPIO_LCD_DB3 GPIO_PIN_3
#define RCU_LCD_DB4 RCU_GPIOA//DB4
#define PORT_LCD_DB4 GPIOA
#define GPIO_LCD_DB4 GPIO_PIN_4
#define RCU_LCD_DB5 RCU_GPIOA//DB5
#define PORT_LCD_DB5 GPIOA
#define GPIO_LCD_DB5 GPIO_PIN_5
#define RCU_LCD_DB6 RCU_GPIOA//DB6
#define PORT_LCD_DB6 GPIOA
#define GPIO_LCD_DB6 GPIO_PIN_6
#define RCU_LCD_DB7 RCU_GPIOA//DB7
#define PORT_LCD_DB7 GPIOA
#define GPIO_LCD_DB7 GPIO_PIN_7
// x ? 置1 : 置0
#define PIN_HIGH_OR_LOW(port,gpio,x) {((x) ? (GPIO_OCTL(port)|=(uint32_t)(gpio)) : (GPIO_OCTL(port)&=~(uint32_t)(gpio)));}
// 先清除该位,空出位置 根据x判断是设置位还是清除位
#define BIT_DB7(x) { GPIO_OCTL(PORT_LCD_DB7) &= ((uint32_t)~(GPIO_LCD_DB7)); PIN_HIGH_OR_LOW( PORT_LCD_DB7, GPIO_LCD_DB7, x) }
#define BIT_DB6(x) { GPIO_OCTL(PORT_LCD_DB6) &= ((uint32_t)~(GPIO_LCD_DB6)); PIN_HIGH_OR_LOW( PORT_LCD_DB6, GPIO_LCD_DB6, x) }
#define BIT_DB5(x) { GPIO_OCTL(PORT_LCD_DB5) &= ((uint32_t)~(GPIO_LCD_DB5)); PIN_HIGH_OR_LOW( PORT_LCD_DB5, GPIO_LCD_DB5, x) }
#define BIT_DB4(x) { GPIO_OCTL(PORT_LCD_DB4) &= ((uint32_t)~(GPIO_LCD_DB4)); PIN_HIGH_OR_LOW( PORT_LCD_DB4, GPIO_LCD_DB4, x) }
#define BIT_DB3(x) { GPIO_OCTL(PORT_LCD_DB3) &= ((uint32_t)~(GPIO_LCD_DB3)); PIN_HIGH_OR_LOW( PORT_LCD_DB3, GPIO_LCD_DB3, x) }
#define BIT_DB2(x) { GPIO_OCTL(PORT_LCD_DB2) &= ((uint32_t)~(GPIO_LCD_DB2)); PIN_HIGH_OR_LOW( PORT_LCD_DB2, GPIO_LCD_DB2, x) }
#define BIT_DB1(x) { GPIO_OCTL(PORT_LCD_DB1) &= ((uint32_t)~(GPIO_LCD_DB1)); PIN_HIGH_OR_LOW( PORT_LCD_DB1, GPIO_LCD_DB1, x) }
#define BIT_DB0(x) { GPIO_OCTL(PORT_LCD_DB0) &= ((uint32_t)~(GPIO_LCD_DB0)); PIN_HIGH_OR_LOW( PORT_LCD_DB0, GPIO_LCD_DB0, x) }
#define LCD_RS(x) gpio_bit_write(PORT_LCD_RS, GPIO_LCD_RS, x)//定义引脚
#define LCD_RW(x) gpio_bit_write(PORT_LCD_RW, GPIO_LCD_RW, x)
#define LCD_E(x) gpio_bit_write(PORT_LCD_E, GPIO_LCD_E, x)
//#define LCD_Data(x) {}
#define Busy 0x80 //用于检测LCD状态字中的Busy标识
#define LCD_Data(dat){\
BIT_DB7( (dat>>7)&0x01 );\
BIT_DB6( (dat>>6)&0x01 );\
BIT_DB5( (dat>>5)&0x01 );\
BIT_DB4( (dat>>4)&0x01 );\
BIT_DB3( (dat>>3)&0x01 );\
BIT_DB2( (dat>>2)&0x01 );\
BIT_DB1( (dat>>1)&0x01 ); \
BIT_DB0( (dat>>0)&0x01 ); \
}
void WriteDataLCD(unsigned char WDLCD);
void WriteCommandLCD(unsigned char WCLCD);
void LCDInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData);
#endif
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
到这里就移植完成了。
移植验证
在main.c中输入代码如下
c
/******************************************************************************
* 测试硬件:立创开发板·GD32E230C8T6 使用主频72Mhz 晶振8Mhz
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2023年11月02日
* 功能介绍:
*****************************************************************************
* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 其余模块移植手册:【立创·GD32E230C8T6开发板】模块移植手册
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#include "gd32e23x.h"
#include "systick.h"
#include "stdio.h"
#include "1602.h"
int main(void)
{
systick_config(); //滴答定时器初始化 1ms
delay_1ms(500); //启动等待,等LCD讲入工作状态
LCDInit(); //LCM初始化
delay_1ms(5); //延时片刻(可不要)
while(1)
{
DisplayListChar(0, 0, "www.lckfb.com");
DisplayListChar(0, 5, "LCKFB");
delay_1ms(500);
}
}
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
上电效果