2024年物联网嵌入式最新0,2024年最新物联网嵌入式开发开发基础教程视频

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

void WriteCmd(int fd,unsigned char I2C_Command)//写命令
{
	wiringPiI2CWriteReg8(fd,0x00, I2C_Command);
}


void OLED_Init(int fd)
{

	WriteCmd(fd,0xAE); //display off
	WriteCmd(fd, 0x20);	//Set Memory Addressing Mode	
	WriteCmd(fd, 0x10);	//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
	WriteCmd(fd, 0xb0);	//Set Page Start Address for Page Addressing Mode,0-7
	WriteCmd(fd, 0xc8);	//Set COM Output Scan Direction
	WriteCmd(fd, 0x00); //---set low column address
	WriteCmd(fd, 0x10); //---set high column address
	WriteCmd(fd, 0x40); //--set start line address
	WriteCmd(fd, 0x81); //--set contrast control register
	WriteCmd(fd, 0xff); //亮度调节 0x00~0xff
	WriteCmd(fd, 0xa1); //--set segment re-map 0 to 127
	WriteCmd(fd, 0xa6); //--set normal display
	WriteCmd(fd, 0xa8); //--set multiplex ratio(1 to 64)
	WriteCmd(fd, 0x3F); //
	WriteCmd(fd, 0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
	WriteCmd(fd, 0xd3); //-set display offset
	WriteCmd(fd, 0x00); //-not offset
	WriteCmd(fd, 0xd5); //--set display clock divide ratio/oscillator frequency
	WriteCmd(fd, 0xf0); //--set divide ratio
	WriteCmd(fd, 0xd9); //--set pre-charge period
	WriteCmd(fd, 0x22); //
	WriteCmd(fd, 0xda); //--set com pins hardware configuration
	WriteCmd(fd, 0x12);
	WriteCmd(fd, 0xdb); //--set vcomh
	WriteCmd(fd, 0x20); //0x20,0.77xVcc
	WriteCmd(fd, 0x8d); //--set DC-DC enable
	WriteCmd(fd, 0x14); //
	WriteCmd(fd, 0xaf); //--turn on oled panel
}

2)I2C数据发送

void WriteData(int fd,unsigned char I2C_Data)//写数据
{
	wiringPiI2CWriteReg8(fd,0x40, I2C_Data);
}

/*写 缓存数据*/
void Write_DataBuffer(void)//这个是将DataBuffer数组里面的值,全部写进屏里去
{
	unsigned char i, j;

	for (i = 0; i < 8; i++)
	{
		OLED_SetPos(i2cHand, i, 0); //设置起始点坐标
		for (j = 0; j < 128; j++)
		{
			WriteData(i2cHand, DataBuffer[i][j]);//写数据
		}
	}
}

3)设置坐标

void OLED_SetPos(int fd,unsigned char x, unsigned char y) //设置起始点坐标
{
	WriteCmd(fd, (unsigned char)(0xb0 + x));
	WriteCmd(fd,((y & 0x0f) | 0x00));//LOW
	WriteCmd(fd,(((y & 0xf0) >> 4) | 0x10));//HIGHT
}

4)清屏全屏显示

void OLED_Fill(void)//全屏填充
{
	int i, j;
	for (i = 0; i < 8; i++)
	{
		for (j = 0; j < 128; j++)
		{
			DataBuffer[i][j] = 0xff;
		}
	}
	Write_DataBuffer();
}


void OLED_CLS(void)//清屏
{
	unsigned char i, j;
	for (i = 0; i < 8; i++)
	{
		for (j = 0; j < 128; j++)
		{
			DataBuffer[i][j] = 0x00;
		}
	}
	Write_DataBuffer();
}

5)main函数调用

int main(void)
{


	delay(1000); // 毫秒

	wiringPiSetupSys();

	i2cHand=wiringPiI2CSetup(I2C_ADDR);	/*加载i2c设备*/
	OLED_Init(i2cHand);

	while (true)
	{

		OLED_Fill();
		delay(1000);

		OLED_CLS();
		delay(1000); // 毫秒


	}

	return 0;
}

六、题外话

0.96寸OLED屏配有取模工具,使用还不是很熟练,就调用清屏全屏进行调试,如果感兴趣可以看看其他博主相关文章。谢谢!!还有根本就没第四章!!

#include <wiringPi.h>
#include <wiringPiI2C.h>

// LED Pin - wiringPi pin 0 是 BCM_GPIO 17。  ssd1306
//利用 wiringPiSetupSys 进行初始化时必须使用 BCM 编号
//选择其他 pin 编号时,请同时使用 BCM 编号
//更新 Property Pages - Build Events - Remote Post-Build Event 命令
//它使用 gpio 导出进行 wiringPiSetupSys 的设置
#define	LED	17

#define I2C_ADDR 0x3c
unsigned char DataBuffer[8][128];/*全屏大小 8page页 * 128col列  row64行  每页有8格,通过高低列组合出0~127的数据,寻找起始列进行从左向右填充*/

