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

📄 lcd.lst

📁 12232的液晶显示程序,是胖胖工作室写的一个范例.我就是用这个程序了解LCD的编程了.相当不错.替胖胖工作室贡献给大家了.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 201   2                      LCD_Write_Set(yPos + i,0);              //Page_LCD[i] i=0 first page i=7 seventh page
 202   2              //      LCD_Write_Set((xPos>>4)&0x0F|0x10,0);   //set col address msb
 203   2                      LCD_Write_Set(xPos,0);                          //set col address lsb
 204   2              }
 205   1      }
 206          
 207          /*--------------------------------------------------------------
 208          //清除一行子程序
 209          ------------------------------------------------------------*/
 210          void Clear_H_LCD(unsigned char H)
 211          {
 212   1              unsigned char i,j;
 213   1              Set_xyPos_LCD(0, H << 1 );                              //set col address lsb
 214   1              for( i = 0;i < 2;i++ )
 215   1              {
 216   2                      for( j = 0;j < 61;j++ )
 217   2                              LCD_Write_Data( 0x55,0 );
 218   2                      Set_xyPos_LCD(0, (H << 1) + 1);         //set col address lsb
 219   2              }
 220   1              Set_xyPos_LCD(61, H << 1 );                             //set col address lsb
 221   1              for( i = 0;i < 2;i++ )
 222   1              {
 223   2                      for( j = 0;j < 61;j++ )
 224   2                              LCD_Write_Data( 0x55,1 );
 225   2                      Set_xyPos_LCD(61, (H << 1) + 1);        //set col address lsb
 226   2              }
 227   1      }
 228          
 229          
 230          /*---------------------------------------------------------------------------------
 231          //延时1MS子程序
 232          ---------------------------------------------------------------------------------*/
 233          void Delay_xMs(unsigned int xMs)
 234          {
 235   1              unsigned int i,j;
 236   1              for(i=0;i<xMs;i++)
 237   1              {
 238   2                      for(j=0;j<500;j++)
 239   2                      ;
 240   2              }
 241   1      }
