当前位置:网站首页>STM32系列(HAL库)——F103C8T6硬件SPI点亮带字库OLED屏
STM32系列(HAL库)——F103C8T6硬件SPI点亮带字库OLED屏
2022-06-22 15:40:00 【嵌入式创客工坊】
1.软件准备
(1)编程平台:Keil5
(2)CubeMX
(3)程序:点击下载
2.硬件准备
(1)1.3寸带字库OLED

(2)F1的板子,本例使用经典F103C8T6

(3)ST-link 下载器

(4)杜邦线若干

3.CubeMX配置
(1)芯片选择

(2)配置RCC、SYS、时钟树

配置RCC

配置SYS

配置时钟树
(3)配置IIC

(4)配置GPIO

(5)设置路径、生成代码工程
5、Keil5代码
(1)添加文件_____(按图操作即可)



添加工程文件


添加头文件路径

(2)全编译编译一次
会提示如下报错,双击错误跳转到oled.h

(3)修改oled.h

#ifndef __OLED_H
#define __OLED_H
#include "main.h"
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
#define OLED_RES_Clr() HAL_GPIO_WritePin(OLED_RES_GPIO_Port, OLED_RES_Pin, GPIO_PIN_RESET)//RES
#define OLED_RES_Set() HAL_GPIO_WritePin(OLED_RES_GPIO_Port, OLED_RES_Pin, GPIO_PIN_SET)
#define OLED_DC_Clr() HAL_GPIO_WritePin(OLED_DC_GPIO_Port, OLED_DC_Pin, GPIO_PIN_RESET)//DC
#define OLED_DC_Set() HAL_GPIO_WritePin(OLED_DC_GPIO_Port, OLED_DC_Pin, GPIO_PIN_SET)
#define OLED_CS_Clr() HAL_GPIO_WritePin(OLED_CS_GPIO_Port, OLED_CS_Pin, GPIO_PIN_RESET)//CS
#define OLED_CS_Set() HAL_GPIO_WritePin(OLED_CS_GPIO_Port, OLED_CS_Pin, GPIO_PIN_SET)
#define ZK_CS_Clr() HAL_GPIO_WritePin(ZK_CS_GPIO_Port,ZK_CS_Pin, GPIO_PIN_RESET)//CS2
#define ZK_CS_Set() HAL_GPIO_WritePin(ZK_CS_GPIO_Port,ZK_CS_Pin, GPIO_PIN_SET)
(4)修改oled.c
①①①修改头文件

#include "oled.h"
#include "stdlib.h"
//#include "delay.h
#include "spi.h"②②②修改写字节函数

//向SSD1306写入一个字节。
//mode:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 cmd)
{
if(cmd)
OLED_DC_Set();
else
OLED_DC_Clr();
OLED_CS_Clr();
// for(i=0;i<8;i++)
// {
// OLED_SCLK_Clr();
// if(dat&0x80)
// OLED_MOSI_Set();
// else
// OLED_MOSI_Clr();
// OLED_SCLK_Set();
// dat<<=1;
// }
HAL_SPI_Transmit(&hspi1, &dat, 1, 0X100);
OLED_CS_Set();
OLED_DC_Set();
}③③③修改初始化函数

HAL_Delay(10);(5)修改zk.c
①①①修改写字节函数

//送指令到晶联讯字库IC
void Send_Command_to_ROM(u8 dat)
{
// u8 i;
// for(i=0;i<8;i++)
// {
// ZK_SCLK_Clr();
// if(dat&0x80)
// {
// ZK_MOSI_Set();
// }
// else
// {
// ZK_MOSI_Clr();
// }
// dat<<=1;
// ZK_SCLK_Set();
// }
HAL_SPI_Transmit(&hspi1, &dat, 1, 0X100);
}②②②修改读字节函数

//从晶联讯字库IC中取汉字或字符数据(1个字节)
u8 Get_data_from_ROM(void)
{
u8 read=0;
// for(i=0;i<8;i++)
// {
// ZK_SCLK_Clr();
// read<<=1;
// if(ZK_MISO())
// {
// read++;
// }
// ZK_SCLK_Set();
// }
HAL_SPI_Receive(&hspi1, &read, 1, 0X100);
return read;
}(6)main.c
①添加头文件
#include "oled.h"
#include "bmp.h"②whlie循环前添加:
OLED_Init();
OLED_ColorTurn(0);//0正常显示,1 反色显示
OLED_DisplayTurn(1);//0正常显示 1 屏幕翻转显示
OLED_Clear();③while中添加:
OLED_Display_128x64(bmp1);
HAL_Delay(500);
OLED_Display_GB2312_string(0,0,"12864,带中文字库"); /*在第1页,第1列,显示一串16x16点阵汉字或8x16的ASCII字*/
OLED_Display_GB2312_string(0,2,"16X16简体汉字库,"); /*显示一串16x16点阵汉字或8x16的ASCII字.以下雷同*/
OLED_Display_GB2312_string(0,4,"或8X16点阵ASCII,");
OLED_Display_GB2312_string(0,6,"或5X7点阵ASCII码");
HAL_Delay(500);
OLED_Clear();
OLED_Display_GB2312_string(24,0,"中景园电子");
OLED_Display_GB2312_string(0,2,"主要生产OLED模块");
OLED_Display_GB2312_string(0,4,"顾客至上真诚服务");
OLED_Display_GB2312_string(0,6,"诚信与质量第一!");
HAL_Delay(500);
OLED_Clear();
OLED_Display_GB2312_string(0,0,"GB2312简体字库及");
OLED_Display_GB2312_string(0,2,"有图型功能,可自");
OLED_Display_GB2312_string(0,4,"编大字或图像或生");
OLED_Display_GB2312_string(0,6,"僻字,例如:");
OLED_Display_16x16(97,6,jiong1); /*在第7页,第81列显示单个自编生僻汉字“囧”*/
OLED_Display_16x16(113,6,lei1);
HAL_Delay(500);
OLED_Clear();
OLED_Display_GB2312_string(0,0,"<[email protected]#$%^&*()_-+]/"); /*在第1页,第1列,显示一串16x16点阵汉字或8*16的ASCII字*/
OLED_Display_string_5x7(0,2,"<[email protected]#$%^&*()_-+]/;.,?[");/*在第3页,第1列,显示一串5x7点阵的ASCII字*/
OLED_Display_string_5x7(0,3,"XY electronics Co., ");/*显示一串5x7点阵的ASCII字*/
OLED_Display_string_5x7(0,4,"Ltd. established at ");/*显示一串5x7点阵的ASCII字*/
OLED_Display_string_5x7(0,5,"year 2010.Focus OLED ");/*显示一串5x7点阵的ASCII字*/
OLED_Display_string_5x7(0,6,"Mobile:13265585975");/*显示一串5x7点阵的ASCII字*/
OLED_Display_string_5x7(0,7,"Tel:0755-32910715");/*显示一串5x7点阵的ASCII字*/
HAL_Delay(500);
OLED_Clear();
OLED_Display_GB2312_string(0,0,"啊阿埃挨哎唉哀皑"); /*在第1页,第1列,显示一串16x16点阵汉字或8x16的ASCII字*/
OLED_Display_GB2312_string(0,2,"癌蔼矮艾碍爱隘鞍"); /*显示一串16x16点阵汉字或8x16的ASCII字.以下雷同*/
OLED_Display_GB2312_string(0,4,"氨安俺按暗岸胺案");
OLED_Display_GB2312_string(0,6,"肮昂盎凹敖熬翱袄");
HAL_Delay(500);
OLED_Clear();
OLED_Display_GB2312_string(0,0,"鬟鬣麽麾縻麂麇麈");
OLED_Display_GB2312_string(0,2,"麋麒鏖麝麟黛黜黝");
OLED_Display_GB2312_string(0,4,"黠黟黢黩黧黥黪黯");
OLED_Display_GB2312_string(0,6,"齄鼬鼹鼷鼽鼾鼢鼯");
HAL_Delay(500);
OLED_Clear();6.效果

肉眼看是没有刷新条的,手机拍就拍出来这效果
本例程源码下载:点击跳转
边栏推荐
- spark与mysql:Did not find registered driver with class com.mysql.jdbc.Driver
- 基于.NetCore开发博客项目 StarBlog - (12) Razor页面动态编译
- Mysql-5.6.21-centos6.5 source code installation configuration
- 每秒处理10万高并发订单的乐视集团支付系统架构分享
- Cross platform brake browser
- 图计算Hama-BSP模型的运行流程
- LETV group payment system architecture sharing for processing 100000 high concurrent orders per second
- 跨平台Brave浏览器
- STM32 ADC acquisition via DMA (HAL Library)
- Web technology sharing | [Gaode map] to realize customized track playback
猜你喜欢

Docker之MySQL主从连接提示:Communications link failure

华为云招募工业智能领域合作伙伴,强力扶持+商业变现

快速掌握 ASP.NET 身份认证框架 Identity - 登录与登出
![[step 1 of advanced automated testing] 1 minute to introduce you to automated testing](/img/00/9647d552749092954a91bd84307773.png)
[step 1 of advanced automated testing] 1 minute to introduce you to automated testing

【阿里云服务器-安装mysql的5.6版本安装,重装】

Mybaits:接口代理方式实现Dao

Linux system maintenance: mysql8.0.13 source code download and installation "fool" operation steps (Linux centos6.8) test available series

每秒处理10万高并发订单的乐视集团支付系统架构分享

MTLs guidelines for kubernetes engineers

Mqtt of NLog custom target
随机推荐
Spark性能调优之道——解决Spark数据倾斜(Data Skew)的N种姿势
Hello playwright: (7) simulate keyboard and mouse
启牛学堂给的中信建投证券账户是不是真的?开户安全吗
spark-shuffle的写入器源码分析
Hello Playwright:(7)模拟键盘和鼠标
视频会议时听不到声音该如何处理?
数据库mysql 主从方案
关于#数据库#的问题,如何解决?
The world's "first" IEEE privacy computing "connectivity" international standard led by insight technology was officially launched
0基础如何入门软件测试,能转行成功吗?
STM32 ADC acquisition via DMA (HAL Library)
Purchase guide - how to purchase a high-quality conference tablet, these aspects must be compared
多线程里面不能注入Service或者Mapper
spark-cache的源码分析
170million passwords of Netcom learning link have been leaked! What are the remedies?
每秒處理10萬高並發訂單的樂視集團支付系統架構分享
Test for API
Analysis of the read data source code of spark shuffle
[mysql] data synchronization prompt: specified key was too long; max key length is 767 bytes
Redis实现延迟队列的正确姿势