int i2cHand = 0;


void WriteCmd(int fd, unsigned char I2C_Command)//写命令
{
	wiringPiI2CWriteReg8(fd, 0x00, I2C_Command);
}


void OLED_Init(int fd)
{

	WriteCmd(fd, 0xAE); //display off

	WriteCmd(fd, 0x20);	//Set Memory Addressing Mode	/*默认0x02,从左向右刷新 */

	WriteCmd(fd, 0x10);	//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
	
	WriteCmd(fd, 0xb0);	//Set Page Start Address for Page Addressing Mode,0-7
	
	WriteCmd(fd, 0xc8);	//Set COM Output Scan Direction

	WriteCmd(fd, 0x00); //---set low column address /*起始位置低位列0x00~0x0f */

	WriteCmd(fd, 0x10); //---set high column address /*起始位置高位列0x10~0x1f */

	WriteCmd(fd, 0x40); //--set start line address  /*起始行0x40~0x7F  正好是0~63*/

	WriteCmd(fd, 0x81); //--set contrast control register
	WriteCmd(fd, 0xff); //亮度调节 0x00~0xff

	WriteCmd(fd, 0xa1); //--set segment re-map 0 to 127

	WriteCmd(fd, 0xa6); //--set normal display

	WriteCmd(fd, 0xa8); //--set multiplex ratio(1 to 64)
	WriteCmd(fd, 0x3F); // /*设置页,0x3f为默认,有效值为0~14 */

	WriteCmd(fd, 0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
	
	WriteCmd(fd, 0xd3); //-set display offset
	WriteCmd(fd, 0x00); //-not offset 0x00为默认

	WriteCmd(fd, 0xd5); //--set display clock divide ratio/oscillator frequency
	WriteCmd(fd, 0xf0); //--set divide ratio

	WriteCmd(fd, 0xd9); //--set pre-charge period
	WriteCmd(fd, 0x22); //

	WriteCmd(fd, 0xda); //--set com pins hardware configuration
	WriteCmd(fd, 0x12);

	WriteCmd(fd, 0xdb); //--set vcomh
	WriteCmd(fd, 0x20); //0x20,0.77xVcc 默认

	WriteCmd(fd, 0x8d); //--set DC-DC enable  
	WriteCmd(fd, 0x14); //  0x14 enable  0x10 disabled(sleep)  一般用于交流电设置

	WriteCmd(fd, 0xAF); //--turn on oled panel
}

void WriteData(int fd, unsigned char I2C_Data)//写数据
{
	wiringPiI2CWriteReg8(fd, 0x40, I2C_Data);
}


void OLED_SetPos(int fd, unsigned char x, unsigned char y) //设置起始点坐标
{
	WriteCmd(fd, (unsigned char)(0xb0 + x));  /*设置开始页*/
//	WriteCmd(fd, (unsigned char)(0x40 + x));  /*设置开始行*/
	WriteCmd(fd, ((y & 0x0f) | 0x00));//LOW
	WriteCmd(fd, (((y & 0xf0) >> 4) | 0x10));//HIGHT
}

/*写 缓存数据*/
void Write_DataBuffer(void)//这个是将DataBuffer数组里面的值,全部写进屏里去
{
	unsigned char i, j;

	for (i = 0; i < 8; i++)
	{
		OLED_SetPos(i2cHand, i, 0); //设置起始点坐标
		for (j = 0; j < 128; j++)
		{
			WriteData(i2cHand, DataBuffer[i][j]);//写数据
		}
	}

}

void OLED_Full(void)//全屏填充
{
	int i, j;
	for (i = 0; i <8; i++)
	{
		for (j = 0; j < 128; j++)
		{
			DataBuffer[i][j] = 0xff;
		}
	}
	Write_DataBuffer();
}


void OLED_CLS(void)//清屏
{
	unsigned char i, j;
	for (i = 0; i <8; i++)
	{
		for (j = 0; j < 128; j++)
		{
			DataBuffer[i][j] = 0x00;
		}
	}
	Write_DataBuffer();
}

int main(void)
{
	
	delay(1000); // 毫秒

	wiringPiSetupSys();

	pinMode(LED, OUTPUT);

	i2cHand = wiringPiI2CSetup(I2C_ADDR);	/*加载i2c设备*/
	OLED_Init(i2cHand);

	while (true)
	{

		digitalWrite(LED, HIGH);  //开
		delay(500); // 毫秒
		digitalWrite(LED, LOW);	  //关
		delay(500);

		OLED_Full();
		delay(1000);

		OLED_CLS();
		delay(1000); // 毫秒


	}

	return 0;
}


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

}

return 0;

}


 


 



[外链图片转存中...(img-H0rjD0vK-1715656739391)]
[外链图片转存中...(img-wafnSUc0-1715656739392)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值