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

📄 display.c

📁 本程序是一个WGM-12864LCD的驱动程序。不带字库。用了一晚上的时间终于调出来了。能显示汉字图片。给大家共享享。
💻 C
字号:
 #include "function.h"
 #include "lcd.h"

//unsigned char x	 ;
 unsigned char y ;
 unsigned char *hz ;
 unsigned char xpos;
 unsigned char ypos;
 unsigned char lcddata ;


/*********初始化************/
void lcd_init( void )
{
    Send_cmd( 0x3e,0 );		//关显示
    Send_cmd( 0x3e,1 );

	Send_cmd( 0xc0,0 );		//起始行
	Send_cmd( 0xc0,1 );
		
	Send_cmd( 0x3f,0 );		//开显示
	Send_cmd( 0x3f,1 );

	lcd_clr( );					//清屏

}

/*******************用于显示汉字或字符的函数*************************************************/

void write_data(unsigned char xpos,unsigned char ypos,unsigned char lcddata)
{	if(xpos<128)
{
	if( ( xpos & 0x40 )== 0 )
	{
		Send_cmd( 0xb8 | ypos ,0);   
		Send_cmd( 0x40 | xpos, 0);    
		Send_data( lcddata,0 );
	}
	else
	{
		Send_cmd( 0xb8 | ypos ,1 );		
		Send_cmd( 0x40 | xpos ,1 );				
		Send_data( lcddata , 1 );
	}
 }		
}



/*************显示一个字符************/
/*void lcd_putchar8x8( 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] );
	} 	
}

 */

/************** 显示16*16汉字*****************/
// x  显示列     y  显示行
void hz_disp( unsigned char x, unsigned char y, unsigned char *hz )	 //X是判断字从行的那个位置显示.
{																	//
	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] );
    }	
}

/************** 显示32*32汉字*****************/
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] );
    }	
}

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] );
    }	
}

/*
/**************画点  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;
    
}  */

/************清屏***********/
void lcd_clr( void )
{	
	unsigned char i,j,page;
	for( i = 0; i < 8; i++ )
	{
		page = i;
		page |= 0xb8;
		Send_cmd( page,0 );
	    Send_cmd( 0x40,0 );
		for( j = 0; j < 64; j++ )
			Send_data( 0 ,0 );
		Send_data( page,1 );
		Send_data( 0x40,1 );
		for( j = 0; j < 64; j++ )
			Send_data( 0,1 );

	   	for( i = 0; i < 8; i++ )
	{
		page = i;
		page |= 0xb8;
		Send_cmd( page,1 );
	    Send_cmd( 0x40,1 );
		for( j = 0; j < 64; j++ )
			Send_data( 0 ,1 );
		Send_data( page,0 );
		Send_data( 0x40,0 );
		for( j = 0; j < 64; j++ )
			Send_data( 0,0 );
    }	
    }	
}

⌨️ 快捷键说明

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