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

📄 lcd12864.c

📁 12864液晶屏驱动加入DS18B20温度显示+51单片机
💻 C
📖 第 1 页 / 共 2 页
字号:
	}while( BUSY );
	E = 0;
	DI = 1;
	RW = 0;
	DataLine = dat;			// 写入数据
	E = 1;					// E下降沿锁定
	_nop_();
	E = 0;
}

/************************************************************************************************************
** Function name: write_data( )
** Descriptions:  指定位置显示数据
** Input: X_pos: X 地址; Y_pos: Y地址; lcddata: 显示数据
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void write_data(unsigned char X_pos,unsigned char Y_pos,unsigned char lcddata)
{	
	if(X_pos<128) 	// X_pos 过滤
	{
		if( ( X_pos & 0x40 ) == 0 )			// X_pos < 64,左半屏显示
		{
			write_cmd_L( 0xb8 | Y_pos );   
			write_cmd_L( 0x40 | X_pos);    
			write_dat_L( lcddata );
		}
		else								// X_pos > 64,右半屏显示
		{
			write_cmd_R( 0xb8 | Y_pos );		
			write_cmd_R( 0x40 | X_pos );				
			write_dat_R( lcddata );
		}
 	}		
}

/************************************************************************************************************
** Function name: lcd_disp_char8x8( )
** Descriptions:  指定位置显示8x8英文字母
** Input: x: X 列地址; y: Y 行地址; ch: 显示数据
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void lcd_disp_char8x8( unsigned char x, unsigned char y, unsigned char ch )
{
    unsigned char i;
	for( i = 0; i < 8; i ++ )
	{
        write_data( x+i, y, zifu[(ch - 0x20)*8 + i] );
       // write_data( x+i, y + 1,zifu[(ch - 0x20)*8 + 8 + i] );
	} 	
}

/************************************************************************************************************
** Function name: hz_disp( )
** Descriptions:  指定位置显示16x16汉字
** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void hz_disp16x16( unsigned char x, unsigned char y, unsigned char *hz )
{
	unsigned char i;
	for( i = 0; i < 16; i++ )
	{
        write_data( x + i, y, hz[ i] );		
        write_data( x + i, y + 1, hz[ 16 + i] );
    }	
}

/************************************************************************************************************
** Function name: hz_disp( )
** Descriptions:  指定位置显示12x12汉字
** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void hz_disp12x12( unsigned char x, unsigned char y, unsigned char *hz )
{
	unsigned char i;
	for( i = 0; i < 12; i++ )
	{
        write_data( x + i, y, hz[ i] );		
        write_data( x + i, y + 1, hz[ 12 + i] );
    }	
}

/************************************************************************************************************
** Function name: hz_disp( )
** Descriptions:  指定位置显示32x32汉字
** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void hz_disp32x32( unsigned char x, unsigned char y, unsigned char *hz )
{
	unsigned char i;
	for( i = 0; i < 30; i++ )
	{
        write_data( x + i, y, hz[ i] );		
        write_data( x + i, y + 1, hz[ 28 + i] );
		write_data( x + i, y+2, hz[57+i] );		
        write_data( x + i, y +3, hz[86 + i] );
    }	
}
/************************************************************************************************************
** Function name: hz_disp( )
** Descriptions:  指定位置显示128x32汉字
** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void hz_disp128x32( unsigned char x, unsigned char y, unsigned char *hz )
{
	unsigned char i;
	for( i = 0; i < 128; i++ )
	{
        write_data( x + i, y, hz[ i] );		
        write_data( x + i, y + 1, hz[ 128 + i] );
		write_data( x + i, y + 2, hz[ 256 + i] );		
        write_data( x + i, y + 3, hz[ 384 + i] );
    }	
}

/************************************************************************************************************
** Function name: hz_disp( )
** Descriptions:  指定位置显示12x120汉字
** Input: x: X 列地址; y: Y 行地址; *hz: 显示数据
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void hz_disp12x120( unsigned char x, unsigned char y, unsigned char *hz )
{
	unsigned char i;
	for( i = 0; i < 12; i++ )
	{
        write_data( x + i, y, ~hz[ i] );		
        write_data( x + i, y + 1, ~hz[ 12 + i] );
    }	
}


//画点  x = 0 -- 128      y = 0 -- 64
void set_point( unsigned char x, unsigned char y )
{
	unsigned char d = 0;
	unsigned char temp =0;
	unsigned char page1 = 0;
	temp = y % 8;	
	if( x < 64 )
	{ 
		write_cmd_L( 0xB8 + (y/8) );
		write_cmd_L( 0x40 + x );
        d = Rddata();    
		write_cmd_L( 0xB8 + (y/8) );
		write_cmd_L( 0x40 + x );
        d = Rddata();           
		write_cmd_L( 0xB8 + (y/8) );
		write_cmd_L( 0x40 + x );
		page1 = d | (1<<temp);
		write_dat_L( page1 );
	}
	else if( x <128 )
	{
 
		write_cmd_R( 0xB8 + (y/8) );
		write_cmd_R( 0x40 + x -64 );
		d = Rddata();
		write_cmd_R( 0xB8 + (y/8) );
		write_cmd_R( 0x40 + x -64 );
		d = Rddata();		
		write_cmd_R( 0xB8 + (y/8) );
		write_cmd_R( 0x40 + x - 64 );
		page1 = d |(1<<temp);
		write_dat_R( page1 );	
	}
    else;
    
}
unsigned char Rddata( void )	// 读出液晶数据
{
    unsigned char dd = 0;
    DataLine = 0xff;
    DI = 1;
    RW = 1;
    E = 1;
    _nop_();
    dd = DataLine;
    E = 0;
    return dd;    
}

⌨️ 快捷键说明

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