国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F103驅(qū)動(dòng)oled顯示屏

這篇具有很好參考價(jià)值的文章主要介紹了STM32F103驅(qū)動(dòng)oled顯示屏。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一.了解oled顯示屏

oled顯示屏和其他顯示屏類(lèi)似,不過(guò)他只有0.96英寸,屏幕較小,但是使用起來(lái)比較方便。有二種驅(qū)動(dòng)方式,分別為IIC,和SPI驅(qū)動(dòng)。驅(qū)動(dòng)方式比較簡(jiǎn)單。IIC驅(qū)動(dòng)的話只需要4根線,電源,地線,數(shù)據(jù)線,和時(shí)鐘線。

二.IIC協(xié)議驅(qū)動(dòng)oled顯示屏

我這里使用的是IIC協(xié)議驅(qū)動(dòng)oled顯示屏,如果想了解IIC協(xié)議的可以看博主這篇文章:IIC協(xié)議詳解。
這邊就直接上代碼了

2.1 oled.c

#include "oled.h"
#include "stdlib.h"
#include "oledfont.h"
#include "delay.h"

u8 OLED_GRAM[144][8];
void show_led(char * msg, char * msg1,char * msg2,char * msg3)
{  
    
    
  //光照
    OLED_ShowChinese(0,0,4,16,1); //漢字隔16
	OLED_ShowChinese(16,0,5,16,1);
	
  //煙霧溶度
	OLED_ShowChinese(0,16,8,16,1); //漢字隔16
	OLED_ShowChinese(16,16,9,16,1);
    OLED_ShowChinese(32,16,10,16,1);
	OLED_ShowChinese(48,16,11,16,1);
	
	//溫度
	OLED_ShowChinese(0,32,0,16,1); //漢字隔16
	OLED_ShowChinese(16,32,1,16,1);
	
	//濕度	
	OLED_ShowChinese(0,48,2,16,1); //漢字隔16
	OLED_ShowChinese(16,48,3,16,1);
    
    OLED_ShowString(32,0,(unsigned char *)msg,16,1);//16*16		 
	OLED_ShowString(64,16,(unsigned char *)msg1,16,1);//16*16	  
	OLED_ShowString(32,32,(unsigned char *)msg2,16,1);//16*16	 
	OLED_ShowString(32,48,(unsigned char *)msg3,16,1);//16*16		
	OLED_Refresh();
    OLED_Clear();


}
//反顯函數(shù)
void OLED_ColorTurn(u8 i)
{
	if(i==0)
		{
			OLED_WR_Byte(0xA6,OLED_CMD);//正常顯示
		}
	if(i==1)
		{
			OLED_WR_Byte(0xA7,OLED_CMD);//反色顯示
		}
}

//屏幕旋轉(zhuǎn)180度
void OLED_DisplayTurn(u8 i)
{
	if(i==0)
		{
			OLED_WR_Byte(0xC8,OLED_CMD);//正常顯示
			OLED_WR_Byte(0xA1,OLED_CMD);
		}
	if(i==1)
		{
			OLED_WR_Byte(0xC0,OLED_CMD);//反轉(zhuǎn)顯示
			OLED_WR_Byte(0xA0,OLED_CMD);
		}
}

//延時(shí)
void IIC_delay(void)
{
	u8 t=3;
	while(t--);
}

//起始信號(hào)
void I2C_Start(void)
{
	OLED_SDA_Set();
	OLED_SCL_Set();
	IIC_delay();
	OLED_SDA_Clr();
	IIC_delay();
	OLED_SCL_Clr();
	IIC_delay();
}

//結(jié)束信號(hào)
void I2C_Stop(void)
{
	OLED_SDA_Clr();
	OLED_SCL_Set();
	IIC_delay();
	OLED_SDA_Set();
}

//等待信號(hào)響應(yīng)
void I2C_WaitAck(void) //測(cè)數(shù)據(jù)信號(hào)的電平
{
	OLED_SDA_Set();
	IIC_delay();
	OLED_SCL_Set();
	IIC_delay();
	OLED_SCL_Clr();
	IIC_delay();
}

