?? ks0108.lst
字號:
206 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
207 0x38,0xC4,0x44,0x44,0xC4,0x38,0x00,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x00,
208 0x7C,0x44,0x24,0x24,0x24,0xC4,0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x04,
209 0xFC,0x44,0x44,0xF4,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
210 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
211 0x04,0x08,0x08,0x08,0x04,0x02,0x00,0x20,0x20,0x23,0x1C,0x06,0x01,0x00,0x00,0x00,
212 0x1A,0x25,0x25,0x25,0x24,0x18,0x00,0x08,0x0F,0x08,0x00,0x00,0x08,0x0F,0x08,0x00,
213 0x06,0x09,0x08,0x08,0x0F,0x08,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,
214 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
215 0x07,0x08,0x08,0x08,0x08,0x07,0x00,0x00,0x03,0x04,0x08,0x08,0x04,0x03,0x00,0x00,
216 0x06,0x08,0x08,0x08,0x08,0x07,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x08,
217 0x0F,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
218 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
219 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
220 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
221 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
222 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
223 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
224 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
225 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
226 };
227
228 #define SELECTCS 0
229 void LCD_WaitReady1(void) //判斷LCD控制芯片KS0108是否忙
230 {
231 1 LCD_DATA=0xff;
232 1 _nop_();
233 1 LCD_CS2=SELECTCS;
234 1 LCD_RW=1;
235 1 LCD_RS=0;
236 1 LCD_E=1;
237 1 while (LCD_DATA&0x80);
238 1 LCD_CS2=!SELECTCS;
239 1 }
240
241 void LCD_WaitReady2(void) //判斷LCD控制芯片KS0108是否忙
C51 COMPILER V6.23a KS0108 12/19/2002 16:09:41 PAGE 5
242 {
243 1 LCD_DATA=0xff;
244 1 _nop_();
245 1 LCD_CS1=SELECTCS;
246 1 LCD_RW=1;
247 1 LCD_RS=0;
248 1 LCD_E=1;
249 1 while (LCD_DATA&0x80);
250 1 LCD_CS1=!SELECTCS;
251 1 }
252
253 void LCD_WriteCommand1(char ch) //向LCD控制芯片KS0108發送控制命令
254 {
255 1 LCD_WaitReady1();
256 1 LCD_CS2=SELECTCS;
257 1 LCD_RW=0;
258 1 LCD_RS=0;
259 1 LCD_DATA=ch;
260 1 LCD_E=1;
261 1 LCD_E=0;
262 1 LCD_CS2=!SELECTCS;
263 1 }
264
265 void LCD_WriteCommand2(char ch) //向LCD控制芯片KS0108發送控制命令
266 {
267 1 LCD_WaitReady2();
268 1 LCD_CS1=SELECTCS;
269 1 LCD_RW=0;
270 1 LCD_RS=0;
271 1 LCD_DATA=ch;
272 1 LCD_E=1;
273 1 LCD_E=0;
274 1 LCD_CS1=!SELECTCS;
275 1 }
276
277 void LCD_WriteData1(char ch) //向LCD控制芯片KS0108發送數據命令
278 {
279 1 LCD_WaitReady1();
280 1 LCD_CS2=SELECTCS;
281 1 LCD_RW=0;
282 1 LCD_RS=1;
283 1 LCD_DATA=ch;
284 1 LCD_E=1;
285 1 LCD_E=0;
286 1 LCD_CS2=!SELECTCS;
287 1 }
288
289 void LCD_WriteData2(char ch) //向LCD控制芯片KS0108發送數據命令
290 {
291 1 LCD_WaitReady2();
292 1 LCD_CS1=SELECTCS;
293 1 LCD_RW=0;
294 1 LCD_RS=1;
295 1 LCD_DATA=ch;
296 1 LCD_E=1;
297 1 LCD_E=0;
298 1 LCD_CS1=!SELECTCS;
299 1 }
300
301 /*-- 文字: 漢 --*/
302 char code Han[]=
303 {
C51 COMPILER V6.23a KS0108 12/19/2002 16:09:41 PAGE 6
304 0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2,0x02,0x82,0x62,0x1F,0x02,0x00,0x00,
305 0x00,0x02,0x02,0x3F,0x20,0x20,0x10,0x08,0x05,0x02,0x05,0x08,0x10,0x30,0x10,0x00,
306 };
307 /*-- 文字: 字 --*/
308 char code Zi[]=
309 {
310 0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
311 0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
312 };
313
314 void LCD_WriteHZ(char x,char y,char *Dot) //顯示16*16點陣漢字
315 {
316 1 char i;
317 1 for (i=0;i<32;i++)
318 1 {
319 2 if ((x+i%16)<64)
320 2 {
321 3 LCD_WriteCommand1(0xB8+y+i/16);
322 3 LCD_WriteCommand1(0x40+x+i%16);
323 3 LCD_WriteData1(Dot[i]);
324 3 }
325 2 else
326 2 {
327 3 LCD_WriteCommand2(0xB8+y+i/16);
328 3 LCD_WriteCommand2(0x40+x-64+i%16);
329 3 LCD_WriteData2(Dot[i]);
330 3 }
331 2 }
332 1 }
333
334 void InitLCD(void) //初始化LCD
335 {
336 1 char i,j;
337 1 LCD_RST=0;
338 1 Delay1ms(1);
339 1 LCD_RST=1;
340 1
341 1 LCD_WriteCommand1(0xc0);
342 1 LCD_WriteCommand2(0xc0);
343 1 LCD_WriteCommand1(0x3f); //開顯示
344 1 LCD_WriteCommand2(0x3f);
345 1
346 1 for (j=0;j<8;j++) //清屏
347 1 {
348 2 LCD_WriteCommand1(0xB8+j); //清左半屏
349 2 LCD_WriteCommand1(0x40);
350 2 for (i=0;i<64;i++)
351 2 LCD_WriteData1(0x00);
352 2
353 2 LCD_WriteCommand2(0xB8+j); //清右半屏
354 2 LCD_WriteCommand2(0x40);
355 2 for (i=0;i<64;i++)
356 2 LCD_WriteData2(0x00);
357 2 }
358 1 }
359
360 void DispBmp(char *buf) //顯示一幅位圖
361 {
362 1 int i,j;
363 1 for (j=0;j<8;j++) //顯示位圖
364 1 {
365 2 LCD_WriteCommand1(0xB8+j);
C51 COMPILER V6.23a KS0108 12/19/2002 16:09:41 PAGE 7
366 2 LCD_WriteCommand1(0x40);
367 2 for (i=0;i<64;i++)
368 2 LCD_WriteData1(buf[(j*2)*64+i]);
369 2 LCD_WriteCommand2(0xB8+j);
370 2 LCD_WriteCommand2(0x40);
371 2 for (i=0;i<64;i++)
372 2 LCD_WriteData2(buf[(j*2+1)*64+i]);
373 2 }
374 1 }
375
376 void Delay1s(unsigned char T);
377 void TestLCD(void)
378 {
379 1 char i;
380 1 InitLCD();
381 1 DispBmp(screen);
382 1 for (i=0;i<64;i++)
383 1 {
384 2 Delay1ms(50);
385 2 LCD_WriteCommand1(0xc0+i%64); //設置起始行,實現向上滾動
386 2 LCD_WriteCommand2(0xc0+i%64);
387 2 }
388 1 Delay1s(3);
389 1 for (;;)
390 1 {
391 2 DispBmp(screen1);
392 2 Delay1s(5);
393 2 DispBmp(screen2);
394 2 Delay1s(6);
395 2 InitLCD();
396 2 LCD_WriteHZ(2,1,Han); //顯示16*16點陣漢字'漢'
397 2 Delay1ms(100);
398 2 LCD_WriteHZ(60,3,Zi); //顯示16*16點陣漢字'字'
399 2 Delay1s(5);
400 2 }
401 1 }
402
403
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 634 ----
CONSTANT SIZE = 3136 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
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 + -