更新
This commit is contained in:
		
							
								
								
									
										127
									
								
								OLED显示屏/实现示例/STM32 HAL库/AbsDrive_OLED.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								OLED显示屏/实现示例/STM32 HAL库/AbsDrive_OLED.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,127 @@ | ||||
| /*文件:AbsDrive_OLED.h | ||||
| *	作者:你遇了我 | ||||
| * 联系:321640253@qq.com | ||||
| * 描述:抽象硬件OLED屏幕,只需要实现指定的抽象函数,即可使用 | ||||
| * 使用:1、在配置区选择配置 | ||||
| 				2、按照配置到AbsDrive_OLED.c实现抽象函数 | ||||
| */ | ||||
|  | ||||
| #ifndef __ABS_DRIVE_OLED_H | ||||
| #define __ABS_DRIVE_OLED_H | ||||
|  | ||||
| //#include "stdlib.h"	 | ||||
| #include "stdint.h" | ||||
| #include "spi.h" | ||||
| #include "gpio.h" | ||||
| #include "main.h" | ||||
|  | ||||
|  | ||||
| /**************************配置区***************************/ | ||||
| /*----1、选择驱动芯片----*/ | ||||
| /* | ||||
| 根据你的OLED屏幕选择其中一种 | ||||
| 目前支持SSD1306、SSD1315 | ||||
| */ | ||||
| #define ABS_SSD1306 | ||||
| //#define ABS_SSD1315 | ||||
|  | ||||
|  | ||||
| /*----2、选择你实现的通信方式----*/ | ||||
| /*根据你所实现的抽象函数的方式选择:4线SPI、3线SPI、软件IIC、硬件IIC | ||||
| */ | ||||
| #define ABSDrive_4SPI | ||||
| //#define ABSDrive_3SPI | ||||
| //#define ABSDrive_SoftIIC | ||||
| //#define ABSDrive_HardIIC | ||||
|  | ||||
| /*----3、设置屏幕相关硬件参数----*/ | ||||
| #define ABS_OLED_WIDTH					128						//屏幕分辨率宽 | ||||
| #define ABS_OLED_HEIGHT					64						//屏幕分辨率高 | ||||
| #define ABS_OLED_PAGE_SIZE			8							//屏幕页结构,页数 | ||||
|  | ||||
|  | ||||
| /*----4、是否启动延时函数----*/ | ||||
| /*不需要延时函数时可以注释掉 | ||||
| */ | ||||
| #define Enable_ABS_OLED_Delay | ||||
|  | ||||
| /*----5、是否启用复位信号引脚----*/ | ||||
| /*不需要控制复位信号可以注释掉 | ||||
| */ | ||||
| #define Enable_ABS_OLED_RES | ||||
|  | ||||
|  | ||||
| /**************************配置区***************************/ | ||||
|  | ||||
| /*----------------------------------------------分割线(以下内容非开发人员切勿改动)---------------------------------------------------------*/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #define OLED_CMD  0	 | ||||
| #define OLED_DATA 1	 | ||||
|  | ||||
|  | ||||
| /*************************数据定义区*****************************/ | ||||
|  | ||||
| #define u8 uint8_t | ||||
| #define u16 uint16_t | ||||
| #define u32 uint32_t | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
| *OLED的状态 | ||||
| */ | ||||
| typedef enum _OLED_STATE{ | ||||
| 	ABS_OLED_OK 					=0x00U,			//状态正确 | ||||
| 	ABS_OLED_ERROR				=0x01U,			//状态异常 | ||||
| } AbsDriveOLED_STATE; | ||||
| /*************************数据定义区*****************************/ | ||||
|  | ||||
| /***********************命令区*****************************/ | ||||
| #if (defined ABS_SSD1306)||(defined ABS_SSD1315) | ||||
| //设置类 | ||||
| //-------基本命令-------------- | ||||
| 	#define CMD_OFF_OLED												0xAE	//关闭OLED屏幕	 | ||||
| 	#define CMD_ON_OLED													0xAF	//打开OLED屏幕	 | ||||
| 	#define CMD_EntireDisplay_OLED							0xA4	//整个屏幕显示(按照GRAM内容) | ||||
| 	#define CMD_EntireDisplayOnRAM_OLED					0xA5	//整个屏幕显示(忽视GRAM内容全部亮起) | ||||
| 	#define CMD_Normal_display_OLED							0xA6	//正常显示 | ||||
| 	#define CMD_Inverse_display_OLED						0xA7	//反向显示 | ||||
| 	#define CMD_Set_Contrast_Control_OLED				0x81	//设置对比度 | ||||
| 	 | ||||
| //-------寻址设置命令---------- | ||||
| 	#define CMD_LColAddr_OLED										0x00	//设置列地址开始的起始地址,低位寻址,次命令仅适用于页寻址模式 | ||||
| 	#define CMD_HColAddr_OLED										0x10	//设置列地址开始的起始地址,高位寻址,次命令仅适用于页寻址模式 | ||||
| 	#define CMD_Memory_Addr_Mode_OLED						0x20	//设置内存寻址模式,A[1,0],00b水平寻址,01b垂直寻址,11b重置寻址模式 | ||||
| 	#define CMD_SetColumnAddr_OLED							0x21	//设置列开始和结束地址 | ||||
| 	 | ||||
| #endif | ||||
| /***********************命令区*****************************/ | ||||
|  | ||||
|  | ||||
| /***********************函数区*****************************/ | ||||
| void OLED_ClearPoint(u8 x,u8 y); | ||||
| void OLED_ColorTurn(u8 i); | ||||
| void OLED_DisplayTurn(u8 i); | ||||
| void I2C_Start(void); | ||||
| void I2C_Stop(void); | ||||
| void I2C_WaitAck(void); | ||||
| void OLED_DisPlay_On(void); | ||||
| void OLED_DisPlay_Off(void); | ||||
| void ABS_OLED_Refresh(void); | ||||
| void OLED_Clear(void); | ||||
| void OLED_DrawPoint(u8 x,u8 y,u8 t); | ||||
| void OLED_DrawLine(u8 x1,u8 y1,u8 x2,u8 y2,u8 mode); | ||||
| void OLED_DrawCircle(u8 x,u8 y,u8 r); | ||||
| void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size1,u8 mode); | ||||
| void OLED_ShowChar6x8(u8 x,u8 y,u8 chr,u8 mode); | ||||
| void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size1,u8 mode); | ||||
| void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size1,u8 mode); | ||||
| void OLED_ShowChinese(u8 x,u8 y,u8 num,u8 size1,u8 mode); | ||||
| void OLED_ScrollDisplay(u8 num,u8 space,u8 mode); | ||||
| void OLED_ShowPicture(u8 x,u8 y,u8 sizex,u8 sizey,u8 BMP[],u8 mode); | ||||
| void ABS_OLED_Init(void); | ||||
|  | ||||
| #endif				//__ABS_DRIVE_OLED_H | ||||
|  | ||||
		Reference in New Issue
	
	Block a user