📄 main.lst
字号:
267 3 {
268 4 key1Check = key1Save;
269 4 if ((key1Check & 0x01) == 0)
270 4 {
271 5 procKey();
272 5 }
273 4 }
274 3 }
275 2 }
276 1 }
277
278 //===============================================
279 bit scanKey1 (void)
280 {
281 1 key1Save = 0x00;
282 1 key1Save |= KEY1;
283 1 return (key1Save ^ key1Check);
284 1 }
285 //===============================================
286 void procKey (void)
287 {
288 1 lcdClear();
289 1 dispString(0, 0, 1, "系┃1:背光2:声响");
290 1 dispString(1, 0, 1, "统┃3:日历4:温控");
291 1 dispString(2, 0, 1, "设┃5:机控6:通讯");
292 1 dispString(3, 0, 1, "置┃7:其他8:关于");
293 1
294 1 beepBl();
295 1 key1Times++;
296 1 if (key1Times == 9)
297 1 {
298 2 key1Times = 1;
299 2 }
300 1
301 1 switch(key1Times)
302 1 {
303 2 case 1: convertChar(0, 2, 6);
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 6
304 2 break;
305 2 case 2: convertChar(0, 5, 6);
306 2 break;
307 2 case 3: convertChar(1, 2, 6);
308 2 break;
309 2 case 4: convertChar(1, 5, 6);
310 2 break;
311 2 case 5: convertChar(2, 2, 6);
312 2 break;
313 2 case 6: convertChar(2, 5, 6);
314 2 break;
315 2 case 7: convertChar(3, 2, 6);
316 2 break;
317 2 case 8: convertChar(3, 5, 6);
318 2 break;
319 2 }
320 1 }
321 //===============================================
322 void lcdInit (void)
323 {
324 1 MPU_RESET = LOW;
325 1 delayMs(40);
326 1 MPU_RESET = HIGH;
327 1 delayMs(1);
328 1 MPU_PS_CH = HIGH;
329 1
330 1 lcdWriteCommand(cFunctionSetE);
331 1 lcdWriteCommand(cFunctionSetB);
332 1 lcdClear();
333 1 lcdWriteCommand(cEntryModeSet);
334 1 lcdWriteCommand(cDisplayOnCtrl);
335 1 }
336 //===============================================
337 void lcdClear (void)
338 {
339 1 lcdWriteCommand(cClearDisplay);
340 1 }
341 //===============================================
342 void lcdWriteCommand (uchar Command)
343 {
344 1 checkLcdBusy();
345 1 MPU_RS_CH = LOW;
346 1 MPU_RW_CH = LOW;
347 1 LCD_DATA = Command;
348 1 MPU_ENABLE = HIGH;
349 1 delayMs(1);
350 1 MPU_ENABLE = LOW;
351 1 }
352
353 //===============================================
354 void lcdWriteData (uchar Data)
355 {
356 1 checkLcdBusy();
357 1 MPU_RS_CH = HIGH;
358 1 MPU_RW_CH = LOW;
359 1 LCD_DATA = Data;
360 1 MPU_ENABLE = HIGH;
361 1 delayMs(1);
362 1 MPU_ENABLE = LOW;
363 1 }
364 //===============================================
365 void checkLcdBusy (void)
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 7
366 {
367 1 LCD_DATA = 0xff;
368 1 MPU_RS_CH = LOW;
369 1 MPU_RW_CH = HIGH;
370 1 MPU_ENABLE = HIGH;
371 1 while (BUSY_FLAG);
372 1 MPU_ENABLE = LOW;
373 1 }
374 //===============================================
375 void displayPhoto (uchar *bmp, uchar bmpCls)
376 {
377 1 lcdPosX = 0x80;
378 1 halfScr = 2;
379 1
380 1 for (;halfScr != 0; halfScr--)
381 1 {
382 2 lcdPosY = 0x80;
383 2 halfLineCnt = 32;
384 2
385 2 for (;halfLineCnt != 0; halfLineCnt--)
386 2 {
387 3 basicBlock = 16;
388 3 wrPosition ();
389 3
390 3 for (; basicBlock != 0; basicBlock--)
391 3 {
392 4 if (bmpCls == OFF)
393 4 {
394 5 lcdWriteData (*bmp++);
395 5 }
396 4 else if (bmpCls == ON)
397 4 {
398 5 lcdWriteData (0x00);
399 5 }
400 4 }
401 3 lcdPosY++;
402 3 }
403 2 lcdPosX = 0x88;
404 2 }
405 1 lcdWriteCommand(cFuncDrawOn);
406 1 lcdWriteCommand(cFunctionSetB);
407 1 }
408 //===============================================
409 void convertChar (uchar CX, CY, width)
410 {
411 1 displayPhoto(OFF,ON);
412 1 lcdPosY = 0x80;
413 1
414 1 if (CX == 0)
415 1 {
416 2 CX = 0x80;
417 2 halfLineCnt = 16;
418 2 }
419 1 else if (CX == 1)
420 1 {
421 2 CX = 0x80;
422 2 halfLineCnt = 32;
423 2 }
424 1 else if (CX == 2)
425 1 {
426 2 CX = 0x88;
427 2 halfLineCnt = 16;
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 8
428 2 }
429 1 else if (CX == 3)
430 1 {
431 2 CX = 0x88;
432 2 halfLineCnt = 32;
433 2 }
434 1 lcdPosX = CX + CY;
435 1
436 1 for (; halfLineCnt != 0; halfLineCnt--)
437 1 {
438 2 basicBlock = width;
439 2 wrPosition();
440 2
441 2 for (;basicBlock != 0; basicBlock--)
442 2 {
443 3 if (halfLineCnt > 16)
444 3 {
445 4 lcdWriteData(0x00);
446 4 }
447 3 else
448 3 {
449 4 lcdWriteData (0xff);
450 4 }
451 3 }
452 2 lcdPosY++;
453 2 }
454 1
455 1 lcdWriteCommand(cFuncDrawOn);
456 1 lcdWriteCommand(cFunctionSetB);
457 1 }
458 //===============================================
459 void wrPosition (void)
460 {
461 1 lcdWriteCommand(cFunctionSetE);
462 1 lcdWriteCommand(lcdPosY);
463 1 lcdWriteCommand(lcdPosX);
464 1 lcdWriteCommand(cFunctionSetB);
465 1 }
466 //===============================================
467 void dispString (uchar X, Y, speed, uchar *msg)
468 {
469 1 if (X == 0)
470 1 {
471 2 X = 0x80;
472 2 }
473 1 else if (X == 1)
474 1 {
475 2 X = 0x90;
476 2 }
477 1 else if (X == 2)
478 1 {
479 2 X = 0x88;
480 2 }
481 1 else if (X == 3)
482 1 {
483 2 X = 0x98;
484 2 }
485 1 Y = X + Y;
486 1 lcdWriteCommand(Y);
487 1 while (*msg)
488 1 {
489 2 lcdWriteData(*msg++);
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 9
490 2 delayMs(speed);
491 2 }
492 1 }
493 //===============================================
494 void beepBl (void)
495 {
496 1 uchar i;
497 1 for (i = 0; i < 100; i++)
498 1 {
499 2 delayMs (2);
500 2 BEEP = !BEEP;
501 2 }
502 1 BEEP = 1;
503 1 }
504 //===============================================
505 void delayMs (uchar ms)
506 {
507 1 uchar i;
508 1 while (--ms)
509 1 {
510 2 for (i = 0; i < 125; i++);
511 2 }
512 1 }
513 //===============================================
514 void delaySec (uchar sec)
515 {
516 1 uchar i;
517 1 while (--sec)
518 1 {
519 2 for (i = 0; i < 200; i++)
520 2 {
521 3 delayMs (6);
522 3 }
523 2 }
524 1 }
525 //===============================================
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 958 ----
CONSTANT SIZE = 1205 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 21
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 + -