IIC协议——OLED(128*64)外设

IIC协议(Inter-Integrated Circuit Protocol),也被称为I2C(Inter-Integrated Circuit),是一种串行通信协议,通常用于连接集成电路(IC)和外部设备,例如传感器、存储器、显示屏等。该协议由飞利浦(现在的恩智浦半导体)于上世纪80年代开发,旨在实现在狭小空间内进行低速、短距离的数据传输。

IIC协议采用主从架构。主设备控制通信总线,并负责启动和停止数据传输。从设备被动地响应主设备的指令,并提供所需的数据或执行相应的操作。

IIC协议的特点包括:

  1. 双线制:IIC总线由两根线构成,即串行数据线(SDA)和串行时钟线(SCL)。SDA负责数据传输,而SCL则负责同步时钟信号。

  2. 多主机支持:多个主设备可以在同一个IIC总线上共存,通过地址冲突解决算法实现对总线的控制。

  3. 支持多种速率:IIC协议支持不同的时钟频率,可以根据应用的需求选择适当的通信速率。

  4. 简单且成本低廉:由于只需要两根线路,因此成本低廉且易于实现。

IIC协议被广泛应用于各种嵌入式系统、传感器网络、物联网设备等领域,因其简单、可靠且成本低廉而备受青睐。

数据传输的完整流程如下:

  1. 起始信号(Start Signal):主设备发送起始信号,标志着数据传输的开始。它是在时钟信号(SCL)保持高电平时,数据线(SDA)由高电平转变为低电平。

  2. 地址+读/写位(Address + Read/Write Bit):主设备发送要通信的从设备地址,以及读/写位。地址的最高位指示了读取还是写入操作。

  3. 应答信号(Acknowledge Signal):接收设备(从设备)在成功接收到地址+读/写位后,发送应答信号作为确认。

  4. 数据传输(Data Transmission):主设备开始发送或接收数据,通过在每个时钟周期内在数据线(SDA)上改变电平来传输数据位。时钟信号(SCL)控制数据传输的时机和持续时间。

  5. 应答信号(Acknowledge Signal):每个数据字节的传输结束后,接收设备发送应答信号作为确认。

  6. 停止信号(Stop Signal):主设备发送停止信号,标志着数据传输的结束。它是在时钟信号(SCL)保持高电平时,数据线(SDA)由低电平转变为高电平。

这样的流程形成了完整的数据传输周期。起始信号和停止信号的发送以及应答信号的接收是确保数据传输顺利进行的重要步骤,而时钟信号和数据信号则负责实际的数据传输。

#include "reg52.h"
#include "intrins.h"

sbit SCL = P1^0;
sbit SDA = P1^1;

//起始信号
void IIC_Start()
{
	SCL = 0;
	SDA = 1;
	SCL = 1;
	_nop_();
	SDA = 0;
	_nop_();
}

//停止信号
void IIC_Stop()
{
	SCL = 0;
	SDA = 0;
	SCL = 1;
	_nop_();
	SDA = 1;
	_nop_();
}

//应答信号
char IIC_ACK()
{
	char flag;
	SDA = 1;
	_nop_();
	SCL = 1;
	_nop_();
	flag = SDA;
	_nop_();
	SCL = 0;
	_nop_();
	return flag;
}

//数据发送
void IIC_SendByte(char dataSend)
{
	int i;
	
	for(i=0;i<8;i++){
		SCL = 0;
		SDA = dataSend & 0x80;
		_nop_();
		SCL = 1;
		_nop_();
		SCL = 0;
		_nop_();
		dataSend = dataSend<<1;
	}
}

//写命令
void Oled_Write_Cmd(char dataCmd)
{
	IIC_Start();
	IIC_SendByte(0x78);
	IIC_ACK();
	IIC_SendByte(0x00);
	IIC_ACK();
	IIC_SendByte(dataCmd);
	IIC_ACK();
	IIC_Stop();
}

//写数据
void Oled_Write_Data(char dataData)
{
	IIC_Start();
	IIC_SendByte(0x78);
	IIC_ACK();
	IIC_SendByte(0x40);
	IIC_ACK();
	IIC_SendByte(dataData);
	IIC_ACK();
	IIC_Stop();
}

//OLED初始化
void Oled_Init(void){
	Oled_Write_Cmd(0xAE);//--display off
	Oled_Write_Cmd(0x00);//---set low column address
	Oled_Write_Cmd(0x10);//---set high column address
	Oled_Write_Cmd(0x40);//--set start line address
	Oled_Write_Cmd(0xB0);//--set page address
	Oled_Write_Cmd(0x81); // contract control
	Oled_Write_Cmd(0xFF);//--128
	Oled_Write_Cmd(0xA1);//set segment remap
	Oled_Write_Cmd(0xA6);//--normal / reverse
	Oled_Write_Cmd(0xA8);//--set multiplex ratio(1 to 64)
	Oled_Write_Cmd(0x3F);//--1/32 duty
	Oled_Write_Cmd(0xC8);//Com scan direction
	Oled_Write_Cmd(0xD3);//-set display offset
	Oled_Write_Cmd(0x00);//
	Oled_Write_Cmd(0xD5);//set osc division
	Oled_Write_Cmd(0x80);//
	Oled_Write_Cmd(0xD8);//set area color mode off
	Oled_Write_Cmd(0x05);//
	Oled_Write_Cmd(0xD9);//Set Pre-Charge Period
	Oled_Write_Cmd(0xF1);//
	Oled_Write_Cmd(0xDA);//set com pin configuartion
	Oled_Write_Cmd(0x12);//
	Oled_Write_Cmd(0xDB);//set Vcomh
	Oled_Write_Cmd(0x30);//
	Oled_Write_Cmd(0x8D);//set charge pump enable
	Oled_Write_Cmd(0x14);//
	Oled_Write_Cmd(0xAF);//--turn on oled panel
}

//清屏函数
void Oled_Clear()
{
	unsigned char i,j;
	
	for(i=0;i<8;i++){
		Oled_Write_Cmd(0xB0+i);
		Oled_Write_Cmd(0x00);
		Oled_Write_Cmd(0x10);
		for(j=0;j<128;j++){
			Oled_Write_Data(0);
		}
	}
}

