?? lcm_drive.lst
字號:
C51 COMPILER V6.23a LCM_DRIVE 02/23/2004 19:46:03 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE LCM_DRIVE
OBJECT MODULE PLACED IN LCM_DRIVE.OBJ
COMPILER INVOKED BY: C:\KEIL623\C51\BIN\C51.EXE LCM_DRIVE.c OPTIMIZE(2,SPEED) BROWSE INTVECTOR(0X8000) DEFINE(MONITOR51)
- DEBUG OBJECTEXTEND
stmt level source
1 /***********************************************************************
2 * 文件名:LCM_DRIVE.C
3 * 功能:圖形液晶TG12864B-2驅動程序。
4 * 說明:在LCM_DRIVE.H文件中定義了LCM操作地址,左半屏的寫命令操作地址為2004H,寫
5 * 數據操作地址為2005H,右半屏的寫命令操作地址為2000H,寫數據操作地址為2001H;
6 * 由于GRAPHICS.C中使用了disp_buf作為作圖緩沖區,所以LCM_WriteByte()、LCM_
7 * DispFill()均要更新disp_buf。
8 ***********************************************************************/
9 #include "CONFIG.H"
10
11 /* LCM復位控制腳定義 */
12 sbit LCM_RST = P1^0;
13
14 /***********************************************************************
15 * 名稱:LCM_Wr1Command()
16 * 功能:寫命令子程序,所選屏為左半屏(CS1)。
17 * 入口參數:command 要寫入LCM的命令字
18 ***********************************************************************/
19 #define LCM_Wr1Command(command) LCMCS1W_COM = command
20
21 /***********************************************************************
22 * 名稱:LCM_Wr2Command()
23 * 功能:寫命令子程序,所選屏為右半屏(CS2)。
24 * 入口參數:command 要寫入LCM的命令字
25 ***********************************************************************/
26 #define LCM_Wr2Command(command) LCMCS2W_COM = command
27
28 /***********************************************************************
29 * 名稱:LCM_Wr1Data()
30 * 功能:寫數據子程序,所選屏為左半屏(CS1)。
31 * 入口參數:wrdata 要寫入LCM的數據
32 ***********************************************************************/
33 #define LCM_Wr1Data(wrdata) LCMCS1W_DAT = wrdata
34
35 /***********************************************************************
36 * 名稱:LCM_Wr2Data()
37 * 功能:寫數據子程序,所選屏為右半屏(CS2)。
38 * 入口參數:wrdata 要寫入LCM的數據
39 ***********************************************************************/
40 #define LCM_Wr2Data(wrdata) LCMCS2W_DAT = wrdata
41
42
43 /***********************************************************************
44 * 名稱:LCM_DispIni()
45 * 功能:LCM顯示初始化。使能顯示,設置顯示起始行為0并清屏。
46 * 入口參數:無
47 * 出口參數:無
48 ***********************************************************************/
49 void LCM_DispIni(void)
50 { uint16 i;
51 1
52 1 LCM_RST = 0; // 復位驅動芯片
53 1 for(i=0; i<500; i++);
54 1 LCM_RST = 1;
C51 COMPILER V6.23a LCM_DRIVE 02/23/2004 19:46:03 PAGE 2
55 1
56 1 LCM_Wr1Command(LCM_DISPON); // 打開顯示
57 1 LCM_Wr1Command(LCM_STARTROW); // 設置顯示起始行為0
58 1 LCM_Wr2Command(LCM_DISPON);
59 1 LCM_Wr2Command(LCM_STARTROW);
60 1 LCM_DispClr(); // 清屏
61 1
62 1 LCM_Wr1Command(LCM_ADDRSTRY+0); // 設置頁(行)地址
63 1 LCM_Wr1Command(LCM_ADDRSTRX+0); // 設置列地址,即列
64 1 LCM_Wr2Command(LCM_ADDRSTRY+0);
65 1 LCM_Wr2Command(LCM_ADDRSTRX+0);
66 1 }
67
68
69 /***********************************************************************
70 * 名稱:LCM_WriteByte()
71 * 功能:向指定點寫數據(一字節)。
72 * 入口參數:x x坐標值(0-127)
73 * y y坐標值(0-63)
74 * wrdata 所要寫的數據
75 * 出口參數:無
76 * 說明:會更新disp_buf相應存儲單元
77 ***********************************************************************/
78 void LCM_WriteByte(uint8 x, uint8 y, uint8 wrdata)
79 { x = x&0x7f; // 參數過濾
80 1 y = y&0x3f;
81 1
82 1 y = y>>3;
83 1 disp_buf[y][x] = wrdata;
84 1 if(x<64) // 選擇液晶控制芯片(即CS1--控制前64個點,CS2--控制后64個點)
85 1 { LCM_Wr1Command(LCM_ADDRSTRX+x); // 設置當前列地址,即x坐標
86 2 LCM_Wr1Command(LCM_ADDRSTRY+y); // 設置當前頁地址,即y坐標
87 2 for(x=0; x<5; x++); // 短延時
88 2 LCM_Wr1Data(wrdata);
89 2 }
90 1 else
91 1 { x = x-64; // 調整x變量值
92 2 LCM_Wr2Command(LCM_ADDRSTRX+x);
93 2 LCM_Wr2Command(LCM_ADDRSTRY+y);
94 2 for(x=0; x<5; x++);
95 2 LCM_Wr2Data(wrdata);
96 2 }
97 1 }
98
99
100 /***********************************************************************
101 * 名稱:LCM_DispFill()
102 * 功能:向顯示屏填充數據
103 * 入口參數:filldata 要寫入LCM的填充數據
104 * 出口參數:無
105 * 說明:會更新disp_buf相應存儲單元
106 ***********************************************************************/
107 void LCM_DispFill(uint8 filldata)
108 { uint8 x, y;
109 1
110 1 LCM_Wr1Command(LCM_STARTROW); // 設置顯示起始行為0
111 1 LCM_Wr2Command(LCM_STARTROW);
112 1
113 1 for(y=0; y<8; y++)
114 1 { LCM_Wr1Command(LCM_ADDRSTRY+y); // 設置頁(行)地址
115 2 LCM_Wr1Command(LCM_ADDRSTRX); // 設置列地址
116 2 LCM_Wr2Command(LCM_ADDRSTRY+y);
C51 COMPILER V6.23a LCM_DRIVE 02/23/2004 19:46:03 PAGE 3
117 2 LCM_Wr2Command(LCM_ADDRSTRX);
118 2
119 2 for(x=0; x<64; x++)
120 2 { LCM_Wr1Data(filldata);
121 3 LCM_Wr2Data(filldata);
122 3 disp_buf[y][x] = filldata;
123 3 disp_buf[y][x+64] = filldata;
124 3 }
125 2 }
126 1 }
127
128
129 /* ASCII碼對應的點陣數據表 */
130 uint8 code ASCII_TAB20[80] = { 0x00, 0x00, 0x00, 0x00, 0x00,
131 0x00, 0x00, 0x9e, 0x00, 0x00,
132 0x00, 0x0e, 0x00, 0x0e, 0x00,
133 0x28, 0xfe, 0x28, 0xfe, 0x28,
134 0x48, 0x54, 0xfe, 0x54, 0x24,
135 0x46, 0x26, 0x10, 0xc8, 0xc4,
136 0x6c, 0x92, 0xaa, 0x44, 0xa0,
137 0x00, 0x0a, 0x06, 0x00, 0x00,
138 0x00, 0x38, 0x44, 0x82, 0x00,
139 0x00, 0x82, 0x44, 0x38, 0x00,
140 0x28, 0x10, 0x7c, 0x10, 0x28,
141 0x10, 0x10, 0x7c, 0x10, 0x10,
142 0x00, 0xa0, 0x60, 0x00, 0x00,
143 0x10, 0x10, 0x10, 0x10, 0x10,
144 0x00, 0xc0, 0xc0, 0x00, 0x00,
145 0x40, 0x20, 0x10, 0x08, 0x04
146 };
147
148 uint8 code ASCII_TAB30[80] = { 0x7C, 0xA2, 0x92, 0x8A, 0x7C,
149 0x00, 0x84, 0xFE, 0x80, 0x00,
150 0x84, 0xC2, 0xA2, 0x92, 0x8C,
151 0x42, 0x82, 0x8A, 0x96, 0x62,
152 0x30, 0x28, 0x24, 0xFE, 0x20,
153 0x4E, 0x8A, 0x8A, 0x8A, 0x72,
154 0x78, 0x94, 0x92, 0x92, 0x60,
155 0x02, 0xE2, 0x12, 0x0A, 0x06,
156 0x6C, 0x92, 0x92, 0x92, 0x6C,
157 0x0C, 0x92, 0x92, 0x52, 0x3C,
158 0x00, 0x6C, 0x6C, 0x00, 0x00,
159 0x00, 0xAC, 0x6C, 0x00, 0x00,
160 0x10, 0x28, 0x44, 0x82, 0x00,
161 0x28, 0x28, 0x28, 0x28, 0x28,
162 0x00, 0x82, 0x44, 0x28, 0x10,
163 0x04, 0x02, 0xA2, 0x12, 0x0C
164 };
165
166 uint8 code ASCII_TAB40[80] = { 0x64, 0x92, 0xF2, 0x82, 0x7C,
167 0xFC, 0x22, 0x22, 0x22, 0xFC,
168 0xFE, 0x92, 0x92, 0x92, 0x6C,
169 0x7C, 0x82, 0x82, 0x82, 0x44,
170 0xFE, 0x82, 0x82, 0x44, 0x38,
171 0xFE, 0x92, 0x92, 0x92, 0x82,
172 0xFE, 0x12, 0x12, 0x12, 0x02,
173 0x7C, 0x82, 0x92, 0x92, 0xF4,
174 0xFE, 0x10, 0x10, 0x10, 0xFE,
175 0x00, 0x82, 0xFE, 0x82, 0x00,
176 0x40, 0x80, 0x82, 0x7E, 0x02,
177 0xFE, 0x10, 0x28, 0x44, 0x82,
178 0xFE, 0x80, 0x80, 0x80, 0x80,
C51 COMPILER V6.23a LCM_DRIVE 02/23/2004 19:46:03 PAGE 4
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -