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

📄 nokia5510_lcd.h

📁 nokia5110液晶的驱动程序
💻 H
字号:
#ifndef NOKIA5510_2008_02_23
#define NOKIA5510_2008_02_23

#include<intrins.h>
#include<zifu6x8.h>

#define uchar unsigned char
#define uint  unsigned int


sbit	NOKIA_RST  = P1^3;		//复位
sbit	NOKIA_SCE  = P1^4;		//使能
sbit	NOKIA_DC   = P1^5;		//数据/命令选择
sbit	NOKIA_SDIN = P1^6;		//数据
sbit	NOKIA_SCLK = P1^7;		//时钟

#define LOW			0
#define HIGH		1
#define CMD			0
#define DAT			1


//初始化指令
#define STD_INSTRUCTION 0x20		//标准指令集
#define EXT_INSTRUCTION 0x21		//扩展指令集

#define VER_ADDR		0x02		//垂直寻址
#define HOR_ADDR		0x00		//水平寻址

#define STD_DISPLAY		0x0c		//标准显示
#define BLANK_DISPLAY	0x08		//显示空白
#define CONV_DISPLAY	0x0d		//反转显示

#define VOP_SET     	0x90		//设置Vop



/*********************************
函数名称: WriteByteNokia(uchar cmd_data,uchar lcd_cmd)写指令
入口参数:cmd_data,lcd_cmd
返回参数:无
*********************************/
void WriteByteNokia(uchar cmd_data,uchar lcd_byte)
{
	uchar i;
	NOKIA_SCE = LOW;
	NOKIA_RST = HIGH;
	NOKIA_DC  = cmd_data;
	for (i=0;i<8;i++)
	{
		NOKIA_SCLK= LOW;
		if ((lcd_byte&0x80) == 0x80)
			NOKIA_SDIN = 1;
		else
			NOKIA_SDIN = 0;
		lcd_byte = lcd_byte<<1;
		NOKIA_SCLK= HIGH;
	}			
}

/*********************************
函数名称: WriteNokia(uchar cmd_data,uchar lcd_byte)写指令
入口参数:cmd_data,lcd_cmd
返回参数:无
*********************************/
void WriteNokia(uchar cmd_data,uchar *lcd_byte)
{
	uchar i;
	NOKIA_SCE = LOW;
	NOKIA_RST = HIGH;
	NOKIA_DC  = cmd_data;
	while ((*lcd_byte) != '\0')
	{
		for (i=0;i<8;i++)
		{
			NOKIA_SCLK= LOW;
			if (((*lcd_byte)&0x80) == 0x80)
				NOKIA_SDIN = 1;
			else
				NOKIA_SDIN = 0;
			*lcd_byte = (*lcd_byte)<<1;
			NOKIA_SCLK= HIGH;
		}
		lcd_byte++;
	}	
}

/*********************************
函数名称: SetAddr(uchar addr_x,uchar addr_y)设定RAM地址
入口参数:uchar addr_x,uchar addr_y
返回参数:无
*********************************/
void SetAddr(uchar addr_x,uchar addr_y)
{
	WriteByteNokia(CMD,0x80+addr_x);	
	WriteByteNokia(CMD,0x40+addr_y);
}

/*********************************
函数名称: ClearLcd(void)清除RAM
入口参数:无
返回参数:无
*********************************/
void ClearLcd(void)
{
	uint i;
	
	WriteByteNokia(CMD,0x80);	//将地址指向原点
	WriteByteNokia(CMD,0x40);

	for (i=0;i<504;i++)
    {
		WriteByteNokia(DAT,0x00);
    }
}

/*********************************
函数名称: DisplayHz(uchar addr_x,uchar addr_y,uchar *hz)显示汉字
入口参数:uchar addr_x,uchar addr_y,uchar *hz
返回参数:无
*********************************/
void DisplayHz(uchar addr_x,uchar addr_y,uchar *hz)
{
	uchar j,i=0;
	for (j=0;j<12;j++)
	{
		SetAddr(addr_x+j,addr_y);
		WriteByteNokia(DAT,hz[i]);
		i++;
		WriteByteNokia(DAT,hz[i]);
		i++;
	}
}

/*********************************
函数名称: DisplayZf(uchar addr_x,uchar addr_y,uchar *zf)显示字符
入口参数:uchar addr_x,uchar addr_y,uchar *hz
返回参数:无
*********************************/
void DisplayZifu(uchar addr_x,uchar addr_y,uchar *zf)
{
	uchar j,i=0;				//每行做多写14个字符
	while (*zf != '\0')
	{
		for (j=0;j<6;j++)
		{
			SetAddr(addr_x+i*6+j,addr_y);
			WriteByteNokia(DAT,zifu6x8[*zf-0x20][j]);
		}
		zf++;
		i++;
	}
	
}


#endif

⌨️ 快捷键说明

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