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

📄 main.lst

📁 QingDa光电5.6吋彩色液晶屏的C51控制程序。 硬件采用的是寄存器选通的间接控制方式!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 215   1              WriteRec(BLUE,199,48,200,49);
 216   1      //对其中的9点做镜像
 217   1              WriteRec(WHITE,179,40,180,41);
 218   1              WriteRec(WHITE,179,44,180,45);
 219   1              WriteRec(WHITE,179,48,180,49);
 220   1              WriteRec(WHITE,175,42,176,43);
 221   1              WriteRec(WHITE,175,46,176,47);
 222   1              WriteRec(WHITE,171,44,172,45);
 223   1              WriteRec(WHITE,171,48,172,49);
 224   1              WriteRec(WHITE,167,46,168,47);
 225   1              WriteRec(WHITE,163,48,164,49);
 226   1      //文字显示:模式选择
 227   1              Write32x32(0,  0,16);//模
 228   1              Write32x32(1, 32,16);//式
 229   1              Write32x32(2, 64,16);//选
 230   1              Write32x32(3, 96,16);//择
 231   1      //文字显示:模式一
 232   1              WriteRec(RED,   104, 82,111, 89);//(104,82)到(111,89)的红色矩形区域
 233   1              Write24x24(0,122, 74);//模
 234   1              Write24x24(1,146, 74);//式
 235   1              Write24x24(4,194, 74);//一
 236   1      //文字显示:模式二 
 237   1              WriteRec(YELLOW,104,111,111,118);//(104,111)到(111,118)的黄色矩形区域
 238   1              Write24x24(0,122,103);//模
 239   1              Write24x24(1,146,103);//式
 240   1              Write24x24(5,194,103);//二
 241   1      //文字显示:模式三
