积分兑换的STM32开发板不包含屏幕,手头正好有块吃灰的液晶屏,于是尝试给利用起来。
一、硬件介绍:
1. 开发板:

正点原子的MiniSTM32开发板板载的OLED&TFTLCD模块接口是2*18P排座,间距2.54mm,兼容多种屏幕。
2. 液晶屏

手头的液晶屏模块是普中51开发板配的,单排8P,无法与正点原子开发板完美匹配,只能将就。
液晶屏驱动IC是UC1701x,具有超低功耗,适合电池供电的手持设备;支持65×132图形STN LCD面板;支持按行排序和按列排序的显示缓冲区RAM访问;支持行业标准的8位并行总线(8080模式或6800模式),和4线串行总线(S8)接口;片上上电复位和软件复位命令,使RST引脚可选。

这是SPI数据传输的时序图。
二、软件设计
1.工程搭建:
打开STM32CubeMX,选择芯片,新建工程,配置时钟系统,配置GPIO外设即可,生成工程源码。

由于液晶屏模块与开发板不能完美契合,又不愿意连杜邦线,所以采用的是软件模拟SPI,根据实际情况,简单的配置GPIO引脚,不需要配置SPI。根据数据手册,RST引脚为低电平有效,当RST被拉低时,LCD进入复位状态;当RST恢复高电平时,控制器退出复位,开始正常工作;所以RST初始值为高电平,避免意外复位,导致初始化失败。CS引脚为低电平有效,当CS被拉低时,允许数据传输;当CS高电平时,CS处于空闲状态;所以CS初始值也为高电平,避免总线冲突。
2.编写代码:
正点原子官方代码是SSD1306,且分辨率是12864的;普中虽然也有该屏的代码,但是51的,非stm32的,都不能直接拿来用;而本人C语言实在是太菜,经过无数遍的修改、调试,终于成功了。
引脚定义和函数声明:
// 引脚定义
#define RST_PIN GPIO_PIN_6
#define RST_PORT GPIOB
#define CS_PIN GPIO_PIN_8
#define CS_PORT GPIOB
#define RS_PIN GPIO_PIN_10
#define RS_PORT GPIOB
#define SDA_PIN GPIO_PIN_12
#define SDA_PORT GPIOB
#define SCL_PIN GPIO_PIN_14
#define SCL_PORT GPIOB
// LCD 屏幕参数
#define LCD_WIDTH 96
#define LCD_HEIGHT 48
// 函数声明
/*SPI和LCD驱动函数*/
void lcd9648_spi_write_byte(uint8_t dat);
void lcd9648_write_cmd(uint8_t cmd);
void lcd9648_write_dat(uint8_t dat);
void lcd9648_init(void);
void lcd9648_clear(void);
void lcd_reflash_gram(void);
/*字符显示函数*/
void lcd_draw_dot(uint8_t x, uint8_t y, uint8_t sta);
void lcd_show_char(uint8_t x, uint8_t y, uint8_t num, uint8_t size, uint8_t mode);
void lcd_show_num(uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t size, uint8_t mode);
void lcd_show_string(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t size, uint8_t *p);
void lcd_show_fontHZ(uint8_t x, uint8_t y, uint8_t *cn);
void LCD_Show_Chinese(uint8_t x, uint8_t y, const uint8_t *font);
uint32_t lcd_pow(uint8_t m, uint8_t n);
主函数:
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
lcd9648_Init();
lcd9648_clear();
lcd_show_fontHZ(0, 4, (uint8_t *)"芯查查");
lcd_show_fontHZ(0, 30, (uint8_t *)"四周年庆");
lcd_reflash_gram();
while (1) {
}
}
由于篇幅所限,以上具体函数和字符库就不在此列出,以打包放在附件中。
三、实验现象:

全部评论