/*--  调入了一幅图像:D:\桌面\无标题.bmp  --*/
/*--  宽度x高度=128x64  --*/
code unsigned char GGImage[] = {
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0xC0,0x80,0x80,0x00,0x00,0x00,0x80,
								0x80,0x80,0xC0,0xC0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xE0,0xE0,0xE0,0xE0,0xE0,
								0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xF8,0xF8,0xF8,
								0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xC0,0xC0,0x80,
								0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xE0,0xF0,0xF8,0xF8,0xF0,0xF8,
								0xF0,0xF2,0xFE,0xFE,0xFC,0xFD,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
								0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x3F,0x3F,
								0x3F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x3F,
								0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
								0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0xC0,0x80,0x80,0x80,
								0x00,0x40,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xE0,0xF0,
								0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xFC,0xFE,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,0x7F,0x21,0x20,0x20,0x10,0x10,
								0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x80,0x00,
								0x00,0x00,0x80,0xC0,0x40,0x60,0x21,0x23,0x27,0x3F,0x1F,0x3F,0x3F,0x7F,0x7F,0x7F,
								0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
								0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFC,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1C,0x7F,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,0x7F,0x7F,0x3F,
								0x1F,0x1F,0xFF,0xCF,0x0F,0x0F,0x0F,0x0F,0x07,0x06,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x1C,0x1C,0x1C,0x08,0x00,0x00,0x81,0xFF,
								0xFF,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x08,0x18,0x1C,0x18,0x08,0x00,0x00,0x81,0xFF,0x7F,0x03,0x03,0x03,0x07,0x07,
								0x0F,0x1F,0x3F,0xFF,0xFF,0x3F,0x1F,0x0F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x1F,0x1F,0x1F,0x3F,0x3F,
								0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
								0x8F,0xCF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,
								0xF8,0xF0,0xF0,0xE1,0xC3,0x82,0x06,0x04,0x0C,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
								0x08,0xC8,0xE8,0x78,0xB8,0x98,0x98,0x08,0x0C,0x0C,0x0C,0x06,0x06,0x05,0x05,0x04,
								0x04,0x05,0x07,0x06,0x04,0x0C,0x0C,0x08,0x08,0x18,0x98,0xB8,0xF8,0xE8,0xC8,0x08,
								0x08,0x08,0x08,0x04,0x84,0xC6,0xE2,0xF3,0xF1,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,
								0xF8,0xF0,0xF0,0xE3,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xE0,0xE0,0xE0,0xF0,
								0xF0,0xF8,0xF8,0xF8,0xF8,0xFC,0xFF,0xFE,0xFC,0xF0,0x60,0xC0,0xC0,0x80,0x00,0x03,
								0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3F,
								0x3F,0x3F,0x1F,0x1F,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x03,0x07,0x06,0x0C,0x0D,0x09,0x1B,0x1B,0x1B,0x13,0x12,0x12,0x12,0x16,0x16,
								0x16,0x16,0x16,0x16,0x16,0x12,0x12,0x1B,0x1B,0x1B,0x0D,0x0D,0x07,0x03,0x01,0x00,
								0x00,0x00,0x00,0x00,0x03,0x0F,0x1F,0x1F,0x1F,0x3F,0x3F,0x3F,0xBF,0x9F,0xDF,0x6F,
								0x3F,0x1F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xFF,0x7F,0x3F,0x9F,0x7F,0x3F,0x9F,0xBF,
								0x3F,0xBF,0xBF,0x3F,0x7F,0xFF,0xFF,0x3F,0x3F,0xBF,0x3F,0x3E,0x6F,0x7B,0x7B,0x73,
								0x36,0x1E,0x7C,0xFC,0xF8,0x38,0x38,0x98,0x38,0x38,0xB0,0x30,0x10,0x90,0x30,0x30,
								0xF0,0xF0,0xF0,0xB0,0x30,0x30,0xB0,0xF0,0x70,0xB0,0x30,0x30,0xB0,0x30,0x30,0xF0,
								0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
								0xF0,0xB0,0xB0,0xB0,0x30,0x20,0xA0,0xA0,0xA0,0xB0,0xE0,0xE0,0xE0,0xE0,0x20,0x20,
								0x30,0x70,0x50,0xF8,0x38,0x38,0xBC,0xBC,0xDE,0xFE,0xFB,0xF9,0x39,0x90,0x30,0x20,
								0xA0,0xE0,0x20,0x20,0xA0,0xA0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
								0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x3E,0x3E,0x70,0x7F,0xFB,0x78,0x75,0x77,
								0x70,0x7C,0x7C,0xF9,0xFB,0xFF,0x7F,0x53,0x1A,0x58,0xF8,0xFB,0xFF,0xFC,0xF5,0xF7,
								0xF0,0xF0,0xFF,0xFF,0xFF,0xF7,0xF0,0xF1,0xF4,0xD0,0x11,0x14,0xF3,0xF4,0xF0,0xF1,
								0xF7,0xFF,0xFF,0xF6,0xF0,0xF8,0xFA,0xFB,0xF8,0xF5,0xF0,0xF0,0xFC,0xF8,0xFB,0xFF,
								0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,
								0xF6,0xF6,0xFA,0xF8,0xFC,0x98,0x90,0xF6,0xF6,0xF6,0xF2,0xFB,0xFF,0xFF,0xF0,0xF8,
								0xFD,0xFC,0x1C,0xD3,0xF8,0xFE,0xFE,0xF0,0xFA,0xFF,0xFF,0xFF,0xF6,0xF2,0xF8,0xF8,
								0xFA,0xDE,0x10,0x10,0x1B,0x1B,0x10,0x10,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00};