C51 COMPILER V7.02b   MAIN                                                                 03/19/2008 11:28:27 PAGE 5   

 242   1              WriteRec(GREEN, 104,140,111,147);//(104,140)到(111,147)的绿色矩形区域
 243   1              Write24x24(0,122,132);//模
 244   1              Write24x24(1,146,132);//式
 245   1              Write24x24(6,194,132);//三
 246   1      //文字显示:模式四
 247   1              WriteRec(PURPLE,104,169,111,176);//(104,169)到(111,176)的紫色矩形区域
 248   1              Write24x24(0,122,161);//模
 249   1              Write24x24(1,146,161);//式
 250   1              Write24x24(7,194,161);//四
 251   1      
 252   1              while(1);
 253   1      }
 254          /*-------------------------------------单色字节扩展函数-----------------------------------------------
 255          void WriteByte( unsigned char datain)           //参数:8位单色数据,前景色,背景色
 256          {
 257                  unsigned char i,j;      
 258                  for( i=0,j=0x80; i<8; i++,j=(j>>1))
 259                  {
 260                          WriteDAT(datain&j ? WHITE : BLUE);
 261                  }               
 262          }
 263          /*-----------------------------------------------------------------------------------------------------*/
 264          void SetDisp(void)// set back,front colors;clear display.
 265          {       
 266   1              WriteCMD(0x04);//写背景色//     
 267   1              WriteDAT(0xdb);//灰色
 268   1              WriteCMD(0x02);//写前景色//     
 269   1              WriteDAT(BLUE);
 270   1      
 271   1              WriteCMD(0x08);//清屏
 272   1              delay10us(30000);//delay 300ms; 
 273   1              WriteCMD(0x00);//CMD寄存器归零
 274   1      }         
 275          /*---------------------------------------140 x 170 LOGO写入程序---------------------------------------
 276          void WriteLogo(unsigned int j,unsigned int i)//i初始行设定,j为初始列设定
 277          {
 278                  unsigned int  x,y,n;
 279                  unsigned char k;
 280          
 281                  n=0;
 282                  for( y=i;y<i+170;y++ )//140 x 170  
 283                  {
 284                          x=j;            
 285                          WriteX(x);//列地址寄存器 写入
 286                          WriteY(y);//行地址寄存器 写入
 287                          WriteCMD(0x01);//8点写模式
 288                          for(k=0;k<18;k++)
 289                                  WriteDAT(TeliLogo[n++]);
 290                  }       
 291                  WriteCMD(0x00);//CMD归零
 292          }
 293          /*-----------------------------------------------------------------------------------------------------*/
 294          void Write32x32(unsigned int m,unsigned int x,unsigned int y)
 295          {                                               //起始地址(x,y),写一个32 x 32的汉字
 296   1              unsigned int  i,j,n; 
 297   1              unsigned char k;
 298   1              n=m*128; //计算地址,每个32*32点阵汉字有128个8位数据组成 
 299   1              for( i=y;i<y+32;i++ )  
 300   1              {
 301   2                      j=x;
 302   2                      WriteX(j);//列地址寄存器 写入
 303   2                      WriteY(i);//行地址寄存器 写入
C51 COMPILER V7.02b   MAIN                                                                 03/19/2008 11:28:27 PAGE 6   

 304   2                      WriteCMD(0x01);//8点写模式
 305   2                      for(k=0;k<4;k++)
 306   2                              WriteDAT(zk32[n++]);//写一个汉字32行中的一行,共32bits
 307   2              }
 308   1              WriteCMD(0x00);//CMD归零
 309   1      } 
 310          /*----------------------------------------------------------------------------------------------------*/
 311          void Write24x24(unsigned int m,unsigned int x,unsigned int y)
 312          {                                               //起始地址(x,y),写一个24 x 24的汉字
 313   1              unsigned int  i,j,n; 
 314   1              unsigned char k;
 315   1              n=m*72; //计算地址,每个24*24点阵汉字有72个8位数据组成 
 316   1              for( i=y;i<y+24;i++ )  
 317   1              {
 318   2                      j=x;
 319   2                      WriteX(j);//列地址寄存器 写入
 320   2                      WriteY(i);//行地址寄存器 写入
 321   2                      WriteCMD(0x01);//8点写模式
 322   2                      for(k=0;k<3;k++)
 323   2                              WriteDAT(zk24[n++]);//写一个汉字24行中的一行,共24bits
 324   2              }
 325   1              WriteCMD(0x00);//CMD归零
 326   1      } 
 327          /*----------------------------------------------------------------------------------------------------*/
 328          void Write16x16(unsigned int m,unsigned int x,unsigned int y)
 329          {                                               //起始地址(x,y),写一个16 x 16的汉字
 330   1              unsigned int  i,j,n; 
 331   1              unsigned char k;
 332   1              n=m*32; //计算地址,每个16*16点阵汉字有32个8位数据组成 
 333   1              for( i=y;i<y+16;i++ )  
 334   1              {
 335   2                      j=x;
 336   2                      WriteX(j);//列地址寄存器 写入
 337   2                      WriteY(i);//行地址寄存器 写入
 338   2                      WriteCMD(0x01);//8点写模式
 339   2                      for(k=0;k<2;k++)
 340   2                              WriteDAT(zk16[n++]);//写一个汉字16行中的一行,共16bits
 341   2              }
 342   1              WriteCMD(0x00);//CMD归零
 343   1      } 
 344          /*----------------------------------------------------------------------------------------------------*/
 345          void WriteRec(unsigned char color,unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
 346          {                                               //画一个左上角为(x1,y1)、右下角为(x2,y2)的矩形单色区域
 347   1              unsigned int  x,y;
 348   1              unsigned char k;
 349   1      
 350   1              for( y=y1;y<y2+1;y++ )
 351   1              {
 352   2                      x=x1;           
 353   2                      WriteX(x);//列地址寄存器 写入
 354   2                      WriteY(y);//行地址寄存器 写入
 355   2                      WriteCMD(0x00);//单点写模式
 356   2                      for(k=0;k<x2-x1+1;k++)
 357   2                              WriteDAT(color);
 358   2              }       
 359   1              WriteCMD(0x00);//CMD归零
 360   1      } 
 361          /*----------------------------------------------------------------------------------------------------
 362          void WritePic(unsigned int x,unsigned int y)
 363          {
 364                  unsigned char k;
 365                  unsigned int i,j,cnt;
C51 COMPILER V7.02b   MAIN                                                                 03/19/2008 11:28:27 PAGE 7   

 366          
 367                  cnt=0;
 368                  for (i=y;i<40+y;i++)
 369                  {
 370                          j=x;                            
 371                          WriteY(i);//行地址寄存器 写入                           
 372                          WriteX(j);//列地址寄存器 写入                   
 373                          WriteCMD(0x00);//单点写模式
 374                          for (k=0;k<40;k++) 
 375                                  WriteDAT(rose[cnt++]);
 376                  }   
 377          }
 378          /*------------------------------------------------------------------------------------------------------
 379          void WriteGrid(void)//m为汉字代码,i初始行设定,j为初始列设定
 380          {
 381                  unsigned int  i, j, k, z, x, y, m;
 382                  i=0;
 383                  WriteCMD(0x00);
 384                  for(j=0;j<8;j++)//显示彩色方格
 385                  {
 386                          for (z=0;z<18;z++)
 387                          {
 388                                  for (k=0;k<13;k++)
 389                                  {
 390                                          x=j*40;
 391                                          y=z*13+k;
 392                                          WriteX(x);
 393          //                              WriteX(x/256);
 394                                          WriteY(y);
 395                                          for (m=0;m<40;m++)
 396                                                  WriteDAT(i);
 397                                  }
 398                                  i++;
 399                          }
 400                  }
 401          }
 402          /*------------------------------------------------------------------------------------------------------*/
 403          void delay10us(int delay)
 404          {
 405   1          int delay1;
 406   1          for(delay1=0;delay1<delay;delay1++)
 407   1          _nop_();  
 408   1              _nop_();
 409   1              _nop_();//delay n*20*0.5us=n*10us
 410   1      }
 411          /*------------------------------------------------------------------------------------------------------
 412           5.6吋256色假彩屏控制器 QD13特点 
 413          1、快速清屏功能;只需发送一条指令,控制板在16.6毫秒内以指定的颜色对整个画面进行清屏,
 414                 清屏过程无须单片机的干预,极大地提高了开机和单一背景色的显示速度。
 415          2、提供8点写模式;使得彩色屏的操作与单色屏一样,
 416                 极大地提高了汉字、英文字母、数字、以及单色位图的显示速度。
 417          3、提供灵活的地址自动加一功能;地址自动加一的方向可以任意设置为X方向或Y方向。
 418                 地址沿X方向自动加一时,遇到行尾将自动跳到下一行的行首。
 419                 地址沿Y方向自动加一时,遇到列尾将自动跳到下一列的列首。
 420          /*------------------------------------------------------------------------------------------------------*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1512    ----
   CONSTANT SIZE    =   1888    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.02b   MAIN                                                                 03/19/2008 11:28:27 PAGE 8   

   DATA SIZE        =   ----      27
   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 + -