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

📄 lcd.lst

📁 利用KEIL C51语言编写的T6963C液晶驱动程序,头文件有具体的连接定义和汉字字库,只要硬件连接好,一定可以运行,不象有人纯粹为了下载别人的代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 192   1            bitdata=0xf8+(0x7-(Lcd_CurrentX & 0x7));
 193   1         while((Lcd_Cmd_Reg & 0x3) != 0x3) ;
 194   1            Lcd_Cmd_Reg = bitdata;
 195   1      }
 196          
 197          /*----------------------------------------------------------------------------------------*/
 198          //绘制点子程序,最后一位为像素大小
 199          /*----------------------------------------------------------------------------------------*/
 200          void pointxy(unsigned char x,unsigned char y,unsigned char bitdata)      
 201          {  Lcd_CurrentX=x;
 202   1         Lcd_CurrentY=y;
 203   1         lcdpos();
 204   1         point(bitdata);
 205   1      }
 206          
 207          /*----------------------------------------------------------------------------------------*/
 208          //画线子程序:最后一位为线条的像素宽度
 209          /*----------------------------------------------------------------------------------------*/
 210          void linexy(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char bitdata)
 211          {                                                       //线
 212   1         unsigned char i,k;
 213   1         if(abs(y1-y0)>abs(x1-x0))
 214   1         {  if(y1>y0)
 215   2               for(i=y0;i<=y1;i++)
 216   2               {  if(x1>x0)
 217   3                  {  k=x1-x0;
 218   4                     k*=(i-y0);
 219   4                     k/=y1-y0;
 220   4                     pointxy(x0+k,i,bitdata);
 221   4                  }
 222   3                  else  //x1<x0
 223   3                  {  k=x0-x1;
 224   4                     k*=(i-y0);
 225   4                     k/=y1-y0;
 226   4                     pointxy(x0-k,i,bitdata);
 227   4                  }
 228   3               }
 229   2            else        //y1<y0
 230   2               for(i=y0;i>=y1;i--)
 231   2               {  if(x1>x0)
 232   3                  {  k=x1-x0;
 233   4                     k*=(y0-i);
 234   4                     k/=y0-y1;
 235   4                     pointxy(x0+k,i,bitdata);
 236   4                  }
 237   3                  else   //x1<x0
 238   3                  {  k=x0-x1;
 239   4                     k*=(y0-i);
 240   4                     k/=y0-y1;
 241   4                     pointxy(x0-k,i,bitdata);
C51 COMPILER V7.02b   LCD                                                                  08/02/2005 17:09:33 PAGE 5   

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

 304   3                  a1>>=1;
 305   3               }
 306   2               lcdpos();
 307   2               p=XSIZE&0X7;
 308   2               if(lx<8)
 309   2               {  if(XSIZE<8)
 310   3                  {  Lcd_Mask=LeftMask[k] & RightMask[p];
 311   4                     a1=lcdrd();
 312   4                     a1&=(~Lcd_Mask);
 313   4                     a1|=(a2 & Lcd_Mask);
 314   4                     lcdwd(a1);
 315   4                     lx=XSIZE;
 316   4                      Lcd_CurrentX+=XSIZE-k;
 317   4                  }
 318   3                  else   //XSIZE>=8
 319   3                  {  Lcd_Mask=LeftMask[k];
 320   4                     a1=lcdrd();
 321   4                     a1&=(~Lcd_Mask);
 322   4                     a1|=(a2 & Lcd_Mask);
 323   4                     lcdwd(a1);
 324   4                     lx+=8-k;
 325   4                     Lcd_CurrentX+=8-k;
 326   4                  }
 327   3               }
 328   2               else if(lx>=XSIZE-p)  //lx>=8
 329   2               {  if(k>=p)
 330   3                  {  s--;
 331   4                     a1=*s;
 332   4                     a2=0;
 333   4                     for(p=0;p<k;p++)
 334   4                     {  a2>>=1;
 335   5                        if((a1&0x1)==1) a2+=0x80;
 336   5                           a1>>=1;
 337   5                     }
 338   4                     p=XSIZE&0X7;
 339   4                  }
 340   3                  Lcd_Mask=RightMask[p];
 341   3                  a1=lcdrd();
 342   3                  a1&=(~Lcd_Mask);
 343   3                  a1|=(a2 & Lcd_Mask);
 344   3                  lcdwd(a1);
 345   3                  lx+=p;
 346   3                  Lcd_CurrentX+=p;
 347   3               }
 348   2               else    //lx>=8 and lx<XSIZE-p
 349   2               {  lcdwd(a2);
 350   3                  lx+=8;
 351   3                  Lcd_CurrentX+=8;
 352   3               }
 353   2               a1=*s;
 354   2            }
 355   1        Lcd_CurrentY-=YSIZE;
 356   1      }
 357          
 358          void main()
 359          { 
 360   1         lcdreset();
 361   1         Fill_Scr(0x55);            //显示竖条
 362   1         Lcddelay(6000);            //系统延时
 363   1         Fill_Scr(0xff);            //显示黑屏
 364   1         Lcddelay(6000);
 365   1      //   put_str_xy(0,0,"创新科技检测技术有限公司,联系电话0512-86163888");//显示汉字
C51 COMPILER V7.02b   LCD                                                                  08/02/2005 17:09:33 PAGE 7   

 366   1         put_str("创新科技检测技术有限公司,联系电话0512-86163888");
 367   1         Fill_Scr(0x00);
 368   1      //     
 369   1         rect(12,12,88,88,6);
 370   1         Lcddelay(5000);
 371   1         //Fill_Scr(0xff);
 372   1         //rect(12,12,88,120,0);
 373   1         lcdreset(); 
 374   1      }
 375          


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 + -