//寫(xiě)入一個(gè)字節(jié)
void Send_Byte(u8 dat)
{
	u8 i;
	for(i=0;i<8;i++)
	{
		if(dat&0x80)//將dat的8位從最高位依次寫(xiě)入
		{
			OLED_SDA_Set();
    }
		else
		{
			OLED_SDA_Clr();
    }
		IIC_delay();
		OLED_SCL_Set();
		IIC_delay();
		OLED_SCL_Clr();//將時(shí)鐘信號(hào)設(shè)置為低電平
		dat<<=1;
  }
}

//發(fā)送一個(gè)字節(jié)
//mode:數(shù)據(jù)/命令標(biāo)志 0,表示命令;1,表示數(shù)據(jù);
void OLED_WR_Byte(u8 dat,u8 mode)
{
	I2C_Start();
	Send_Byte(0x78);
	I2C_WaitAck();
	if(mode){Send_Byte(0x40);}
  else{Send_Byte(0x00);}
	I2C_WaitAck();
	Send_Byte(dat);
	I2C_WaitAck();
	I2C_Stop();
}

//開(kāi)啟OLED顯示 
void OLED_DisPlay_On(void)
{
	OLED_WR_Byte(0x8D,OLED_CMD);//電荷泵使能
	OLED_WR_Byte(0x14,OLED_CMD);//開(kāi)啟電荷泵
	OLED_WR_Byte(0xAF,OLED_CMD);//點(diǎn)亮屏幕
}

//關(guān)閉OLED顯示 
void OLED_DisPlay_Off(void)
{
	OLED_WR_Byte(0x8D,OLED_CMD);//電荷泵使能
	OLED_WR_Byte(0x10,OLED_CMD);//關(guān)閉電荷泵
	OLED_WR_Byte(0xAE,OLED_CMD);//關(guān)閉屏幕
}

//更新顯存到OLED	
void OLED_Refresh(void)
{
	u8 i,n;
	for(i=0;i<8;i++)
	{
		OLED_WR_Byte(0xb0+i,OLED_CMD); //設(shè)置行起始地址
		OLED_WR_Byte(0x00,OLED_CMD);   //設(shè)置低列起始地址
		OLED_WR_Byte(0x10,OLED_CMD);   //設(shè)置高列起始地址
		I2C_Start();
		Send_Byte(0x78);
		I2C_WaitAck();
		Send_Byte(0x40);
		I2C_WaitAck();
		for(n=0;n<128;n++)
		{
			Send_Byte(OLED_GRAM[n][i]);
			I2C_WaitAck();
		}
		I2C_Stop();
  }
}
//清屏函數(shù)
void OLED_Clear(void)  //8*128
{
	u8 i,n;
	for(i=0;i<8;i++)
	{
	   for(n=0;n<128;n++)
			{
			 OLED_GRAM[n][i]=0;//清除所有數(shù)據(jù)
			}
  }
	//OLED_Refresh();//更新顯示
}

//畫(huà)點(diǎn) 
//x:0~127
//y:0~63
//t:1 填充 0,清空	
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
	u8 i,m,n;
	i=y/8;
	m=y%8;
	n=1<<m;
	if(t){OLED_GRAM[x][i]|=n;}
	else
	{
		OLED_GRAM[x][i]=~OLED_GRAM[x][i];
		OLED_GRAM[x][i]|=n;
		OLED_GRAM[x][i]=~OLED_GRAM[x][i];
	}
}

//畫(huà)線
//x1,y1:起點(diǎn)坐標(biāo)
//x2,y2:結(jié)束坐標(biāo)
void OLED_DrawLine(u8 x1,u8 y1,u8 x2,u8 y2,u8 mode)
{
	u16 t; 
	int xerr=0,yerr=0,delta_x,delta_y,distance;
	int incx,incy,uRow,uCol;
	delta_x=x2-x1; //計(jì)算坐標(biāo)增量 
	delta_y=y2-y1;
	uRow=x1;//畫(huà)線起點(diǎn)坐標(biāo)
	uCol=y1;
	if(delta_x>0)incx=1; //設(shè)置單步方向 
	else if (delta_x==0)incx=0;//垂直線 
	else {incx=-1;delta_x=-delta_x;}
	if(delta_y>0)incy=1;
	else if (delta_y==0)incy=0;//水平線 
	else {incy=-1;delta_y=-delta_x;}
	if(delta_x>delta_y)distance=delta_x; //選取基本增量坐標(biāo)軸 
	else distance=delta_y;
	for(t=0;t<distance+1;t++)
	{
		OLED_DrawPoint(uRow,uCol,mode);//畫(huà)點(diǎn)
		xerr+=delta_x;
		yerr+=delta_y;
		if(xerr>distance)
		{
			xerr-=distance;
			uRow+=incx;
		}
		if(yerr>distance)
		{
			yerr-=distance;
			uCol+=incy;
		}
	}
}
//x,y:圓心坐標(biāo)
//r:圓的半徑
void OLED_DrawCircle(u8 x,u8 y,u8 r)
{
	int a, b,num;
    a = 0;
    b = r;
    while(2 * b * b >= r * r)      
    {
        OLED_DrawPoint(x + a, y - b,1);
        OLED_DrawPoint(x - a, y - b,1);
        OLED_DrawPoint(x - a, y + b,1);
        OLED_DrawPoint(x + a, y + b,1);
 
        OLED_DrawPoint(x + b, y + a,1);
        OLED_DrawPoint(x + b, y - a,1);
        OLED_DrawPoint(x - b, y - a,1);
        OLED_DrawPoint(x - b, y + a,1);
        
        a++;
        num = (a * a + b * b) - r*r;//計(jì)算畫(huà)的點(diǎn)離圓心的距離
        if(num > 0)
        {
            b--;
            a--;
        }
    }
}



//在指定位置顯示一個(gè)字符,包括部分字符
//x:0~127
//y:0~63
//size1:選擇字體 6x8/6x12/8x16/12x24
//mode:0,反色顯示;1,正常顯示
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size1,u8 mode)
{
	u8 i,m,temp,size2,chr1;
	u8 x0=x,y0=y;
	if(size1==8)size2=6;
	else size2=(size1/8+((size1%8)?1:0))*(size1/2);  //得到字體一個(gè)字符對(duì)應(yīng)點(diǎn)陣集所占的字節(jié)數(shù)
	chr1=chr-' ';  //計(jì)算偏移后的值
	for(i=0;i<size2;i++)
	{
		if(size1==8)
			  {temp=asc2_0806[chr1][i];} //調(diào)用0806字體
		else if(size1==12)
        {temp=asc2_1206[chr1][i];} //調(diào)用1206字體
		else if(size1==16)
        {temp=asc2_1608[chr1][i];} //調(diào)用1608字體
		else if(size1==24)
        {temp=asc2_2412[chr1][i];} //調(diào)用2412字體
		else return;
		for(m=0;m<8;m++)
		{
			if(temp&0x01)OLED_DrawPoint(x,y,mode);
			else OLED_DrawPoint(x,y,!mode);
			temp>>=1;
			y++;
		}
		x++;
		if((size1!=8)&&((x-x0)==size1/2))
		{x=x0;y0=y0+8;}
		y=y0;
  }
}


//顯示字符串
//x,y:起點(diǎn)坐標(biāo)  
//size1:字體大小 
//*chr:字符串起始地址 
//mode:0,反色顯示;1,正常顯示
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size1,u8 mode)
{
	while((*chr>=' ')&&(*chr<='~'))//判斷是不是非法字符!
	{
		OLED_ShowChar(x,y,*chr,size1,mode);
		if(size1==8)x+=6;
		else x+=size1/2;
		chr++;
  }
}

//m^n
u32 OLED_Pow(u8 m,u8 n)
{
	u32 result=1;
	while(n--)
	{
	  result*=m;
	}
	return result;
}

//顯示數(shù)字
//x,y :起點(diǎn)坐標(biāo)
//num :要顯示的數(shù)字
//len :數(shù)字的位數(shù)
//size:字體大小
//mode:0,反色顯示;1,正常顯示
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size1,u8 mode)
{
	u8 t,temp,m=0;
	if(size1==8)m=2;
	for(t=0;t<len;t++)
	{
		temp=(num/OLED_Pow(10,len-t-1))%10;
			if(temp==0)
			{
				OLED_ShowChar(x+(size1/2+m)*t,y,'0',size1,mode);
      }
			else 
			{
			  OLED_ShowChar(x+(size1/2+m)*t,y,temp+'0',size1,mode);
			}
  }
}

//顯示漢字
//x,y:起點(diǎn)坐標(biāo)
//num:漢字對(duì)應(yīng)的序號(hào)
//mode:0,反色顯示;1,正常顯示
void OLED_ShowChinese(u8 x,u8 y,u8 num,u8 size1,u8 mode)
{
	u8 m,temp;
	u8 x0=x,y0=y;
	u16 i,size3=(size1/8+((size1%8)?1:0))*size1;  //得到字體一個(gè)字符對(duì)應(yīng)點(diǎn)陣集所占的字節(jié)數(shù)
	for(i=0;i<size3;i++)
	{
		if(size1==16)
				{temp= F16x16[num][i];}//調(diào)用16*16字體
		else if(size1==24)
				{temp= F16x16[num][i];}//調(diào)用24*24字體
		else if(size1==32)       
				{temp= F16x16[num][i];}//調(diào)用32*32字體
		else if(size1==64)
				{temp= F16x16[num][i];}//調(diào)用64*64字體
		else return;
		for(m=0;m<8;m++)
		{
			if(temp&0x01)OLED_DrawPoint(x,y,mode);
			else OLED_DrawPoint(x,y,!mode);
			temp>>=1;
			y++;
		}
		x++;
		if((x-x0)==size1)
		{x=x0;y0=y0+8;}
		y=y0;
	}
}

//num 顯示漢字的個(gè)數(shù)
//space 每一遍顯示的間隔
//mode:0,反色顯示;1,正常顯示
void OLED_ScrollDisplay(u8 num,u8 space,u8 mode)
{
	u8 i,n,t=0,m=0,r;
	while(1)
	{
		if(m==0)
		{
	    OLED_ShowChinese(128,24,t,16,mode); //寫(xiě)入一個(gè)漢字保存在OLED_GRAM[][]數(shù)組中
			t++;
		}
		if(t==num)
			{
				for(r=0;r<16*space;r++)      //顯示間隔
				 {
					for(i=1;i<144;i++)
						{
							for(n=0;n<8;n++)
							{
								OLED_GRAM[i-1][n]=OLED_GRAM[i][n];
							}
						}
           OLED_Refresh();
				 }
        t=0;
      }
		m++;
		if(m==16){m=0;}
		for(i=1;i<144;i++)   //實(shí)現(xiàn)左移
		{
			for(n=0;n<8;n++)
			{
				OLED_GRAM[i-1][n]=OLED_GRAM[i][n];
			}
		}
		OLED_Refresh();
	}
}

