0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x80,0x80,
0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,
0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1F,
0x1F,0x1F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,
0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,
0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x06,0x06,0x07,0x0F,
0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,
0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0xC7,0xC7,0xC7,0xC7,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0xFF,0x00,0x00,0x00,0xFF,0xFF,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x03,0x03,0x03,0xE3,0xE0,0xE0,0xE0,
0xE0,0xE3,0xE3,0x03,0x03,0x03,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,
0xFF,0xF0,0xF0,0xF0,0xFF,0xFF,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF1,0xF1,0xF1,0xF1,
0xF1,0xF1,0xF1,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*'D:GD32F303GD32F30x_Firmware_Library_V2.1.4_iic_oled記帖.bmp',0*/
/* (64 X 64 )*/
};
#endif
顯示圖片
delay_1ms(2000);
OLED_Clear();
OLED_DrawBMP(0,0,64,8,BMP1); //圖片顯示(圖片顯示慎用,生成的字表較大,會占用較多空間,FLASH空間8K以下慎用)
OLED.C
//////////////////////////////////////////////////////////////////////////////////
//本程序只供學習使用,未經作者許可,不得用于其它任何用途
//記帖Q群:615061293
//B站視頻:https://space.bilibili.com/26152390
//CSDN:https://blog.csdn.net/qq_24312945/
// 文 件 名 : main.c
// 版 本 號 : v2.0
// 作 者 : Evk123
// 生成日期 : 2014-0101
// 最近修改 :
// 功能描述 : 0.69寸OLED 接口演示例程(STM32F103ZE系列IIC)
// 說明:
// ----------------------------------------------------------------
// GND 電源地
// VCC 接5V或3.3v電源
// SCL 接PA5(SCL)
// SDA 接PA7(SDA)
// ----------------------------------------------------------------
//記帖Q群:615061293
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
#include 'oled.h'
#include 'stdlib.h'
#include 'oledfont.h'
#include 'gd32f30x_i2c.h'
#include 'systick.h'
//#include 'delay.h'
//OLED的顯存
//存放格式如下.
//[0]0 1 2 3 ... 127
//[1]0 1 2 3 ... 127
//[2]0 1 2 3 ... 127
//[3]0 1 2 3 ... 127
//[4]0 1 2 3 ... 127
//[5]0 1 2 3 ... 127
//[6]0 1 2 3 ... 127
//[7]0 1 2 3 ... 127
/**********************************************
//IIC Start
**********************************************/
/**********************************************
//IIC Start
**********************************************/
//void IIC_Start()
//{
// OLED_SCLK_Set() ;
// OLED_SDIN_Set();
// OLED_SDIN_Clr();
// OLED_SCLK_Clr();
//}
///**********************************************
////IIC Stop
//**********************************************/
//void IIC_Stop()
//{
//OLED_SCLK_Set() ;
//// OLED_SCLK_Clr();
// OLED_SDIN_Clr();
// OLED_SDIN_Set();
//
//}
//void IIC_Wait_Ack()
//{
// //GPIOB- >CRH &= 0XFFF0FFFF; //設置PB12為上拉輸入模式
// //GPIOB- >CRH |= 0x00080000;
//// OLED_SDA = 1;
//// delay_us(1);
// //OLED_SCL = 1;
// //delay_us(50000);
///* while(1)
// {
// if(!OLED_SDA) //判斷是否接收到OLED 應答信號
// {
// //GPIOB- >CRH &= 0XFFF0FFFF; //設置PB12為通用推免輸出模式
// //GPIOB- >CRH |= 0x00030000;
// return;
// }
// }
//*/
// OLED_SCLK_Set() ;
// OLED_SCLK_Clr();
//}
/**
* @brief I2C1寫函數
* @param addr設備地址
* @param pdata 數據指針
* @param data_length 數據長度
*/
void i2c_write(uint8_t addr, uint8_t *pdata, uint32_t data_length)
{
uint32_t i;
/* wait until I2C bus is idle */
while(i2c_flag_get(I2C1, I2C_FLAG_I2CBSY));//等待總線空閑
/* send a start condition to I2C bus */
i2c_start_on_bus(I2C1);//發送start信號
/* wait until SBSEND bit is set */
while(!i2c_flag_get(I2C1, I2C_FLAG_SBSEND)); //起始位是否發送
/* send slave address to I2C bus */
i2c_master_addressing(I2C1, addr, I2C_TRANSMITTER);//設置從機地址和執行發送操作
/* wait until ADDSEND bit is set */
while(!i2c_flag_get(I2C1, I2C_FLAG_ADDSEND));//主機模式下地址是否發送
/* clear ADDSEND bit */
i2c_flag_clear(I2C1, I2C_FLAG_ADDSEND);//清除標志位主機模式下地址是否發送
/* wait until the transmit data buffer is empty */
while(!i2c_flag_get(I2C1, I2C_FLAG_TBE));//發送期間I2C_DATA為空
for(i = 0; i < data_length; i++){
/* data transmission */
i2c_data_transmit(I2C1, pdata[i]);//發送數據
/* wait until the TBE bit is set */
while(!i2c_flag_get(I2C1, I2C_FLAG_TBE));//發送期間I2C_DATA為空
}
/* send a stop condition to I2C bus */
i2c_stop_on_bus(I2C1);//在I2C總線上生成停止位
/* wait until stop condition generate */
while(I2C_CTL0(I2C1)&0x0200); //等待直到停止條件生成
}
/**********************************************
// IIC Write byte
**********************************************/
void Write_IIC_Byte(unsigned char IIC_Byte)
{
// unsigned char i;
// unsigned char m,da;
// da=IIC_Byte;
// OLED_SCLK_Clr();
// for(i=0;i< 8;i++)
// {
// m=da;
// // OLED_SCLK_Clr();
// m=m&0x80;
// if(m==0x80)
// {OLED_SDIN_Set();}
// else OLED_SDIN_Clr();
// da=da< < 1;
// OLED_SCLK_Set();
// OLED_SCLK_Clr();
// }
uint8_t byte[1] = {};
byte[0]=IIC_Byte;
i2c_write(0x78,byte, 1);
}
/**********************************************
// IIC Write Command
**********************************************/
void Write_IIC_Command(unsigned char IIC_Command)
{
// IIC_Start();
// Write_IIC_Byte(0x78); //Slave address,SA0=0
// IIC_Wait_Ack();
// Write_IIC_Byte(0x00); //write command
// IIC_Wait_Ack();
// Write_IIC_Byte(IIC_Command);
// IIC_Wait_Ack();
// IIC_Stop();
uint8_t byte[2] = {};
byte[0] =0x00;
byte[1] =IIC_Command;
i2c_write(0x78,byte, 2);
}
/**********************************************
// IIC Write Data
**********************************************/
void Write_IIC_Data(unsigned char IIC_Data)
{
// IIC_Start();
// Write_IIC_Byte(0x78); //D/C#=0; R/W#=0
// IIC_Wait_Ack();
// Write_IIC_Byte(0x40); //write data
// IIC_Wait_Ack();
// Write_IIC_Byte(IIC_Data);
// IIC_Wait_Ack();
// IIC_Stop();
//
uint8_t byte[2] = {};
byte[0] =0x40;
byte[1] =IIC_Data;
i2c_write(0x78,byte, 2);
}
void OLED_WR_Byte(unsigned dat,unsigned cmd)
{
if(cmd)
{
Write_IIC_Data(dat);
}
else {
Write_IIC_Command(dat);
}
}
/********************************************
// fill_Picture
********************************************/
void fill_picture(unsigned char fill_Data)
{
unsigned char m,n;
for(m=0;m< 8;m++)
上一篇:GD32F303固件庫開發(15)----外部中斷EXTI
下一篇:RT-Thread開發GD32F450添加spiflash外設的步驟
推薦閱讀最新更新時間:2025-05-23 09:39

設計資源 培訓 開發板 精華推薦
- NCP110AFCT105T2GEVB:NCP110 WLCSP4 評估板
- AD9200SSOP-EVAL,用于評估 AD9200 完整 10 位、20 MSPS A/D 轉換器的評估板
- 基于DA14580_ADXL362原理圖(小米手環方案)
- 用于儀表的 2.7 至 11V 儀表放大器
- 可調臺燈
- 針對交流性能進行優化的 18 位、250 kSPS 數據采集系統
- 200W Natural Interleaving 轉換模式 PFC 反激 LED 驅動器參考設計
- DC2732A,LTC2949 電流、電壓和演示板高壓電池組的充電監控器
- LT1185CT 折返式電流調節器限制的典型應用電路
- AD8615AUJZ-R2單電源緩沖DAC輸出運算放大器典型應用電路