使用STM32F103xxx对0.96寸OLED进行驱动显示。

1.IIC协议代码  iic.c

#include "iic.h"
#include "delay.h"
//   //IIC端口初始化
void IIC_Init(void)
{                        GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOB, ENABLE ); //使能GPIOB时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;       //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_10);             //PB1,PB10输出高电平
}//产生IIC起始信号
void IIC_Start(void)
{SDA_OUT();     //SDA设置输出IIC_SDA=1;          IIC_SCL=1;delay_us(4);IIC_SDA=0;//START:when CLK is high,DATA change form high to low delay_us(4);IIC_SCL=0;//钳住IIC总线,准备发送或接收数据
}
//产生停止信号
void IIC_Stop(void)
{SDA_OUT();//SDA设置输出IIC_SCL=0;IIC_SDA=0;//STOP:when CLK is high DATA change form low to highdelay_us(4);IIC_SCL=1; IIC_SDA=1;delay_us(4);
}
//等待应答信号到来
//返回1接收应答失败,0成功
u8 IIC_Wait_Ack(void)
{u8 ucErrTime=0;SDA_IN();      //SDA设置输入IIC_SDA=1;delay_us(1);       IIC_SCL=1;delay_us(1);   while(READ_SDA){ucErrTime++;if(ucErrTime>250){IIC_Stop();return 1;}}IIC_SCL=0;  return 0;
}
//产生ACK应答
void IIC_Ack(void)
{IIC_SCL=0;SDA_OUT();IIC_SDA=0;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0;
}
//不产生ACK应答
void IIC_NAck(void)
{IIC_SCL=0;SDA_OUT();IIC_SDA=1;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0;
}
//IIC发送一个字节
//返回从机有无应带
//1有应答
//0无应答
void IIC_Send_Byte(u8 txd)
{                        u8 t; SDA_OUT();       IIC_SCL=0;//拉低时钟开始传输数据for(t=0;t<8;t++){              if((txd&0x80)>>7)IIC_SDA=1;elseIIC_SDA=0;txd<<=1;      delay_us(2);   IIC_SCL=1;delay_us(2); IIC_SCL=0;    delay_us(2);}
}   //读一个字节数据
u8 IIC_Read_Byte(unsigned char ack)
{unsigned char i,receive=0;SDA_IN();//SDA设置输入for(i=0;i<8;i++ ){IIC_SCL=0; delay_us(2);IIC_SCL=1;receive<<=1;if(READ_SDA)receive++;   delay_us(1); }                    if (!ack)IIC_NAck();//发送nACKelseIIC_Ack(); //发送ACK   return receive;
}

2.IIC协议代码  iic.h

#ifndef __IIC_H
#define __IIC_H
#include "sys.h"
//   //IO方向设置#define SDA_IN()  {GPIOB->CRL&=0XFFFFFF0F;GPIOB->CRL|=(u32)8<<4;}
#define SDA_OUT() {GPIOB->CRL&=0XFFFFFF0F;GPIOB->CRL|=(u32)3<<4;}#define IIC_SCL    PBout(10) //SCL
#define IIC_SDA    PBout(1) //发送SDA
#define READ_SDA   PBin(1)  //输入SDA //IIC相关函数
void IIC_Init(void);
void IIC_Start(void);
void IIC_Stop(void);
void IIC_Send_Byte(u8 txd);
u8 IIC_Read_Byte(unsigned char ack);
u8 IIC_Wait_Ack(void);
void IIC_Ack(void);
void IIC_NAck(void);                void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
u8 IIC_Read_One_Byte(u8 daddr,u8 addr);
#endif

在设置IO口方向中,是直接设置的寄存器CRL或CRH。CRL和CRH是设置IO口输出/输入模式的,CRL设置0-7号GPIO,CRH设置8-15号GPIO,并且每四位设置一个GPIO,按照高低位对应。我设置的SDA数据引脚为PB1,即要设置CRL[4:7],通过GPIOB->CRL&=0XFFFFFF0F;对CRL[4:7]清0,再由GPIOB->CRL|=(u32)8<<4;装载新的数据。由于要设置CRL[4:7],所要32位的数据左移4位。在任意一个GPIO中,数据1000为输入,0011为输出。

3.OLED显示  display.c

#include"display.h"
#include"point.h"
#include"sys.h"
#include"delay.h"
#include"iic.h"
#include "time.h"extern const u8 ASCII_8_16[][16];extern const u8 ChineseFont_16_16[][32];/*
函数功能:向OLED写入一个字节
参数:
dat:写入的数据/命令
cmd:1为写数据 0为写命令
*/
void OLED_WR_Byte(u8 dat,u8 cmd)
{IIC_Start();            //IIC开始信号IIC_Send_Byte(0x78);     //传输地址IIC_Wait_Ack();         //接收ACKif(cmd) IIC_Send_Byte(0x40);     //写数据else IIC_Send_Byte(0x00);  //写命令IIC_Wait_Ack();        //接收ACKIIC_Send_Byte(dat);  //发送数据/命令IIC_Wait_Ack();        //接收ACKIIC_Stop();      //IIC停止
}/*
函数功能:清屏
*/
void OLED_Clear(void)
{  u8 i,n;  for(i=0;i<8;i++){OLED_WR_Byte(0xB0+i,OLED_CMD);  //行地址(0-7)OLED_WR_Byte(0x00,OLED_CMD);    //从(0,0)开始OLED_WR_Byte(0x10,OLED_CMD);    for(n=0;n<128;n++){OLED_WR_Byte(0x00,OLED_DATA);}}
}/*
函数功能:设置显示起始位置
参数: x=0~127   列y=0~7 行
*/
void OLED_SetCursorAddrese(u8 x,u8 y)
{OLED_WR_Byte(0xB0+y,OLED_CMD);    OLED_WR_Byte((x&0xF0)>>4|0x10,OLED_CMD);OLED_WR_Byte((x&0x0F)|0x00,OLED_CMD);
}/*
函数功能:OLED初始化
*/
void OLED_Init(void)
{delay_ms(500);                         OLED_WR_Byte(0xAE,OLED_CMD);OLED_WR_Byte(0x00,OLED_CMD);OLED_WR_Byte(0x10,OLED_CMD);OLED_WR_Byte(0x40,OLED_CMD);OLED_WR_Byte(0x81,OLED_CMD);OLED_WR_Byte(0xCF,OLED_CMD);OLED_WR_Byte(0xA1,OLED_CMD);OLED_WR_Byte(0xC8,OLED_CMD);OLED_WR_Byte(0xA6,OLED_CMD);OLED_WR_Byte(0xA8,OLED_CMD);OLED_WR_Byte(0x3F,OLED_CMD);OLED_WR_Byte(0xD3,OLED_CMD);OLED_WR_Byte(0x00,OLED_CMD);OLED_WR_Byte(0xD5,OLED_CMD);OLED_WR_Byte(0x80,OLED_CMD);OLED_WR_Byte(0xD9,OLED_CMD);OLED_WR_Byte(0xF1,OLED_CMD);OLED_WR_Byte(0xDA,OLED_CMD);OLED_WR_Byte(0x12,OLED_CMD);OLED_WR_Byte(0xDB,OLED_CMD);OLED_WR_Byte(0x40,OLED_CMD);OLED_WR_Byte(0x20,OLED_CMD);OLED_WR_Byte(0x02,OLED_CMD);OLED_WR_Byte(0x8D,OLED_CMD);OLED_WR_Byte(0x14,OLED_CMD);OLED_WR_Byte(0xA4,OLED_CMD);OLED_WR_Byte(0xA6,OLED_CMD);OLED_WR_Byte(0xAF,OLED_CMD);OLED_Clear();OLED_SetCursorAddrese(0,0);
}/*
函数功能:显示8*16字符串
参数:x=0-127 y=0-7height:高度str:字符串首地址
*/
void OLED_DisplayString(u8 x,u8 y,u8 height,u8 *str)
{u8 addr=0,i;while(*str!='\0') {if(*str >= ' '&& *str <= '~')             {addr=*str-' ';                          //取出相对地址OLED_SetCursorAddrese(x,y);             //显示地址for(i=0;i<height/2;i++)      {OLED_WR_Byte(ASCII_8_16[addr][i],OLED_DATA); }OLED_SetCursorAddrese(x,y+1); for(i=0;i<height/2;i++)        {OLED_WR_Byte(ASCII_8_16[addr][i+height/2],OLED_DATA); }str++;x+=height/2;          }}
}/*
函数功能:显示16*16的中文
参数:x=0-127 y=0-7
add: 二维数组的行地址
font_long:显示的中文字数
*/
void OLED_DisplayChinese(u8 x,u8 y,u8 add,u8 font_long)
{u8 i;while(font_long--){OLED_SetCursorAddrese(x,y);           //显示地址for(i=0;i<16;i++)      {OLED_WR_Byte(ChineseFont_16_16[add][i],OLED_DATA); }OLED_SetCursorAddrese(x,y+1); for(i=0;i<16;i++)        {OLED_WR_Byte(ChineseFont_16_16[add][i+16],OLED_DATA); }x+=16;      add++;}
}

4.OLED显示  display.h

#ifndef __DISPLAY_H
#define __DISPLAY_H
#include "stm32f10x.h"#define OLED_CMD                0       //命令
#define OLED_DATA               1       //数据//相关函数
void OLED_Init(void);
void OLED_DisplayString(u8 x,u8 y,u8 height,u8 *str);
void OLED_DisplayChinese(u8 x,u8 y,u8 add,u8 font_long);#endif

5.字库 word.c

         word.c中的字符数据是由PCtoLCD2002取字模软件生成的,在取字模时要设置软件,设置点阵格式为阴码,取模走向为逆向,取模方式为列行式。

#include "word.h"
#include "sys.h"// ASCII字符集 大小8*16
const u8 ASCII_8_16[][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,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x10,0x0C,0x02,0x10,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
{0x00,0x40,0xC0,0x78,0x40,0xC0,0x78,0x00,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x00},/*"#",3*/
{0x00,0x70,0x88,0x88,0xFC,0x08,0x30,0x00,0x00,0x18,0x20,0x20,0xFF,0x21,0x1E,0x00},/*"$",4*/
{0xF0,0x08,0xF0,0x80,0x60,0x18,0x00,0x00,0x00,0x31,0x0C,0x03,0x1E,0x21,0x1E,0x00},/*"%",5*/
{0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x2C,0x19,0x27,0x21,0x10},/*"&",6*/
{0x00,0x12,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,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01},/*"+",11*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x70,0x00,0x00,0x00,0x00,0x00},/*",",12*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"-",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00},/*".",14*/
{0x00,0x00,0x00,0x00,0xC0,0x38,0x04,0x00,0x00,0x60,0x18,0x07,0x00,0x00,0x00,0x00},/*"/",15*/
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},/*"0",16*/
{0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00},/*"1",17*/
{0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},/*"2",18*/
{0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00},/*"3",19*/
{0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24},/*"4",20*/
{0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00},/*"5",21*/
{0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00},/*"6",22*/
{0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00},/*"7",23*/
{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},/*"8",24*/
{0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,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,0x00,0xE0,0x00,0x00,0x00,0x00},/*";",27*/
{0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00},/*"<",28*/
{0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00},/*"=",29*/
{0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00},/*">",30*/
{0x00,0x70,0x48,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x30,0x37,0x00,0x00,0x00},/*"?",31*/
{0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x28,0x2F,0x28,0x17,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,0x01,0x3E,0x01,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,0x10,0x28,0x28,0x30,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*/
{0x08,0xF8,0x00,0xF8,0x00,0xF8,0x08,0x00,0x00,0x03,0x3E,0x01,0x3E,0x03,0x00,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,0x04,0x38,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,0x04,0x00,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,0x00,0x00,0x00,0x00,0x19,0x24,0x24,0x12,0x3F,0x20,0x00},/*"a",65*/
{0x10,0xF0,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,0x80,0x80,0x80,0x90,0xF0,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20},/*"d",68*/
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x24,0x24,0x24,0x24,0x17,0x00},/*"e",69*/
{0x00,0x80,0x80,0xE0,0x90,0x90,0x20,0x00,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*/
{0x10,0xF0,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*/
{0x10,0xF0,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x06,0x29,0x30,0x20,0x00},/*"k",75*/
{0x00,0x10,0x10,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,0x91,0x20,0x20,0x11,0x0E,0x00},/*"p",80*/
{0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0x91,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,0x10,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,0x80,0x80,0x80,0x00,0x00,0x03,0x0C,0x30,0x0C,0x03,0x00,0x00},/*"v",86*/
{0x80,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x01,0x0E,0x30,0x0C,0x07,0x38,0x06,0x01},/*"w",87*/
{0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x20,0x31,0x0E,0x2E,0x31,0x20,0x00},/*"x",88*/
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x81,0x86,0x78,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,0x00,0xFC,0x02,0x02,0x00,0x00,0x00,0x00,0x01,0x3E,0x40,0x40},/*"{",91*/
{0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},/*"|",92*/
{0x02,0x02,0xFC,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x3E,0x01,0x00,0x00,0x00,0x00},/*"}",93*/
{0x00,0x80,0x40,0x80,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00},/*"~",94*/
};//中文字库 大小16*16
const u8 ChineseFont_16_16[][32] = {
{0x10,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
0x80,0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00},//加{0x90,0x94,0x94,0xF4,0x9F,0x94,0x94,0x94,0x10,0x10,0xFF,0x10,0x12,0xD4,0x10,0x00,
0x20,0x26,0x25,0x24,0xFE,0x14,0x14,0x14,0x80,0x40,0x27,0x18,0x26,0x41,0xF0,0x00},//载{0x08,0x08,0x08,0x08,0x08,0xF8,0x89,0x8E,0x88,0x88,0x88,0x88,0x08,0x08,0x08,0x00,
0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00},//方{0x00,0xF8,0x08,0x08,0x0C,0xCA,0x49,0x48,0x48,0xC8,0x08,0x08,0x08,0xF8,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00},//向{0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,
0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00},//电{0x10,0x60,0x02,0x8C,0x00,0x44,0x64,0x54,0x4D,0x46,0x44,0x54,0x64,0xC4,0x04,0x00,
0x04,0x04,0x7E,0x01,0x80,0x40,0x3E,0x00,0x00,0xFE,0x00,0x00,0x7E,0x80,0xE0,0x00},//流
};

