?? p0902-usart.lst
字號:
472 //作者:cby
473 //網站:寧波單片機開發網
474 //網址:www.nbdpj.com
475 //郵箱:nbdpj@nbdpj.com
476 //日期:20081111
477 //-----------------------------------------
478 void LCD_write_String(unsigned char X,unsigned char Y,char *s)
479 {
480 1 LCD_set_XY(X,Y);
481 1 while (*s)
482 1 {
483 2 LCD_write_char(*s);
484 2 s++;
485 2 }
486 1 }
487 //---------------------------------------
488 //名稱: SPI初始化函數
489 //作者:cby
C51 COMPILER V8.05a P0902_USART 04/01/2009 22:15:34 PAGE 9
490 //網站:寧波單片機開發網
491 //網址:www.nbdpj.com
492 //郵箱:nbdpj@nbdpj.com
493 //日期:20090325
494 //-----------------------------------------
495 void init_spi()
496 {
497 1 P1M0=0X40;
498 1 P1M1=0XA0;
499 1 SPCTL=0XD0;
500 1 SPSTAT=0XC0;
501 1 }
502 //---------------------------------------
503 //名稱: 使用SPI接口寫數據到LCD
504 //參數:dt:寫入的數據 command: 1-數據/0-命令
505 //作者:cby
506 //網站:寧波單片機開發網
507 //網址:www.nbdpj.com
508 //郵箱:nbdpj@nbdpj.com
509 //日期:20090325
510 //-----------------------------------------
511 void LCD_write_byte(unsigned char dt, unsigned char command)
512 {
513 1 sce=0;
514 1 dc=command;
515 1 SPDAT=dt;
516 1 while(!(SPSTAT&0X80));
517 1 SPSTAT=0XC0;
518 1 dc=1;
519 1 sce=1;
520 1 sdin=1;
521 1 }
522 //---------------------------------------
523 //名稱: 寫一個漢字到LCD函數
524 //參數:x,y:寫入漢字的地址 address: 寫入漢字在han表格中的位置
525 //作者:cby
526 //網站:寧波單片機開發網
527 //網址:www.nbdpj.com
528 //郵箱:nbdpj@nbdpj.com
529 //日期:20081111
530 //-----------------------------------------
531 void disp16_16(unsigned char x,unsigned char y,unsigned char address)
532 {
533 1 unsigned char c;
534 1 LCD_set_XY(x*8, y);
535 1 for(c=0;c<16;c++)
536 1 {
537 2 LCD_write_byte(han[address*32+c],1);
538 2 }
539 1 LCD_set_XY(x*8, y+1);
540 1 for(c=16;c<32;c++)
541 1 {
542 2 LCD_write_byte(han[address*32+c],1);
543 2 }
544 1 }
545 //---------------------------------------
546 //名稱: 寫一個字符到LCD函數(8*16點陣)
547 //參數:x,y:寫入字符的地址 c: 寫入字符在shu表格中的位置
548 //作者:cby
549 //網站:寧波單片機開發網
550 //網址:www.nbdpj.com
551 //郵箱:nbdpj@nbdpj.com
C51 COMPILER V8.05a P0902_USART 04/01/2009 22:15:34 PAGE 10
552 //日期:20081111
553 //-----------------------------------------
554 void disp8_16(unsigned char x,unsigned char y,unsigned char c)
555 {
556 1 unsigned char i;
557 1 LCD_set_XY(x*8, y);
558 1 for(i=0; i<8;i++)
559 1 {
560 2 LCD_write_byte(shuzi[c*16+i],1);
561 2 }
562 1 LCD_set_XY(x*8, y+1);
563 1 for(i=8; i<16;i++)
564 1 {
565 2 LCD_write_byte(shuzi[c*16+i],1);
566 2 }
567 1 }
568 //---------------------------------------
569 //名稱: 蜂鳴器驅動函數
570 //作者:cby
571 //網站:寧波單片機開發網
572 //網址:www.nbdpj.com
573 //郵箱:nbdpj@nbdpj.com
574 //日期:20081111
575 //-----------------------------------------
576 void beep_pro()
577 {
578 1 if(beep==0)
579 1 {
580 2 if(++beepcon>250) //每次響250個掃描周期后停止
581 2 {
582 3 beepcon=0;
583 3 beep=1;
584 3 }
585 2 }
586 1 else
587 1 beepcon=0;
588 1 }
589 //---------------------------------------
590 //名稱: 串口數據發送函數
591 //作者:cby
592 //網站:寧波單片機開發網
593 //網址:www.nbdpj.com
594 //郵箱:nbdpj@nbdpj.com
595 //日期:20081111
596 //-----------------------------------------
597 void send232byte(unsigned char bytebuf)
598 {
599 1 TI=0;
600 1 SBUF=bytebuf;
601 1 while(!TI);
602 1 }
603 //---------------------------------------
604 //名稱: 串口數據接收函數
605 //作者:cby
606 //網站:寧波單片機開發網
607 //網址:www.nbdpj.com
608 //郵箱:nbdpj@nbdpj.com
609 //日期:20081111
610 //-----------------------------------------
611 bit WaitComm()
612 {
613 1 if(RI)
C51 COMPILER V8.05a P0902_USART 04/01/2009 22:15:34 PAGE 11
614 1 {
615 2 recebuf=SBUF; //接收到的數據放入緩沖區recebuf中
616 2 RI=0;
617 2 return 1; //有數據接收到,返回1
618 2 }
619 1 else
620 1 {
621 2 return 0; //無數據接收到,返回0
622 2 }
623 1 }
624 //---------------------------------------
625 //名稱: 主函數
626 //作者:cby
627 //網站:寧波單片機開發網
628 //網址:www.nbdpj.com
629 //郵箱:nbdpj@nbdpj.com
630 //日期:20081111
631 //-----------------------------------------
632 void main()
633 {
634 1 unsigned char k;
635 1 init_spi();
636 1 res=0;
637 1 for(k=0;k<250;k++);
638 1 res=1; //LCD復位
639 1 LCD_init(); //初始化LCD模塊
640 1 LCD_clear(); //清屏幕
641 1 disp16_16(0,0,0); //寧
642 1 disp16_16(2,0,1); //波
643 1 disp16_16(4,0,2); //單
644 1 disp16_16(6,0,3); //片
645 1 disp16_16(8,0,4); //機
646 1 disp16_16(1,2,5); //開
647 1 disp16_16(4,2,6); //發
648 1 disp16_16(7,2,7); //網
649 1 LCD_write_String(1,5,"www.nbdpj.com"); //www.nbdpj.com
650 1 back_led=0; //開背光
651 1 TMOD=0x20;
652 1 TH1=0xfd;
653 1 TL1=0xfd;
654 1 SCON=0X50;
655 1 TR1=1;
656 1 AUXR=0;
657 1 clrbit=1; //置清屏標志位
658 1 while(1)
659 1 {
660 2 beep_pro();
661 2 if(WaitComm()==1) //如果有收到上位機數據
662 2 {
663 3 if(clrbit) //如果為第一次收到數據啟動清屏操作
664 3 {
665 4 clrbit=0;
666 4 LCD_clear(); //清屏幕
667 4 }
668 3 send232byte(recebuf+1); //回復數據為接收數據+1
669 3
670 3 disp16_16(0,0,8); //哇
671 3 disp16_16(2,0,9); //賽
672 3 disp8_16(4,0,44); //!
673 3 disp16_16(5,0,10); //收
674 3 disp16_16(7,0,11); //到
675 3
C51 COMPILER V8.05a P0902_USART 04/01/2009 22:15:34 PAGE 12
676 3 disp16_16(0,2,12); //短
677 3 disp16_16(2,2,13); //信
678 3 disp8_16(4,2,47); //:
679 3 disp8_16(5,2,0); //0
680 3 disp8_16(6,2,33); //x
681 3 disp8_16(7,2,(recebuf>>4)&0x0f); //顯示接收數據高位
682 3 disp8_16(8,2,recebuf&0x0f); //顯示接收數據低位
683 3
684 3 disp16_16(0,4,14); //回
685 3 disp16_16(2,4,15); //復
686 3 disp8_16(4,4,47); //:
687 3 disp8_16(5,4,0); //0
688 3 disp8_16(6,4,33); //x
689 3 disp8_16(7,4,((recebuf+1)>>4)&0x0f); //顯示回復數據高位
690 3 disp8_16(8,4,(recebuf+1)&0x0f); //顯示回復數據低位
691 3 }
692 2 }
693 1 }
694
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 769 ----
CONSTANT SIZE = 1846 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 14
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -