📄 nokia5510_lcd.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 + -