📄 lcd12864.lst
字号:
C51 COMPILER V7.50 LCD12864 08/08/2008 00:58:17 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE LCD12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************************************************
2 * 文件名: LCD12864.c *
3 * Copyright (c) 2008 *********武汉理工大学信息工程学院电信系 *
4 * 创建人: 王康 *
5 * 日 期: 2008.8.6实现了液晶屏上任意显示汉字的功能 *
6 * 修改人: 王康 *
7 * 日 期: 2008.8.7完成了工程功能的扩充,即在液晶屏的任意位置打点,可以用来波形显示 *
8 * 描 述: 本文件包含了液晶模块的基本函数和显示汉字的所有操作子函数,可共其他的模块进行调用 *
9 * 接口定义: 用的是熊涛那块12864接口板,接口按板上定义 *
10 * P1口接DB7 -- DB0 *
11 * DI -- P3.7, 数据/指令 选择 *
12 * RW -- P3.6, 读/写选择 *
13 * E -- P3.5, 使能信号 *
14 * CS2 -- P3.4, 片选1, 右半片 *
15 * CS1 -- P3.3, 片选2, 左半片 *
16 * RST -- P3.2, 复位 *
17 * 版 本: KEIL uV2 *
18 ****************************************************************************************************/
19
20
21 //头文件
22 #include "config.h"
23 #include "ziku.h"
24
25
26 //定义结构体数组
27 struct Word_Buffer
28 {
29 uchar word[2];
30 };
31 struct Word_Buffer word_buf[32]; //定义结构体数组来存储待显示的汉字,共32个
32
33
34 /*****************************************************************************************************
35 * 函 数 名: Initiate
36 * 功能描述: 本函数为初始化子函数
37 * 全局变量: 无
38 * 入口参数: 无
39 * 出口参数: 无
40 * 调用模块: 无
41 * 作 者: 王康
42 * 日 期: 2008.8.6
43 * 修 改 人: 王康
44 * 日 期:
45 * 版 本: KEIL uV2
46 ******************************************************************************************************/
47 void Initiate(void)
48 {
49 1 WriteCmd(0x3e); //关显示
50 1 WriteCmd(0x3f); //开显示
51 1 }
52
53
54 /*****************************************************************************************************
55 * 函 数 名: CheckBusy
C51 COMPILER V7.50 LCD12864 08/08/2008 00:58:17 PAGE 2
56 * 功能描述: 本函数为判断LCD忙子函数,BUSY=1时,为忙;BUSY=0时,为空闲
57 * 全局变量: 无
58 * 入口参数:
59 * 出口参数: 无
60 * 调用模块: 无
61 * 作 者: 王康
62 * 日 期: 2008.8.6
63 * 修 改 人: 王康
64 * 日 期:
65 * 版 本: KEIL uV2
66 ******************************************************************************************************/
67 void CheckBusy(void)
68 {
69 1 DPORT = 0xff;
70 1 DI = 0;
71 1 RW = 1;
72 1 E = 1;
73 1 while(DPORT & 0x80); //BUSY=1时,为忙,则等待;BUSY=0时,为空闲
74 1 E = 0;
75 1 }
76
77
78 /*****************************************************************************************************
79 * 函 数 名: WriteCmd
80 * 功能描述: 本函数为写指令子函数
81 * 全局变量: 无
82 * 入口参数: cmd -- 要写入的指令
83 * 出口参数: 无
84 * 调用模块: CheckBusy()
85 * 作 者: 王康
86 * 日 期: 2008.8.6
87 * 修 改 人: 王康
88 * 日 期:
89 * 版 本: KEIL uV2
90 ******************************************************************************************************/
91 void WriteCmd(uchar cmd) //写指令子函数
92 {
93 1 CheckBusy();
94 1 DI = 0;
95 1 RW = 0;
96 1 DPORT = cmd;
97 1 E = 1;
98 1 E = 0;
99 1 }
100
101
102 /*****************************************************************************************************
103 * 函 数 名: WriteData
104 * 功能描述: 本函数为写数据子函数
105 * 全局变量: 无
106 * 入口参数: data -- 要写入的数据
107 * opp -- 显示标志位: 为1,显示阳码(点亮为0);为0,显示阴码(点亮为1)
108 * 出口参数: 无
109 * 调用模块: CheckBusy()
110 * 作 者: 王康
111 * 日 期: 2008.8.6
112 * 修 改 人: 王康
113 * 日 期:
114 * 版 本: KEIL uV2
115 ******************************************************************************************************/
116 void WriteData(uchar dat) //写数据子函数
117 {
C51 COMPILER V7.50 LCD12864 08/08/2008 00:58:17 PAGE 3
118 1 CheckBusy();
119 1 DI = 1;
120 1 RW = 0;
121 1 DPORT = dat;
122 1 E = 1;
123 1 E = 0;
124 1 }
125
126
127 /*****************************************************************************************************
128 * 函 数 名: ReadData
129 * 功能描述: 本函数为读数据子函数
130 * 全局变量: 无
131 * 入口参数:
132 * 出口参数: 无
133 * 调用模块: CheckBusy()
134 * 作 者: 王康
135 * 日 期: 2008.8.6
136 * 修 改 人: 王康
137 * 日 期:
138 * 版 本: KEIL uV2
139 ******************************************************************************************************/
140 uchar ReadData(void)
141 {
142 1 uchar rddata;
143 1 CheckBusy();
144 1 DI = 1;
145 1 RW = 1;
146 1 E = 1;
147 1 rddata = DPORT;
148 1 E = 0;
149 1 return rddata;
150 1 }
151
152
153 /*****************************************************************************************************
154 * 函 数 名: SetPos
155 * 功能描述: 本函数为设置显示起始地址(显示行,页地址,Y地址)子函数
156 * 全局变量: 无
157 * 入口参数: st_line -- 液晶显示的起始行,0--63,共64行
158 * xadd -- 液晶显示的页地址,即为DDRAM的行地址,8行为一页,共8页
159 * yadd -- 液晶显示的Y地址,0--128,在对DDRAM进行读/写操作后,Y地址指针自动加1
160 * 出口参数: 无
161 * 调用模块: WriteCmd()
162 * 作 者: 王康
163 * 日 期: 2008.8.6
164 * 修 改 人: 王康
165 * 日 期:
166 * 版 本: KEIL uV2
167 ******************************************************************************************************/
168 void SetPos(uchar st_line, uchar x_add, uchar y_add) //设置显示起始地址子函数
169 {
170 1 st_line &= 0x3f; //st_line(起始行)的取值范围为0--63
171 1 x_add &= 0x07; //x_add(页地址)的取值范围为0--7
172 1 WriteCmd(st_line + 0xc0); //+ 0xc0根据液晶显示模块指令中设置起始行的格式
173 1 WriteCmd(x_add + 0xb8); //+ 0xb1根据液晶显示模块指令中设置页地址的格式
174 1 if(y_add < 64)
175 1 {
176 2 RIGHTSIDE
177 2 WriteCmd(y_add + 0x40); //y_add的取值范围为0-63,y_add<64时,右半屏显示
178 2 }
179 1 else
C51 COMPILER V7.50 LCD12864 08/08/2008 00:58:17 PAGE 4
180 1 {
181 2 LEFTSIDE
182 2 WriteCmd(y_add); //63<y_add<124时,左半屏显示
183 2 }
184 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -