⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p0902-usart.lst

📁 单片机与电脑进行串口数据通讯试验
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -