配置OLED显示屏功能
This commit is contained in:
321
BSP/OLED.c
Normal file
321
BSP/OLED.c
Normal file
@@ -0,0 +1,321 @@
|
|||||||
|
#include "stm32f10x.h"
|
||||||
|
#include "OLED_Font.h"
|
||||||
|
|
||||||
|
/*引脚配置*/
|
||||||
|
#define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))
|
||||||
|
#define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))
|
||||||
|
|
||||||
|
/*引脚初始化*/
|
||||||
|
void OLED_I2C_Init(void)
|
||||||
|
{
|
||||||
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
|
||||||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
|
||||||
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
|
||||||
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
OLED_W_SCL(1);
|
||||||
|
OLED_W_SDA(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief I2C开始
|
||||||
|
* @param 无
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_I2C_Start(void)
|
||||||
|
{
|
||||||
|
OLED_W_SDA(1);
|
||||||
|
OLED_W_SCL(1);
|
||||||
|
OLED_W_SDA(0);
|
||||||
|
OLED_W_SCL(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief I2C停止
|
||||||
|
* @param 无
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_I2C_Stop(void)
|
||||||
|
{
|
||||||
|
OLED_W_SDA(0);
|
||||||
|
OLED_W_SCL(1);
|
||||||
|
OLED_W_SDA(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief I2C发送一个字节
|
||||||
|
* @param Byte 要发送的一个字节
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_I2C_SendByte(uint8_t Byte)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
for (i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
OLED_W_SDA(!!(Byte & (0x80 >> i)));
|
||||||
|
OLED_W_SCL(1);
|
||||||
|
OLED_W_SCL(0);
|
||||||
|
}
|
||||||
|
OLED_W_SCL(1); //额外的一个时钟,不处理应答信号
|
||||||
|
OLED_W_SCL(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED写命令
|
||||||
|
* @param Command 要写入的命令
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_WriteCommand(uint8_t Command)
|
||||||
|
{
|
||||||
|
OLED_I2C_Start();
|
||||||
|
OLED_I2C_SendByte(0x78); //从机地址
|
||||||
|
OLED_I2C_SendByte(0x00); //写命令
|
||||||
|
OLED_I2C_SendByte(Command);
|
||||||
|
OLED_I2C_Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED写数据
|
||||||
|
* @param Data 要写入的数据
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_WriteData(uint8_t Data)
|
||||||
|
{
|
||||||
|
OLED_I2C_Start();
|
||||||
|
OLED_I2C_SendByte(0x78); //从机地址
|
||||||
|
OLED_I2C_SendByte(0x40); //写数据
|
||||||
|
OLED_I2C_SendByte(Data);
|
||||||
|
OLED_I2C_Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED设置光标位置
|
||||||
|
* @param Y 以左上角为原点,向下方向的坐标,范围:0~7
|
||||||
|
* @param X 以左上角为原点,向右方向的坐标,范围:0~127
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_SetCursor(uint8_t Y, uint8_t X)
|
||||||
|
{
|
||||||
|
OLED_WriteCommand(0xB0 | Y); //设置Y位置
|
||||||
|
OLED_WriteCommand(0x10 | ((X & 0xF0) >> 4)); //设置X位置高4位
|
||||||
|
OLED_WriteCommand(0x00 | (X & 0x0F)); //设置X位置低4位
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED清屏
|
||||||
|
* @param 无
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_Clear(void)
|
||||||
|
{
|
||||||
|
uint8_t i, j;
|
||||||
|
for (j = 0; j < 8; j++)
|
||||||
|
{
|
||||||
|
OLED_SetCursor(j, 0);
|
||||||
|
for(i = 0; i < 128; i++)
|
||||||
|
{
|
||||||
|
OLED_WriteData(0x00);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED显示一个字符
|
||||||
|
* @param Line 行位置,范围:1~4
|
||||||
|
* @param Column 列位置,范围:1~16
|
||||||
|
* @param Char 要显示的一个字符,范围:ASCII可见字符
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
OLED_SetCursor((Line - 1) * 2, (Column - 1) * 8); //设置光标位置在上半部分
|
||||||
|
for (i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
OLED_WriteData(OLED_F8x16[Char - ' '][i]); //显示上半部分内容
|
||||||
|
}
|
||||||
|
OLED_SetCursor((Line - 1) * 2 + 1, (Column - 1) * 8); //设置光标位置在下半部分
|
||||||
|
for (i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
OLED_WriteData(OLED_F8x16[Char - ' '][i + 8]); //显示下半部分内容
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED显示字符串
|
||||||
|
* @param Line 起始行位置,范围:1~4
|
||||||
|
* @param Column 起始列位置,范围:1~16
|
||||||
|
* @param String 要显示的字符串,范围:ASCII可见字符
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_ShowString(uint8_t Line, uint8_t Column, char *String)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
for (i = 0; String[i] != '\0'; i++)
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column + i, String[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED次方函数
|
||||||
|
* @retval 返回值等于X的Y次方
|
||||||
|
*/
|
||||||
|
uint32_t OLED_Pow(uint32_t X, uint32_t Y)
|
||||||
|
{
|
||||||
|
uint32_t Result = 1;
|
||||||
|
while (Y--)
|
||||||
|
{
|
||||||
|
Result *= X;
|
||||||
|
}
|
||||||
|
return Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED显示数字(十进制,正数)
|
||||||
|
* @param Line 起始行位置,范围:1~4
|
||||||
|
* @param Column 起始列位置,范围:1~16
|
||||||
|
* @param Number 要显示的数字,范围:0~4294967295
|
||||||
|
* @param Length 要显示数字的长度,范围:1~10
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
for (i = 0; i < Length; i++)
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column + i, Number / OLED_Pow(10, Length - i - 1) % 10 + '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED显示数字(十进制,带符号数)
|
||||||
|
* @param Line 起始行位置,范围:1~4
|
||||||
|
* @param Column 起始列位置,范围:1~16
|
||||||
|
* @param Number 要显示的数字,范围:-2147483648~2147483647
|
||||||
|
* @param Length 要显示数字的长度,范围:1~10
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
uint32_t Number1;
|
||||||
|
if (Number >= 0)
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column, '+');
|
||||||
|
Number1 = Number;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column, '-');
|
||||||
|
Number1 = -Number;
|
||||||
|
}
|
||||||
|
for (i = 0; i < Length; i++)
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column + i + 1, Number1 / OLED_Pow(10, Length - i - 1) % 10 + '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED显示数字(十六进制,正数)
|
||||||
|
* @param Line 起始行位置,范围:1~4
|
||||||
|
* @param Column 起始列位置,范围:1~16
|
||||||
|
* @param Number 要显示的数字,范围:0~0xFFFFFFFF
|
||||||
|
* @param Length 要显示数字的长度,范围:1~8
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length)
|
||||||
|
{
|
||||||
|
uint8_t i, SingleNumber;
|
||||||
|
for (i = 0; i < Length; i++)
|
||||||
|
{
|
||||||
|
SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16;
|
||||||
|
if (SingleNumber < 10)
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column + i, SingleNumber + '0');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column + i, SingleNumber - 10 + 'A');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED显示数字(二进制,正数)
|
||||||
|
* @param Line 起始行位置,范围:1~4
|
||||||
|
* @param Column 起始列位置,范围:1~16
|
||||||
|
* @param Number 要显示的数字,范围:0~1111 1111 1111 1111
|
||||||
|
* @param Length 要显示数字的长度,范围:1~16
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
for (i = 0; i < Length; i++)
|
||||||
|
{
|
||||||
|
OLED_ShowChar(Line, Column + i, Number / OLED_Pow(2, Length - i - 1) % 2 + '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OLED初始化
|
||||||
|
* @param 无
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void OLED_Init(void)
|
||||||
|
{
|
||||||
|
uint32_t i, j;
|
||||||
|
|
||||||
|
for (i = 0; i < 1000; i++) //上电延时
|
||||||
|
{
|
||||||
|
for (j = 0; j < 1000; j++);
|
||||||
|
}
|
||||||
|
|
||||||
|
OLED_I2C_Init(); //端口初始化
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xAE); //关闭显示
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xD5); //设置显示时钟分频比/振荡器频率
|
||||||
|
OLED_WriteCommand(0x80);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xA8); //设置多路复用率
|
||||||
|
OLED_WriteCommand(0x3F);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xD3); //设置显示偏移
|
||||||
|
OLED_WriteCommand(0x00);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0x40); //设置显示开始行
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xA1); //设置左右方向,0xA1正常 0xA0左右反置
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xC8); //设置上下方向,0xC8正常 0xC0上下反置
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xDA); //设置COM引脚硬件配置
|
||||||
|
OLED_WriteCommand(0x12);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0x81); //设置对比度控制
|
||||||
|
OLED_WriteCommand(0xCF);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xD9); //设置预充电周期
|
||||||
|
OLED_WriteCommand(0xF1);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xDB); //设置VCOMH取消选择级别
|
||||||
|
OLED_WriteCommand(0x30);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xA4); //设置整个显示打开/关闭
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xA6); //设置正常/倒转显示
|
||||||
|
|
||||||
|
OLED_WriteCommand(0x8D); //设置充电泵
|
||||||
|
OLED_WriteCommand(0x14);
|
||||||
|
|
||||||
|
OLED_WriteCommand(0xAF); //开启显示
|
||||||
|
|
||||||
|
OLED_Clear(); //OLED清屏
|
||||||
|
}
|
||||||
13
BSP/OLED.h
Normal file
13
BSP/OLED.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#ifndef __OLED_H
|
||||||
|
#define __OLED_H
|
||||||
|
|
||||||
|
void OLED_Init(void);
|
||||||
|
void OLED_Clear(void);
|
||||||
|
void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char);
|
||||||
|
void OLED_ShowString(uint8_t Line, uint8_t Column, char *String);
|
||||||
|
void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
|
||||||
|
void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length);
|
||||||
|
void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
|
||||||
|
void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
|
||||||
|
|
||||||
|
#endif
|
||||||
293
BSP/OLED_Font.h
Normal file
293
BSP/OLED_Font.h
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
#ifndef __OLED_FONT_H
|
||||||
|
#define __OLED_FONT_H
|
||||||
|
|
||||||
|
/*OLED字模库,宽8像素,高16像素*/
|
||||||
|
const uint8_t OLED_F8x16[][16] =
|
||||||
|
{
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00, //! 1
|
||||||
|
|
||||||
|
0x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //" 2
|
||||||
|
|
||||||
|
0x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00,
|
||||||
|
0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00, //# 3
|
||||||
|
|
||||||
|
0x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00,
|
||||||
|
0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00, //$ 4
|
||||||
|
|
||||||
|
0xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00,
|
||||||
|
0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00, //% 5
|
||||||
|
|
||||||
|
0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00,
|
||||||
|
0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10, //& 6
|
||||||
|
|
||||||
|
0x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //' 7
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00, //( 8
|
||||||
|
|
||||||
|
0x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, //) 9
|
||||||
|
|
||||||
|
0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00,
|
||||||
|
0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00, //* 10
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00, //+ 11
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, //, 12
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //- 13
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, //. 14
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04,
|
||||||
|
0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, /// 15
|
||||||
|
|
||||||
|
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||||
|
0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, //0 16
|
||||||
|
|
||||||
|
0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //1 17
|
||||||
|
|
||||||
|
0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00,
|
||||||
|
0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00, //2 18
|
||||||
|
|
||||||
|
0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00,
|
||||||
|
0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, //3 19
|
||||||
|
|
||||||
|
0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00,
|
||||||
|
0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00, //4 20
|
||||||
|
|
||||||
|
0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00,
|
||||||
|
0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00, //5 21
|
||||||
|
|
||||||
|
0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00,
|
||||||
|
0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, //6 22
|
||||||
|
|
||||||
|
0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, //7 23
|
||||||
|
|
||||||
|
0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00,
|
||||||
|
0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00, //8 24
|
||||||
|
|
||||||
|
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||||
|
0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, //9 25
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, //: 26
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, //; 27
|
||||||
|
|
||||||
|
0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00,
|
||||||
|
0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, //< 28
|
||||||
|
|
||||||
|
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||||
|
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, //= 29
|
||||||
|
|
||||||
|
0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, //> 30
|
||||||
|
|
||||||
|
0x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00, //? 31
|
||||||
|
|
||||||
|
0xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00,
|
||||||
|
0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00, //@ 32
|
||||||
|
|
||||||
|
0x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00,
|
||||||
|
0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20, //A 33
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, //B 34
|
||||||
|
|
||||||
|
0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00,
|
||||||
|
0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, //C 35
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, //D 36
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00, //E 37
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, //F 38
|
||||||
|
|
||||||
|
0xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00,
|
||||||
|
0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00, //G 39
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08,
|
||||||
|
0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20, //H 40
|
||||||
|
|
||||||
|
0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00,
|
||||||
|
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //I 41
|
||||||
|
|
||||||
|
0x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00,
|
||||||
|
0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, //J 42
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00, //K 43
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00, //L 44
|
||||||
|
|
||||||
|
0x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00,
|
||||||
|
0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00, //M 45
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08,
|
||||||
|
0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00, //N 46
|
||||||
|
|
||||||
|
0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||||
|
0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, //O 47
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00,
|
||||||
|
0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00, //P 48
|
||||||
|
|
||||||
|
0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||||
|
0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00, //Q 49
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20, //R 50
|
||||||
|
|
||||||
|
0x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00,
|
||||||
|
0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00, //S 51
|
||||||
|
|
||||||
|
0x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00,
|
||||||
|
0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, //T 52
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08,
|
||||||
|
0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, //U 53
|
||||||
|
|
||||||
|
0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08,
|
||||||
|
0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00, //V 54
|
||||||
|
|
||||||
|
0xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00,
|
||||||
|
0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00, //W 55
|
||||||
|
|
||||||
|
0x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08,
|
||||||
|
0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20, //X 56
|
||||||
|
|
||||||
|
0x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00,
|
||||||
|
0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, //Y 57
|
||||||
|
|
||||||
|
0x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00,
|
||||||
|
0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00, //Z 58
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00, //[ 59
|
||||||
|
|
||||||
|
0x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00, //\ 60
|
||||||
|
|
||||||
|
0x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00, //] 61
|
||||||
|
|
||||||
|
0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //^ 62
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //_ 63
|
||||||
|
|
||||||
|
0x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //` 64
|
||||||
|
|
||||||
|
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20, //a 65
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, //b 66
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00, //c 67
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00,
|
||||||
|
0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20, //d 68
|
||||||
|
|
||||||
|
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00, //e 69
|
||||||
|
|
||||||
|
0x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18,
|
||||||
|
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //f 70
|
||||||
|
|
||||||
|
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00, //g 71
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||||
|
0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, //h 72
|
||||||
|
|
||||||
|
0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //i 73
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00,
|
||||||
|
0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, //j 74
|
||||||
|
|
||||||
|
0x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00, //k 75
|
||||||
|
|
||||||
|
0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //l 76
|
||||||
|
|
||||||
|
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F, //m 77
|
||||||
|
|
||||||
|
0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||||
|
0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, //n 78
|
||||||
|
|
||||||
|
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, //o 79
|
||||||
|
|
||||||
|
0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00, //p 80
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80, //q 81
|
||||||
|
|
||||||
|
0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00, //r 82
|
||||||
|
|
||||||
|
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00, //s 83
|
||||||
|
|
||||||
|
0x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00, //t 84
|
||||||
|
|
||||||
|
0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00,
|
||||||
|
0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20, //u 85
|
||||||
|
|
||||||
|
0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
|
||||||
|
0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00, //v 86
|
||||||
|
|
||||||
|
0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80,
|
||||||
|
0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00, //w 87
|
||||||
|
|
||||||
|
0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00, //x 88
|
||||||
|
|
||||||
|
0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
|
||||||
|
0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00, //y 89
|
||||||
|
|
||||||
|
0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||||
|
0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00, //z 90
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, //{ 91
|
||||||
|
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, //| 92
|
||||||
|
|
||||||
|
0x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, //} 93
|
||||||
|
|
||||||
|
0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //~ 94
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -36,6 +36,9 @@ add_executable(${CMAKE_PROJECT_NAME}
|
|||||||
BSP/Buzzer.h
|
BSP/Buzzer.h
|
||||||
BSP/LightSensor.c
|
BSP/LightSensor.c
|
||||||
BSP/LightSensor.h
|
BSP/LightSensor.h
|
||||||
|
BSP/OLED.c
|
||||||
|
BSP/OLED.h
|
||||||
|
BSP/OLED_Font.h
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
||||||
|
|||||||
26
User/main.c
26
User/main.c
@@ -1,17 +1,21 @@
|
|||||||
#include "stm32f10x.h"
|
#include "stm32f10x.h"
|
||||||
#include "Delay.h"
|
#include "Delay.h"
|
||||||
#include "Buzzer.h"
|
#include "OLED.h"
|
||||||
#include "LightSensor.h"
|
|
||||||
uint8_t KeyNum;
|
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
Buzzer_Init();
|
|
||||||
LightSensor_Init();
|
OLED_Init();
|
||||||
|
OLED_ShowChar(1,1, 'A');
|
||||||
|
OLED_ShowString(1,3, "Hello World!12");
|
||||||
|
OLED_ShowNum(2, 1, 12345, 5);
|
||||||
|
OLED_ShowSignedNum(2, 7, 12, 2);
|
||||||
|
OLED_ShowSignedNum(2, 11, -34, 2);
|
||||||
|
OLED_ShowHexNum(3,1,0xaa55,4);
|
||||||
|
OLED_ShowBinNum(4,1,0xaa55,16);
|
||||||
|
|
||||||
|
Delay_ms(1000);
|
||||||
|
OLED_Clear();
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (LightSensor_Read() == 1) {
|
|
||||||
Buzzer_ON();
|
|
||||||
} else {
|
|
||||||
Buzzer_OFF();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user