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

📄 lcd.lst

📁 dmf5005液晶屏的资料 dmf5005液晶屏的资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
 195          {  if(bitdata==0)
 196   1            bitdata=0xf0+(0x7-(Lcd_CurrentX & 0x7));
 197   1         else
 198   1            bitdata=0xf8+(0x7-(Lcd_CurrentX & 0x7));
 199   1         while((Lcd_Cmd_Reg & 0x3) != 0x3) ;
 200   1            Lcd_Cmd_Reg = bitdata;
 201   1      }
 202          
 203          /*----------------------------------------------------------------------------------------*/
 204          //绘制点子程序,最后一位为像素大小
 205          /*----------------------------------------------------------------------------------------*/
 206          void pointxy(unsigned char x,unsigned char y,unsigned char bitdata)      
 207          {  Lcd_CurrentX=x;
 208   1         Lcd_CurrentY=y;
 209   1         lcdpos();
 210   1         point(bitdata);
 211   1      }
 212          
 213          /*----------------------------------------------------------------------------------------*/
 214          //画线子程序:最后一位为线条的像素宽度
 215          /*----------------------------------------------------------------------------------------*/
 216          void linexy(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char bitdata)
 217          {                                                       //线
 218   1         unsigned char i,k;
 219   1         if(abs(y1-y0)>abs(x1-x0))
 220   1         {  if(y1>y0)
 221   2               for(i=y0;i<=y1;i++)
 222   2               {  if(x1>x0)
 223   3                  {  k=x1-x0;
 224   4                     k*=(i-y0);
 225   4                     k/=y1-y0;
 226   4                     pointxy(x0+k,i,bitdata);
 227   4                  }
 228   3                  else  //x1<x0
 229   3                  {  k=x0-x1;
 230   4                     k*=(i-y0);
 231   4                     k/=y1-y0;
 232   4                     pointxy(x0-k,i,bitdata);
 233   4                  }
 234   3               }
 235   2            else        //y1<y0
 236   2               for(i=y0;i>=y1;i--)
 237   2               {  if(x1>x0)
 238   3                  {  k=x1-x0;
 239   4                     k*=(y0-i);
 240   4                     k/=y0-y1;
C51 COMPILER V7.06   LCD                                                                   04/09/2007 22:41:17 PAGE 5   

 241   4                     pointxy(x0+k,i,bitdata);
 242   4                  }
 243   3                  else   //x1<x0
 244   3                  {  k=x0-x1;
 245   4                     k*=(y0-i);
 246   4                     k/=y0-y1;
 247   4                     pointxy(x0-k,i,bitdata);
 248   4                  }
 249   3               }
 250   2         }
 251   1         else            //abs(y1-y0)<abs(x1-x0)
 252   1         {  if(x1>x0)
 253   2               for(i=x0;i<=x1;i++)
 254   2               {  if(y1==y0)
 255   3                     pointxy(i,y0,bitdata);
 256   3                  else if(y1>y0)
 257   3                  {  k=y1-y0;
 258   4                     k*=(i-x0);
 259   4                     k/=x1-x0;
 260   4                     pointxy(i,y0+k,bitdata);
 261   4                  }
 262   3                  else     //y1<y0
 263   3                  {  k=y0-y1;
 264   4                     k*=(i-x0);
 265   4                     k/=x1-x0;
 266   4                     pointxy(i,y0-k,bitdata);
 267   4                  }
 268   3               }
 269   2            else
 270   2               for(i=x0;i>=x1;i--)
 271   2               {  if(y1==y0)
 272   3                     pointxy(i,y0,bitdata);
 273   3                  else if(y1>y0)
 274   3                  {  k=y1-y0;
 275   4                     k*=(x0-i);
 276   4                     k/=x0-x1;
 277   4                     pointxy(i,y0+k,bitdata);
 278   4                  }
 279   3                  else     //y1<y0
 280   3                  {  k=y0-y1;
 281   4                     k*=(x0-i);
 282   4                     k/=x0-x1;
 283   4                     pointxy(i,y0-k,bitdata);
 284   4                  }
 285   3             }
 286   2        }
 287   1      }
 288          
 289          void rect(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char bitdata)
 290          {                                                      //矩形
 291   1         linexy(x0,y0,x0,y1,bitdata);
 292   1         linexy(x0,y0,x1,y0,bitdata);
 293   1         linexy(x0,y1,x1,y1,bitdata);
 294   1         linexy(x1,y0,x1,y1,bitdata);
 295   1      }
 296          
 297          void putsizeimage(unsigned char XSIZE,unsigned char YSIZE,unsigned char code *s)
 298          {  unsigned char k,lx,ly,a1,a2,x;
 299   1         Lcddelay(1000);
 300   1         k=Lcd_CurrentX&0X7;
 301   1         XSIZE+=k;
 302   1         x=Lcd_CurrentX;    //计算开始显示的地址X
C51 COMPILER V7.06   LCD                                                                   04/09/2007 22:41:17 PAGE 6   

 303   1         for(ly=0;ly<YSIZE;ly++,Lcd_CurrentY++)
 304   1            for(Lcd_CurrentX=x,lx=k,a1=0;lx<XSIZE;s++)
 305   1            {  unsigned char p;
 306   2               a2=*s;
 307   2               for(p=0;p<k;p++)
 308   2               {  a2>>=1;
 309   3                  if((a1&0x1)==1) 
 310   3                              a2+=0x80;
 311   3                  a1>>=1;
 312   3               }
 313   2               lcdpos();
 314   2               p=XSIZE&0X7;
 315   2               if(lx<8)
 316   2               {  if(XSIZE<8)
 317   3                  {  Lcd_Mask=LeftMask[k] & RightMask[p];
 318   4                     a1=lcdrd();
 319   4                     a1&=(~Lcd_Mask);
 320   4                     a1|=(a2 & Lcd_Mask);
 321   4                     lcdwd(a1);
 322   4                     lx=XSIZE;
 323   4                      Lcd_CurrentX+=XSIZE-k;
 324   4                  }
 325   3                  else   //XSIZE>=8
 326   3                  {  Lcd_Mask=LeftMask[k];
 327   4                     a1=lcdrd();
 328   4                     a1&=(~Lcd_Mask);
 329   4                     a1|=(a2 & Lcd_Mask);
 330   4                     lcdwd(a1);
 331   4                     lx+=8-k;
 332   4                     Lcd_CurrentX+=8-k;
 333   4                  }
 334   3               }
 335   2               else if(lx>=XSIZE-p)  //lx>=8
 336   2               {  if(k>=p)
 337   3                  {  s--;
 338   4                     a1=*s;
 339   4                     a2=0;
 340   4                     for(p=0;p<k;p++)
 341   4                     {  a2>>=1;
 342   5                        if((a1&0x1)==1) a2+=0x80;
 343   5                           a1>>=1;
 344   5                     }
 345   4                     p=XSIZE&0X7;
 346   4                  }
 347   3                  Lcd_Mask=RightMask[p];
 348   3                  a1=lcdrd();
 349   3                  a1&=(~Lcd_Mask);
 350   3                  a1|=(a2 & Lcd_Mask);
 351   3                  lcdwd(a1);
 352   3                  lx+=p;
 353   3                  Lcd_CurrentX+=p;
 354   3               }
 355   2               else    //lx>=8 and lx<XSIZE-p
 356   2               {  lcdwd(a2);
 357   3                  lx+=8;
 358   3                  Lcd_CurrentX+=8;
 359   3               }
 360   2               a1=*s;
 361   2            }
 362   1        Lcd_CurrentY-=YSIZE;
 363   1      }
 364          
C51 COMPILER V7.06   LCD                                                                   04/09/2007 22:41:17 PAGE 7   

 365          void main()
 366          { 
 367   1         lcdreset();
 368   1         Fill_Scr(0x55);            //显示竖条
 369   1         Lcddelay(6000);            //系统延时
 370   1         Fill_Scr(0xff);            //显示黑屏
 371   1         Lcddelay(6000);
 372   1      //   put_str_xy(0,0,"创新科技检测技术有限公司,联系电话0512-86163888");//显示汉字
 373   1         put_str("创新科技检测技术有限公司,联系电话0512-86163888");
 374   1         Fill_Scr(0x00);
 375   1      //     
 376   1         rect(12,12,88,88,6);
 377   1         Lcddelay(5000);
 378   1         //Fill_Scr(0xff);
 379   1         //rect(12,12,88,120,0);
 380   1         lcdreset(); 
 381   1      }
 382          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1702    ----
   CONSTANT SIZE    =    772    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      29
   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 + -