📄 lcd12864.c
字号:
}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 + -