6.字库 word.c

#ifndef WORD_H
#define WORD_H
#include "sys.h"extern const u8 ASCII_8_16[][16];extern const u8 ChineseFont_16_16[][32];#endif

7.主函数  main.c

#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
#include "usart.h"
#include "display.h"
#include "iic.h"int main( void )
{   NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 );uart_init(115200);delay_init();IIC_Init();OLED_Init();     //OLED初始化delay_ms(100);  OLED_DisplayChinese(24,0,0,4);   //加载方向OLED_DisplayString(88,0,16,":");OLED_DisplayChinese(24,3,4,2);   //电流OLED_DisplayString(56,3,16,":");OLED_DisplayString(88,3,16,"mA");while(1);
}

8.效果图

0.96寸4引脚(IIC协议)OLED驱动程序相关推荐

  1. STC15W408AS单片机IIC驱动0.96寸OLED显示

    STC15W408AS单片机IIC驱动0.96寸OLED显示 不同页的滚动效果() 全页的滚动效果 STC15W408AS最新系统板 注意图片上的0欧姆电阻贴错了位置,应该是与GND相连的,图片上是P ...

  2. 基于 SPI 协议的0.96 寸OLED显示

    目录 一. SPI 协议 1.简介 2.SPI的连接方式 3.通信过程​ 二.OLED 1.OLED原理 2.点阵编码原理与显示 三.OLED显示实验 Demo 程序 1.要求 2. OLED 显示汉 ...

  3. 利用51单片机+0.96寸iic接口oled显示图片或动图

    利用51单片机+0.96寸iic接口oled显示图片或动图 前言:之前讲过如何使用oled显示数字以及字符,但并未讲述如何显示BMP格式的图片, 这篇将在之前的基础上加以封装一些函数用来显示图片 硬件 ...

  4. STM32F103C8T6模拟IIC控制4针0.96寸OLED显示屏

    OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD).OLE ...

  5. 基于STM32F103 0.96寸OLED液晶屏驱动(iic通讯)

    一.概述 OLED驱动方式有8080.6800.3线/4线SPI以及IIC,能够显示字符.汉字的图片,无字库需通过取模软件获取显示内容数组.本次实验使用的是IIC通信协议,SSD1306驱动芯片的OL ...

  6. STM32实现0.96寸OLED显示模拟IIC和IIC四种实现(标准库和HAL库)

    目录 本文通过四种方法实现OLED显示 设备选择 OLED介绍 接线表设计 OLED应用 1.标准库模拟IIC实现OLED显示 2.标准库IIC实现OLED显示 3.HAL库模拟IIC实现OLED显示 ...

  7. STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库)

    STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库 文章目录 STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库 一.O ...

  8. 0.96寸OLED屏显示(IIC通信)Ⅰ

    0.96寸OLED屏显示(IIC通信) 一.0.96寸OLED简介   0.96寸OLED屏内部驱动IC为SSD1306:兼容6800.8080两种并行接口方式,3线或 4线的串行SPI接口方式和 I ...

  9. Esp8266 进阶之路31【外设篇】分享一个乐鑫esp8266 SDK编程使用 IIC总线驱动 0.96寸的OLED显示屏,显示天气预报信息。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

最新文章

  1. mysql 5.7.28 windows_Windows下mysql-5.7.28下载、安装、配置教程
  2. 与vnpy相关的有用博客网址
  3. 深度学习之卷积神经网络(12)深度残差网络
  4. Redis:12---有序集合对象
  5. 每天学习点--------第五天(2017-10-9) 摘要: 常用的集合
  6. 300 行代码带你秒懂 Java 多线程!| 原力计划
  7. 聚类算法评价指标学习笔记
  8. Oracle 补丁体系 及 opatch 工具 介绍
  9. 计算机应用基础word的课件,计算机应用基础之word2010课件
  10. CocosCreator 制作微信小游戏排行榜,超越好友,分享功能
  11. 服务器2003系统安装时蓝屏,安装2003server操作系统蓝屏是怎么回事?
  12. ArcGIS基础:面数据空洞填充的方法
  13. 数据预处理(三)——数据集成
  14. 计算机开始菜的mstsc命令,Win10一周年更新版系统CLSID(GUID)汇总
  15. python+spyder读取tif影像
  16. 商务型网站建设多少钱
  17. 面向对象编程实验课随笔(承继下的构造函数和析构函数)
  18. mysql char30_Mysql中varchar与char的区别以及varchar(30)中的30代表的涵义
  19. ug提示找不到html文件,[图文教程] 以下文件无法加载,导致打开操作失败: 使用当前搜索选项找不到文件,部件已卸载...
  20. C# 超市管理系统源码

热门文章

  1. 二阶线性偏微分方程的分类和标准式 | 椭圆型、抛物线形、双曲线型 | 偏微分方程(十一)
  2. 论文阅读笔记《Decoupled Visual Servoing With Fuzzy Q-Learning》
  3. 一行代码教你如何学会网络测速
  4. 制作查询数据窗口php,pb 检索数据窗口做条件查询 | 学步园
  5. Windows常用快捷键(提高您的工作效率轻松完成日常工作)
  6. 什么是互联网大厂_在互联网大厂做运营,你要提前准备什么?
  7. 多边形凹凸性的判断、自相交判断
  8. 软路由刷ESIR LEAN OPENWRT X86-64 固件
  9. 王道考研操作系统完结篇
  10. 数据结构--学生成绩管理系统(顺序表)