//==================================================================================================
// 文件功能:OLED(SSD1306)-液晶显示屏
// 文件说明:暂无
// 文件类型:BRD-板载设备驱动文件
//--------------------------------------------------------------------------------------------------
// 硬件平台: STM32F103VET6
// 软件平台: IAR For ARM V6.60
//--------------------------------------------------------------------------------------------------
// 开发组织:枚举电子
// 开发作者:王林生
// 官方商城:枚举电子 https://enumer.taobao.com/
// 智心科技 https://bengbucollege.taobao.com/
// 微信平台:暂无
// 产品链接:暂无
// 版权信息:文件的内容版权为枚举电子科技有限科技公司拥有,使用时请注明版权出处!
//--------------------------------------------------------------------------------------------------
// 更新时间:2017-05-24
// 更新内容:详情见更新日志
//==================================================================================================
//--------------------------------------------------------------------------------------------------
//- - - -包含的头文件- - - -包含的头文件- - - -包含的头文件- - - -包含的头文件- - - -
//--------------------------------------------------------------------------------------------------
#include"MAIN.H" // 包含全局头文件,
#include"OLED(SSD1306).H" // 包含外设头文件,OLED(SSD1306)-液晶显示屏
#include"OLED(SSD1306)_FONT.H" // 包含外设头文件,OLED(SSD1306)-液晶显示屏-字库
//--------------------------------------------------------------------------------------------------
//- - - -宏自定义声明- - - -宏自定义声明- - - -宏自定义声明- - - -宏自定义声明- - - -
//--------------------------------------------------------------------------------------------------
// OLED 工作模式
#define OLED_MODE_I2C_HARDWARE 0 // OLED操作模式 I2C_HARDWARE - I2C总线硬件驱动
#define OLED_MODE_I2C_SOFTWARE 1 // OLED操作模式 I2C_SOFTWARE - I2C总线软件模拟
#define OLED_MODE_SPI_HARDWARE 2 // OLED操作模式 SPI_HARDWARE - SPI总线硬件驱动
#define OLED_MODE_SPI_SOFTWARE 3 // OLED操作模式 SPI_SOFTWARE - SPI总线软件模拟
#define OLED_MODE OLED_MODE_I2C_HARDWARE // SPI总线软件模拟
// OLED 寄存器相关
// OLED 地址相关
#define OLED_I2C_ADDR 0x78 // 器件I2C地址,默认0x78。通过调整0R电阻,0x78和0x7A两个地址
// OLED 字库相关
#define OLED_CHINA_16x16_CUNT (sizeof(OLED_CHINA_16x16)/sizeof(OLED_CHINA_16x16[0]))
//--------------------------------------------------------------------------------------------------
//- - - -定义引用变量- - - -定义引用变量- - - -定义引用变量- - - -定义引用变量- - - -
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//- - - -硬件端口定义- - - -硬件端口定义- - - -硬件端口定义- - - -硬件端口定义- - - -
//--------------------------------------------------------------------------------------------------
#if (OLED_MODE == OLED_MODE_I2C_HARDWARE) // I2C总线硬件驱动
#define OLED_I2Cx I2C2 // OLED I2C模块
#endif // (OLED_MODE == OLED_MODE_I2C_HARDWARE)
//--------------------------------------------------------------------------------------------------
#if (OLED_MODE == OLED_MODE_I2C_SOFTWARE) // I2C总线硬件驱动
#endif // (OLED_MODE == OLED_MODE_I2C_SOFTWARE)
//--------------------------------------------------------------------------------------------------
#if (OLED_MODE == OLED_MODE_SPI_HARDWARE) // SPI总线硬件驱动
#endif // (OLED_MODE == OLED_MODE_SPI_HARDWARE)
//--------------------------------------------------------------------------------------------------
#if (OLED_MODE == OLED_MODE_SPI_SOFTWARE) // SPI总线软件模拟
#endif // (OLED_MODE == OLED_MODE_SPI_SOFTWARE)
//==================================================================================================
// 函数功能:OLED GPIO 初始化
// 函数标记:底层函数,完成,
// 函数说明:
//--------------------------------------------------------------------------------------------------
// 输入参量:无
// 输出参量:无
//==================================================================================================
void OLED_GPIO_Init(void)
{
#if (OLED_MODE == OLED_MODE_I2C_HARDWARE)
{
}
#endif
#if (OLED_MODE == OLED_MODE_SPI_SOFTWARE)
{
}
#endif
}
//==================================================================================================
// 实现功能:OLED 写入显示数据
// 函数标记:底层函数,待完善,
// 函数说明:无
//--------------------------------------------------------------------------------------------------
// 输入参量:_DATA - 待写数据;
// 输出参量:无
//==================================================================================================
void OLED_WrteData(unsigned char _Data)
{
#if (OLED_MODE == OLED_MODE_I2C_HARDWARE)
{
HARDWARE_I2C_WrteRegt_Byte(OLED_I2Cx,OLED_I2C_ADDR,0x40,_Data);
}
#endif
#if (OLED_MODE == OLED_MODE_SPI_SOFTWARE)
{
unsigned char i = 8;
OLED_SPI_CSN_OUPT_L; // CSN引脚低电平,片选有效
OLED_DC_OUPT_H; // DC 引脚高电平,数据模式
OLED_SPI_SCK_OUPT_L; // SCK引脚低电平
while(i--)
{
if(_Data & 0x80)
{
OLED_SPI_SDO_OUPT_H; // SDO引脚高电平
}
else
{
OLED_SPI_SDO_OUPT_L; // SDO引脚低电平
}
OLED_SPI_SCK_OUPT_H; // SCK引脚高电平
_Data <<= 1;
OLED_SPI_SCK_OUPT_L; // SCK引脚低电平
}
OLED_SPI_CSN_OUPT_H; // CSN引脚高电平,片选无效
}
#endif
}
//==================================================================================================
// 实现功能:OLED 写入控制指令
// 函数标记:底层函数,待完善,
// 函数说明:无
//--------------------------------------------------------------------------------------------------
// 输入参量:_COMD - 待写指令,详细命令见宏定义;
// 输出参量:无
//==================================================================================================
void OLED_WrteComd(unsigned char _Comd)
{
#if (OLED_MODE == OLED_MODE_I2C_HARDWARE)
{
HARDWARE_I2C_WrteRegt_Byte(OLED_I2Cx,OLED_I2C_ADDR,0x00,_Comd);
}
#endif
#if (OLED_MODE == OLED_MODE_SPI_SOFTWARE)
{
unsigned char i = 8;
OLED_SPI_CSN_OUPT_L; // CSN引脚低电平,片选有效
OLED_DC_OUPT_L; // DC 引脚低电平,指令模式
OLED_SPI_SCK_OUPT_L; // SCK引脚低电平
while(i--)
{
if(_Comd & 0x80)
{
OLED_SPI_SDO_OUPT_H; // SDO引脚高电平
}
else
{
OLED_SPI_SDO_OUPT_L; // SDO引脚低电平
}
OLED_SPI_SCK_OUPT_H; // SCK引脚高电平
_Comd <<= 1;
OLED_SPI_SCK_OUPT_L; // SCK引脚低电平
}
OLED_SPI_CSN_OUPT_H; // CSN引脚高电平,片选无效
}
#endif
}
//==================================================================================================
// 实现功能:OLED 定位光标
// 函数标记:应用函数,待完善,
// 函数说明:无
//--------------------------------------------------------------------------------------------------
// 输入参量:_X - 列号;取值范围 - 0~127;
/