2026-03-20 21:16:58 +08:00
# ifndef __OLED_H
# define __OLED_H
# include "stdlib.h"
# include "stdint.h"
//
//////////////////////////////////////////////////////////////////////////////////
//
// <20> <> <20> <> <20> <> : oled.c
// <20> <> <20> <> <20> <> : v1.0
// <20> <> <20> <> :
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : 2025-11-14
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> :
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : OLED I2C<32> ӿ<EFBFBD> <D3BF> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD>
// ˵<> <CBB5> :
// ----------------------------------------------------------------
// GND <20> <> Դ<EFBFBD> <D4B4>
// VCC 3.3v<EFBFBD> <EFBFBD> Դ
// D0 P2.0<EFBFBD> <EFBFBD> SCL<EFBFBD> <EFBFBD>
// D1 P1.4<EFBFBD> <EFBFBD> SDA<EFBFBD> <EFBFBD>
// RES P1.6<EFBFBD> <EFBFBD> SPIģ<EFBFBD> <EFBFBD> <EFBFBD> ij<EFBFBD> IICģ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> Ӵ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ţ<EFBFBD> IICģ<EFBFBD> <EFBFBD> <EFBFBD> û<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԣ<EFBFBD>
// ----------------------------------------------------------------
//-----------------OLED<45> ˿ڶ<CBBF> <DAB6> <EFBFBD> ----------------
2026-03-20 21:19:04 +08:00
# define OLED_SCL_Clr() LHL_GPIO_WritePin(pGPIO2, GPIO_PIN_0,GPIO_PIN_RESET) //SCL
# define OLED_SCL_Set() LHL_GPIO_WritePin(pGPIO2, GPIO_PIN_0, GPIO_PIN_SET)
2026-03-20 21:16:58 +08:00
2026-03-20 21:19:04 +08:00
# define OLED_SDA_Clr() LHL_GPIO_WritePin(pGPIO1, GPIO_PIN_4, GPIO_PIN_RESET) //DIN
# define OLED_SDA_Set() LHL_GPIO_WritePin(pGPIO1, GPIO_PIN_4, GPIO_PIN_SET)
2026-03-20 21:16:58 +08:00
2026-03-20 21:19:04 +08:00
# define OLED_RES_Clr() LHL_GPIO_WritePin(pGPIO1, GPIO_PIN_6, GPIO_PIN_RESET) //RES
# define OLED_RES_Set() LHL_GPIO_WritePin(pGPIO1, GPIO_PIN_6, GPIO_PIN_SET)
2026-03-20 21:16:58 +08:00
# define OLED_CMD 0 //д<> <D0B4> <EFBFBD> <EFBFBD>
# define OLED_DATA 1 //д<> <D0B4> <EFBFBD> <EFBFBD>
# define u8 uint8_t
# define u16 uint16_t
# define u32 uint32_t
// --- 1. <20> Դ涨<D4B4> <E6B6A8> ---
// ǰ̨<C7B0> <CCA8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> д<EFBFBD> <D0B4> <EFBFBD> µ<EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
extern u8 OLED_GRAM [ 144 ] [ 8 ] ;
// <20> <> ̨<EFBFBD> <CCA8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڴ洢<DAB4> <E6B4A2> ǰ<EFBFBD> <C7B0> Ļ<EFBFBD> <C4BB> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> <EFBFBD> ݣ<EFBFBD> <DDA3> <EFBFBD> <EFBFBD> ڶԱȲ<D4B1> <C8B2> <EFBFBD>
extern u8 OLED_GRAM_Back [ 144 ] [ 8 ] ;
// --- 2. Ӳ<> <D3B2> <EFBFBD> ײ<EFBFBD> <D7B2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (I2C/GPIO) ---
/**
* @ brief I2C <EFBFBD> <EFBFBD> ʼ <EFBFBD> ź <EFBFBD>
*/
void I2C_Start ( void ) ;
/**
* @ brief I2C <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ź <EFBFBD>
*/
void I2C_Stop ( void ) ;
/**
* @ brief I2C <EFBFBD> ȴ <EFBFBD> Ӧ <EFBFBD> <EFBFBD>
*/
void I2C_WaitAck ( void ) ;
/**
* @ brief I2C д <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ֽ <EFBFBD>
* @ param dat Ҫ д <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void Send_Byte ( u8 dat ) ;
/**
* @ brief <EFBFBD> <EFBFBD> OLEDд <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param dat Ҫ д <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param mode ģ ʽ ѡ <EFBFBD> <EFBFBD> : 0 <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 1 <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void OLED_WR_Byte ( u8 dat , u8 mode ) ;
/**
* @ brief OLED <EFBFBD> <EFBFBD> <EFBFBD> ż <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD>
*/
void OLED_Init ( void ) ;
// --- 3. <20> <> Ļ<EFBFBD> <C4BB> <EFBFBD> ƺ<EFBFBD> <C6BA> <EFBFBD> ---
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> OLED <EFBFBD> <EFBFBD> ʾ
*/
void OLED_DisPlay_On ( void ) ;
/**
* @ brief <EFBFBD> ر <EFBFBD> OLED <EFBFBD> <EFBFBD> ʾ
*/
void OLED_DisPlay_Off ( void ) ;
/**
* @ brief <EFBFBD> <EFBFBD> Ļ <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param i 0 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ
*/
void OLED_ColorTurn ( u8 i ) ;
/**
* @ brief <EFBFBD> <EFBFBD> Ļ <EFBFBD> <EFBFBD> ת 180 <EFBFBD> <EFBFBD>
* @ param i 0 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> ת 180 <EFBFBD> <EFBFBD>
*/
void OLED_DisplayTurn ( u8 i ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ 滺 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( OLED_GRAM )
* @ note <EFBFBD> ˺ <EFBFBD> <EFBFBD> <EFBFBD> ֻ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڴ 棬 <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> ˢ <EFBFBD> µ <EFBFBD> Ӳ <EFBFBD> <EFBFBD>
*/
void OLED_Clear ( void ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ڴ 滺 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ھ ֲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x1 <EFBFBD> <EFBFBD> ʼ x <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param y1 <EFBFBD> <EFBFBD> ʼ y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x2 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> x <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param y2 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ note <EFBFBD> ˺ <EFBFBD> <EFBFBD> <EFBFBD> ֻ <EFBFBD> <EFBFBD> <EFBFBD> ڴ <EFBFBD> <EFBFBD> е <EFBFBD> OLED_GRAM <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֱ <EFBFBD> Ӳ <EFBFBD> <EFBFBD> <EFBFBD> Ӳ <EFBFBD> <EFBFBD>
*/
void OLED_FillArea ( u8 x1 , u8 y1 , u8 x2 , u8 y2 ) ;
// --- 4. <20> <> Ļˢ<C4BB> º<EFBFBD> <C2BA> <EFBFBD> ---
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ݾ ɽ ӿ ڵ <EFBFBD> ȫ <EFBFBD> <EFBFBD> ˢ <EFBFBD> <EFBFBD>
* @ note <EFBFBD> <EFBFBD> OLED_GRAM <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͵ <EFBFBD> <EFBFBD> <EFBFBD> Ļ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̨ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void OLED_Refresh ( void ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˢ <EFBFBD> <EFBFBD> ȫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD>
* @ note <EFBFBD> Ա <EFBFBD> OLED_GRAM <EFBFBD> <EFBFBD> OLED_GRAM_Back <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˢ <EFBFBD> ± 仯 <EFBFBD> <EFBFBD> <EFBFBD> ֽ <EFBFBD>
*/
void OLED_Refresh_Diff ( void ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ݾ ɽ ӿ ڵ ĵ <EFBFBD> <EFBFBD> <EFBFBD> ˢ <EFBFBD> <EFBFBD>
* @ param line <EFBFBD> к <EFBFBD> ( 0 - 7 )
*/
void OLED_Refresh_Line ( u8 line ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˢ <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD>
* @ param line <EFBFBD> к <EFBFBD> ( 0 - 7 )
* @ note <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ޱ 仯 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> I2C <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void OLED_Refresh_Line_Diff ( u8 line ) ;
// --- 5. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> ---
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x 0 ~ 127
* @ param y 0 ~ 63
* @ param t 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 0 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void OLED_DrawPoint ( u8 x , u8 y , u8 t ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x1 , y1 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x2 , y2 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param mode 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 0 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void OLED_DrawLine ( u8 x1 , u8 y1 , u8 x2 , u8 y2 , u8 mode ) ;
/**
* @ brief <EFBFBD> <EFBFBD> Բ
* @ param x , y Բ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param r Բ <EFBFBD> İ 뾶
*/
void OLED_DrawCircle ( u8 x , u8 y , u8 r ) ;
// --- 6. <20> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> ʾ ---
/**
* @ brief <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ һ <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD>
* @ param x , y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param chr Ҫ <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> ַ <EFBFBD>
* @ param size1 ѡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 6 x8 / 12 x12 / 16 x16 / 24 x24 ( <EFBFBD> ˴ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 8 , 12 , 16 , 24 )
* @ param mode 0 : <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
*/
void OLED_ShowChar ( u8 x , u8 y , u8 chr , u8 size1 , u8 mode ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ʾ <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x , y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param chr <EFBFBD> ַ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD> ַ
* @ param size1 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С
* @ param mode 0 : <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
*/
void OLED_ShowString ( u8 x , u8 y , u8 * chr , u8 size1 , u8 mode ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x , y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param num Ҫ <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param len <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ param size1 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С
* @ param mode 0 : <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
*/
void OLED_ShowNum ( u8 x , u8 y , u32 num , u8 len , u8 size1 , u8 mode ) ;
// --- 7. <20> <EFBFBD> <DFBC> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> /ͼƬ/<2F> <> <EFBFBD> <EFBFBD> ) ---
/**
* @ brief <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param x , y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param num <EFBFBD> <EFBFBD> <EFBFBD> ֶ <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( <EFBFBD> <EFBFBD> Hzk <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
* @ param size1 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С ( 16 , 24 , 32 , 64 )
* @ param mode 0 : <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
*/
void OLED_ShowChinese ( u8 x , u8 y , u8 num , u8 size1 , u8 mode ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ʾ ͼ Ƭ
* @ param x , y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param sizex , sizey ͼ Ƭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param BMP Ҫ д <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͼ Ƭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param mode 0 : <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
*/
void OLED_ShowPicture ( u8 x , u8 y , u8 sizex , u8 sizey , u8 BMP [ ] , u8 mode ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param num <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> ֵ ĸ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param space ÿ һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ <EFBFBD> ļ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param mode 0 : <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> ʾ , 1 : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
* @ note <EFBFBD> ˺ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> while ( 1 ) <EFBFBD> <EFBFBD> ѭ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ Ч <EFBFBD> <EFBFBD>
*/
void OLED_ScrollDisplay ( u8 num , u8 space , u8 mode ) ;
void OLED_FillArea ( u8 x1 , u8 y1 , u8 x2 , u8 y2 ) ;
void OLED_FillRect ( u8 x1 , u8 y1 , u8 x2 , u8 y2 ) ;
void OLED_FillRect_White ( u8 x1 , u8 y1 , u8 x2 , u8 y2 ) ;
# endif