本文章记录个人所学
用于以后更为方便的查找
iic四线通信oled
vcc gnd scl sda
本次iic使用的是b1,b2接口
通常用来显示外设数据
例如温湿度等
本人用了大量时间来弄动图和图片显示,不值得。
本次oled内容要求是会用和修改参数
程序连接:代码和一些取模软件下载连接
提取码: bydf
比较重要的函数:
写入字节:
void OLED_WR_Byte(u8 dat,u8 cmd)
{
IIC_Start(); //IIC开始信号
IIC_Send_Byte(0x78); //传输地址
IIC_Wait_Ack(); //接收ACK
if(cmd) IIC_Send_Byte(0x40); //写数据
else IIC_Send_Byte(0x00); //写命令
IIC_Wait_Ack(); //接收ACK
IIC_Send_Byte(dat); //发送数据/命令
IIC_Wait_Ack(); //接收ACK
IIC_Stop(); //IIC停止
}
设置显示地址:
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);
}
显示字符串:
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;
}
}
}
显示电压等带小数点:
void OLED_DisplayFloat(u8 x, u8 y, u8 height, float number)
{
u8 buf[10]; // 数字最多只有9位,再加上一个结束符’\0’
sprintf((char*)buf, "%.4f", number); // 将float类型的数字转换为字符串,保留两位小数
OLED_DisplayString(x, y, height, buf); // 在屏幕上显示字符串
}