使用STM32F103C8T6驱动0.96寸RGB IPS显示屏
笔者购买的是一款0.96寸的IPS显示屏,分辨率为160x80,驱动器IC为ST7735S,65k Colors, RGB 5,6,5-bit Input。 接口定义:
- GND: 接地;
- VCC: 3.3~5V电源正;
- SCL: SPI时钟线;
- SDA: SPI数据线;
- RES: 重启线;
- DC: SPI数据/命令选择线;
- CS: 片选接口;
- BLK: 被光控制,默认NC,低电平关闭背光。
本文介绍实现SPI通信协议来驱动显示屏,先给出代码:stm32f103c8-st7735s-lcd
## SPI通信时序
参考ST7735S数据手册4线串行接口时序,SPI协议向ST7735S写数据流程是:
- 把CS片选线从高电平拉到低电平,使能芯片;
- 操作SDA,DC引脚为要写入的数据
- 在SCL时钟的上升沿时刻写入数据到芯片中;
- 重复以上2、3步骤直到各个位的数据写入到芯片;
- 把CS片选冲低电平拉升到高电平,停止通信。
时序如下图:
实现代码如下:
1 | /** |
运行效果
lcd.c中已经实现了一个显示字符串的函数void LCD_showString(uint16_t x, uint16_t y, char *p, uint16_t color);
,x, y是字符串显示的左上像素坐标,*p为字符串,color为显示函数。实现方法是使用PCtoLCD2002取模软件对ASCII字符进行取模取模,取模的结果放到font.h文件中。
使用STM32F103C8T6驱动0.96寸RGB IPS显示屏