//x,y:起點(diǎn)坐標(biāo)
//sizex,sizey,圖片長(zhǎng)寬
//BMP[]:要寫(xiě)入的圖片數(shù)組
//mode:0,反色顯示;1,正常顯示
void OLED_ShowPicture(u8 x,u8 y,u8 sizex,u8 sizey,u8 BMP[],u8 mode)
{
	u16 j=0;
	u8 i,n,temp,m;
	u8 x0=x,y0=y;
	sizey=sizey/8+((sizey%8)?1:0);
	for(n=0;n<sizey;n++)
	{
		 for(i=0;i<sizex;i++)
		 {
				temp=BMP[j];
				j++;
				for(m=0;m<8;m++)
				{
					if(temp&0x01)OLED_DrawPoint(x,y,mode);
					else OLED_DrawPoint(x,y,!mode);
					temp>>=1;
					y++;
				}
				x++;
				if((x-x0)==sizex)
				{
					x=x0;
					y0=y0+8;
				}
				y=y0;
     }
	 }
}
//OLED的初始化
void OLED_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能A端口時(shí)鐘
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;	 
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; 		 //推挽輸出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
 	GPIO_Init(GPIOB, &GPIO_InitStructure);	  //初始化PA0,1
 	GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);

	
	OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
	OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
	OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
	OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
	OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
	OLED_WR_Byte(0xCF,OLED_CMD);// Set SEG Output Current Brightness
	OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping     0xa0左右反置 0xa1正常
	OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction   0xc0上下反置 0xc8正常
	OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
	OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
	OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
	OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset	Shift Mapping RAM Counter (0x00~0x3F)
	OLED_WR_Byte(0x00,OLED_CMD);//-not offset
	OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency
	OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
	OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
	OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
	OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
	OLED_WR_Byte(0x12,OLED_CMD);
	OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
	OLED_WR_Byte(0x30,OLED_CMD);//Set VCOM Deselect Level
	OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
	OLED_WR_Byte(0x02,OLED_CMD);//
	OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
	OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
	OLED_Clear();
	OLED_WR_Byte(0xAF,OLED_CMD);
    
     OLED_Clear();	
   OLED_ColorTurn(0);//0正常顯示,1 反色顯示
   OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉(zhuǎn)顯示
}

2.2 oled.h

#ifndef __OLED_H
#define __OLED_H 

#include "sys.h"
#include "stdlib.h"	

//-----------------OLED端口定義---------------- 

#define OLED_SCL_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_8)//SCL
#define OLED_SCL_Set() GPIO_SetBits(GPIOB,GPIO_Pin_8)

#define OLED_SDA_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_9)//DIN
#define OLED_SDA_Set() GPIO_SetBits(GPIOB,GPIO_Pin_9)


#define OLED_CMD  0	//寫(xiě)命令
#define OLED_DATA 1	//寫(xiě)數(shù)據(jù)

void OLED_ClearPoint(u8 x,u8 y);
void OLED_ColorTurn(u8 i);
void OLED_DisplayTurn(u8 i);
void I2C_Start(void);
void I2C_Stop(void);
void I2C_WaitAck(void);
void Send_Byte(u8 dat);
void OLED_WR_Byte(u8 dat,u8 mode);
void OLED_DisPlay_On(void);
void OLED_DisPlay_Off(void);
void OLED_Refresh(void);
void OLED_Clear(void);
void OLED_DrawPoint(u8 x,u8 y,u8 t);
void OLED_DrawLine(u8 x1,u8 y1,u8 x2,u8 y2,u8 mode);
void OLED_DrawCircle(u8 x,u8 y,u8 r);
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size1,u8 mode);
void OLED_ShowChar6x8(u8 x,u8 y,u8 chr,u8 mode);
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size1,u8 mode);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size1,u8 mode);
void OLED_ShowChinese(u8 x,u8 y,u8 num,u8 size1,u8 mode);
void OLED_ScrollDisplay(u8 num,u8 space,u8 mode);
void OLED_ShowPicture(u8 x,u8 y,u8 sizex,u8 sizey,u8 BMP[],u8 mode);
void OLED_Init(void);
void show_led(char * msg, char * msg1,char * msg2,char * msg3);

#endif

驅(qū)動(dòng)代碼就是以上這些了。

三.效果展示

STM32F103驅(qū)動(dòng)oled顯示屏,STM32系列,stm32,嵌入式硬件,單片機(jī),物聯(lián)網(wǎng)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-681968.html

