test.lst
来自「校园打铃系统」· LST 代码 · 共 1,256 行 · 第 1/4 页
LST
1,256 行
295 3 {
296 4 i++;
297 4 break;
298 4 }
299 3 }
300 2 }
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 6
301 1 else //整数部分为0
302 1 {
303 2 for (i=0;i<8;i++)
304 2 {
305 3 if(i==6)
306 3 {
307 4 LCDDisplaybuffer[i]='.';
308 4 }
309 3 else
310 3 {
311 4 LCDDisplaybuffer[i]=CHR[frequency%10];
312 4 frequency/=10;
313 4 }
314 3 }
315 2 }
316 1
317 1 for (j=0;j<7;j++) //可以通过改变j的范围来增减显示的位数
318 1 {
319 2 LCD_write_char(x++,y,LCDDisplaybuffer[i-1]);
320 2 i--;
321 2
322 2 }
323 1
324 1
325 1
326 1 }
327
328 /*********************************************************************************
329 ** 函数名:INT_NUM_Display(unsigned int Num)**************************************
330 ** 功能:显示整数*****************************************************************
331 ** 入口参数:unsigned int Num (Num 为调用这个子程序时传入的数据)****************
332 *********** 这里可以通过改变div的值来增减显示的位数 ******************************
333 ******这个例子显示5位数***********************************************************
334 ** 出口参数:无 ******************************************************************
335 **注意各变量的数据类型,根据数的范围来改变形参的数据类型**************************
336 **********************************************************************************/
337 /*void INT_NUM_Display(unsigned int Num,uchar x,uchar y)
338 {
339 uchar i;
340 unsigned int div=10000;
341 for (i=0;i<8;i++)
342 {
343 LCDDisplaybuffer[i]=CHR[Num/div];
344 Num%=div;
345 div/=10;
346 }
347
348 LCD_write_string(x,y,LCDDisplaybuffer);
349
350 }
351
352 /*********************************************************************************
353 ** 函数名:HEX_NUM_Display(long int Num,uchar Bit)********************************
354 ** 功能:16进制数值显示函数*******************************************************
355 ** 入口参数:unsigned long Num,uchar Bite( Num 需要显示的数值(最长8位)********
356 *****************************************( Bite 有效显示位数 )****************
357 ** 出口参数:无 ******************************************************************
358 **********************************************************************************/
359 /*void HEX_NUM_Display(unsigned long Num,uchar Bite,uchar x,uchar y) //这里的形参Num类型一定要为
360 //unsigned long,不然不会显示
361
362 {
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 7
363 uchar a=0,i=0;
364 for(a=8-Bite;a<8;a++)
365 {
366
367 LCDDisplaybuffer[i]=CHR[(Num<<(a<<2))>>28];
368 i++;
369 }
370 LCD_write_string(x,y,LCDDisplaybuffer);
371 }
372
373 /************************ LCD End **************************************************/
374
375
376 /**************************Other Part************************************************/
377
378 /***************send_message**************************/
379 #define KEY P0
380 //#define uchar unsigned char
381 //bit judge_hitkey();
382 //uchar scan_key();
383 uchar cd[32]={" "};
384 uchar sp;
385 void xp(uchar d);
386 //uchar xx,yy,date0;
387 void manage_key1(void);
388 void manage_key2(uchar keycode);
389 void manage_key3(uchar keycode);
390 void manage_key4(void);
391 void manage_key5(uchar keycode);
392 void manage_key6(uchar keycode);
393 void manage_key7(uchar keycode);
394 void manage_key8(void);
395 void manage_key9(uchar keycode);
396 void manage_key10(uchar keycode);
397 void manage_key11(uchar keycode);
398 //void manage_key12(void);
399 void manage_key13(uchar keycode);
400 void manage_key14(uchar keycode);
401 void manage_key15(uchar keycode);
402 //void manage_key16(void);
403 void xp(uchar d);
404 bit judge_hitkey()
405 {uchar scancode,keycode;
406 1 scancode=0x0f;
407 1 KEY=scancode;
408 1 keycode=KEY;
409 1 if(keycode==0x0f)
410 1 return(0);
411 1 else
412 1 return(1);
413 1
414 1 }
415 uchar scan_key()
416 { uchar scancode,keycode;
417 1 scancode=0xef;
418 1 while(scancode!=0xff)
419 1 { KEY=scancode;
420 2 keycode=KEY;
421 2 if((keycode&0x0f)!=0x0f)
422 2 break;
423 2 scancode=(keycode<<1)|0x0f;
424 2 }
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 8
425 1
426 1
427 1 keycode=~keycode;
428 1 return(keycode);
429 1 }
430 void key_manage(uchar keycode)
431 { switch(keycode)
432 1 { case 0x11:manage_key1();break;
433 2 case 0x12:manage_key2(keycode);break;
434 2 case 0x14:manage_key3(keycode);break;
435 2 case 0x18:manage_key4();break;
436 2 case 0x21:manage_key5(keycode);break;
437 2 case 0x22:manage_key6(keycode);break;
438 2 case 0x24:manage_key7(keycode);break;
439 2 case 0x28:manage_key8();break;
440 2 case 0x41:manage_key9(keycode);break;
441 2 case 0x42:manage_key10(keycode);break;
442 2 case 0x44:manage_key11(keycode);break;
443 2 // case 0x48:manage_key12();break;
444 2 case 0x81:manage_key13(keycode);break;
445 2 case 0x82:manage_key14(keycode);break;
446 2 case 0x84:manage_key15(keycode);break;
447 2 // case 0x88:manage_key16();break;
448 2 default: break;
449 2
450 2 }
451 1 }
452
453
454 void manage_key1(void)
455 {cd[sp]='1';
456 1 xp(sp);
457 1 delay_nms(100);
458 1 sp++;
459 1 if(sp==32)
460 1 sp=31;
461 1 }
462 /***************************************
463 ****************************************/
464 void manage_key2(uchar keycode )
465 {
466 1 do{cd[sp]='2';
467 2 xp(sp);
468 2 delay_nms(100);
469 2 if(KEY==~keycode)
470 2 {cd[sp]='a';
471 3 xp(sp);
472 3 delay_nms(100);
473 3 if(KEY==~keycode)
474 3 {cd[sp]='b';
475 4 xp(sp);
476 4 delay_nms(100);
477 4 if(KEY==~keycode)
478 4 {cd[sp]='c';
479 5 xp(sp);
480 5 delay_nms(100);
481 5 }
482 4 }
483 3 }
484 2 }while(KEY==~keycode);
485 1
486 1 sp++;
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 9
487 1 if(sp==32)
488 1 sp=31;
489 1 }
490
491 /***************************************
492 ****************************************/
493
494 void manage_key3(uchar keycode)
495 {
496 1 do{cd[sp]='3';
497 2 xp(sp);
498 2 delay_nms(100);
499 2 if(KEY==~keycode)
500 2 {cd[sp]='d';
501 3 xp(sp);
502 3 delay_nms(100);
503 3 if(KEY==~keycode)
504 3 {cd[sp]='e';
505 4 xp(sp);
506 4 delay_nms(100);
507 4 if(KEY==~keycode)
508 4 {cd[sp]='f';
509 5 xp(sp);
510 5 delay_nms(100);
511 5 }
512 4 }
513 3 }
514 2 }while(KEY==~keycode);
515 1
516 1 sp++;
517 1 if(sp==32)
518 1 sp=31;
519 1 }
520 /***************************************
521 ****************************************/
522
523 void manage_key4(void)
524 {
525 1 LCD_init();
526 1 LCD_write_string(1,LINE1,"sending......");
527 1 for(xx=0;xx<32;xx++) //字符数组 32个
528 1 {SBUF=0x06a;
529 2 delay_nms(10);
530 2 SBUF=cd[xx];
531 2 delay_nms(10);
532 2 while(!TI);
533 2 TI=0;
534 2 }
535 1 LCD_init();
536 1 LCD_write_string(5,LINE1,"OK!");
537 1 delay_nms(150);
538 1 LCD_init();
539 1 LCD_write_string(0,LINE1,cd);
540 1 }
541
542 /***************************************
543 ****************************************/
544
545 void manage_key5(uchar keycode)
546 {
547 1 do{cd[sp]='4';
548 2 xp(sp);
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 10
549 2 delay_nms(100);
550 2 if(KEY==~keycode)
551 2 {cd[sp]='g';
552 3 xp(sp);
553 3 delay_nms(100);
554 3 if(KEY==~keycode)
555 3 {cd[sp]='h';
556 4 xp(sp);
557 4 delay_nms(100);
558 4 if(KEY==~keycode)
559 4 {cd[sp]='i';
560 5 xp(sp);
561 5 delay_nms(100);
562 5 }
563 4 }
564 3 }
565 2 }while(KEY==~keycode);
566 1
567 1 sp++;
568 1 if(sp==32)
569 1 sp=31;
570 1 }
571
572 /***************************************
573 ****************************************/
574
575 void manage_key6(uchar keycode)
576 {
577 1 do{cd[sp]='5';
578 2 xp(sp);
579 2 delay_nms(100);
580 2 if(KEY==~keycode)
581 2 {cd[sp]='j';
582 3 xp(sp);
583 3 delay_nms(100);
584 3 if(KEY==~keycode)
585 3 {cd[sp]='k';
586 4 xp(sp);
587 4 delay_nms(100);
588 4 if(KEY==~keycode)
589 4 {cd[sp]='l';
590 5 xp(sp);
591 5 delay_nms(100);
592 5 }
593 4 }
594 3 }
595 2 }while(KEY==~keycode);
596 1
597 1 sp++;
598 1 if(sp==32)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?