【翌创ET6001测评】LCD5110屏显示驱动
[复制链接]
Nokia5110显示屏是早期诺基亚手机所使用的显示屏,它采用SPI接口的方式来工作,该屏与开发板的连接关系为:
SCL---P22
SDA---P23
RST---P24
DC ---P25
CS ---P21
BLK---VDD
使用引脚输出高低电平的语句定义为:
#define LCD_SCLK_Set GPIO_WritePin(GPIO2, GPIO_PIN_02, SET) //CLK
#define LCD_SCLK_Clr GPIO_WritePin(GPIO2, GPIO_PIN_02, RESET)
#define LCD_SDIN_Set GPIO_WritePin(GPIO2, GPIO_PIN_03, SET) //DIN
#define LCD_SDIN_Clr GPIO_WritePin(GPIO2, GPIO_PIN_03, RESET)
#define LCD_RST_Set GPIO_WritePin(GPIO2, GPIO_PIN_04, SET) //RES
#define LCD_RST_Clr GPIO_WritePin(GPIO2, GPIO_PIN_04, RESET)
#define LCD_DC_Set GPIO_WritePin(GPIO2, GPIO_PIN_05, SET) //DC
#define LCD_DC_Clr GPIO_WritePin(GPIO2, GPIO_PIN_05, RESET)
#define LCD_CS_Set GPIO_WritePin(GPIO2, GPIO_PIN_01, SET) //CS
#define LCD_CS_Clr GPIO_WritePin(GPIO2, GPIO_PIN_01, RESET)
配置引脚为输出功能的函数为:
void LCD_CONFIG(void)
{
IOC_Init_TypeDef init;
IOC_ConfigStructInit(&init);
init.mode = IOC_AF_MODE_3;
init.dir = GPIO_DIR_OUT;
init.pull = IOC_PULL_NONE;
IOC_Config(IOC_PIN_GPIO_PLL_REF, &init);
GPIO_PortOutputEnable(GPIO2, GPIO_PIN_01);
GPIO_PortOutputEnable(GPIO2, GPIO_PIN_02);
GPIO_PortOutputEnable(GPIO2, GPIO_PIN_03);
GPIO_PortOutputEnable(GPIO2, GPIO_PIN_04);
GPIO_PortOutputEnable(GPIO2, GPIO_PIN_05);
}
该显示屏的初始化函数为:
static void LCD_init(void)
{
LCD_RST_Clr;
Delay(1);
LCD_RST_Set;
LCD_CS_Clr;
Delay(1);
LCD_CS_Set;
Delay(1);
LCD_write_byte(0x21, 0);
LCD_write_byte(0xc8, 0);
LCD_write_byte(0x06, 0);
LCD_write_byte(0x13, 0);
LCD_write_byte(0x20, 0);
LCD_clear();
LCD_write_byte(0x0c, 0);
LCD_CS_Clr;
LCD_BLK_Set;
}
实现清屏处理的函数为:
static void LCD_clear(void)
{
unsigned int i;
LCD_write_byte(0x0c, 0);
LCD_write_byte(0x80, 0);
for (i=0; i<504; i++)
LCD_write_byte(0, 1);
}
实现字符显示功能的函数为:
static void LCD_write_char(unsigned char c)
{
unsigned char line;
c -= 32;
for (line=0; line<6; line++)
LCD_write_byte(font6x8[c][line], 1);
}
实现字符串显示功能的函数为:
static void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
{
LCD_set_XY(X,Y);
while (*s)
{
LCD_write_char(*s);
s++;
}
}
显示显示功能测试的主程序为:
int main(void)
{
EVB_LEDInit();
LCD_CONFIGt();
LCD_init();
LCD_clear();
LCD_write_english_string(16,0,"AT32L021");
LCD_write_english_string(16,2,"NOKIA_5110");
while(1);
}
经程序的编译与运行,其显示效果如下图所示。
显示效果图
|