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

📄 c19264.lst

📁 192X64液晶的80c51单片机语言液晶驱动文件
💻 LST
📖 第 1 页 / 共 2 页
字号:
 232          //lin:行(0-7), column: 列(0-15)
 233          //address : 字模区首地址
 234          void Show88(Uchar lin,Uchar column,Uchar code  *address)
 235          { Uchar i; 
 236   1      if(column>15) {SelectScreen(3);}
 237   1      else if(column<8) SelectScreen(1); //如果列数<8(0,1,2,3,4,5,6,7,9,10,11)则写在第一屏上
 238   1      else {SelectScreen(2);}
 239   1      
 240   1      SetLine(lin);
 241   1      if(column>=16)column=column-16;
C51 COMPILER V8.02   C19264                                                                02/28/2008 11:45:20 PAGE 5   

 242   1      if(column>=8)column=column-8;
 243   1      //SetStartLine(lin);
 244   1      SetColumn(column<<3);
 245   1      for(i=0;i<8;i++) WriteByte( *(address+i) );
 246   1      }
 247          
 248          /*------------------------------------------------*/
 249          //显示图片
 250          //旋转90度 :字模被竖着切分
 251          //startline :开始行
 252          //startcolumn:开始列
 253          //linechar :图片行点除8(图片以8*8点阵为单位)
 254          //columnchar :图片列点除8(图片以8*8点阵为单位)
 255          //address : 字模区首地址
 256          
 257          /******************************************************************************
 258          **  函数名:       void ShowPicture(Uchar startline,Uchar startcolumn,
 259                                     Uchar linechar,Uchar columnchar,Uchar code  *address)
 260          
 261          **  描述: 
 262          
 263          **  修改的全局变量: 
 264          
 265          **  输入参数:
 266          
 267          **  返回值: 
 268          *******************************************************************************/
 269          void ShowPicture(Uchar startline,Uchar startcolumn,Uchar linechar,Uchar columnchar,Uchar code  *address)
 270          { Uchar i,j;
 271   1      for(i=0;i<columnchar;i++)
 272   1      for(j=0;j<linechar;j++)
 273   1      Show88(startline+i , startcolumn+j , address+(i*linechar+j)*8 );
 274   1      }
 275          
 276          
 277          /*----------------------------------------------------------*/
 278          //显示一个汉字
 279          //旋转90度:字模被竖着切分
 280          //lin:行(0-3), column: 列(0-15)
 281          //hzcode: 汉字代码(自定义的)
 282          //uchar code HZtable
 283          void ShowHZ(Uchar lin,Uchar column,Uchar code  *address)
 284          {
 285   1      lin=lin<<1; //lin*2
 286   1      Show88(lin,column,address);
 287   1      Show88(lin,column+1,address+8);
 288   1      Show88(lin+1,column,address+16);
 289   1      Show88(lin+1,column+1,address+24);
 290   1      }
 291          
 292          void Display_Chinese(unsigned int UniCode,Uchar X,Uint Y)
 293          {  
 294   1         Uchar i;
 295   1         Uchar * ImgData;
 296   1         Uint CodeID;
 297   1         
 298   1         for(i=0;i<hzNum;i++)
 299   1           {
 300   2              if( (hzIndex[2*i]==(Uchar)(UniCode>>8)) && (hzIndex[2*i+1]==(Uchar)UniCode) )
 301   2                 {                
 302   3                      CodeID=i;    break;
 303   3                 }
C51 COMPILER V8.02   C19264                                                                02/28/2008 11:45:20 PAGE 6   

 304   2           }
 305   1            ImgData=&hzdot[CodeID*32];
 306   1            ShowHZ(X,Y,ImgData);
 307   1        
 308   1      }
 309          
 310          void Display_ASCII(Uchar Char,Uchar X,Uint Y)
 311          {  
 312   1           Uchar code * ImgData;
 313   1          {  
 314   2            
 315   2           ImgData=&ASC_MSK[(Char-0x20)*16]; 
 316   2              
 317   2           Show88(2*X,Y,ImgData);  
 318   2                   
 319   2           ImgData=&ASC_MSK[(Char-0x20)*16+8];  
 320   2              
 321   2           Show88(2*X+1,Y,ImgData);
 322   2          }
 323   1      }
 324          /******************************************************************************
 325          **  函数名:              void Display_Number(Uint Number,Uchar X,Uint Y,Uchar Lenth)
 326          
 327          **  描述:                                显示一串数字
 328          
 329          **  修改的全局变量: 
 330          
 331          **  输入参数:
 332          
 333          **  返回值: 
 334          *******************************************************************************/
 335          void Display_Number(Uint Number,Uchar X,Uint Y,Uchar Lenth)
 336          {  Uchar DispNum;
 337   1         Y=Y+Lenth-1;
 338   1         for(;Lenth>0;Lenth--)
 339   1         {
 340   2        
 341   2          DispNum=Number%10+0x30;
 342   2          Display_ASCII(DispNum,X,Y);
 343   2          Y--;
 344   2          Number=Number/10;  
 345   2         }
 346   1      }
 347          
 348          /******************************************************************************
 349          **  函数名:        void Display_String(Uchar code *p,Uchar X,Uint Y,Uchar lenth)
 350          
 351          **  描述:                  显示一个字符串
 352          
 353          **  修改的全局变量: 
 354          
 355          **  输入参数:      Uchar lenth: 字符串长度
 356          
 357          **  返回值: 
 358          *******************************************************************************/
 359          void Display_String(Uchar code *p,Uchar X,Uint Y,Uchar lenth)
 360          { Uchar i;
 361   1        for(i=0;i<lenth;i++)
 362   1         {
 363   2          if(p[i]<0x80) {Display_ASCII(p[i],X,Y);Y++;}    //ASCII
 364   2          else 
 365   2             {
C51 COMPILER V8.02   C19264                                                                02/28/2008 11:45:20 PAGE 7   

 366   3               Display_Chinese((p[i])*256+p[i+1],X,Y);//中文
 367   3               i++;
 368   3               Y++;
 369   3               Y++;
 370   3             }     
 371   2           
 372   2         }
 373   1        
 374   1      }
 375          void Pixel(unsigned int PointX,unsigned int PointY )
 376          {
 377   1      unsigned char dat;
 378   1      unsigned char shift;
 379   1      if(PointX>191)return;
 380   1      if(PointX>127) {SelectScreen(3);}
 381   1      else if(PointX<64) SelectScreen(1); //如果列数<8(0,1,2,3,4,5,6,7,9,10,11)则写在第一屏上
 382   1      else {SelectScreen(2);}
 383   1      
 384   1      SetLine(PointY/8);
 385   1                                                       
 386   1      if(PointX>=128)PointX=PointX-128;
 387   1      if(PointX>=64)PointX=PointX-64;
 388   1      SetColumn(PointX);
 389   1      dat=ReadByte();
 390   1      
 391   1      SetLine(PointY/8);
 392   1      SetColumn(PointX);
 393   1      //dat = 0;
 394   1      shift= PointY%8;
 395   1      dat |=(1<<shift);
 396   1      WriteByte(dat);
 397   1      }
 398          
 399          /***************************************************************************************/
 400          /*函数:void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2)
 401          //描述:划线函数
 402          //参数:x1:起始点横坐标(0-127),y1:起始点纵坐标(0-31)
 403          //     x2:终止点横坐标(0-127),y2:终止点纵坐标(0-31)
 404          //   
 405          //返回:无
 406          /***************************************************************************************/
 407          void Line( unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2)
 408          {
 409   1              unsigned int x,y;
 410   1              double k,b;
 411   1      
 412   1              if( abs(y1-y2) <= abs(x1-x2) ) // |k|<=1
 413   1              {
 414   2                      k=(float)((float)y2-(float)y1) / (float)((float)x2-(float)x1) ;
 415   2                      b=y1-k*x1;//
 416   2                      if( x1 <= x2 )
 417   2                      {
 418   3                              for(x=x1;x<=x2;x++)
 419   3                              {
 420   4                                      y=k*x+b;
 421   4                                      Pixel(x, y);
 422   4                              }
 423   3                      }
 424   2                      else
 425   2                      {
 426   3                              for(x=x2;x<=x1;x++)
 427   3                              {
C51 COMPILER V8.02   C19264                                                                02/28/2008 11:45:20 PAGE 8   

 428   4                                      y=k*x+b;
 429   4                                      Pixel(x, y );
 430   4                              }
 431   3                      }
 432   2              }
 433   1              else // abs(y1-y2) > abs(x1-x2) |K|>1
 434   1              {
 435   2                      k=(float)((float)x2-(float)x1) / (float)((float)y2-(float)y1) ;
 436   2                      b=x1-k*y1;
 437   2                      if( y1 <= y2 )
 438   2                      {
 439   3                              for(y=y1;y<=y2;y++)
 440   3                              {
 441   4                                      x=k*y+b;
 442   4                                      Pixel( x , y );
 443   4                              }
 444   3                      }
 445   2                      else
 446   2                      {
 447   3                              for(y=y2;y<=y1;y++)
 448   3                              {
 449   4                                      x=k*y+b;
 450   4                                      Pixel( x , y );
 451   4                              }
 452   3                      }
 453   2              }
 454   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2358    ----
   CONSTANT SIZE    =   5160    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     85    ----
   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 + -