@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
|
||||
#include "hread_interface.h"
|
||||
|
||||
void IIC_SAND_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
void IIC_SAND_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,uint8_t *DATAS,uint16_t LONG)
|
||||
{
|
||||
HAL_I2C_Mem_Write(&hi2c1,DEVICE_ADD,IN_DEVICE_ADD,I2C_MEMADD_SIZE_8BIT,DATAS,LONG,100);
|
||||
}
|
||||
|
||||
void IIC_READ_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
void IIC_READ_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,uint8_t *DATAS,uint16_t LONG)
|
||||
{
|
||||
HAL_I2C_Mem_Read(&hi2c1,DEVICE_ADD,IN_DEVICE_ADD,I2C_MEMADD_SIZE_8BIT,DATAS,LONG,100);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
|
||||
extern I2C_HandleTypeDef hi2c1;
|
||||
|
||||
#define RUNLED(x) HAL_GPIO_WritePin(run_led_GPIO_Port, run_led_Pin, x)
|
||||
#define RUNLED(x) HAL_GPIO_WritePin(run_led_GPIO_Port, run_led_Pin, x)
|
||||
#define RUNLED_TICK() HAL_GPIO_TogglePin(run_led_GPIO_Port, run_led_Pin)
|
||||
|
||||
void IIC_SAND_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,uint8_t *DATAS,uint16_t LONG);
|
||||
void IIC_READ_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,uint8_t *DATAS,uint16_t LONG);
|
||||
#endif /* HREAD_INTERFACE_H_ */
|
||||
|
||||
@@ -12,11 +12,19 @@ void mymain()
|
||||
uint32_t run_tick=0;
|
||||
|
||||
OLED_Init();
|
||||
OLED_ShowStr(0,0,"test");
|
||||
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
||||
|
||||
|
||||
OLED_Cache_to_hardware();
|
||||
if(HAL_GetTick()>run_tick)
|
||||
{
|
||||
run_tick+=500;
|
||||
RUNLED_TICK();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,127 @@
|
||||
|
||||
#include "oled.h"
|
||||
|
||||
/*
|
||||
通过IIC发送指令到OLED
|
||||
*/
|
||||
void OLED_WrCmd(unsigned char IIC_Command)
|
||||
{
|
||||
uint8_t *pData;
|
||||
pData = &IIC_Command;
|
||||
IIC_SAND_DATE(OLED_ADDRESS,0x00,pData,1);
|
||||
}
|
||||
/*
|
||||
通过IIC发送数据到OLED
|
||||
*/
|
||||
void OLED_WrDat(unsigned char IIC_Data)
|
||||
{
|
||||
uint8_t *pData;
|
||||
pData = &IIC_Data;
|
||||
IIC_SAND_DATE(OLED_ADDRESS,0x40,pData,1);
|
||||
}
|
||||
/*
|
||||
设置硬件内的光标
|
||||
*/
|
||||
void OLED_Set_Pos(unsigned char x, unsigned char y)
|
||||
{
|
||||
OLED_WrCmd( 0xb0 + 7-y );
|
||||
OLED_WrCmd(((x&0xf0)>>4)|0x10);
|
||||
OLED_WrCmd( (x&0x0f) |0x00);
|
||||
}
|
||||
/*
|
||||
初始化硬件内存(显存)
|
||||
*/
|
||||
void OLED_Init_Display_Buffer(char a)
|
||||
{
|
||||
|
||||
for(unsigned char y = 0;y < Y_WIDTH_;y++)
|
||||
{
|
||||
OLED_Set_Pos(0,y);
|
||||
for(unsigned char x = 0;x < X_WIDTH;x++)
|
||||
{
|
||||
|
||||
OLED_WrDat(a);
|
||||
//HAL_Delay(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
/*
|
||||
设置屏幕亮度
|
||||
*/
|
||||
void OLED_Setting_luminance(unsigned char a)
|
||||
{
|
||||
OLED_WrCmd(0x81);
|
||||
OLED_WrCmd(a*2.55);
|
||||
|
||||
}
|
||||
/*
|
||||
初始化OLED
|
||||
*/
|
||||
void OLED_Init(void)
|
||||
{
|
||||
//HAL_Delay(200);
|
||||
OLED_WrCmd(0xAE); //关闭显示
|
||||
OLED_WrCmd(0xD5); //设置时钟分频因子,震荡频率
|
||||
OLED_WrCmd( 80); //[3:0],分频因子;[7:4],震荡频率
|
||||
OLED_WrCmd(0xA8); //设置驱动路数
|
||||
OLED_WrCmd(0X3F); //默认0X3F(1/64)
|
||||
OLED_WrCmd(0xD3); //设置显示偏移
|
||||
OLED_WrCmd(0X00); //默认为0
|
||||
OLED_WrCmd(0x40); //设置显示开始行 [5:0],行数.
|
||||
OLED_WrCmd(0x8D); //电荷泵设置
|
||||
OLED_WrCmd(0x14); //bit2,开启/关闭
|
||||
OLED_WrCmd(0x20); //设置内存地址模式
|
||||
OLED_WrCmd(0x02); //[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10;
|
||||
OLED_WrCmd(0xA1); //段重定义设置,bit0:0,0->0;1,0->127;
|
||||
OLED_WrCmd(0xC0); //设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数
|
||||
//OLED_WrCmd(0xDA); //设置COM硬件引脚配置
|
||||
//OLED_WrCmd(0x12); //[5:4]配置
|
||||
//显示方向设置
|
||||
//OLED_WrCmd(0xc8);//OLED_WrCmd(0xa0);
|
||||
//行扫描顺序:从上到下
|
||||
//列扫描顺序:从左到右
|
||||
OLED_WrCmd(0xD9); //设置预充电周期
|
||||
OLED_WrCmd(0xf1); //[3:0],PHASE 1;[7:4],PHASE 2;
|
||||
OLED_WrCmd(0xDB); //设置VCOMH 电压倍率
|
||||
OLED_WrCmd(0x30); //[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;
|
||||
|
||||
OLED_WrCmd(0xA4); //全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏)
|
||||
OLED_WrCmd(0xA6);
|
||||
//设置显示方式;bit0:1,反相显示;0,正常显示
|
||||
OLED_WrCmd(0xAF); //开启显示
|
||||
|
||||
OLED_Init_Display_Buffer(0);
|
||||
}
|
||||
|
||||
/*************************************************************************************************************************************************************************************/
|
||||
/*硬件与软件之间的部分*/
|
||||
|
||||
|
||||
/*
|
||||
定义显存
|
||||
*/
|
||||
char OLED_buff[Y_WIDTH_][X_WIDTH];
|
||||
|
||||
/*
|
||||
将显存发送到硬件
|
||||
*/
|
||||
void OLED_Cache_to_hardware()
|
||||
{
|
||||
for(uint8_t y=0;y<Y_WIDTH_;y++)
|
||||
{
|
||||
OLED_Set_Pos(0,y);
|
||||
for(uint8_t x=0;x<X_WIDTH;x++)
|
||||
{
|
||||
OLED_WrDat(OLED_buff[y][x]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************************************************************************************************/
|
||||
|
||||
|
||||
//16*16 ASCII字符集点阵
|
||||
const unsigned char asc2_1608[95][16]={
|
||||
@@ -107,90 +228,6 @@ const unsigned char asc2_1608[95][16]={
|
||||
{0x00,0x00,0x40,0x02,0x40,0x02,0x3E,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/
|
||||
{0x00,0x00,0x60,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00},/*"~",94*/
|
||||
};
|
||||
|
||||
|
||||
|
||||
void OLED_WrCmd(unsigned char IIC_Command)
|
||||
{
|
||||
uint8_t *pData;
|
||||
pData = &IIC_Command;
|
||||
IIC_SAND_DATE(OLED_ADDRESS,0x00,pData,1);
|
||||
}
|
||||
|
||||
void OLED_WrDat(unsigned char IIC_Data)
|
||||
{
|
||||
uint8_t *pData;
|
||||
pData = &IIC_Data;
|
||||
IIC_SAND_DATE(OLED_ADDRESS,0x40,pData,1);
|
||||
}
|
||||
|
||||
void OLED_Set_Pos(unsigned char x, unsigned char y)
|
||||
{
|
||||
OLED_WrCmd( 0xb0 + 7-y );
|
||||
OLED_WrCmd(((x&0xf0)>>4)|0x10);
|
||||
OLED_WrCmd( (x&0x0f) |0x00);
|
||||
}
|
||||
|
||||
void OLED_Init_Display_Buffer(char a)
|
||||
{
|
||||
|
||||
for(unsigned char y = 0;y < Y_WIDTH_;y++)
|
||||
{
|
||||
OLED_Set_Pos(0,y);
|
||||
for(unsigned char x = 0;x < X_WIDTH;x++)
|
||||
{
|
||||
|
||||
OLED_WrDat(a);
|
||||
//HAL_Delay(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void OLED_Setting_luminance(unsigned char a)
|
||||
{
|
||||
OLED_WrCmd(0x81);
|
||||
OLED_WrCmd(a*2.55);
|
||||
|
||||
}
|
||||
|
||||
void OLED_Init(void)
|
||||
{
|
||||
//HAL_Delay(200);
|
||||
OLED_WrCmd(0xAE); //关闭显示
|
||||
OLED_WrCmd(0xD5); //设置时钟分频因子,震荡频率
|
||||
OLED_WrCmd( 80); //[3:0],分频因子;[7:4],震荡频率
|
||||
OLED_WrCmd(0xA8); //设置驱动路数
|
||||
OLED_WrCmd(0X3F); //默认0X3F(1/64)
|
||||
OLED_WrCmd(0xD3); //设置显示偏移
|
||||
OLED_WrCmd(0X00); //默认为0
|
||||
OLED_WrCmd(0x40); //设置显示开始行 [5:0],行数.
|
||||
OLED_WrCmd(0x8D); //电荷泵设置
|
||||
OLED_WrCmd(0x14); //bit2,开启/关闭
|
||||
OLED_WrCmd(0x20); //设置内存地址模式
|
||||
OLED_WrCmd(0x02); //[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10;
|
||||
OLED_WrCmd(0xA1); //段重定义设置,bit0:0,0->0;1,0->127;
|
||||
OLED_WrCmd(0xC0); //设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数
|
||||
//OLED_WrCmd(0xDA); //设置COM硬件引脚配置
|
||||
//OLED_WrCmd(0x12); //[5:4]配置
|
||||
//显示方向设置
|
||||
//OLED_WrCmd(0xc8);//OLED_WrCmd(0xa0);
|
||||
//行扫描顺序:从上到下
|
||||
//列扫描顺序:从左到右
|
||||
OLED_WrCmd(0xD9); //设置预充电周期
|
||||
OLED_WrCmd(0xf1); //[3:0],PHASE 1;[7:4],PHASE 2;
|
||||
OLED_WrCmd(0xDB); //设置VCOMH 电压倍率
|
||||
OLED_WrCmd(0x30); //[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;
|
||||
|
||||
OLED_WrCmd(0xA4); //全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏)
|
||||
OLED_WrCmd(0xA6);
|
||||
//设置显示方式;bit0:1,反相显示;0,正常显示
|
||||
OLED_WrCmd(0xAF); //开启显示
|
||||
}
|
||||
|
||||
|
||||
|
||||
void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr)
|
||||
{
|
||||
OLED_Set_Pos(x,y);
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "main.h"
|
||||
#include "hread_interface.h"
|
||||
|
||||
#define OLED_ADDRESS 0x78
|
||||
#define PI 3.141592654
|
||||
#define X_WIDTH 128
|
||||
@@ -17,6 +18,9 @@
|
||||
#define Y_WIDTH_ 8
|
||||
|
||||
void OLED_Init(void);
|
||||
|
||||
void OLED_Cache_to_hardware();
|
||||
|
||||
void OLED_ShowStr(unsigned char x,unsigned char y,char *str);
|
||||
|
||||
#endif /* OLED_H_ */
|
||||
|
||||
Reference in New Issue
Block a user