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

📄 st7529.lst

📁 ST7529为一32级灰度液晶显示屏驱动芯片
💻 LST
📖 第 1 页 / 共 3 页
字号:
 237          //向液晶屏EEPROM中读出数据函数 
 238          /********************************/
 239          void Read_LCM_EEPROM( void )
 240          {
 241   1         Wrcmd( 0x0030 ); // Ext = 0
C51 COMPILER V8.08   ST7529                                                                04/15/2008 16:12:18 PAGE 5   

 242   1         Wrcmd( 0x0007 ); // Initial code (1)
 243   1         Wrdata( 0x0019 );
 244   1         Wrcmd( 0x0031 ); // Ext = 1
 245   1         Wrcmd( 0x00CD ); // EEPROM ON
 246   1         Wrdata( 0x0000 ); // Entry "Read Mode"
 247   1         Delay( 100 ); // Waite for EEPROM Operation ( 100ms )
 248   1         Wrcmd( 0x00FD ); // Start EEPROM Reading Operation
 249   1         Delay( 100 ); // Waite for EEPROM Operation ( 100ms )
 250   1         Wrcmd( 0x00CC ); // Exist EEPORM Mode
 251   1         Wrcmd( 0x0030 ); // Ext = 0
 252   1      }
 253          /********************************/
 254          //向液晶屏EEPROM中写入数据函数 
 255          /********************************/
 256          void Write_LCM_EEPROM( void )
 257          {
 258   1         Wrcmd( 0x0030 ); // Ext = 0
 259   1         Wrcmd( 0x00AE ); // Display OFF
 260   1         Wrcmd( 0x0007 ); // Initial code(1)
 261   1         Wrdata( 0x0019 );
 262   1         Wrcmd( 0x0031 ); // Ext = 1
 263   1         Wrcmd( 0x00CD ); // EEPROM ON
 264   1         Wrdata( 0x0020 ); // Entry "Write Mode"
 265   1         Delay( 100 ); // Waite for EEPROM Operation ( 100ms )
 266   1         Wrcmd( 0x00FC ); // Start EEPROM Writing Operation
 267   1         Delay( 100 ); // Waite for EEPROM Operation ( 100ms )
 268   1         Wrcmd( 0x00CC ); // Exist EEPROM Mode
 269   1         Wrcmd( 0x0030 ); // Ext = 0
 270   1         Wrcmd( 0x00AF ); // Display ON
 271   1      }
 272          /****************************************/
 273          //写入地址函数 
 274          //col+end_X最大为194
 275          //row+end_Y最大为91
 276          /****************************************/
 277          void Loadxy(unsigned char end_X,unsigned char end_Y)
 278          {
 279   1           unsigned char i;
 280   1           Wrcmd(0X30);   //EXT=0
 281   1      
 282   1           Wrcmd(0X75);   //THIRD  COMMAND SET LINE ADDRESS 
 283   1               i=START_LINE+row;
 284   1           Wrdata(i);    //START LINE
 285   1               i=i+end_Y-1;
 286   1           Wrdata(i);  //END   LINE
 287   1      
 288   1           i=col/3;
 289   1               i=START_COL+i;
 290   1           Wrcmd(0X15);   //THIRD  COMMAND SET COLUMN ADDRESS 
 291   1           Wrdata(i);  //START COLUMN  
 292   1               if(end_X>2) i=(i+end_X/3);
 293   1               if((end_X%3)==0)  i--;
 294   1           Wrdata(i);  //END   COLUMN
 295   1      }
 296          /********************************/
 297          //LCD的全显点的测试程序 
 298          //可作为清屏函数调用。
 299          //入口数ucData为点的灰度。 
 300          /********************************/
 301          void WretPointTest(unsigned int ucData)
 302          {
 303   1         unsigned char i=0,j=0;
C51 COMPILER V8.08   ST7529                                                                04/15/2008 16:12:18 PAGE 6   

 304   1         col=0;row=0;
 305   1         Loadxy(194,91); //定义显示的坐标区域 
 306   1      
 307   1      
 308   1         Wrcmd(0X5C);  //DATA WRITE 
 309   1         LCD_initWR();
 310   1         for(i=0;i<MAX_ROW;i++)
 311   1         {
 312   2            for (j=0;j<MAX_COL_BLOCK;j++)
 313   2            { 
 314   3                       Wrcom(ucData);
 315   3            }
 316   2         }
 317   1      }
 318          /********************************/
 319          //LCD的显示一个点函数 
 320          //在LCD的col、row位置上显示一个点。
 321          //lum为这个点的亮度     为0时最暗,显示全黑色 
 322          /********************************/
 323          void Write_point(unsigned char lum)
 324          {
 325   1         unsigned int ucData;
 326   1         unsigned char i;
 327   1         unsigned int  temp=0;
 328   1      
 329   1         Wrcmd(0X30);   //EXT=0
 330   1      
 331   1         Wrcmd(0X75);   //THIRD  COMMAND SET LINE ADDRESS 
 332   1         i=START_LINE+row;
 333   1         Wrdata(i);    //START LINE
 334   1         Wrdata(i);  //END   LINE
 335   1         i=col/3;
 336   1         i=START_COL+i;
 337   1         Wrcmd(0X15);   //THIRD  COMMAND SET COLUMN ADDRESS 
 338   1         Wrdata(i);  //START COLUMN  
 339   1         Wrdata(i);  //END   COLUMN
 340   1      
 341   1         Wrcmd(0XE0);   //进入到读修改写模式 
 342   1         LCD_initRead(); //初始化读数据状态 
 343   1         LCD_dummyRead(); //假读一次
 344   1         ucData=LCD_DataRead();
 345   1      
 346   1         i = col%3;
 347   1         switch(i)
 348   1         {
 349   2             case 0:
 350   2                    temp=lum<<8;
 351   2                        temp=temp<<3;
 352   2                ucData=((ucData&0x07FF)|temp);
 353   2                break;
 354   2             case 1:
 355   2                    temp=lum<<6;
 356   2                ucData=((ucData&0xF83F)|temp);
 357   2                break;
 358   2             case 2:
 359   2                ucData=((ucData&0xFFE0)|lum);
 360   2                break;
 361   2         }
 362   1         Wrcom(ucData);
 363   1         Wrcmd(0XEE);   //退出读修改写模式 
 364   1      }
 365          
C51 COMPILER V8.08   ST7529                                                                04/15/2008 16:12:18 PAGE 7   

 366          /********************************/
 367          //LCD的一个块中三个像素合成显示函数 
 368          //入口数note为图像的地址 
 369          /********************************/
 370          unsigned char show_block(unsigned char code *note,unsigned char col_num)
 371          {
 372   1         unsigned int ucData;
 373   1         unsigned char i;
 374   1         unsigned int  temp=0;
 375   1      
 376   1         LCD_dummyRead(); //假读一次
 377   1         ucData=LCD_DataRead();
 378   1      
 379   1         i = col%3;
 380   1         switch(i)
 381   1         {
 382   2             case 0:
 383   2                    temp=*note<<8;
 384   2                        temp=temp<<3;
 385   2                    switch(col_num)
 386   2                        {
 387   3                          case 1:
 388   3                                i=1;
 389   3                    ucData=((ucData&0x07FF)|temp);    
 390   3                                break;
 391   3                              case 2:
 392   3                                note++; i=2;
 393   3                        temp=temp|(*note<<6);
 394   3                    ucData=((ucData&0x003F)|temp);
 395   3                                break;        
 396   3                              default:
 397   3                                note++; i=3;
 398   3                        temp=temp|(*note<<6);
 399   3                                note++;
 400   3                                ucData=temp|*note;
 401   3                                break;
 402   3                        }
 403   2                break;
 404   2             case 1:
 405   2                    temp=*note<<6;
 406   2                    if(col_num<2)
 407   2                        {
 408   3                                i=1;
 409   3                    ucData=((ucData&0xF83F)|temp);    
 410   3                        }
 411   2                        else
 412   2                        {
 413   3                                note++; i=2;
 414   3                        temp=temp|*note;
 415   3                    ucData=((ucData&0xF800)|temp);    
 416   3                        }
 417   2                break;
 418   2             case 2:
 419   2                    i=1;
 420   2                ucData=((ucData&0xFFE0)|*note);
 421   2                break;
 422   2                 default: i=0;
 423   2                    break;
 424   2         }
 425   1         if(Reverse)  ucData=~ucData;  //取反,以反显
 426   1         RD = 1;   //读数据端置1
 427   1         Wrcom(ucData);
C51 COMPILER V8.08   ST7529                                                                04/15/2008 16:12:18 PAGE 8   

 428   1         return i;
 429   1      }
 430          
 431          /********************************/
 432          //LCD的显示一个矩阵图像函数 
 433          //点阵数为从左至右、从下至上的模向扫描 
 434          //入口数note为图像的首地址 
 435          //入口数col_num、row_num为图像的宽和高 。
 436          /********************************/
 437          void show_photo(unsigned char code *note,unsigned char col_num,unsigned char row_num)
 438          {
 439   1         unsigned char i,j;
 440   1         unsigned char bak_col;
 441   1         unsigned char a;
 442   1         Loadxy(col_num,row_num); //写入图像的显示区域 
 443   1         Wrcmd(0XE0);   //进入到读修改写模式 
 444   1         LCD_initRead(); //初始化读数据状态 
 445   1      
 446   1         bak_col=col; 
 447   1         for(i=0;i<row_num;i++)
 448   1         {
 449   2            col=bak_col; j=col_num;
 450   2            while     (j!=0)
 451   2                {
 452   3                   a=show_block(note,j);
 453   3                       note=note+a;
 454   3                       j=j-a; col=col+a;        
 455   3            }
 456   2         }
 457   1         Wrcmd(0XEE);   //退出读修改写模式 
 458   1      }
 459          /********************************/
 460          //LCD的显示一个点阵字符函数。
 461          //字模数据为从左至右、从上至下的模向扫描模式 
 462          //字符点阵数为从左至右、从下至上的模向扫描 
 463          //入口数note为字符的首地址 
 464          //入口数col_num、row_num为字符的宽和高 。
 465          //入口数lum为字符显示的亮度 ,为0时,最黑 
 466          /********************************/
 467          void show_note(unsigned char code *note,unsigned char col_num,unsigned char row_num,unsigned char lum)
 468          {
 469   1         unsigned char i,j;
 470   1         unsigned char bak_col;
 471   1         unsigned char a,k;
 472   1         unsigned int ucData;
 473   1         unsigned int  temp1,temp2;
 474   1         temp1=lum<<8;
 475   1         temp1=temp1<<3;
 476   1         temp2=lum<<6;
 477   1      
 478   1         k=col_num/8;
 479   1         if((col_num%8)!=0)  k++;

⌨️ 快捷键说明

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