void Show_Image(char *GGImage)
{
	unsigned char i;
	int j;
	for(i=0;i<8;i++){
		Oled_Write_Cmd(0xB0+i);
		Oled_Write_Cmd(0x00);
		Oled_Write_Cmd(0x10);
		for(j=128*i;j<128*(i+1);j++){
			Oled_Write_Data(GGImage[j]);
		}
	}
}

void main()
{
	
	//1. OLED初始化
	Oled_Init();
	//2. 选择一个位置
	//2.1 确认页寻址模式
	Oled_Write_Cmd(0x20);
	Oled_Write_Cmd(0x02);
	Oled_Clear();
	//2.2 选择PAGE0 1011 0000
	// 0xB0
	Oled_Write_Cmd(0xB0);
	//从page0的第0列开始写数据上半部分
	Oled_Write_Cmd(0x00);
	Oled_Write_Cmd(0x10);
	Show_Image(GGImage);
	while(1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/520045.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AWS入门实践-利用S3构建一个静态网站

使用Amazon S3托管静态网站是一个流行的选择&#xff0c;因为它简单、成本效益高&#xff0c;并且易于维护。静态网站由不含服务器端脚本的文件组成&#xff0c;如HTML、CSS和JavaScript文件。下面是使用S3托管静态网站的操作步骤&#xff1a; 如果大家没有AWS免费账号&#x…

STM32CubeIDE基础学习-舵机控制实验

STM32CubeIDE基础学习-舵机控制实验 文章目录 STM32CubeIDE基础学习-舵机控制实验前言第1章 硬件介绍第2章 工程配置2.1 基础工程配置部分2.2 生成工程代码部分 第3章 代码编写第4章 实验现象总结 前言 SG90、MG996舵机在机器人领域用得非常多&#xff0c;因为舵机有内置控制电…

【Java网络编程】OSI七层网络模型与TCP/IP协议簇

1.1、OSI七层网络模型 OSI七层网络模型中&#xff0c;每层的功能如下&#xff1a; 应用层&#xff1a;人与计算机网络交互的窗口。表示层&#xff1a;负责数据格式的封装&#xff0c;如加密、压缩、编解码等。会话层&#xff1a;建立、终止、管理不同端间的会话连接。传输层&a…

[技术闲聊]我对电路设计的理解(九)-如何与Layout工程师交互

一、“”电路设计“的理解 原理图设计完成&#xff0c;设计规则检测、netlist都通过后&#xff0c;就可以把原理图发送给Layout&#xff0c;是不是此刻意味着硬件工程师功成身退了呢&#xff1f; 远远没有&#xff0c;还有多件事情等待着&#xff0c;文章题目我对电路设计的理解…

【Node.js从基础到高级运用】二十一、使用child_process模块创建子进程

引言 在Node.js中&#xff0c;child_process模块是一个提供了创建和管理子进程的能力的核心模块。通过使用child_process模块&#xff0c;Node.js可以执行系统命令、运行其他脚本或应用程序&#xff0c;实现与Node.js进程的并行处理。 child_process模块提供了几种创建子进程的…

搭建电商独立站|适合做独立站的国家有哪些?该怎么布局?

在传统外贸和跨境电商行业&#xff0c;独立站是一种更专业并且获益空间相对会更高的方法&#xff0c;独立站可以让卖家拥有更多的自由控制权&#xff0c;卖家能更精准的定位用户人群&#xff0c;也可以自行流量推广&#xff0c;独立站不会被永远封店铺、不会对卖家进行罚款等等…

HTML - 你如何使H5页面禁止手动缩放

难度级别:初级及以上 提问概率:40% 我们知道,这道题其实是在考察meta标签的viewport属性,正常情况下设置viewport的代码为 <head><meta name="viewport" content="width=device-width,initial-scale=1.0" …

560.和为K的子数组

560.和为K的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xf…

线程池参数该怎么配置才能充分压榨CPU?

&#x1f3c3;‍♂️ 微信公众号: 朕在debugger© 版权: 本文由【朕在debugger】原创、需要转载请联系博主&#x1f4d5; 如果文章对您有所帮助&#xff0c;欢迎关注、点赞、转发和订阅专栏&#xff01; 目标 配置好线程池参数&#xff0c;压榨CPU&#xff0c;资本家看了都…

云备份day03

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C云备份项目 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要内容介绍了第三方库httplib的一些内容&#xff0c;以及实现…

易宝OA getStockInRequestPrintDetail SQL注入漏洞复现

0x01 产品简介 易宝OA系统是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台,具有信息管理、 流程管理 、知识管理(档案和业务管理)、协同办公等多种功能。 0x02 漏洞概述 易宝OA getStockInRequestPrintDetail 接口处存在SQL注入漏洞,未经身份认证的攻击者…

Promise和async/await

Promise是异步编程的一种解决方案&#xff0c;用来解决多层回调嵌套的问题。它的构造函数是同步执行的&#xff0c;then 方法是异步执行的&#xff0c;所以创建后里面的函数会立即执行&#xff0c;构造函数中的resolve和reject只有第一次执行有效&#xff0c;也就是说Promise状…

随手集☞MySQL部分知识盘点(loading。。。)

字段类型 数值类型 INT: 整数类型&#xff0c;可以是正数或负数。根据显示宽度和是否有符号&#xff0c;其范围会有所不同。TINYINT: 非常小的整数。SMALLINT: 小的整数。MEDIUMINT: 中等大小的整数。BIGINT: 大整数。FLOAT: 单精度浮点数。DOUBLE: 双精度浮点数。DECIMAL(M,N…

Oracle的物理结构解析

这些图是我自己画的&#xff0c;我也会在我的公众号【会用数据库】解析。理解起来非常简单&#xff0c;而且非常好记。不用死记硬背&#xff0c;有兴趣可以来公众号看呀。

GitOps - 为 OpenShift GitOps 配置邮件通知

《OpenShift 4.x HOL教程汇总》 说明&#xff1a;本文已经 在OpenShift 4.15 OpenShift GitOps 1.11.2 环境中验证 文章目录 ArgoCD 的 Notification 功能简介启动 OpenShift GitOps 的 Notification 功能配置邮件通知验证参考 说明&#xff1a;先根据《OpenShift 4 之 GitOp…

Peter算法小课堂—树状数组

大家好&#xff0c;我是人见人爱&#xff0c;花见花开&#xff0c;车见车爆胎的树状数组Peter Pan&#xff0c;hhh 讲正文前&#xff0c;先来一个长文警告⚠很重要的知识点&#xff1a;L SB&#xff08;SB&#xff1f;&#xff09; LSB 怎么算呢&#xff1f; 哦……懂了&…

环形链表2--绝妙的运算

一、要求 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

静态路由协议实验综合实验

需求&#xff1a; 1、除R5的换回地址已固定外&#xff0c;整个其他所有的网段基于192.168.1.0/24进行合理的IP地址划分。 2、R1-R4每台路由器存在两个环回接口&#xff0c;用于模拟连接PC的网段&#xff1b;地址也在192.168.1.0/24这个网络范围内。 3、R1-R4上不能直接编写到…

机器学习KNN最邻近分类算法

文章目录 1、KNN算法简介2、KNN算法实现2.1、调用scikit-learn库中KNN算法 3、使用scikit-learn库生成数据集3.1、自定义函数划分数据集3.2、使用scikit-learn库划分数据集 4、使用scikit-learn库对鸢尾花数据集进行分类5、什么是超参数5.1、实现寻找超参数5.2、使用scikit-lea…

【vite】

目录 vite介绍vite的基础应用vite创建项目vite创建vue3项目vite创建vue2项目vite创建react项目 vite中使用css的各种功能vite中使用ts vite介绍 一、特点&#xff1a; 开发时效率极高开箱即用&#xff0c;功能完备摄取丰富&#xff0c;兼容rollup超高速热重载预设应用和类库打…