📄 lcd12864.lst
字号:
C51 COMPILER V8.02 LCD12864 01/14/2009 16:05:48 PAGE 1
C51 COMPILER V8.02, 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 "lcd12864.h"
2
3 void loop_lcd_is_busy(unsigned char right)
4 {
5 1 unsigned char tmp,counter=0;
6 1 do {
7 2 if(right) tmp = LCD_RCR;
8 2 else tmp = LCD_LCR;
9 2 if(counter++>50) break;//超时跳出
10 2 }
11 1 while ((tmp|0x7f)==0xff);
12 1 }
13
14 void lcd_cmd_wr(unsigned char cmdcode,unsigned char right)
15 {
16 1 loop_lcd_is_busy(right);
17 1 if(right) LCD_RCW = cmdcode;
18 1 else LCD_LCW = cmdcode;
19 1 }
20
21 void lcd_dat_wr(unsigned char ldata,unsigned char right)
22 {
23 1 loop_lcd_is_busy(right);
24 1 if(right) LCD_RDW = ldata;
25 1 else LCD_LDW = ldata;
26 1 }
27
28 void lcd_clr(void)
29 {
30 1 unsigned char i,j;
31 1 for(i=0;i<8;i++) {
32 2 lcd_cmd_wr(ORGY+i,0);
33 2 lcd_cmd_wr(ORGX,0);
34 2 lcd_cmd_wr(ORGY+i,1);
35 2 lcd_cmd_wr(ORGX,1);
36 2 for(j=0;j<64;j++) {
37 3 lcd_dat_wr(0,0);
38 3 lcd_dat_wr(0,1);
39 3 }
40 2 }
41 1 }
42
43 void lcd_init(void)
44 {
45 1 lcd_cmd_wr(DISPON,0);
46 1 lcd_cmd_wr(DISPFIRST,0);
47 1 lcd_cmd_wr(ORGY,0);
48 1 lcd_cmd_wr(ORGX,0);
49 1 lcd_cmd_wr(DISPON,1);
50 1 lcd_cmd_wr(DISPFIRST,1);
51 1 lcd_cmd_wr(ORGY,1);
52 1 lcd_cmd_wr(ORGX,1);
53 1 lcd_clr();
54 1 }
55
C51 COMPILER V8.02 LCD12864 01/14/2009 16:05:48 PAGE 2
56 //LCD更新指定列,以列为单位,一次更新1列
57 void lcd_row_wr(unsigned char x,unsigned char *da)//x是列坐标,*da是8字节列数据
58 {
59 1 unsigned char j;
60 1 if(x<64) { //根据列坐标选择左右半屏
61 2 for(j=0;j<8;j++) { //写左半屏
62 3 lcd_cmd_wr(ORGY+j,0);
63 3 lcd_cmd_wr(ORGX+x,0);
64 3 lcd_dat_wr(da[j],0);
65 3 }
66 2 }
67 1 else {
68 2 x-=64;//坐标调整
69 2 for(j=0;j<8;j++) { //写右半屏
70 3 lcd_cmd_wr(ORGY+j,1);
71 3 lcd_cmd_wr(ORGX+x,1);
72 3 lcd_dat_wr(da[j],1);
73 3 }
74 2 }
75 1 }
76 //LCD指定点显示驱动函数
77 void lcd_disp(unsigned char x,unsigned char y)//x水平坐标,y垂直坐标
78 {
79 1 unsigned char dat[8];
80 1 unsigned char j;
81 1 y = 63-y;
82 1 for(j=0;j<8;j++) dat[j] = 0x0;
83 1 dat[y>>3] |= 0x01<<y&0x07;
84 1 lcd_row_wr(x,dat);
85 1 }
86
87
88
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 375 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 14
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 + -