📄 lcd12864.lst
字号:
C51 COMPILER V6.12 LCD12864 03/24/2006 19:43:11 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN .\lcd12864.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE .\lcd12864.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include "LCD12864.h"
3 #include "zifu8_8.h"
4 #include <intrins.h>
5
6
7 /*********初始化************/
8 void lcd_init( void )
9 {
10 1 write_cmd_L( 0x3e ); //关显示
11 1 write_cmd_R( 0x3e );
12 1 write_cmd_L( 0xc0 ); //起始行
13 1 write_cmd_R( 0xc0 );
14 1 write_cmd_L( 0x3f ); //开显示
15 1 write_cmd_R( 0x3f );
16 1 lcd_clr( ); //清屏
17 1
18 1 }
19
20 /************清屏***********/
21 void lcd_clr( void )
22 {
23 1 unsigned char i,j,page;
24 1 for( i = 0; i < 8; i++ )
25 1 {
26 2 page = i;
27 2 page |= 0xb8;
28 2 write_cmd_L( page );
29 2 write_cmd_L( 0x40 );
30 2 for( j = 0; j < 64; j++ )
31 2 write_dat_L( 0 );
32 2 write_cmd_R( page );
33 2 write_cmd_R( 0x40 );
34 2 for( j = 0; j < 64; j++ )
35 2 write_dat_R( 0 );
36 2 }
37 1 }
38 /*------------------显示12864图片---------------------------*/
39 void Disp_Img(unsigned char code *img)
40 {
41 1 unsigned char j,k,page = 0;
42 1 for( k = 0; k < 8; k++ )
43 1 {
44 2 page = k;
45 2 page |= 0xb8;
46 2 write_cmd_L( page );
47 2 write_cmd_L( 0x40 );
48 2 for( j = 0; j < 64; j++ )
49 2 write_dat_L(img[k*128+j]);
50 2 write_cmd_R( page );
51 2 write_cmd_R( 0x40 );
52 2 for(j=64;j<128;j++)
53 2 write_dat_R(img[k*128+j]);
54 2 }
55 1 }
C51 COMPILER V6.12 LCD12864 03/24/2006 19:43:11 PAGE 2
56
57 /***********-写左命令************/
58 void write_cmd_L( unsigned char cmd )
59 {
60 1 CSB = 1;
61 1 CSA = 0;
62 1 DI = 0;
63 1 RW = 1;
64 1 do
65 1 {
66 2 DataLine = 0xff;
67 2 E = 1;
68 2 _nop_();
69 2 }while( BUSY );
70 1 E = 0;
71 1 RW = 0;
72 1 DataLine = cmd;
73 1 E = 1;
74 1 _nop_();
75 1 E = 0;
76 1 }
77 /***********-写右命令**********-*/
78 void write_cmd_R( unsigned char cmd )
79 {
80 1 CSB = 0;
81 1 CSA = 1;
82 1 DI = 0;
83 1 RW = 1;
84 1 do
85 1 {
86 2 DataLine = 0xff;
87 2 E = 1;
88 2 _nop_();
89 2
90 2 }while( BUSY );
91 1 E = 0;
92 1 RW = 0;
93 1 DataLine = cmd;
94 1 E = 1;
95 1 _nop_();
96 1 E = 0;
97 1 }
98 /***********写左数据***********/
99 void write_dat_L( unsigned char dat )
100 {
101 1 CSB = 1;
102 1 CSA = 0;
103 1 DI = 0;
104 1 RW = 1;
105 1 do
106 1 {
107 2 DataLine = 0xff;
108 2 E = 1;
109 2 _nop_();
110 2 }while( BUSY );
111 1 E = 0;
112 1 DI = 1;
113 1 RW = 0;
114 1 DataLine = dat;
115 1 E = 1;
116 1 _nop_();
117 1 E = 0;
C51 COMPILER V6.12 LCD12864 03/24/2006 19:43:11 PAGE 3
118 1 }
119
120 /***********写右数据***********/
121 void write_dat_R( unsigned char dat )
122 {
123 1 CSB = 0;
124 1 CSA = 1;
125 1 DI = 0;
126 1 RW = 1;
127 1 do
128 1 {
129 2 DataLine = 0xff;
130 2 E = 1;
131 2 _nop_();
132 2 }while( BUSY );
133 1 E = 0;
134 1 DI = 1;
135 1 RW = 0;
136 1 DataLine = dat;
137 1 E = 1;
138 1 _nop_();
139 1 E = 0;
140 1 }
141 void write_data(unsigned char xpos,unsigned char ypos,unsigned char lcddata)
142 { if(xpos<128)
143 1 {
144 2 if( ( xpos & 0x40 )== 0 )
145 2 {
146 3 write_cmd_L( 0xb8 | ypos );
147 3 write_cmd_L( 0x40 | xpos);
148 3 write_dat_L( lcddata );
149 3 }
150 2 else
151 2 {
152 3 write_cmd_R( 0xb8 | ypos );
153 3 write_cmd_R( 0x40 | xpos );
154 3 write_dat_R( lcddata );
155 3 }
156 2 }
157 1 }
158
159 /************显示一个字符************/
160 void lcd_putchar8x8( unsigned char x,unsigned char y,unsigned char ch )
161 {
162 1 unsigned char i;
163 1 for( i = 0; i < 8; i ++ )
164 1 {
165 2 write_data( x+i, y, zifu[(ch - 0x20)*8 + i] );
166 2 // write_data( x+i, y + 1,zifu[(ch - 0x20)*8 + 8 + i] );
167 2 }
168 1 }
169
170 /************** 显示汉字*****************/
171 // x 显示列 y 显示行
172 void hz_disp( unsigned char x, unsigned char y, unsigned char *hz )
173 {
174 1 unsigned char i;
175 1 for( i = 0; i < 16; i++ )
176 1 {
177 2 write_data( x + i, y, hz[ i] );
178 2 write_data( x + i, y + 1, hz[ 16 + i] );
179 2 }
C51 COMPILER V6.12 LCD12864 03/24/2006 19:43:11 PAGE 4
180 1 }
181 void hz_disp32x32( unsigned char x, unsigned char y, unsigned char *hz )
182 {
183 1 unsigned char i;
184 1 for( i = 0; i < 30; i++ )
185 1 {
186 2 write_data( x + i, y, hz[ i] );
187 2 write_data( x + i, y + 1, hz[ 28 + i] );
188 2 write_data( x + i, y+2, hz[57+i] );
189 2 write_data( x + i, y +3, hz[86 + i] );
190 2 }
191 1 }
192
193 void hz_disp128x32( unsigned char x, unsigned char y, unsigned char *hz )
194 {
195 1 unsigned char i;
196 1 for( i = 0; i < 128; i++ )
197 1 {
198 2 write_data( x + i, y, hz[ i] );
199 2 write_data( x + i, y + 1, hz[ 128 + i] );
200 2 write_data( x + i, y + 2, hz[ 256 + i] );
201 2 write_data( x + i, y + 3, hz[ 384 + i] );
202 2 }
203 1 }
204
205 void hz_disp12x12( unsigned char x, unsigned char y, unsigned char *hz )
206 {
207 1 unsigned char i;
208 1 for( i = 0; i < 12; i++ )
209 1 {
210 2 write_data( x + i, y, hz[ i] );
211 2 write_data( x + i, y + 1, hz[ 12 + i] );
212 2 }
213 1 }
214 void hz_disp12x120( unsigned char x, unsigned char y, unsigned char *hz )
215 {
216 1 unsigned char i;
217 1 for( i = 0; i < 12; i++ )
218 1 {
219 2 write_data( x + i, y, ~hz[ i] );
220 2 write_data( x + i, y + 1, ~hz[ 12 + i] );
221 2 }
222 1 }
223
224
225 //画点 x = 0 -- 128 y = 0 -- 64
226 void set_point( unsigned char x, unsigned char y )
227 {
228 1 unsigned char d = 0;
229 1 unsigned char temp =0;
230 1 unsigned char page1 = 0;
231 1 temp = y % 8;
232 1 if( x < 64 )
233 1 {
234 2 write_cmd_L( 0xB8 + (y/8) );
235 2 write_cmd_L( 0x40 + x );
236 2 d = Rddata();
237 2 write_cmd_L( 0xB8 + (y/8) );
238 2 write_cmd_L( 0x40 + x );
239 2 d = Rddata();
240 2 write_cmd_L( 0xB8 + (y/8) );
241 2 write_cmd_L( 0x40 + x );
C51 COMPILER V6.12 LCD12864 03/24/2006 19:43:11 PAGE 5
242 2 page1 = d | (1<<temp);
243 2 write_dat_L( page1 );
244 2 }
245 1 else if( x <128 )
246 1 {
247 2
248 2 write_cmd_R( 0xB8 + (y/8) );
249 2 write_cmd_R( 0x40 + x -64 );
250 2 d = Rddata();
251 2 write_cmd_R( 0xB8 + (y/8) );
252 2 write_cmd_R( 0x40 + x -64 );
253 2 d = Rddata();
254 2 write_cmd_R( 0xB8 + (y/8) );
255 2 write_cmd_R( 0x40 + x - 64 );
256 2 page1 = d |(1<<temp);
257 2 write_dat_R( page1 );
258 2 }
259 1 else;
260 1
261 1 }
262 unsigned char Rddata( void )
263 {
264 1 unsigned char dd = 0;
265 1 DataLine = 0xff;
266 1 DI = 1;
267 1 RW = 1;
268 1 E = 1;
269 1 _nop_();
270 1 dd = DataLine;
271 1 E = 0;
272 1 return dd;
273 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1106 ----
CONSTANT SIZE = 768 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 45
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -