?? lcm_drive.lst
字號(hào):
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 4
180 0xFE, 0x08, 0x10, 0x20, 0xFE,
181 0x7C, 0x82, 0x82, 0x82, 0x7C
182 };
183
184 uint8 code ASCII_TAB50[80] = { 0xFE, 0x12, 0x12, 0x12, 0x0C,
185 0x7C, 0x82, 0xA2, 0x42, 0xBC,
186 0xFE, 0x12, 0x32, 0x52, 0x8C,
187 0x8C, 0x92, 0x92, 0x92, 0x62,
188 0x02, 0x02, 0xFE, 0x02, 0x02,
189 0x7E, 0x80, 0x80, 0x80, 0x7E,
190 0x3E, 0x40, 0x80, 0x40, 0x3E,
191 0x7E, 0x80, 0x70, 0x80, 0x7E,
192 0xC6, 0x28, 0x10, 0x28, 0xC6,
193 0x0E, 0x10, 0xE0, 0x10, 0x0E,
195 0x00, 0xFE, 0x82, 0x82, 0x00,
196 0x04, 0x08, 0x10, 0x20, 0x40,
197 0x00, 0x82, 0x82, 0xFE, 0x00,
198 0x08, 0x04, 0x02, 0x04, 0x08,
199 0x80, 0x80, 0x80, 0x80, 0x80
200 };
201
202 uint8 code ASCII_TAB60[80] = { 0x00, 0x02, 0x04, 0x08, 0x00,
203 0x40, 0xA8, 0xA8, 0xA8, 0xF0,
204 0xFE, 0x90, 0x88, 0x88, 0x70,
205 0x70, 0x88, 0x88, 0x88, 0x40,
206 0x70, 0x88, 0x88, 0x90, 0xFE,
207 0x70, 0xA8, 0xA8, 0xA8, 0x30,
208 0x10, 0xFC, 0x12, 0x02, 0x04,
209 0x18, 0xA4, 0xA4, 0xA4, 0x7C,
210 0xFE, 0x10, 0x08, 0x08, 0xF0,
211 0x00, 0x88, 0xFA, 0x80, 0x00,
212 0x40, 0x80, 0x88, 0x7A, 0x00,
213 0xFE, 0x20, 0x50, 0x88, 0x00,
214 0x00, 0x82, 0xFE, 0x80, 0x00,
215 0xF8, 0x08, 0x30, 0x08, 0xF8,
216 0xF8, 0x10, 0x08, 0x08, 0xF0,
217 0x70, 0x88, 0x88, 0x88, 0x70
218 };
219
220 uint8 code ASCII_TAB70[80] = { 0xF8, 0x28, 0x28, 0x28, 0x10,
221 0x10, 0x28, 0x28, 0x30, 0xF8,
222 0xF8, 0x10, 0x08, 0x08, 0x10,
223 0x90, 0xA8, 0xA8, 0xA8, 0x40,
224 0x08, 0x7E, 0x88, 0x80, 0x40,
225 0x78, 0x80, 0x80, 0x40, 0xF8,
226 0x38, 0x40, 0x80, 0x40, 0x38,
227 0x78, 0x80, 0x60, 0x80, 0x78,
228 0x88, 0x50, 0x20, 0x50, 0x88,
229 0x18, 0xA0, 0xA0, 0xA0, 0x78,
230 0x88, 0xC8, 0xA8, 0x98, 0x88,
231 0x00, 0x10, 0x6C, 0x82, 0x00,
232 0x00, 0x00, 0xFE, 0x00, 0x00,
233 0x00, 0x82, 0x6C, 0x10, 0x00,
234 0x10, 0x10, 0x54, 0x38, 0x10,
235 0x10, 0x38, 0x54, 0x10, 0x10
236 };
237
238 /***********************************************************************
239 * 名稱:LCM_DispChar()
240 * 功能:指定地址顯示字符。
241 * 入口參數(shù):disp_cy 顯示行值(0-7)
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 5
242 * disp_cx 顯示列值(0-15)
243 * dispdata 所要顯示的字符(ASCII碼)
244 * 注:支持顯示字符0-9、A-Z、a-z及空格,字符顯示格式為5*7,模為8*8,所以
245 * 屏幕顯示為8*16(共8行,每行16個(gè)字符)。
246 ***********************************************************************/
247 void LCM_DispChar(uint8 disp_cy, uint8 disp_cx, char dispdata)
248 { uint8 code *pchardata;
249 1 uint8 i;
250 1
251 1 disp_cy = disp_cy&0x07; // 參數(shù)過(guò)濾
252 1 disp_cx = disp_cx&0x0f;
253 1
254 1 /* 先要找出顯示數(shù)據(jù)的類型,并設(shè)置相應(yīng)的點(diǎn)陣數(shù)據(jù)表,然后設(shè)置指針,以取得對(duì)應(yīng)的點(diǎn)陣數(shù)據(jù)。 */
255 1 switch(dispdata&0xf0)
256 1 { case 0x20:
257 2 dispdata = (dispdata&0x0f)*5;
258 2 pchardata = &ASCII_TAB20[dispdata];
259 2 break;
260 2
261 2 case 0x30:
262 2 dispdata = (dispdata&0x0f)*5;
263 2 pchardata = &ASCII_TAB30[dispdata];
264 2 break;
265 2
266 2 case 0x40:
267 2 dispdata = (dispdata&0x0f)*5;
268 2 pchardata = &ASCII_TAB40[dispdata];
269 2 break;
270 2
271 2 case 0x50:
272 2 dispdata = (dispdata&0x0f)*5;
273 2 pchardata = &ASCII_TAB50[dispdata];
274 2 break;
275 2
276 2 case 0x60:
277 2 dispdata = (dispdata&0x0f)*5;
278 2 pchardata = &ASCII_TAB60[dispdata];
279 2 break;
280 2
281 2 case 0x70:
282 2 dispdata = (dispdata&0x0f)*5;
283 2 pchardata = &ASCII_TAB70[dispdata];
284 2 break;
285 2
286 2 default:
287 2 pchardata = &ASCII_TAB20[0];
288 2 break;
289 2 } // end of switch(dispdata&0xf0)...
290 1
291 1
292 1 if( (disp_cx&0x08) == 0 ) // 選擇液晶控制芯片(即CS1--控制前8個(gè)字符,CS2--控制后8個(gè)字符)
293 1 { i = disp_cx<<3;
294 2 LCM_Wr1Command(LCM_ADDRSTRX+i); // 設(shè)置當(dāng)前列地址,即列
295 2 LCM_Wr1Command(LCM_ADDRSTRY+disp_cy); // 設(shè)置當(dāng)前頁(yè)地址,即行
296 2
297 2 for(i=0; i<5; i++);
298 2 LCM_Wr1Data(0x00); // 顯示一列空格
299 2 for(i=0; i<5; i++)
300 2 { LCM_Wr1Data(*pchardata); // 發(fā)送數(shù)據(jù) */
301 3 pchardata++;
302 3 }
303 2 LCM_Wr1Data(0x00);
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 6
304 2 for(i=0; i<5; i++);
305 2 LCM_Wr1Data(0x00);
306 2 }
307 1 else
308 1 { i = (disp_cx&0x07)<<3; // 若Y>7,則選取用CS2并且地址值要先減去8,再乘以8
309 2 LCM_Wr2Command(LCM_ADDRSTRX+i);
310 2 LCM_Wr2Command(LCM_ADDRSTRY+disp_cy); // 設(shè)置當(dāng)前頁(yè)地址,即行
311 2
312 2 for(i=0; i<5; i++);
313 2 LCM_Wr2Data(0x00); // 顯示一列空格
314 2 for(i=0; i<5; i++)
315 2 { LCM_Wr2Data(*pchardata); // 發(fā)送數(shù)據(jù) */
316 3 pchardata++;
317 3 }
318 2 LCM_Wr2Data(0x00);
319 2 for(i=0; i<5; i++);
320 2 LCM_Wr2Data(0x00);
321 2 }
322 1 }
323
324
325 /***********************************************************************
326 * 名稱:LCM_DispStr()
327 * 功能:字符串顯示輸出。
328 * 入口參數(shù):disp_cy 顯示起始行(0-7)
329 * disp_cx 顯示起始列(0-15)
330 * disp_str 字串指針
331 * 出口參數(shù):無(wú)
332 * 注:支持顯示字符0-9、A-Z、a-z及空格,字符顯示格式為5*7,模為8*8,所以屏幕顯示
333 * 為8*16(共8行,每行16個(gè)字符)。
334 ***********************************************************************/
335 void LCM_DispStr(uint8 disp_cy, uint8 disp_cx, char *disp_str)
336 { while( *disp_str != '\0')
337 1 { disp_cy = disp_cy&0x07; // 參數(shù)過(guò)濾
338 2 disp_cx = disp_cx&0x0f;
339 2 LCM_DispChar(disp_cy, disp_cx, *disp_str); // 顯示字符
340 2
341 2 disp_str++; // 指向下一字符數(shù)據(jù)
342 2 disp_cx++;
343 2 if(disp_cx>15) disp_cy++; // 指向下一顯示行
344 2 }
345 1 }
346
347
348
349
350
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 977 ----
CONSTANT SIZE = 480 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 19
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -