📄 ssd1303.h
字号:
#ifndef IC_SSD1303_H
#define IC_SSD1303_H
#define IC_SSD1303_ENABLE
#ifdef IC_SSD1303_ENABLE
// 管脚定义,参见项目专有管脚定义文件,每个项目只需要重新定义管脚定义即可
#include "..\mcu.h"
#include "..\port.h"
// SSD1303管脚定义
// OLED片选信号
// #define SSD1303_CS_DDR DDRE
// #define SSD1303_CS_PIN PINE
// #define SSD1303_CS_BIT PINE3
// #define SSD1303_CS_PORT PORTE
// OLED命令数据切换信号,高为命令,低为数据
// #define SSD1303_DC_DDR DDRE
// #define SSD1303_DC_PIN PINE
// #define SSD1303_DC_BIT PINE6
// #define SSD1303_DC_PORT PORTE
// OLED时钟信号,SPI控制,不需要初始化
// #define SSD1303_SCK_DDR DDRB
// #define SSD1303_SCK_PIN PINB
// #define SSD1303_SCK_BIT PINB1
// #define SSD1303_SCK_PORT PORTB
// OLEDVCC背光控制,控制V9V开闭,注意电源开关顺序
// 原理图中命名为LED_BK
// #define SSD1303_VCC_DDR DDRA
// #define SSD1303_VCC_PIN PINA
// #define SSD1303_VCC_BIT PINA0
// #define SSD1303_VCC_PORT PORTA
// OLED数据输出信号,SPI控制,不需要初始化
// #define SSD1303_MOSI_DDR DDRB
// #define SSD1303_MOSI_PIN PINB
// #define SSD1303_MOSI_BIT PINB2
// #define SSD1303_MOSI_PORT PORTB
typedef struct tag_GRAMBUF
{
unsigned char pageh;
unsigned char pagel;
unsigned char column;
unsigned char hgram[8];
unsigned char lgram[8];
} GRAMBUF;
void
SSD1303_init(void);
void
SSD1303_VCC(unsigned char onoff);
void SSD1303_poweron(void);
void SSD1303_poweroff(void);
void SSD1303_clear_screen(unsigned char pattern);
// 在多个设备共享SPI的时候,采用缓冲区方式,每次最多两个八字节,也就是一个字符
// 总计16*8=128个字符,每秒时钟中断500次的情况下,大约0.2秒就写完一
// 屏了,时间上毫无问题
void SSD1303_fill_buffer(GRAMBUF* grbuf);
void SSD1303_fill_screen(void);
// 调用过程
// SSD1303_init 初始化端口
// SSD1303_poweron 发送初始化命令,其中会调用SSD1303_VCC打开VCC
// SSD1303_xxxxxxx 写命令,写数据......
// SSD1303_VCC(xx) 开关VCC
// SSD1303_poweoff 发送关闭命令,其中会调用SSD1303_VCC关闭VCC
#endif // #ifdef IC_SSD1303_ENABLE
#endif // #ifndef IC_SSD1303_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -