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

📄 main.lst

📁 这是我以前做过的51单片机实验代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 360          void ClearScreen(void)
 361           {
 362   1        unsigned char i,j;
 363   1        COM_2(0x00,0x00,0x24);//图形地址指针设置
 364   1        for(i=0;i<128;i++)//128行
 365   1        {
C51 COMPILER V8.08   MAIN                                                                  04/26/2008 18:12:39 PAGE 7   

 366   2         for(j=0;j<30;j++)//每行30个字节
 367   2         {
 368   3          COM_1(0x00,0xC0);//数据写,地址指针加1
 369   3         }
 370   2        }
 371   1        COM_2(0x00,0x10,0x24);//文本地址指针设置
 372   1        for(i=0;i<128;i++)
 373   1         {
 374   2         for(j=0;j<30;j++)
 375   2          {
 376   3           COM_1(0x00,0xC0);//数据写,地址指针加1
 377   3          
 378   3          }
 379   2         }
 380   1       }
 381          
 382          void initlcd(void)   //初始化
 383           {
 384   1         rst=0;      //reset
 385   1              delay(10); //delay 10ms
 386   1              rst=1;
 387   1                  COM_0(0x90);//显示关
 388   1        COM_2(0x00,0x10,0x40); //设置文本区首地址
 389   1        COM_2(0x1E,0x00,0x41); //设置文本区域(宽度)
 390   1        COM_2(0x00,0x00,0x42); //设置图形首地址
 391   1        COM_2(0x1E,0x00,0x43); //设置图形区域(宽度)
 392   1        COM_0(0x88);           //CGRAM方式,OR模式
 393   1        //COM_2(0x10,0x06,0x21); //设置光标指针
 394   1        //COM_2(0x00,0x00,0x22); //CGRAM偏置地址寄存器设置
 395   1        //COM_2(0x00,0x00,0x24); //地址指针设置,设置将要进行操作的显示缓冲区(RAM)的一个单元地址  
 396   1        //COM_0(0xA0);           //设置光标一行
 397   1         COM_0(0x9F);           //图形显示开,文本显示开,光标显示开,光标闪烁开
 398   1       }
 399          
 400           
 401          
 402          void ShowHZB(unsigned char line,unsigned char column,unsigned char indexB) //正显示16*16
 403           {
 404   1        unsigned char add_h,add_l;
 405   1        unsigned int addr;
 406   1        unsigned int StartAddr;
 407   1        StartAddr=line*30+column;  //定位起始行
 408   1        addr=indexB*16;        //code 储存地址,即字符代码地址
 409   1      
 410   1        while(addr<(indexB+2)*16)     //每次写32个字节
 411   1         {
 412   2          add_l=StartAddr%(0x0100); //低位地址
 413   2          add_h=StartAddr/(0x0100); //高位地址
 414   2          COM_2(add_l,add_h,0x24); //定位当前操作位置
 415   2          COM_1(HZ2[addr],0xc0);        //向当前操作位置写入要显示的内容,左半部分
 416   2          COM_1(HZ2[addr+1],0xc0);      //向当前操作位置写入要显示的内容,右半部分
 417   2          COM_0(0x9F);                  //图形显示开,文本显示开,光标显示开,光标闪烁开
 418   2          addr++;
 419   2          addr++;   //使字符代码指针指向下一要写入的字节
 420   2          StartAddr=StartAddr+30;  //每行30个字节,本指令使指针指向将要写入汉字(显示缓存)的下一行
 421   2         }
 422   1        StartAddr=0;  //写完一个汉字(16行)后,起始行复0
 423   1       }
 424          
 425          void R_ShowHZB(unsigned char line,unsigned char column,unsigned char indexB) //反显示16*16
 426           {
 427   1        unsigned char add_h,add_l,dat;
C51 COMPILER V8.08   MAIN                                                                  04/26/2008 18:12:39 PAGE 8   

 428   1        unsigned int addr;
 429   1        unsigned int StartAddr;
 430   1        StartAddr=line*30+column;  //定位起始行
 431   1        addr=indexB*16;    //code 储存地址
 432   1         while(addr<(indexB+2)*16)
 433   1          {
 434   2           add_l=StartAddr%(0x0100);   //低位地址
 435   2           add_h=StartAddr/(0x0100);   //高位地址
 436   2           COM_2(add_l,add_h,0x24);   //定位当前操作位置
 437   2           dat=HZ2[addr];
 438   2           dat=~dat;
 439   2           COM_1(dat,0xc0);
 440   2           dat=HZ2[addr+1];
 441   2           dat=~dat;
 442   2           COM_1(dat,0xc0);
 443   2           COM_0(0x9F);   //图形显示开,文本显示开,光标显示开,光标闪烁开
 444   2           addr++;
 445   2           addr++;
 446   2           StartAddr=StartAddr+30;
 447   2          }
 448   1        StartAddr=0;
 449   1       }
 450          
 451          void Showchar(unsigned char line,unsigned char column,unsigned char index) //显示字符8*16
 452           {
 453   1        unsigned char add_h,add_l;
 454   1        unsigned int addr;
 455   1        unsigned int StartAddr;
 456   1        StartAddr=line*30+column;    //定位起始行
 457   1        addr=index*16;      //code 储存地址
 458   1         while(addr<(index+1)*16)
 459   1          {
 460   2           add_l=StartAddr%(0x0100);   //低位地址
 461   2           add_h=StartAddr/(0x0100);   //高位地址
 462   2           COM_2(add_l,add_h,0x24);   //定位当前操作位置
 463   2           COM_1(HZ3[addr],0xc0);
 464   2           COM_0(0x9F);
 465   2           addr++;
 466   2           StartAddr=StartAddr+30;
 467   2          }
 468   1        StartAddr=0;
 469   1       }
 470          
 471          void R_Showchar(unsigned char line,unsigned char column,unsigned char index) //反显示8*16
 472           {
 473   1        unsigned char add_h,add_l,dat;
 474   1        unsigned int addr;
 475   1        unsigned int StartAddr;
 476   1        StartAddr=line*30+column;  //定位起始行
 477   1        addr=index*16;    //code 储存地址
 478   1         while(addr<(index+1)*16)
 479   1          {
 480   2           add_l=StartAddr%(0x0100);   //低位地址
 481   2           add_h=StartAddr/(0x0100);   //高位地址
 482   2           COM_2(add_l,add_h,0x24);   //定位当前操作位置
 483   2           dat=~HZ3[addr];
 484   2           COM_1(dat,0xc0);
 485   2           COM_0(0x9F);
 486   2           addr++;
 487   2           StartAddr=StartAddr+30;
 488   2          }
 489   1        StartAddr=0;
C51 COMPILER V8.08   MAIN                                                                  04/26/2008 18:12:39 PAGE 9   

 490   1       }
 491          
 492           
 493          
 494           
 495          void checkbusy(void)
 496               {
 497   1        unsigned char data0;
 498   1        cd=1;
 499   1         ce=1;
 500   1        ce=0;
 501   1        rd=0;
 502   1        wr=1;
 503   1        data0=P2;
 504   1         rd=1;
 505   1        ce=1;
 506   1           while((data0&0x03)!=0x03);
 507   1           }  
 508          
 509          
 510          void delay(unsigned int t)
 511               {
 512   1           while(t!=0) t--;     //t=10,10us
 513   1           }
 514          
 515           
 516          
 517          void main(void)     //主程序
 518          {   
 519   1       fs=0;            //font select ,H:6x8,L:8x8
 520   1       initlcd();       //初始化
 521   1       ClearScreen();  //清屏
 522   1            ShowHZB(0,2,0x00);
 523   1          //  R_Showchar(0,2,0x00);
 524   1          //ShowHZB(32,23,0x02);
 525   1       while(1);
 526   1      
 527   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    898    ----
   CONSTANT SIZE    =   2800    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      42
   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 + -