This repository has been archived on 2024-12-31. You can view files and clone it, but cannot push or open issues or pull requests.
mfps/App/Inc/oled2.h

97 lines
3.8 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _OLED2_H
#define _OLED2_H
#define SSD1306_I2C_ADDR 0x78
#define MAX_COLUMN 128
#define MAX_ROW 64
extern char oled_p;
extern char oled_s[2];
extern char oled_s_p6[2];
extern char oled_s_p10[2];
extern char oled_en;
extern unsigned int step_temp[2];
extern char run_mode_temp[2];
void OLED2_Send(unsigned char *data, unsigned char len);
void OLED2_Init(void);
void OLED_DisplayTest(void);
void OLED_MenuTest(void);
void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char index);
void OLED_ShowString(unsigned char x,unsigned char y,char *str,unsigned char Char_Size,unsigned char color);
void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned char Char_Size,unsigned char color);
void OLED_Clear(void) ;
void OLED_DisplayOff(void);
void OLED_DisplayOn(void);
void OLED_SetPos(unsigned char x, unsigned char y);
void SSD1306_WriteData(unsigned char data);
void SSD1306_WriteCmd(unsigned char cmd);
/*******************************************模拟I2C***********************************************************/
#include <inttypes.h>
#include "main.h"
#define BSP_I2C_WR 0 /* 写控制bit */
#define BSP_I2C_RD 1 /* 读控制bit */
/* 定义I2C总线连接的GPIO端口时钟控制 */
#define I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
/* 定义I2C总线连接的GPIO端口, 用户只需要修改下面3行代码即可任意改变SCL和SDA的引脚 */
#define BSP_GPIO_PORT_I2C GPIOB /* GPIO端口 */
#define BSP_I2C_SCL_PIN GPIO_PIN_6 /* 连接到SCL时钟线的GPIO */
#define BSP_I2C_SDA_PIN GPIO_PIN_7 /* 连接到SDA数据线的GPIO */
/* 定义读写SCL和SDA的宏已增加代码的可移植性和可阅读性 */
//#if 0 /* 条件编译: 1 选择GPIO的库函数实现IO读写 */
//#define BSP_I2C_SCL_1() digitalH(BSP_GPIO_PORT_I2C, BSP_I2C_SCL_PIN) /* SCL = 1 */
//#define BSP_I2C_SCL_0() digitalL(BSP_GPIO_PORT_I2C, BSP_I2C_SCL_PIN) /* SCL = 0 */
//#define BSP_I2C_SDA_1() digitalH(BSP_GPIO_PORT_I2C, BSP_I2C_SDA_PIN) /* SDA = 1 */
//#define BSP_I2C_SDA_0() digitalL(BSP_GPIO_PORT_I2C, BSP_I2C_SDA_PIN) /* SDA = 0 */
//
// //#define BSP_I2C_SDA_READ() GPIO_ReadInputDataBit(BSP_GPIO_PORT_I2C, BSP_I2C_SDA_PIN) /* 读SDA口线状态 */
//#define BSP_I2C_SDA_READ() ((BSP_GPIO_PORT_I2C->IDR & BSP_I2C_SDA_PIN) != 0) /* 读SDA口线状态 */
//#else /* 这个分支选择直接寄存器操作实现IO读写 */
/* 注意如下写法在IAR最高级别优化时会被编译器错误优化 */
#define BSP_I2C_SCL_1() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SCL_PIN /* SCL = 1 */
#define BSP_I2C_SCL_0() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SCL_PIN << 16U /* SCL = 0 */
#define BSP_I2C_SDA_1() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SDA_PIN /* SDA = 1 */
#define BSP_I2C_SDA_0() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SDA_PIN << 16U /* SDA = 0 */
#define BSP_I2C_SDA_READ() HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7) //((BSP_GPIO_PORT_I2C->IDR & BSP_I2C_SDA_PIN) != 0) /* 读SDA口线状态 */
//#endif
///* 直接操作寄存器的方法控制IO */
//#define digitalH(p, i) \
// { \
// p->BSRR = i; \
// } // 设置为高电平
//#define digitalL(p, i) \
// { \
// p->BSRR = (uint32_t)i << 16; \
// } // 输出低电平
void i2c_CfgGpio(void);
void i2c_Start(void);
void i2c_Stop(void);
void i2c_SendByte(uint8_t _ucByte);
uint8_t i2c_ReadByte(void);
uint8_t i2c_WaitAck(void);
void i2c_Ack(void);
void i2c_NAck(void);
/*******************************************模拟I2C***********************************************************/
#endif