到了這里,關(guān)于STM32F103驅(qū)動(dòng)oled顯示屏的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于STM32F103C8T6單片機(jī)的DHT11溫濕度傳感器與OLED顯示屏實(shí)時(shí)動(dòng)態(tài)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)

    基于STM32F103C8T6單片機(jī)的DHT11溫濕度傳感器與OLED顯示屏實(shí)時(shí)動(dòng)態(tài)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)

    標(biāo)題: 摘要: 本文提出了一種利用STM32F103C8T6微控制器,結(jié)合DHT11數(shù)字溫濕度傳感器和OLED顯示屏實(shí)現(xiàn)環(huán)境溫濕度實(shí)時(shí)、直觀顯示的方法。該系統(tǒng)通過(guò)低功耗且精確的DHT11傳感器獲取環(huán)境溫濕度信息,并借助于STM32F103C8T6強(qiáng)大的處理能力和I/O資源進(jìn)行數(shù)據(jù)讀取、解析以及控制OLE

    2024年01月19日
    瀏覽(30)
  • STM32 F103C8T6學(xué)習(xí)筆記8:0.96寸單色OLED顯示屏顯示字符

    STM32 F103C8T6學(xué)習(xí)筆記8:0.96寸單色OLED顯示屏顯示字符

    使用STM32F103 C8T6 驅(qū)動(dòng)0.96寸單色OLED顯示屏: OLED顯示屏的驅(qū)動(dòng),在設(shè)計(jì)開(kāi)發(fā)中OLED顯示屏十分常見(jiàn),因此今日學(xué)習(xí)一下。一篇文章從程序到顯示都講通。 文章提供源碼、原理解釋、測(cè)試工程下載,測(cè)試效果圖展示。 ? 目錄 OLED驅(qū)動(dòng)原理—IIC通信: SSD1306 單色 0.96 OLED 顯示屏特性

    2024年02月12日
    瀏覽(24)
  • STM32 F103C8T6學(xué)習(xí)筆記9:0.96寸單色OLED顯示屏—自由取模顯示—顯示漢字與圖片

    STM32 F103C8T6學(xué)習(xí)筆記9:0.96寸單色OLED顯示屏—自由取模顯示—顯示漢字與圖片

    今日學(xué)習(xí)0.96寸單色OLED顯示屏的自由取模顯示: 宋體漢字比較復(fù)雜,常用字符可以直接復(fù)制存下來(lái),畢竟只有那么幾十個(gè)字母字符,但漢字實(shí)在太多了,基本不會(huì)全部放在單片機(jī)里存著,一般用到多少個(gè)字就取幾個(gè)字的模,因此漢字放在這里與自由取模一起講。 文章提供源碼

    2024年02月11日
    瀏覽(25)
  • STM32 F103C8T6學(xué)習(xí)筆記10:OLED顯示屏GIF動(dòng)圖取?!?jiǎn)易時(shí)鐘—?jiǎng)訄D手表的制作~

    STM32 F103C8T6學(xué)習(xí)筆記10:OLED顯示屏GIF動(dòng)圖取?!?jiǎn)易時(shí)鐘—?jiǎng)訄D手表的制作~

    今日嘗試做一款有動(dòng)圖的OLED實(shí)時(shí)時(shí)鐘,本文需要現(xiàn)學(xué)一個(gè)OLED的GIF動(dòng)圖取模 其余需要的知識(shí)點(diǎn)有不會(huì)的可以去我? STM32 F103C8T6學(xué)習(xí)筆記? 系列專(zhuān)欄自己查閱把,閑話不多,直接開(kāi)肝~~~ 文章提供源碼,測(cè)試工程下載,測(cè)試效果圖。 做個(gè)簡(jiǎn)易的時(shí)鐘,就不把RTC實(shí)時(shí)時(shí)鐘放進(jìn)來(lái)學(xué)了

    2024年02月12日
    瀏覽(42)
  • STM32F103C8T6—庫(kù)函數(shù)應(yīng)用I2C/SPI驅(qū)動(dòng)OLED顯示中文、字符串

    STM32F103C8T6—庫(kù)函數(shù)應(yīng)用I2C/SPI驅(qū)動(dòng)OLED顯示中文、字符串

    I2C(Inter-Integrated Circuit) SPI(Serial Peripheral Interface) 傳輸方式 半雙工 全雙工 傳輸速度 低速,100Kbps----4Mbps 高速,30Mbps以上 幾線制 4線制:VCC,GND,SCL,SDA 6/7線制:VCC,GND,SCLK(D0),MOSI(D1/SDA),DC,CS/SS 主從模式 多主機(jī)總線,通過(guò)SDA上的地址信息鎖定從機(jī) 只有一個(gè)主機(jī),主

    2024年02月02日
    瀏覽(26)
  • STM32F103ZET6 驅(qū)動(dòng) OLED

    STM32F103ZET6 驅(qū)動(dòng) OLED

    目錄 前言 OLED模塊的基本了解 OLED驅(qū)動(dòng)程序的開(kāi)發(fā) 前言 ? 大家好,這是我第一次發(fā)帖,由于,我的技術(shù)并不成熟,程序難免有編寫(xiě)不規(guī)范的地方,希望讀者能夠指正,也希望這篇帖子能夠讓讀者對(duì)OLED模塊有個(gè)大致的了解。很高興能與大家交流。 OLED模塊的基本了解 OLED模塊的

    2024年02月14日
    瀏覽(27)
  • 【正點(diǎn)原子STM32】OLED實(shí)驗(yàn)(OLED顯示屏、ATK_OLED模塊,OLED驅(qū)動(dòng)原理、SSD1306工作時(shí)序(8080時(shí)序),OLED驅(qū)動(dòng)芯片,字符顯示原理、字模生成軟件,OLED基本驅(qū)動(dòng)步驟)

    【正點(diǎn)原子STM32】OLED實(shí)驗(yàn)(OLED顯示屏、ATK_OLED模塊,OLED驅(qū)動(dòng)原理、SSD1306工作時(shí)序(8080時(shí)序),OLED驅(qū)動(dòng)芯片,字符顯示原理、字模生成軟件,OLED基本驅(qū)動(dòng)步驟)

    一、OLED顯示屏介紹 1.1、ATK_OLED模塊介紹 1.2、ATK_OLED模塊引腳說(shuō)明(8080并口模式) 1.3、OLED模塊硬件連接 二、OLED驅(qū)動(dòng)原理 2.1、SSD1306工作時(shí)序(8080時(shí)序) 2.2、SSD1306工作時(shí)序(8080時(shí)序)–寫(xiě)時(shí)序 三、OLED驅(qū)動(dòng)芯片簡(jiǎn)介 3.1、什么是GRAM? 3.2、什么是頁(yè)地址模式? 3.3、解決顯示覆蓋問(wèn)題

    2024年03月13日
    瀏覽(27)
  • STM32F103C8T6 驅(qū)動(dòng) oled 4針篇

    大部分買(mǎi)的STM32F103C8T6屬于國(guó)產(chǎn)的,會(huì)導(dǎo)致程序燒錄報(bào)錯(cuò),如果出現(xiàn)問(wèn)題參考另一篇STM32F103C8T6程序燒錄方法_流浪法師解剖魚(yú)的博客-CSDN博客 環(huán)境配置好后,編寫(xiě)程序燒錄就可以了。 測(cè)試了增加上拉電阻不行。測(cè)試了廠家給的程序還是不行。查看器件參數(shù),寫(xiě)的3.3-6V供電,當(dāng)時(shí)

    2024年02月07日
    瀏覽(20)
  • STM32F407驅(qū)動(dòng)GC9A01+CST816D觸摸顯示屏

    STM32F407驅(qū)動(dòng)GC9A01+CST816D觸摸顯示屏

    STM32F407驅(qū)動(dòng)GC9A01+CST816D觸摸顯示屏 GC9A01是一款spi接口的1.28寸圓形屏,分辨率240*240,3.3v供電。 CST816D是一款I(lǐng)IC接口的觸摸屏,模塊上有4根信號(hào)線RST-復(fù)位線,INT-觸摸中斷線,當(dāng)觸摸屏檢測(cè)到觸摸信號(hào)后會(huì)輸出高電平,SCL-數(shù)據(jù)時(shí)鐘線,SDA-數(shù)據(jù)線。如果只是簡(jiǎn)單的使用INT線可以不

    2024年01月17日
    瀏覽(40)
  • STM32-OLED顯示屏

    *本文采用的OLED顯示屏為4針腳IIC顯示屏,4針腳分別為GND,VCC,SCL,SDA OLED.C OLED_Font.h main.c

    2024年02月05日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包