-
Notifications
You must be signed in to change notification settings - Fork 2
/
LCD.c
86 lines (85 loc) · 3.08 KB
/
LCD.c
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
/***************************************************************************************************
工程名称: 1602
功能描述: 1602LCD的功能实现函数
硬件连接: 将1602液晶接口对应插接到P4接口,注意1-16脚不要插反(有些厂家的液晶顺序是反的)。
维护记录: 2011-8-22
***************************************************************************************************/
#include"END.h"
sbit rs=P2^5; //命令/数据选择
sbit rw=P2^4; //读写口
sbit e=P2^3; //锁存控制
sbit BusyFlag=P0^7;//查忙标志位
//**************************************************************************************************
//查忙
//**************************************************************************************************
checkbusy()
{
P0= 0xFF; //单片机I/O口设置为输入
rs = 0; //命令/数据选择,为0时选择命令
rw = 1; //读/写选择,为1时选择读
e = 0;
e = 1; //使能
while (BusyFlag== 1); //查忙标志位,等待标志位为0,即表示写入完毕
e= 0; //关闭读写
}
//**************************************************************************************************
//向LCD写一命令
//**************************************************************************************************
wcode(uchar t)
{
checkbusy(); //查忙
rs=0; // 写的是命令
rw=0; // 写状态
e=1; //使能
P0=t; //写入命令
delay2(20); //等待写入,如果时间太短,会导致液晶无法显示
e=0; //数据的锁定
}
//**************************************************************************************************
//向LCD写一数据
//**************************************************************************************************
wdata(uchar t)
{
checkbusy(); //查忙
rs=1; // 写的是数据
rw=0; // 写状态
e=1; //使能
P0=t; //写入数据
delay2(20); //等待写入,如果时间太短,会导致液晶无法显示
e=0; //数据的锁定
}
//**************************************************************************************************
//LCD显示第一行
//**************************************************************************************************
xian1()
{
uchar i;
wcode(0x80); //设置第一行显示地址
for(i=0;i<16;i++) //循环16次,写完1行
{
wdata(dis1[i]); //写入该行数据
//delay(10000);
}
}
//**************************************************************************************************
//LCD显示第二行
//**************************************************************************************************
xian2()
{
uchar i;
wcode(0xc0); //设置第二行显示地址
for(i=0;i<16;i++) //循环16次,写完1行
{
wdata(dis2[i]); //写入该行数据
}
}
//**************************************************************************************************
//LCD 初始化
//**************************************************************************************************
InitLCD()
{
wcode(0x01); //清屏
wcode(0x06); //输入方式控制,增量光标不移位
wcode(0x0e); //显示开关控制
wcode(0x38); //功能设定:设置16x2显示,5x7显示,8位数据接口 38
}