C51 COMPILER V7.06   LCD                                                                   03/13/2005 21:02:58 PAGE 5   

 242          
 243          /*---------------------------------------------------------------------------------
 244          //在X,Y处显示一个16*8的西文sData (0---d)
 245          ---------------------------------------------------------------------------------*/
 246          void Show_XW_LCD(unsigned char xPos,unsigned char yPos,unsigned char sData)     
 247          {
 248   1              bit F;
 249   1              unsigned int nTmp;
 250   1              unsigned char j,x,y;
 251   1              x = xPos;
 252   1              y = yPos;
 253   1              nTmp = sData * 16;
 254   1              for ( j = 0;j < 16;j+=2 )
 255   1              {
 256   2                      Set_xyPos_LCD(x,y);
 257   2                      F = 0;
 258   2                      if ( x > 60 )
 259   2                              F = 1;
 260   2                      LCD_Write_Data(Large_DianZen[nTmp + j],F);
 261   2                      x++;
 262   2              }
 263   1      
 264   1              y++;
 265   1              x = xPos;
 266   1              for ( j = 1;j < 16;j+=2 )
 267   1              {
 268   2                      Set_xyPos_LCD(x,y);
 269   2                      F = 0;
 270   2                      if ( x > 60 )
 271   2                              F = 1;
 272   2                      LCD_Write_Data(Large_DianZen[nTmp + j],F);
 273   2                      x++;
 274   2              }
 275   1      }
 276          
 277          /*---------------------------------------------------------------------------------
 278          //在X,Y处显示一个16*16的汉字
 279          ---------------------------------------------------------------------------------*/
 280          void Show_HZ_LCD ( unsigned char xPos, unsigned char yPos,unsigned char sData )
 281          {
 282   1              bit F;
 283   1              unsigned int nTmp;
 284   1              unsigned char j,x,y;
 285   1              x = xPos;
 286   1              y = yPos;
 287   1              nTmp = sData * 32;
 288   1              for ( j = 0;j < 32;j+=2 )
 289   1              {
 290   2                      Set_xyPos_LCD(x,y);
 291   2                      F = 0;
 292   2                      if ( x > 60 )
 293   2                              F = 1;
 294   2                      LCD_Write_Data(HanZi[nTmp + j],F);
 295   2                      x++;
 296   2              }
 297   1      
 298   1              y++;
 299   1              x = xPos;
 300   1              for ( j = 1;j < 32;j+=2 )
 301   1              {
 302   2                      Set_xyPos_LCD(x,y);
 303   2                      F = 0;
C51 COMPILER V7.06   LCD                                                                   03/13/2005 21:02:58 PAGE 6   

 304   2                      if ( x > 60 )
 305   2                              F = 1;
 306   2                      LCD_Write_Data(HanZi[nTmp + j],F);
 307   2                      x++;
 308   2              }
 309   1      }
 310          
 311          /*-------------------------------------------------------------------------------------
 312          预先定义内容表为LCD_Show_Tab[]
 313          汉字表为HanZi[]
 314          大西文表为Large_DianZen[]
 315          与90H的分界碰到90H则是汉字,否则是西文
 316          --------------------------------------------------------------------------------------*/
 317          void Print_LCD (  unsigned char xPos, unsigned char yPos,int nSentenceID )
 318          {
 319   1              unsigned char i,j=0;
 320   1              unsigned char Temp;                                                     //存放要显示的数据
 321   1      
 322   1              for(i=0;i<16;i++)
 323   1              {
 324   2                      Temp=LCD_Show_Tab[nSentenceID*16+i];    //128 16个西文
 325   2                      if(Temp==0x90)                                                  //汉字
 326   2                      {
 327   3                              i++;
 328   3                              Temp=LCD_Show_Tab[nSentenceID*16+i];
 329   3                              Show_HZ_LCD(xPos+j,yPos,Temp);          //write 1个汉字子程序
 330   3                              j+=16;
 331   3                      }
 332   2                      else                                                                    //西文
 333   2                      {
 334   3                              Temp= LCD_Show_Tab[nSentenceID*16+i];
 335   3                              Show_XW_LCD(xPos+j,yPos,Temp);          //write 1个西文子程序
 336   3                              j+=8;
 337   3                      }
 338   2              }
 339   1      }
 340          
 341          
 342          /*-----------------------------------------------
 343          LCD初始化子程序:
 344          ------------------------------------------------*/
 345          void LCD_Init( void )
 346          {
 347   1              LCD_ENA1 = 0;
 348   1              LCD_ENA2 = 0;
 349   1      //      LCD_Write_Set( 0x00,0 );
 350   1              LCD_Write_Set( 0xE2,0 );
 351   1      //      LCD_Write_Set( 0xAE,0 );
 352   1              LCD_Write_Set( 0xC0,0 );
 353   1              LCD_Write_Set( 0xB8,0 );
 354   1              LCD_Write_Set( 0xA0,0 );
 355   1              LCD_Write_Set( 0xA4,0 );
 356   1              LCD_Write_Set( 0xA9,0 );
 357   1              LCD_Write_Set( 0xEE,0 );
 358   1              
 359   1              LCD_Write_Set( 0xE2,1);
 360   1      //      LCD_Write_Set( 0xAE,1 );
 361   1              LCD_Write_Set( 0xC0,1 );
 362   1              LCD_Write_Set( 0xB8,1 );
 363   1              LCD_Write_Set( 0xA0,1 );
 364   1              LCD_Write_Set( 0xA4,1 );
 365   1              LCD_Write_Set( 0xA9,1 );
C51 COMPILER V7.06   LCD                                                                   03/13/2005 21:02:58 PAGE 7   

 366   1              LCD_Write_Set( 0xEE,1 );
 367   1              LCD_Write_Set( 0xAF,0 );
 368   1              LCD_Write_Set( 0xAF,1 );
 369   1              Delay_xMs( 10 );
 370   1      }
 371          
 372          /*----------------------------------------------
 373          主程序
 374          功能:循环显示"欢迎使用单片机开发板祝你早日
 375                   成为单片机高手沈氏工作室贺"
 376          ------------------------------------------------*/
 377          void main()
 378          {
 379   1              unsigned char i;
 380   1          LCD_Init();
 381   1              Clear_H_LCD( 0 );                       //清除第一行
 382   1              Clear_H_LCD( 1 );                       //清除第二行
 383   1              while(1)
 384   1              {
 385   2                      for( i = 0;i < 5 ;i+=2 )
 386   2                      {
 387   3                              Print_LCD ( 0,0,i );//在第一行上显示汉字
 388   3                              Print_LCD ( 0,2,i+1 );//在第二行上显示汉字
 389   3                      Delay_xMs(1000);         //延时一段时间
 390   3                      }
 391   2              }
 392   1      }
 393          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    779    ----
   CONSTANT SIZE    =   1232    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       4
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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