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

📄 lcd12864.lst

📁 采用KS0108控制ic的 液晶显示驱动程序。
💻 LST
字号:
C51 COMPILER V6.12  LCD12864                                                               03/24/2006 19:43:11 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN .\lcd12864.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE .\lcd12864.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          #include "LCD12864.h"
   3          #include "zifu8_8.h"
   4          #include <intrins.h>
   5          
   6          
   7          /*********初始化************/
   8          void lcd_init( void )
   9          {
  10   1      	write_cmd_L( 0x3e );		//关显示
  11   1      	write_cmd_R( 0x3e );
  12   1      	write_cmd_L( 0xc0 );		//起始行
  13   1      	write_cmd_R( 0xc0 );	
  14   1      	write_cmd_L( 0x3f );		//开显示
  15   1      	write_cmd_R( 0x3f );
  16   1      	lcd_clr( );					//清屏
  17   1      
  18   1      }
  19          
  20          /************清屏***********/
  21          void lcd_clr( void )
  22          {	
  23   1      	unsigned char i,j,page;
  24   1      	for( i = 0; i < 8; i++ )
  25   1      	{
  26   2      		page = i;
  27   2      		page |= 0xb8;
  28   2      		write_cmd_L( page );
  29   2      		write_cmd_L( 0x40 );
  30   2      		for( j = 0; j < 64; j++ )
  31   2      			write_dat_L( 0 );
  32   2      		write_cmd_R( page );
  33   2      		write_cmd_R( 0x40 );
  34   2      		for( j = 0; j < 64; j++ )
  35   2      			write_dat_R( 0 );
  36   2          }	
  37   1      }
  38          /*------------------显示12864图片---------------------------*/
  39          void Disp_Img(unsigned char code *img)
  40          {										 
  41   1          unsigned char j,k,page = 0; 
  42   1          for( k = 0; k < 8; k++ )
  43   1          {   
  44   2              page = k;
  45   2              page |= 0xb8;
  46   2          	write_cmd_L( page );
  47   2          	write_cmd_L( 0x40 );
  48   2          	for( j = 0; j < 64; j++ )
  49   2          		write_dat_L(img[k*128+j]);
  50   2          	write_cmd_R( page );
  51   2          	write_cmd_R( 0x40 );
  52   2          	for(j=64;j<128;j++) 
  53   2          		write_dat_R(img[k*128+j]);
  54   2          }
  55   1      }
C51 COMPILER V6.12  LCD12864                                                               03/24/2006 19:43:11 PAGE 2   

  56          
  57          /***********-写左命令************/
  58          void write_cmd_L( unsigned char cmd )
  59          {
  60   1      	CSB = 1;
  61   1      	CSA = 0;
  62   1      	DI = 0;
  63   1      	RW = 1;
  64   1      	do
  65   1      	{
  66   2      		DataLine = 0xff;
  67   2      		E = 1;
  68   2      		_nop_();			
  69   2      	}while( BUSY );
  70   1      	E = 0;
  71   1      	RW = 0;
  72   1      	DataLine = cmd;
  73   1      	E = 1;
  74   1      	_nop_();
  75   1      	E = 0;
  76   1      }
  77          /***********-写右命令**********-*/
  78          void write_cmd_R( unsigned char cmd )
  79          {
  80   1      	CSB = 0;
  81   1      	CSA = 1;
  82   1      	DI = 0;
  83   1      	RW = 1;
  84   1      	do
  85   1      	{
  86   2      		DataLine = 0xff;
  87   2      		E = 1;
  88   2      		_nop_();	
  89   2      		
  90   2      	}while( BUSY );
  91   1      	E = 0;
  92   1      	RW = 0;
  93   1      	DataLine = cmd;
  94   1      	E = 1;
  95   1      	_nop_();
  96   1      	E = 0;
  97   1      }
  98          /***********写左数据***********/
  99          void write_dat_L( unsigned char dat )
 100          {
 101   1      	CSB = 1; 
 102   1      	CSA = 0;
 103   1      	DI = 0;
 104   1      	RW = 1;
 105   1      	do
 106   1      	{
 107   2      		DataLine = 0xff;
 108   2      		E = 1;
 109   2      		_nop_();		
 110   2      	}while( BUSY );
 111   1      	E = 0;
 112   1      	DI = 1;
 113   1      	RW = 0;
 114   1      	DataLine = dat;
 115   1      	E = 1;
 116   1      	_nop_();
 117   1      	E = 0;
C51 COMPILER V6.12  LCD12864                                                               03/24/2006 19:43:11 PAGE 3   

 118   1      }
 119          
 120          /***********写右数据***********/
 121          void write_dat_R( unsigned char dat )
 122          {
 123   1      	CSB = 0; 
 124   1      	CSA = 1;
 125   1      	DI = 0;
 126   1      	RW = 1;
 127   1      	do
 128   1      	{
 129   2      		DataLine = 0xff;
 130   2      		E = 1;
 131   2      		_nop_();		
 132   2      	}while( BUSY );
 133   1      	E = 0;
 134   1      	DI = 1;
 135   1      	RW = 0;
 136   1      	DataLine = dat;
 137   1      	E = 1;
 138   1      	_nop_();
 139   1      	E = 0;
 140   1      }
 141          void write_data(unsigned char xpos,unsigned char ypos,unsigned char lcddata)
 142          {	if(xpos<128)
 143   1      {
 144   2      	if( ( xpos & 0x40 )== 0 )
 145   2      	{
 146   3      		write_cmd_L( 0xb8 | ypos );   
 147   3      		write_cmd_L( 0x40 | xpos);    
 148   3      		write_dat_L( lcddata );
 149   3      	}
 150   2      	else
 151   2      	{
 152   3      		write_cmd_R( 0xb8 | ypos );		
 153   3      		write_cmd_R( 0x40 | xpos );				
 154   3      		write_dat_R( lcddata );
 155   3      	}
 156   2       }		
 157   1      }
 158          
 159          /************显示一个字符************/
 160          void lcd_putchar8x8( unsigned char x,unsigned char y,unsigned char ch )
 161          {
 162   1          unsigned char i;
 163   1      	for( i = 0; i < 8; i ++ )
 164   1      	{
 165   2              write_data( x+i, y, zifu[(ch - 0x20)*8 + i] );
 166   2             // write_data( x+i, y + 1,zifu[(ch - 0x20)*8 + 8 + i] );
 167   2      	} 	
 168   1      }
 169          
 170          /************** 显示汉字*****************/
 171          // x  显示列     y  显示行
 172          void hz_disp( unsigned char x, unsigned char y, unsigned char *hz )
 173          {
 174   1      	unsigned char i;
 175   1      	for( i = 0; i < 16; i++ )
 176   1      	{
 177   2              write_data( x + i, y, hz[ i] );		
 178   2              write_data( x + i, y + 1, hz[ 16 + i] );
 179   2          }	
C51 COMPILER V6.12  LCD12864                                                               03/24/2006 19:43:11 PAGE 4   

 180   1      }
 181          void hz_disp32x32( unsigned char x, unsigned char y, unsigned char *hz )
 182          {
 183   1      	unsigned char i;
 184   1      	for( i = 0; i < 30; i++ )
 185   1      	{
 186   2              write_data( x + i, y, hz[ i] );		
 187   2              write_data( x + i, y + 1, hz[ 28 + i] );
 188   2      		write_data( x + i, y+2, hz[57+i] );		
 189   2              write_data( x + i, y +3, hz[86 + i] );
 190   2          }	
 191   1      }
 192          
 193          void hz_disp128x32( unsigned char x, unsigned char y, unsigned char *hz )
 194          {
 195   1      	unsigned char i;
 196   1      	for( i = 0; i < 128; i++ )
 197   1      	{
 198   2              write_data( x + i, y, hz[ i] );		
 199   2              write_data( x + i, y + 1, hz[ 128 + i] );
 200   2      		write_data( x + i, y + 2, hz[ 256 + i] );		
 201   2              write_data( x + i, y + 3, hz[ 384 + i] );
 202   2          }	
 203   1      }
 204          
 205          void hz_disp12x12( unsigned char x, unsigned char y, unsigned char *hz )
 206          {
 207   1      	unsigned char i;
 208   1      	for( i = 0; i < 12; i++ )
 209   1      	{
 210   2              write_data( x + i, y, hz[ i] );		
 211   2              write_data( x + i, y + 1, hz[ 12 + i] );
 212   2          }	
 213   1      }
 214          void hz_disp12x120( unsigned char x, unsigned char y, unsigned char *hz )
 215          {
 216   1      	unsigned char i;
 217   1      	for( i = 0; i < 12; i++ )
 218   1      	{
 219   2              write_data( x + i, y, ~hz[ i] );		
 220   2              write_data( x + i, y + 1, ~hz[ 12 + i] );
 221   2          }	
 222   1      }
 223          
 224          
 225          //画点  x = 0 -- 128      y = 0 -- 64
 226          void set_point( unsigned char x, unsigned char y )
 227          {
 228   1      	unsigned char d = 0;
 229   1      	unsigned char temp =0;
 230   1      	unsigned char page1 = 0;
 231   1      	temp = y % 8;	
 232   1      	if( x < 64 )
 233   1      	{ 
 234   2      		write_cmd_L( 0xB8 + (y/8) );
 235   2      		write_cmd_L( 0x40 + x );
 236   2              d = Rddata();    
 237   2      		write_cmd_L( 0xB8 + (y/8) );
 238   2      		write_cmd_L( 0x40 + x );
 239   2              d = Rddata();           
 240   2      		write_cmd_L( 0xB8 + (y/8) );
 241   2      		write_cmd_L( 0x40 + x );
C51 COMPILER V6.12  LCD12864                                                               03/24/2006 19:43:11 PAGE 5   

 242   2      		page1 = d | (1<<temp);
 243   2      		write_dat_L( page1 );
 244   2      	}
 245   1      	else if( x <128 )
 246   1      	{
 247   2       
 248   2      		write_cmd_R( 0xB8 + (y/8) );
 249   2      		write_cmd_R( 0x40 + x -64 );
 250   2      		d = Rddata();
 251   2      		write_cmd_R( 0xB8 + (y/8) );
 252   2      		write_cmd_R( 0x40 + x -64 );
 253   2      		d = Rddata();		
 254   2      		write_cmd_R( 0xB8 + (y/8) );
 255   2      		write_cmd_R( 0x40 + x - 64 );
 256   2      		page1 = d |(1<<temp);
 257   2      		write_dat_R( page1 );	
 258   2      	}
 259   1          else;
 260   1          
 261   1      }
 262          unsigned char Rddata( void )
 263          {
 264   1          unsigned char dd = 0;
 265   1          DataLine = 0xff;
 266   1          DI = 1;
 267   1          RW = 1;
 268   1          E = 1;
 269   1          _nop_();
 270   1          dd = DataLine;
 271   1          E = 0;
 272   1          return dd;    
 273   1      }


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