📄 lcd12864.lst
字号:
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN lcd12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include "LCD12864.h"
3 #include "zifu8_8.h"
4 #include <intrins.h>
5
6
7 /*********************************************************************************************************
-***
8 ** Function name: lcd_init( )
9 ** Descriptions: 液晶初始化
10 ** Input: 无
11 ** Output: 无
12 ** Created by: 王 斌
13 ** Created Date: 2008-11-20
14 **--------------------------------------------------------------------------------------------------------
---
15 ** Modified by:
16 ** Modified Date:
17 **--------------------------------------------------------------------------------------------------------
---
18 **********************************************************************************************************
-**/
19 void lcd_init( void )
20 {
21 1 write_cmd_L( 0x3e ); //关显示
22 1 write_cmd_R( 0x3e );
23 1 write_cmd_L( 0xc0 ); //起始行
24 1 write_cmd_R( 0xc0 );
25 1 write_cmd_L( 0x3f ); //开显示
26 1 write_cmd_R( 0x3f );
27 1 lcd_clr( ); //清屏
28 1
29 1 }
30
31 /*********************************************************************************************************
-***
32 ** Function name: lcd_clr( )
33 ** Descriptions: 液晶清屏
34 ** Input: 无
35 ** Output: 无
36 ** Created by: 王 斌
37 ** Created Date: 2008-11-20
38 **--------------------------------------------------------------------------------------------------------
---
39 ** Modified by:
40 ** Modified Date:
41 **--------------------------------------------------------------------------------------------------------
---
42 **********************************************************************************************************
-**/
43 void lcd_clr( void )
44 {
45 1 unsigned char i = 0;
46 1 unsigned char j = 0;
47 1 unsigned char page = 0;
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 2
48 1 for( i = 0; i < 8; i++ ) // 取8页显示(整个屏)
49 1 {
50 2 page = i;
51 2 page |= 0xb8; // page | 0xb8就是取页地址(X的地址,(0 ~ 8))1 0 1 1 1 A2 A1 A0,
52 2 write_cmd_L( page );
53 2 write_cmd_L( 0x40 ); // 设置Y的地址,从0列开始(0 ~ 63)0 1 A7 A6 A5 A4 A3 A2 A1 A0
54 2 for( j = 0; j < 64; j++ )
55 2 {
56 3 write_dat_L( 0X00 );
57 3 }
58 2 write_cmd_R( page ); // 清完左屏再清右屏
59 2 write_cmd_R( 0x40 );
60 2 for( j = 0; j < 64; j++ )
61 2 {
62 3 write_dat_R( 0X00 );
63 3 }
64 2 }
65 1 }
66
67 /*********************************************************************************************************
-***
68 ** Function name: Disp_Img( )
69 ** Descriptions: 液晶清屏
70 ** Input: *img
71 ** Output: 无
72 ** Created by: 王 斌
73 ** Created Date: 2008-11-20
74 **--------------------------------------------------------------------------------------------------------
---
75 ** Modified by:
76 ** Modified Date:
77 **--------------------------------------------------------------------------------------------------------
---
78 **********************************************************************************************************
-**/
79 void Disp_Img(unsigned char code *img)
80 {
81 1 unsigned char j = 0; // 产生列地址
82 1 unsigned char k = 0; // 产生页地址
83 1 unsigned char page = 0;
84 1
85 1 for( k = 0; k < 8; k++ ) // 整个屏8页的显示
86 1 {
87 2 page = k;
88 2 page |= 0xb8;
89 2 // 先写左半屏数据
90 2 write_cmd_L( page );
91 2 write_cmd_L( 0x40 );
92 2 for( j = 0; j < 64; j++ ) // 左屏64列显示
93 2 {
94 3 write_dat_L(img[k*128+j]);
95 3 }
96 2 // 再写右半屏数据
97 2 write_cmd_R( page );
98 2 write_cmd_R( 0x40 );
99 2 for(j=64; j<128; j++) // 右屏64列显示
100 2 {
101 3 write_dat_R(img[k*128+j]);
102 3 }
103 2 }
104 1 }
105
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 3
106 /*********************************************************************************************************
-***
107 ** Function name: write_cmd_L( )
108 ** Descriptions: 写液晶左半屏命令
109 ** Input: cmd
110 ** Output: 无
111 ** Created by: 王 斌
112 ** Created Date: 2008-11-20
113 **--------------------------------------------------------------------------------------------------------
---
114 ** Modified by:
115 ** Modified Date:
116 **--------------------------------------------------------------------------------------------------------
---
117 **********************************************************************************************************
-**/
118 void write_cmd_L( unsigned char cmd )
119 {
120 1 CSB = 1; // H:选择左半屏
121 1 CSA = 0;
122 1 DI = 0; // D/I: H = Data; L = Cmd
123 1 RW = 1; // R/W: H = Read; L = Write
124 1 do
125 1 {
126 2 DataLine = 0xff;
127 2 E = 1;
128 2 _nop_();
129 2 }while( BUSY );
130 1 E = 0;
131 1 RW = 0;
132 1 DataLine = cmd; // 写入指令数据
133 1 E = 1; // E下降沿锁定
134 1 _nop_();
135 1 E = 0;
136 1 }
137
138 /*********************************************************************************************************
-***
139 ** Function name: write_cmd_R( )
140 ** Descriptions: 写液晶右半屏命令
141 ** Input: cmd
142 ** Output: 无
143 ** Created by: 王 斌
144 ** Created Date: 2008-11-20
145 **--------------------------------------------------------------------------------------------------------
---
146 ** Modified by:
147 ** Modified Date:
148 **--------------------------------------------------------------------------------------------------------
---
149 **********************************************************************************************************
-**/
150 void write_cmd_R( unsigned char cmd )
151 {
152 1 CSB = 0;
153 1 CSA = 1; // H:选择右半屏
154 1 DI = 0; // D/I: H = Data; L = Cmd
155 1 RW = 1; // R/W: H = Read; L = Write
156 1 do
157 1 {
158 2 DataLine = 0xff;
159 2 E = 1;
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 4
160 2 _nop_();
161 2
162 2 }while( BUSY );
163 1 E = 0;
164 1 RW = 0;
165 1 DataLine = cmd; // 写入指令数据
166 1 E = 1; // E下降沿锁定
167 1 _nop_();
168 1 E = 0;
169 1 }
170
171 /*********************************************************************************************************
-***
172 ** Function name: write_dat_L( )
173 ** Descriptions: 写液晶左半屏数据
174 ** Input: dat
175 ** Output: 无
176 ** Created by: 王 斌
177 ** Created Date: 2008-11-20
178 **--------------------------------------------------------------------------------------------------------
---
179 ** Modified by:
180 ** Modified Date:
181 **--------------------------------------------------------------------------------------------------------
---
182 **********************************************************************************************************
-**/
183 void write_dat_L( unsigned char dat )
184 {
185 1 CSB = 1; // H:选择左半屏
186 1 CSA = 0;
187 1 DI = 0; // D/I: H = Data; L = Cmd
188 1 RW = 1; // R/W: H = Read; L = Write
189 1 do
190 1 {
191 2 DataLine = 0xff;
192 2 E = 1;
193 2 _nop_();
194 2 }while( BUSY );
195 1 E = 0;
196 1 DI = 1;
197 1 RW = 0;
198 1 DataLine = dat; // 写入数据
199 1 E = 1; // E下降沿锁定
200 1 _nop_();
201 1 E = 0;
202 1 }
203
204 /*********************************************************************************************************
-***
205 ** Function name: write_dat_R( )
206 ** Descriptions: 写液晶右半屏数据
207 ** Input: dat
208 ** Output: 无
209 ** Created by: 王 斌
210 ** Created Date: 2008-11-20
211 **--------------------------------------------------------------------------------------------------------
---
212 ** Modified by:
213 ** Modified Date:
214 **--------------------------------------------------------------------------------------------------------
---
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 5
215 **********************************************************************************************************
-**/
216 void write_dat_R( unsigned char dat )
217 {
218 1 CSB = 0;
219 1 CSA = 1; // H:选择右半屏
220 1 DI = 0; // D/I: H = Data; L = Cmd
221 1 RW = 1; // R/W: H = Read; L = Write
222 1 do
223 1 {
224 2 DataLine = 0xff;
225 2 E = 1;
226 2 _nop_();
227 2 }while( BUSY );
228 1 E = 0;
229 1 DI = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -