-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlcd1602.c
More file actions
122 lines (111 loc) · 4.37 KB
/
lcd1602.c
File metadata and controls
122 lines (111 loc) · 4.37 KB
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
#include "lcd1602.h"
/******************************************************************************/
/* 函数名称 : delay */
/* 函数描述 : 延时函数 */
/* 输入参数 : x */
/* 参数描述 : 延时时间 */
/* 返回值 : 无 */
/******************************************************************************/
void delay(uint x)
{
uint a,b;
for(a = x;a > 0;a--)
{
for(b = 10;b > 0;b--)
{
;
}
}
}
/******************************************************************************/
/* 函数名称 : write_com */
/* 函数描述 : 1602写命令函数 */
/* 输入参数 : com */
/* 参数描述 : 控制命令 */
/* 返回值 : 无 */
/******************************************************************************/
void write_com(uchar com)
{
P2 = com;
rs = 0;
lcden = 0;
delay(10);
lcden = 1;
delay(10);
lcden = 0;
}
/******************************************************************************/
/* 函数名称 : write_date */
/* 函数描述 : 1602写数据函数 */
/* 输入参数 : date */
/* 参数描述 : 要写入的数据 */
/* 返回值 : 无 */
/******************************************************************************/
void write_date(uchar date)
{
P2 = date;
rs = 1;
lcden = 0;
delay(10);
lcden = 1;
delay(10);
lcden = 0;
}
/******************************************************************************/
/* 函数名称 : initLCD */
/* 函数描述 : 1602初始化函数 */
/* 输入参数 : 无 */
/* 参数描述 : 无 */
/* 返回值 : 无 */
/******************************************************************************/
void initLCD(void)
{
write_com(0x38);
delay(20);
write_com(0x0f);
delay(20);
write_com(0x06);
delay(20);
write_com(0x01);
delay(20);
}
/******************************************************************************/
/* 函数名称 : display */
/* 函数描述 : 显示数字 */
/* 输入参数 : number,address */
/* 参数描述 : number写入的数据,address地址 */
/* 返回值 : 无 */
/******************************************************************************/
void display(int number,uchar address)
{
uchar b,c,d,e;
b= (number / 1000);
c= (number / 100) % 10;
d = (number / 10) % 10;
e = number % 10;
write_com(0x80 + address);
write_date(b + 48);
write_date(c + 48);
write_date(d + 48);
write_date(46); //小数点的ASCII
write_date(e + 48);
write_date(99); //"c"的ASCII
write_date(109); //"m"的ASCII
}
/******************************************************************************/
/* 函数名称 : display_char */
/* 函数描述 : 显示字符串函数 */
/* 输入参数 : point,address */
/* 参数描述 : 写入的字符串的地址指针 1602显示对应的地址 */
/* 返回值 : 无 */
/******************************************************************************/
void display_char(uchar *point,uchar address)
{
uchar i;
write_com(0x80 + address);
for(i = 0;i < 16; i++)
{
write_date(*point);
point++;
}
}