📄 lcd12864.lst
字号:
230 1 RW = 0;
231 1 DataLine = dat; // 写入数据
232 1 E = 1; // E下降沿锁定
233 1 _nop_();
234 1 E = 0;
235 1 }
236
237 /*********************************************************************************************************
-***
238 ** Function name: write_data( )
239 ** Descriptions: 指定位置显示数据
240 ** Input: X_pos: X 地址; Y_pos: Y地址; lcddata: 显示数据
241 ** Output: 无
242 ** Created by: 王 斌
243 ** Created Date: 2008-11-20
244 **--------------------------------------------------------------------------------------------------------
---
245 ** Modified by:
246 ** Modified Date:
247 **--------------------------------------------------------------------------------------------------------
---
248 **********************************************************************************************************
-**/
249 void write_data(unsigned char X_pos,unsigned char Y_pos,unsigned char lcddata)
250 {
251 1 if(X_pos<128) // X_pos 过滤
252 1 {
253 2 if( ( X_pos & 0x40 ) == 0 ) // X_pos < 64,左半屏显示
254 2 {
255 3 write_cmd_L( 0xb8 | Y_pos );
256 3 write_cmd_L( 0x40 | X_pos);
257 3 write_dat_L( lcddata );
258 3 }
259 2 else // X_pos > 64,右半屏显示
260 2 {
261 3 write_cmd_R( 0xb8 | Y_pos );
262 3 write_cmd_R( 0x40 | X_pos );
263 3 write_dat_R( lcddata );
264 3 }
265 2 }
266 1 }
267
268 /*********************************************************************************************************
-***
269 ** Function name: lcd_disp_char8x8( )
270 ** Descriptions: 指定位置显示8x8英文字母
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 6
271 ** Input: x: X 列地址; y: Y 行地址; ch: 显示数据
272 ** Output: 无
273 ** Created by: 王 斌
274 ** Created Date: 2008-11-20
275 **--------------------------------------------------------------------------------------------------------
---
276 ** Modified by:
277 ** Modified Date:
278 **--------------------------------------------------------------------------------------------------------
---
279 **********************************************************************************************************
-**/
280 void lcd_disp_char8x8( unsigned char x, unsigned char y, unsigned char ch )
281 {
282 1 unsigned char i;
283 1 for( i = 0; i < 8; i ++ )
284 1 {
285 2 write_data( x+i, y, zifu[(ch - 0x20)*8 + i] );
286 2 // write_data( x+i, y + 1,zifu[(ch - 0x20)*8 + 8 + i] );
287 2 }
288 1 }
289
290 /*********************************************************************************************************
-***
291 ** Function name: hz_disp( )
292 ** Descriptions: 指定位置显示16x16汉字
293 ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
294 ** Output: 无
295 ** Created by: 王 斌
296 ** Created Date: 2008-11-20
297 **--------------------------------------------------------------------------------------------------------
---
298 ** Modified by:
299 ** Modified Date:
300 **--------------------------------------------------------------------------------------------------------
---
301 **********************************************************************************************************
-**/
302 void hz_disp16x16( unsigned char x, unsigned char y, unsigned char *hz )
303 {
304 1 unsigned char i;
305 1 for( i = 0; i < 16; i++ )
306 1 {
307 2 write_data( x + i, y, hz[ i] );
308 2 write_data( x + i, y + 1, hz[ 16 + i] );
309 2 }
310 1 }
311
312 /*********************************************************************************************************
-***
313 ** Function name: hz_disp( )
314 ** Descriptions: 指定位置显示12x12汉字
315 ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
316 ** Output: 无
317 ** Created by: 王 斌
318 ** Created Date: 2008-11-20
319 **--------------------------------------------------------------------------------------------------------
---
320 ** Modified by:
321 ** Modified Date:
322 **--------------------------------------------------------------------------------------------------------
---
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 7
323 **********************************************************************************************************
-**/
324 void hz_disp12x12( unsigned char x, unsigned char y, unsigned char *hz )
325 {
326 1 unsigned char i;
327 1 for( i = 0; i < 12; i++ )
328 1 {
329 2 write_data( x + i, y, hz[ i] );
330 2 write_data( x + i, y + 1, hz[ 12 + i] );
331 2 }
332 1 }
333
334 /*********************************************************************************************************
-***
335 ** Function name: hz_disp( )
336 ** Descriptions: 指定位置显示32x32汉字
337 ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
338 ** Output: 无
339 ** Created by: 王 斌
340 ** Created Date: 2008-11-20
341 **--------------------------------------------------------------------------------------------------------
---
342 ** Modified by:
343 ** Modified Date:
344 **--------------------------------------------------------------------------------------------------------
---
345 **********************************************************************************************************
-**/
346 void hz_disp32x32( unsigned char x, unsigned char y, unsigned char *hz )
347 {
348 1 unsigned char i;
349 1 for( i = 0; i < 30; i++ )
350 1 {
351 2 write_data( x + i, y, hz[ i] );
352 2 write_data( x + i, y + 1, hz[ 28 + i] );
353 2 write_data( x + i, y+2, hz[57+i] );
354 2 write_data( x + i, y +3, hz[86 + i] );
355 2 }
356 1 }
357 /*********************************************************************************************************
-***
358 ** Function name: hz_disp( )
359 ** Descriptions: 指定位置显示128x32汉字
360 ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
361 ** Output: 无
362 ** Created by: 王 斌
363 ** Created Date: 2008-11-20
364 **--------------------------------------------------------------------------------------------------------
---
365 ** Modified by:
366 ** Modified Date:
367 **--------------------------------------------------------------------------------------------------------
---
368 **********************************************************************************************************
-**/
369 void hz_disp128x32( unsigned char x, unsigned char y, unsigned char *hz )
370 {
371 1 unsigned char i;
372 1 for( i = 0; i < 128; i++ )
373 1 {
374 2 write_data( x + i, y, hz[ i] );
375 2 write_data( x + i, y + 1, hz[ 128 + i] );
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 8
376 2 write_data( x + i, y + 2, hz[ 256 + i] );
377 2 write_data( x + i, y + 3, hz[ 384 + i] );
378 2 }
379 1 }
380
381 /*********************************************************************************************************
-***
382 ** Function name: hz_disp( )
383 ** Descriptions: 指定位置显示12x120汉字
384 ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
385 ** Output: 无
386 ** Created by: 王 斌
387 ** Created Date: 2008-11-20
388 **--------------------------------------------------------------------------------------------------------
---
389 ** Modified by:
390 ** Modified Date:
391 **--------------------------------------------------------------------------------------------------------
---
392 **********************************************************************************************************
-**/
393 void hz_disp12x120( unsigned char x, unsigned char y, unsigned char *hz )
394 {
395 1 unsigned char i;
396 1 for( i = 0; i < 12; i++ )
397 1 {
398 2 write_data( x + i, y, ~hz[ i] );
399 2 write_data( x + i, y + 1, ~hz[ 12 + i] );
400 2 }
401 1 }
402
403
404 //画点 x = 0 -- 128 y = 0 -- 64
405 void set_point( unsigned char x, unsigned char y )
406 {
407 1 unsigned char d = 0;
408 1 unsigned char temp =0;
409 1 unsigned char page1 = 0;
410 1 temp = y % 8;
411 1 if( x < 64 )
412 1 {
413 2 write_cmd_L( 0xB8 + (y/8) );
414 2 write_cmd_L( 0x40 + x );
415 2 d = Rddata();
416 2 write_cmd_L( 0xB8 + (y/8) );
417 2 write_cmd_L( 0x40 + x );
418 2 d = Rddata();
419 2 write_cmd_L( 0xB8 + (y/8) );
420 2 write_cmd_L( 0x40 + x );
421 2 page1 = d | (1<<temp);
422 2 write_dat_L( page1 );
423 2 }
424 1 else if( x <128 )
425 1 {
426 2
427 2 write_cmd_R( 0xB8 + (y/8) );
428 2 write_cmd_R( 0x40 + x -64 );
429 2 d = Rddata();
430 2 write_cmd_R( 0xB8 + (y/8) );
431 2 write_cmd_R( 0x40 + x -64 );
432 2 d = Rddata();
433 2 write_cmd_R( 0xB8 + (y/8) );
C51 COMPILER V8.08 LCD12864 12/05/2008 17:36:36 PAGE 9
434 2 write_cmd_R( 0x40 + x - 64 );
435 2 page1 = d |(1<<temp);
436 2 write_dat_R( page1 );
437 2 }
438 1 else;
439 1
440 1 }
441 unsigned char Rddata( void ) // 读出液晶数据
442 {
443 1 unsigned char dd = 0;
444 1 DataLine = 0xff;
445 1 DI = 1;
446 1 RW = 1;
447 1 E = 1;
448 1 _nop_();
449 1 dd = DataLine;
450 1 E = 0;
451 1 return dd;
452 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1111 ----
CONSTANT SIZE = 768 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 43
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 + -