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

📄 lcd12864.c

📁 12864液晶屏驱动加入DS18B20温度显示+51单片机
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg52.h>
#include "LCD12864.h"
#include "zifu8_8.h"
#include <intrins.h>


/************************************************************************************************************
** Function name: lcd_init( )
** Descriptions:  液晶初始化
** Input: 无
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void lcd_init( void )
{
	write_cmd_L( 0x3e );		//关显示
	write_cmd_R( 0x3e );
	write_cmd_L( 0xc0 );		//起始行
	write_cmd_R( 0xc0 );	
	write_cmd_L( 0x3f );		//开显示
	write_cmd_R( 0x3f );
	lcd_clr( );					//清屏

}

/************************************************************************************************************
** Function name: lcd_clr( )
** Descriptions:  液晶清屏
** Input: 无
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void lcd_clr( void )
{	
	unsigned char i = 0;
	unsigned char j = 0;
	unsigned char page = 0;
	for( i = 0; i < 8; i++ )  		// 取8页显示(整个屏)
	{
		page = i;
		page |= 0xb8;				// page | 0xb8就是取页地址(X的地址,(0 ~ 8))1 0 1 1 1 A2 A1 A0,
		write_cmd_L( page );
		write_cmd_L( 0x40 );	   	// 设置Y的地址,从0列开始(0 ~ 63)0 1 A7 A6 A5 A4 A3 A2 A1 A0
		for( j = 0; j < 64; j++ )
		{	
			write_dat_L( 0X00 );	 
		}
		write_cmd_R( page );		// 清完左屏再清右屏
		write_cmd_R( 0x40 );
		for( j = 0; j < 64; j++ )
		{	
			write_dat_R( 0X00 );
		}
    }	
}

/************************************************************************************************************
** Function name: Disp_Img( )
** Descriptions:  液晶清屏
** Input: *img
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void Disp_Img(unsigned char code *img)
{										 
    unsigned char j = 0;  			// 产生列地址
	unsigned char k = 0;			// 产生页地址
	unsigned char page = 0;

    for( k = 0; k < 8; k++ )		// 整个屏8页的显示
    {   
        page = k;
        page |= 0xb8;
    	// 先写左半屏数据
		write_cmd_L( page );
    	write_cmd_L( 0x40 );
    	for( j = 0; j < 64; j++ )	// 左屏64列显示
    	{
			write_dat_L(img[k*128+j]);
    	}
		// 再写右半屏数据
		write_cmd_R( page );
    	write_cmd_R( 0x40 );
    	for(j=64; j<128; j++) 		// 右屏64列显示
    	{
			write_dat_R(img[k*128+j]);
		}
    }
}

/************************************************************************************************************
** Function name: write_cmd_L( )
** Descriptions:  写液晶左半屏命令
** Input: cmd
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void write_cmd_L( unsigned char cmd )
{
	CSB = 1;   				// H:选择左半屏
	CSA = 0;
	DI = 0;	   				// D/I: H = Data; L = Cmd
	RW = 1;					// R/W: H = Read; L = Write
	do
	{
		DataLine = 0xff;
		E = 1;
		_nop_();			
	}while( BUSY );
	E = 0;
	RW = 0;
	DataLine = cmd;	   		// 写入指令数据
	E = 1;					// E下降沿锁定
	_nop_();
	E = 0;
}

/************************************************************************************************************
** Function name: write_cmd_R( )
** Descriptions:  写液晶右半屏命令
** Input: cmd
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void write_cmd_R( unsigned char cmd )
{
	CSB = 0;
	CSA = 1;				// H:选择右半屏
	DI = 0;					// D/I: H = Data; L = Cmd
	RW = 1;					// R/W: H = Read; L = Write
	do
	{
		DataLine = 0xff;
		E = 1;
		_nop_();	
		
	}while( BUSY );
	E = 0;
	RW = 0;
	DataLine = cmd;			// 写入指令数据
	E = 1;					// E下降沿锁定
	_nop_();
	E = 0;
}

/************************************************************************************************************
** Function name: write_dat_L( )
** Descriptions:  写液晶左半屏数据
** Input: dat
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void write_dat_L( unsigned char dat )
{
	CSB = 1; 				 // H:选择左半屏
	CSA = 0;
	DI = 0;					 // D/I: H = Data; L = Cmd
	RW = 1;					 // R/W: H = Read; L = Write
	do
	{
		DataLine = 0xff;
		E = 1;
		_nop_();		
	}while( BUSY );
	E = 0;
	DI = 1;
	RW = 0;
	DataLine = dat;			  // 写入数据
	E = 1;					  // E下降沿锁定
	_nop_();
	E = 0;
}

/************************************************************************************************************
** Function name: write_dat_R( )
** Descriptions:  写液晶右半屏数据
** Input: dat
** Output: 无
** Created by: 王 斌
** Created Date: 2008-11-20 
**----------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------------------------------
************************************************************************************************************/
void write_dat_R( unsigned char dat )
{
	CSB = 0; 
	CSA = 1;			   	// H:选择右半屏
	DI = 0;					// D/I: H = Data; L = Cmd  
	RW = 1;					// R/W: H = Read; L = Write
	do
	{
		DataLine = 0xff;
		E = 1;
		_nop_();		

⌨️ 快捷键说明

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