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

📄 lcd12864.lst

📁 12864液晶屏驱动加入DS18B20温度显示+51单片机
💻 LST
📖 第 1 页 / 共 2 页
字号:
 230   1              RW = 0;
 231   1              DataLine = dat;                 // 写入数据
 232   1              E = 1;                                  // E下降沿锁定
 233   1              _nop_();
 234   1              E = 0;
 235   1      }
 236          
 237          /*********************************************************************************************************
             -***
 238          ** Function name: write_data( )
 239          ** Descriptions:  指定位置显示数据
 240          ** Input: X_pos: X 地址; Y_pos: Y地址; lcddata: 显示数据
 241          ** Output: 无
 242          ** Created by: 王 斌
 243          ** Created Date: 2008-11-20 
 244          **--------------------------------------------------------------------------------------------------------
             ---
 245          ** Modified by:
 246          ** Modified Date: 
 247          **--------------------------------------------------------------------------------------------------------
             ---
 248          **********************************************************************************************************
             -**/
 249          void write_data(unsigned char X_pos,unsigned char Y_pos,unsigned char lcddata)
 250          {       
 251   1              if(X_pos<128)   // X_pos 过滤
 252   1              {
 253   2                      if( ( X_pos & 0x40 ) == 0 )                     // X_pos < 64,左半屏显示
 254   2                      {
 255   3                              write_cmd_L( 0xb8 | Y_pos );   
 256   3                              write_cmd_L( 0x40 | X_pos);    
 257   3                              write_dat_L( lcddata );
 258   3                      }
 259   2                      else                                                            // X_pos > 64,右半屏显示
 260   2                      {
 261   3                              write_cmd_R( 0xb8 | Y_pos );            
 262   3                              write_cmd_R( 0x40 | X_pos );                            
 263   3                              write_dat_R( lcddata );
 264   3                      }
 265   2              }               
 266   1      }
 267          
 268          /*********************************************************************************************************
             -***
 269          ** Function name: lcd_disp_char8x8( )
 270          ** Descriptions:  指定位置显示8x8英文字母
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 6   

 271          ** Input: x: X 列地址; y: Y 行地址; ch: 显示数据
 272          ** Output: 无
 273          ** Created by: 王 斌
 274          ** Created Date: 2008-11-20 
 275          **--------------------------------------------------------------------------------------------------------
             ---
 276          ** Modified by:
 277          ** Modified Date: 
 278          **--------------------------------------------------------------------------------------------------------
             ---
 279          **********************************************************************************************************
             -**/
 280          void lcd_disp_char8x8( unsigned char x, unsigned char y, unsigned char ch )
 281          {
 282   1          unsigned char i;
 283   1              for( i = 0; i < 8; i ++ )
 284   1              {
 285   2              write_data( x+i, y, zifu[(ch - 0x20)*8 + i] );
 286   2             // write_data( x+i, y + 1,zifu[(ch - 0x20)*8 + 8 + i] );
 287   2              }       
 288   1      }
 289          
 290          /*********************************************************************************************************
             -***
 291          ** Function name: hz_disp( )
 292          ** Descriptions:  指定位置显示16x16汉字
 293          ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
 294          ** Output: 无
 295          ** Created by: 王 斌
 296          ** Created Date: 2008-11-20 
 297          **--------------------------------------------------------------------------------------------------------
             ---
 298          ** Modified by:
 299          ** Modified Date: 
 300          **--------------------------------------------------------------------------------------------------------
             ---
 301          **********************************************************************************************************
             -**/
 302          void hz_disp16x16( unsigned char x, unsigned char y, unsigned char *hz )
 303          {
 304   1              unsigned char i;
 305   1              for( i = 0; i < 16; i++ )
 306   1              {
 307   2              write_data( x + i, y, hz[ i] );         
 308   2              write_data( x + i, y + 1, hz[ 16 + i] );
 309   2          }   
 310   1      }
 311          
 312          /*********************************************************************************************************
             -***
 313          ** Function name: hz_disp( )
 314          ** Descriptions:  指定位置显示12x12汉字
 315          ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
 316          ** Output: 无
 317          ** Created by: 王 斌
 318          ** Created Date: 2008-11-20 
 319          **--------------------------------------------------------------------------------------------------------
             ---
 320          ** Modified by:
 321          ** Modified Date: 
 322          **--------------------------------------------------------------------------------------------------------
             ---
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 7   

 323          **********************************************************************************************************
             -**/
 324          void hz_disp12x12( unsigned char x, unsigned char y, unsigned char *hz )
 325          {
 326   1              unsigned char i;
 327   1              for( i = 0; i < 12; i++ )
 328   1              {
 329   2              write_data( x + i, y, hz[ i] );         
 330   2              write_data( x + i, y + 1, hz[ 12 + i] );
 331   2          }   
 332   1      }
 333          
 334          /*********************************************************************************************************
             -***
 335          ** Function name: hz_disp( )
 336          ** Descriptions:  指定位置显示32x32汉字
 337          ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
 338          ** Output: 无
 339          ** Created by: 王 斌
 340          ** Created Date: 2008-11-20 
 341          **--------------------------------------------------------------------------------------------------------
             ---
 342          ** Modified by:
 343          ** Modified Date: 
 344          **--------------------------------------------------------------------------------------------------------
             ---
 345          **********************************************************************************************************
             -**/
 346          void hz_disp32x32( unsigned char x, unsigned char y, unsigned char *hz )
 347          {
 348   1              unsigned char i;
 349   1              for( i = 0; i < 30; i++ )
 350   1              {
 351   2              write_data( x + i, y, hz[ i] );         
 352   2              write_data( x + i, y + 1, hz[ 28 + i] );
 353   2                      write_data( x + i, y+2, hz[57+i] );             
 354   2              write_data( x + i, y +3, hz[86 + i] );
 355   2          }   
 356   1      }
 357          /*********************************************************************************************************
             -***
 358          ** Function name: hz_disp( )
 359          ** Descriptions:  指定位置显示128x32汉字
 360          ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
 361          ** Output: 无
 362          ** Created by: 王 斌
 363          ** Created Date: 2008-11-20 
 364          **--------------------------------------------------------------------------------------------------------
             ---
 365          ** Modified by:
 366          ** Modified Date: 
 367          **--------------------------------------------------------------------------------------------------------
             ---
 368          **********************************************************************************************************
             -**/
 369          void hz_disp128x32( unsigned char x, unsigned char y, unsigned char *hz )
 370          {
 371   1              unsigned char i;
 372   1              for( i = 0; i < 128; i++ )
 373   1              {
 374   2              write_data( x + i, y, hz[ i] );         
 375   2              write_data( x + i, y + 1, hz[ 128 + i] );
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 8   

 376   2                      write_data( x + i, y + 2, hz[ 256 + i] );               
 377   2              write_data( x + i, y + 3, hz[ 384 + i] );
 378   2          }   
 379   1      }
 380          
 381          /*********************************************************************************************************
             -***
 382          ** Function name: hz_disp( )
 383          ** Descriptions:  指定位置显示12x120汉字
 384          ** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
 385          ** Output: 无
 386          ** Created by: 王 斌
 387          ** Created Date: 2008-11-20 
 388          **--------------------------------------------------------------------------------------------------------
             ---
 389          ** Modified by:
 390          ** Modified Date: 
 391          **--------------------------------------------------------------------------------------------------------
             ---
 392          **********************************************************************************************************
             -**/
 393          void hz_disp12x120( unsigned char x, unsigned char y, unsigned char *hz )
 394          {
 395   1              unsigned char i;
 396   1              for( i = 0; i < 12; i++ )
 397   1              {
 398   2              write_data( x + i, y, ~hz[ i] );                
 399   2              write_data( x + i, y + 1, ~hz[ 12 + i] );
 400   2          }   
 401   1      }
 402          
 403          
 404          //画点  x = 0 -- 128      y = 0 -- 64
 405          void set_point( unsigned char x, unsigned char y )
 406          {
 407   1              unsigned char d = 0;
 408   1              unsigned char temp =0;
 409   1              unsigned char page1 = 0;
 410   1              temp = y % 8;   
 411   1              if( x < 64 )
 412   1              { 
 413   2                      write_cmd_L( 0xB8 + (y/8) );
 414   2                      write_cmd_L( 0x40 + x );
 415   2              d = Rddata();    
 416   2                      write_cmd_L( 0xB8 + (y/8) );
 417   2                      write_cmd_L( 0x40 + x );
 418   2              d = Rddata();           
 419   2                      write_cmd_L( 0xB8 + (y/8) );
 420   2                      write_cmd_L( 0x40 + x );
 421   2                      page1 = d | (1<<temp);
 422   2                      write_dat_L( page1 );
 423   2              }
 424   1              else if( x <128 )
 425   1              {
 426   2       
 427   2                      write_cmd_R( 0xB8 + (y/8) );
 428   2                      write_cmd_R( 0x40 + x -64 );
 429   2                      d = Rddata();
 430   2                      write_cmd_R( 0xB8 + (y/8) );
 431   2                      write_cmd_R( 0x40 + x -64 );
 432   2                      d = Rddata();           
 433   2                      write_cmd_R( 0xB8 + (y/8) );
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 9   

 434   2                      write_cmd_R( 0x40 + x - 64 );
 435   2                      page1 = d |(1<<temp);
 436   2                      write_dat_R( page1 );   
 437   2              }
 438   1          else;
 439   1          
 440   1      }
 441          unsigned char Rddata( void )    // 读出液晶数据
 442          {
 443   1          unsigned char dd = 0;
 444   1          DataLine = 0xff;
 445   1          DI = 1;
 446   1          RW = 1;
 447   1          E = 1;
 448   1          _nop_();
 449   1          dd = DataLine;
 450   1          E = 0;
 451   1          return dd;    
 452   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1111    ----
   CONSTANT SIZE    =    768    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      43
   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 + -