📄 text1.lst
字号:
300 3 else if(temp==0x0e)//判断第3列是否有键按下
301 3 {
302 4 keycode=i*4+3;
303 4 break;
C51 COMPILER V7.20 TEXT1 08/11/2007 15:23:53 PAGE 6
304 4 }
305 3 P1=(P1<<1)|0x1;
306 3 }
307 2
308 2 while((P1&0x0f)!=0x0f) //等待释放
309 2 {
310 3 P1=0x0f;
311 3 }
312 2 // beep=1;
313 2
314 2 }
315 1 return keycode;
316 1 }
317
318 /**********lcd1602 测试程序**********************/
319 //上电后lcd1602 显示
320 // "System of P.H.Y"
321 // " Welcome!"
322 //
323 //分别按矩阵最右下角的三个按键 分别出现下面几个显示界面:
324 // key=0 显示
325 // " 2005/7/28";
326 // " 20:27";
327 // key=1 显示
328 // "<>?+-*/()="
329 // "`-=\[]/.,;"
330 // key=2 显示
331 // "!@#$%^&*()_+|~"
332 // "!@#$%^&*()_+|~"
333
334 void xianshu(unsigned long a)
335 { unsigned long c,p=0;
336 1 if (a!=0)
337 1 {
338 2
339 2 c=a/10000;
340 2 if(c!=0)
341 2 {lcd1602_wrdata(c+0x30);
342 3 p=1;
343 3 }
344 2
345 2
346 2 c=(a%10000)/1000;
347 2 if(c!=0 || p==1)
348 2 {lcd1602_wrdata(c+0x30);
349 3 }
350 2
351 2 c=(a%1000)/100;
352 2 if(c!=0 || p==1)
353 2 {lcd1602_wrdata(c+0x30);
354 3 }
355 2
356 2 c=(a%100)/10;
357 2 if(c!=0 || p==1)
358 2 {lcd1602_wrdata(c+0x30);
359 3 }
360 2
361 2 c=a%10+0x30;
362 2 lcd1602_wrdata(c);
363 2
364 2 }
365 1 }
C51 COMPILER V7.20 TEXT1 08/11/2007 15:23:53 PAGE 7
366
367
368 void xianshi(uchar j)
369 { uchar str[][9]={{"1.temp "},{"2.date "},{"3.tsx "},{"4.four "},{"1.temp "}};
370 1 uchar i;
371 1 unsigned char offset=0x80;
372 1 lcd1602_clear();
373 1 lcd1602_wrcmd(offset+0x00);
374 1
375 1 lcd1602_wrcmd(offset+0x00);
376 1 lcd1602_wrdata('#');
377 1 for(i=0;i<7;i++) lcd1602_wrdata(str[j+0][i]);
378 1
379 1 lcd1602_wrcmd(offset+0x40);
380 1 lcd1602_wrdata(' ');
381 1 for(i=0;i<7;i++) lcd1602_wrdata(str[j+1][i]);
382 1 }
383
384 void main()
385 {
386 1
387 1 uchar i;
388 1 // uint t;
389 1
390 1 unsigned char a=30;
391 1
392 1 uchar j=0; //标记
393 1
394 1 uchar d[]="2007/07/18";
395 1 uchar w[]="warning";
396 1
397 1 uchar str0='7';
398 1 uchar str1='4';
399 1 uchar str2='1';
400 1 uchar str3=' ';
401 1 uchar str4='8';
402 1 uchar str5='5';
403 1 uchar str6='2';
404 1 uchar str7='0';
405 1 uchar str8='9';
406 1 uchar str9='6';
407 1 uchar str10='3';
408 1
409 1
410 1
411 1 unsigned char offset=0x80; //定义一个偏移地址变量,lcd1602 写入控制字时用到
412 1 unsigned char key;
413 1
414 1 delay(2);
415 1 lcd1602_bus=0xff;
416 1 lcd1602_init();
417 1 lcd1602_wrcmd(offset+0x00);
418 1 xianshi(0);
419 1
420 1
421 1
422 1
423 1
424 1 // lcd1602_clear();
425 1 while(1)
426 1 {
427 2
C51 COMPILER V7.20 TEXT1 08/11/2007 15:23:53 PAGE 8
428 2 key=getkey_ii();
429 2
430 2 if(key==4)
431 2 {
432 3 j=j+1;
433 3 if(j>3)j=0;
434 3 xianshi(j);
435 3
436 3 }
437 2 if (key==0)
438 2 {
439 3 if (j==0) j=4;
440 3 j=j-1;
441 3
442 3
443 3 xianshi(j);
444 3
445 3 }
446 2 if(key==2 || ((j==0)&&(key==3)))
447 2 {
448 3 while(key==2 || key==0xff || key==3)
449 3 {key=getkey_ii();
450 4
451 4 gettemp();
452 4 lcd1602_clear();
453 4 xianshu(temp);
454 4 tempx=tempx*10000/16;
455 4
456 4
457 4 lcd1602_wrdata('.');
458 4 xianshu(tempx);
459 4 lcd1602_wrdata(' ');
460 4 lcd1602_wrdata('*');
461 4 lcd1602_wrdata('C');
462 4 if (temp>=a)
463 4 {
464 5 alarm=0;
465 5 lcd1602_wrcmd(offset+0x40);
466 5 for(i=0;i<8;i++){lcd1602_wrdata(w[i]);delay(10);}
467 5 delay(1000);
468 5 alarm=1;
469 5 }
470 4 delay(1000);
471 4 }
472 3 }
473 2 if(key==6 || ((j==1)&&(key==3)))
474 2 {
475 3 lcd1602_init();
476 3 lcd1602_clear();
477 3 for(i=0;i<10;i++) lcd1602_wrdata(d[i]);
478 3 }
479 2 if(key==10 || ((j==2)&&(key==3)))
480 2 { a=0;
481 3 lcd1602_clear();
482 3
483 3 while(key!=15 )
484 3 {
485 4 key=getkey_ii();
486 4
487 4
488 4 if(key==0)
489 4 {
C51 COMPILER V7.20 TEXT1 08/11/2007 15:23:53 PAGE 9
490 5 lcd1602_clear();
491 5 lcd1602_wrcmd(offset+0x00);//换行
492 5
493 5 a=a*10+7;
494 5 xianshu(a);
495 5 //lcd1602_wrcmd(offset+0x40);
496 5 // for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
497 5 }
498 4 else if (key==1)
499 4 {
500 5 lcd1602_clear();
501 5 lcd1602_wrcmd(offset+0x00);
502 5
503 5
504 5 a=a*10+4;
505 5 xianshu(a);
506 5 //lcd1602_wrcmd(offset+0x40);
507 5 //for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
508 5 }
509 4 else if (key==2)
510 4 {
511 5 lcd1602_clear();
512 5 lcd1602_wrcmd(offset+0x00);
513 5
514 5 a=a*10+1;
515 5 xianshu(a);
516 5 // lcd1602_wrcmd(offset+0x40);
517 5 // for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
518 5 }
519 4
520 4 else if (key==4)
521 4 {
522 5 lcd1602_clear();
523 5 lcd1602_wrcmd(offset+0x00);
524 5 a=a*10+8;
525 5 xianshu(a);
526 5 }
527 4 else if (key==5)
528 4 {
529 5 lcd1602_clear();
530 5 lcd1602_wrcmd(offset+0x00);
531 5 a=a*10+5;
532 5 xianshu(a);
533 5 }
534 4 else if (key==6)
535 4 {
536 5 lcd1602_clear();
537 5 lcd1602_wrcmd(offset+0x00);
538 5 a=a*10+2;
539 5 xianshu(a);
540 5 }
541 4 else if (key==7)
542 4 {
543 5 lcd1602_clear();
544 5 lcd1602_wrcmd(offset+0x00);
545 5
546 5 a=a*10+0;
547 5 xianshu(a);
548 5 }
549 4 else if (key==8)
550 4 {
551 5 lcd1602_clear();
C51 COMPILER V7.20 TEXT1 08/11/2007 15:23:53 PAGE 10
552 5 lcd1602_wrcmd(offset+0x00);
553 5 a=a*10+9;
554 5 xianshu(a);
555 5 }
556 4 else if (key==9)
557 4 {
558 5 lcd1602_clear();
559 5 lcd1602_wrcmd(offset+0x00);
560 5 a=a*10+6;
561 5 xianshu(a);
562 5 }
563 4 else if (key==10)
564 4 {
565 5 lcd1602_clear();
566 5 lcd1602_wrcmd(offset+0x00);
567 5 a=a*10+3;
568 5 xianshu(a);
569 5 }
570 4
571 4 }
572 3
573 3 xianshi(0);
574 3 j=0;
575 3 }
576 2
577 2
578 2
579 2
580 2
581 2
582 2
583 2
584 2
585 2
586 2
587 2 }
588 1
589 1 }
590
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1620 ----
CONSTANT SIZE = 64 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 93
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -