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

📄 lcd_12864.lst

📁 the driver of 12864 and it includes line
💻 LST
📖 第 1 页 / 共 3 页
字号:
 248          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 249          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 250          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 251          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 252          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 253          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 254          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 255          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 256          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 257          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 258          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 259          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 260          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 261          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 262          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 263          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 264          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 265          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 266          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 267          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 268          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 269          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 270          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 271          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 272          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 273          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 274          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 275          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 276          
 277           };
 278          
 279          void System_initial( )
 280          {
 281   1         uint i;
 282   1          
 283   1         WDTCN=0xde;
 284   1         WDTCN=0xad; 
 285   1                                     
 286   1         OSCXCN=0x67;                                                             
 287   1         for (i=0;i<256;i++) ;          
 288   1         while (!(OSCXCN&0x80));        
 289   1         OSCICN = 0x88;                      
 290   1                                       
 291   1      }
 292          
 293          void Port_initial( )     //端口配置对程序很有影响
 294          {
 295   1         XBR0=0x00; 
 296   1         XBR1=0x00;
 297   1         XBR2=0x40;                    
 298   1         P74OUT=0xff;          //p4口低3位做液晶控制口,p5口做液晶数据口
 299   1                                           //P7做AD7520的高8位,P6低2位做ad7520低2位
 300   1      
 301   1         P0MDOUT=0xff;     //P0口作FPGA数据口
 302   1         P1MDOUT=0x00;         //P1口键盘输入
 303   1         P2MDOUT=0xff;     //P2口高3位控制AD9851,P2低2位控制FPGA的数据选择位
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 6   

 304   1         P3MDOUT=0xff;         //P3口做AD9851的数据口 
 305   1      
 306   1      
 307   1      }
 308          
 309          
 310          /*------------------初始化-----------------*/
 311          void init_lcd (void)
 312          {       
 313   1          //P4=P4&0xfe;//LCD_RST=0; //P4=P4&0x 1110 1111
 314   1              //delay(10);
 315   1              //P4=P4|0x80;
 316   1              //P4=P4|0x01;//LCD_RST=1;       //P4=P4|0x 0001 0000
 317   1              //delay(10);
 318   1        
 319   1              P0=P0|0x10;
 320   1              delay(20);
 321   1          P0=P0|0x08;
 322   1              delay(20);
 323   1         wr_lcd (comm,0x30);/*30---基本指令动作*/
 324   1              delay(20);   
 325   1        wr_lcd (comm,0x0c);  /*开显示,关游标*/
 326   1              delay(20); 
 327   1         wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
 328   1              delay(20);
 329   1         wr_lcd (comm,0x06);  /*光标的移动方向*/
 330   1              delay(20);
 331   1       
 332   1      }
 333          /*---------------显示汉字或字符----------------*/
 334          void chn_disp (uchar code *chn)
 335          {
 336   1        uchar i,j;
 337   1        wr_lcd (comm,0x30);
 338   1        wr_lcd (comm,0x80);
 339   1        for (j=0;j<4;j++)
 340   1        {
 341   2          for (i=0;i<16;i++)
 342   2          wr_lcd (dat,chn[j*16+i]);
 343   2        }
 344   1      }
 345          /*-----------上半屏显示汉字或字符------------*/
 346          void chn_disp1 (uchar code *chn)
 347          {
 348   1        uchar i,j;
 349   1        wr_lcd (comm,0x30);
 350   1        wr_lcd (comm,0x80);
 351   1        j=0;
 352   1        for (i=0;i<16;i++)
 353   1        wr_lcd (dat,chn[j*16+i]);
 354   1        wr_lcd (comm,0x90);
 355   1        j=1;
 356   1        for (i=0;i<16;i++)
 357   1        wr_lcd (dat,chn[j*16+i]);
 358   1      }
 359          
 360          /*void point()
 361          {
 362                    wr_lcd (comm,0x34);
 363                wr_lcd (comm,y+20);
 364                wr_lcd (comm,x1+21);
 365                wr_lcd (comm,0x30);
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 7   

 366                wr_lcd (dat,0xaa);
 367                wr_lcd (dat,0xaa);
 368                    wr_lcd (comm,0x36);
 369          }*/
 370          
 371           void Locat_Dot(uchar x_loc,uchar y_loc)//参数是:点的坐标
 372          {  
 373   1              uchar s0;
 374   1              uint dot_data,ori_data1,ori_data2;
 375   1              uchar Column,move;
 376   1               if(y_loc>31){
 377   2              Column = x_loc/16; 
 378   2          y_loc  = 63 - y_loc ;}
 379   1            else 
 380   1                {
 381   2                     y_loc  = 31 - y_loc ;
 382   2                         Column = (x_loc/16)+8;
 383   2                          }
 384   1                        move = x_loc%16; 
 385   1                /*wr_lcd (comm,0x34);
 386   1            wr_lcd (comm,y+y_loc);
 387   1            wr_lcd (comm,x1+Column);
 388   1                wr_lcd (dat,0xbb);
 389   1                wr_lcd (dat,0xaa);
 390   1                wr_lcd (comm,0x36);*/
 391   1                wr_lcd (comm,0x34);
 392   1            wr_lcd (comm,y+y_loc);
 393   1            wr_lcd (comm,x1+Column);
 394   1                s0=Read_state();
 395   1                ori_data1=Read_state();
 396   1                ori_data2=Read_state();
 397   1                if(move<8){ 
 398   2                dot_data = 0x80>>move;
 399   2                dot_data = dot_data | ori_data1;      
 400   2                wr_lcd (comm,0x34);
 401   2            wr_lcd (comm,y+y_loc);
 402   2            wr_lcd (comm,x1+Column);
 403   2            wr_lcd (comm,0x30);   
 404   2                wr_lcd (dat,dot_data);  
 405   2                wr_lcd (dat,ori_data2);
 406   2                wr_lcd (comm,0x36);
 407   2                delay(20);
 408   2                }
 409   1                else{
 410   2                move=move-8;
 411   2                dot_data = 0x80>>move;
 412   2                dot_data = dot_data | ori_data2;
 413   2                wr_lcd (comm,0x34);
 414   2            wr_lcd (comm,y+y_loc);
 415   2            wr_lcd (comm,x1+Column);
 416   2            wr_lcd (comm,0x30);  
 417   2            wr_lcd (dat,ori_data1);
 418   2                wr_lcd (dat,dot_data);
 419   2                wr_lcd (comm,0x36);
 420   2                delay(20);
 421   2                }
 422   1                      
 423   1        }
 424          
 425             void Line(uchar a1,uchar b1,uchar a2,uchar b2)
 426          {
 427   1                         //y1 = 64 - y1 ;
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 8   

 428   1                         //y2 = 64 - y2 ;
 429   1              char i;
 430   1          char a,b;
 431   1              float y_add;
 432   1              a=a2-a1;
 433   1          b=b2-b1;
 434   1              if(a==0)//画竖线
 435   1              {            
 436   2                      if(b>0)
 437   2                      {       for(i=0;i<b;i++)//上升  
 438   3                              Locat_Dot(a1,b1+i);
 439   3                      }
 440   2                      else if(b==0) //画点
 441   2                              Locat_Dot(a1,b1);
 442   2                      else               //下降
 443   2                      {   for(i=b;i<0;i++)    
 444   3                              Locat_Dot(a1,b1+i);
 445   3                      }
 446   2              }
 447   1              else  y_add = b*1.000/a; //斜线:斜率
 448   1              
 449   1              if(a>0)//正向
 450   1              {
 451   2                      if((y_add<=1)&&(y_add>=-1))//0°~~ 45°到135°~~ 180°
 452   2                      { 
 453   3                              for(i=0;i<a;i++)        
 454   3                              { 
 455   4                                 delay(20);
 456   4                               b=b1+y_add*i;
 457   4                                 Locat_Dot(a1+i,b);
 458   4                              }
 459   3                      }
 460   2                      else
 461   2                      {
 462   3                           if(b>0)      //正向上升
 463   3                               {
 464   4                                      for(i=0;i<b;i++)
 465   4                                      {
 466   5                                              a=a1+i/y_add;
 467   5                                              Locat_Dot(a,b1+i);
 468   5                                      }
 469   4                               }
 470   3                               else if(b==0)//水平线
 471   3                               {
 472   4                                   for(i=0;i<a;i++)   
 473   4                                   Locat_Dot(a1+i,b1);
 474   4                               }
 475   3                               else         //正向下降
 476   3                               {
 477   4                                   for(i=b;i<0;i++)
 478   4                                   {
 479   5                                              a=a1+i/y_add;
 480   5                                              Locat_Dot(a,b1+i);
 481   5                                       }
 482   4                               }
 483   3                       } 
 484   2              }//正向
 485   1              else if(a<0)//反向
 486   1          {      
 487   2                      if(y_add <=1&&y_add>=-1)//0°~ 45°到 135°~ 180°
 488   2                      {
 489   3                              for(i=a;i<0;i++)        
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 9   

 490   3                              {
 491   4                                      b=b1+y_add*i;
 492   4                                      Locat_Dot(a1+i,b);
 493   4                              }
 494   3                      }
 495   2                      else
 496   2                      {
 497   3                          if(b>0)
 498   3                              {
 499   4                                      for(i=0;i<b;i++)
 500   4                                      {
 501   5                                              a=a1+i/y_add;
 502   5                                              Locat_Dot(a,b1+i);
 503   5                                      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -