LCD5110液晶屏显示
有了一块功能丰富的开发板后,如果缺少一个显示装置会是一件很憋手的事,为此打算为NUC472开发板配上一个显示器。经探索I2C接口的OLED屏和SPI接口的TFT屏都未如愿,只有LCD5110屏的显示比较成功,其显示效果如图所示。
显示效果图
LCD5110屏还是比较好用的,且大家也多在用。为了减少连线,这里采用的方法是直接将LCD5110屏插入开发板的插排上,以使LCD5110屏的引脚与NUC472建立如下的连接:
2.GND--GND 3.SCE--PD0 4.RESET--PD1 5.D/C--PD2 6.-SDIN--PD3
7.SCLK--PD6 8.LED--PD7
由于Vref引脚无法提供3.3V的LCD5110供电电源,无奈只好飞了一条电源线以使LCD5110工作。
为使LCD5110正常工作,对所连接的引脚进行的高低电平输出定义如下:
#define SetLCD_CS_High() PD0 = 1;
#define SetLCD_CS_Low() PD0 = 0;
#define SetLCD_RST_High() PD1 = 1;
#define SetLCD_RST_Low() PD1 = 0;
#define SetLCD_DC_High() PD2 = 1;
#define SetLCD_DC_Low() PD2 = 0;
#define SetLCD_SDIN_High() PD3 = 1;
#define SetLCD_SDIN_Low() PD3 = 0;
#define SetLCD_SCLK_High() PD6 = 1;
#define SetLCD_SCLK_Low() PD6 = 0;
相关的LCD5110引脚配置和初始化函数如下:
- void GPIO_Configuration(void)
- {
- GPIO_SetMode(PD, BIT0, GPIO_MODE_OUTPUT);
- GPIO_SetMode(PD, BIT1, GPIO_MODE_OUTPUT);
- GPIO_SetMode(PD, BIT2, GPIO_MODE_OUTPUT);
- GPIO_SetMode(PD, BIT3, GPIO_MODE_OUTPUT);
- GPIO_SetMode(PD, BIT4, GPIO_MODE_OUTPUT);
- GPIO_SetMode(PD, BIT5, GPIO_MODE_OUTPUT);
- GPIO_SetMode(PD, BIT6, GPIO_MODE_OUTPUT);
- GPIO_SetMode(PD, BIT7, GPIO_MODE_OUTPUT);
- }
- void LCD_Init(void)
- {
- SetLCD_RST_Low();
- delay_1us();
- SetLCD_RST_High();
- delay_1us();
- delay_1us();
- LCD_write_CMD(0x21);
- LCD_write_CMD(0xc0);
- LCD_write_CMD(0x06);
- LCD_write_CMD(0x13);
- LCD_write_CMD(0x20);
- LCD_Clear();
- LCD_write_CMD(0x0c);
- }
其他的效果函数基本可以LCD5110的参考程序不作修改,实现显示效果的主函数为:
- int main (void)
- {
- SYS_Init();
- CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_HXT);
- GPIO_Configuration();
- SetLCD_CS_Low();
- PD7 = 1;
- LCD_Init();
- LCD_Clear();
- LCD_write_english_string(0,0,"NuMaker-PFM");
- LCD_write_english_string(0,2,"-NUC472");
- LCD_write_english_string(0,4,"jinglixixi");
- }
后续会利用该LCD5110显示来探索RTC计时器的使用。
谢谢 真的不错
哈哈,有用便好!