IIC协议——OLED屏幕

news2024/11/22 9:40:12

1.IIC协议介绍

IIC全称Inter-Integrated Circuit (集成电路总线)  简称I2C
是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双工同步通信方式

特点
简单性和有效性
由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件

多主控(multimastering)
其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

构成

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。对于并联在一条总线上的每个IC都有唯一的地址。

 2.项目效果

在OLED屏幕上显示字符或者图像

3.IIC协议

就是根据IIC的时序对相应的寄存器写入数据,进行操作。

IIC总线在传输数据的过程中一共有三种类型信号,分别为:开始信号、结束信号和应答信号。
起始位,停止位,数据位,速度
这些信号中,起始信号是必需的,结束信号和应答信号

 应答信号
发送器每发送一个字节(8个bit),在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。
应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;
应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

 数据发送的时序

4.OLED写命令

 4.1 OLED的寻址模式

寻址模式的寄存器

 页地址模式

 水平地址模式

 行地址(page x)选择

 列地址选择 (分低位设置和高位设置)

主函数最后 用while(1)  卡主,不然会一直设置OLED的屏幕,一直刷新。

5.代码实现- 图

需要配合 字膜提取软件+画图工具(自带)  转换为分辨率位128x64的bmp图像。

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

sbit sda=P0^3;
sbit scl=P0^1;

void i2c_start(void);   
void i2c_stop(void);
char ack(void);
void send_messege_i2c(char messege);
void w_cmd_i2c(char cmd);
void w_data_i2c(char data1);
void init_i2c(void);
void clear_oled(void);

code char tx[]={
0xFF,0xFF,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,0x01,
0x01,0x03,0x03,0x03,0x07,0x07,0x05,0x07,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,
0x05,0x0F,0x0F,0x0F,0x07,0x05,0x07,0x05,0x07,0x07,0x07,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x4F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x1F,0x1F,0x0F,0x0F,0x1F,0x1F,0x1F,0x1F,
0x1F,0x3F,0x1F,0x1F,0x7F,0x1F,0x1F,0x9F,0x9F,0x3F,0x7F,0x6F,0x6F,0x5F,0x9F,0xBF,
0xBF,0xBF,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,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,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,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x03,0x1F,0x1F,0x1F,0x3F,0x3F,0x1F,
0xCF,0xEF,0xF7,0xD7,0xDF,0xFB,0xFF,0x9F,0x9E,0x9F,0x8F,0x8F,0x9F,0x9F,0x9F,0xBF,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,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,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xFC,0xFC,
0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFC,0xE0,0xC0,0x80,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x0C,0x44,0x60,0xF5,0xE0,0xC0,0xC0,0xC0,0xC0,0xC0,0xD8,0xFE,0xE7,0xE5,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x40,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,0xC0,0xC0,0x80,0x80,0x00,0x08,0x08,
0xC8,0x98,0x98,0x88,0x80,0x80,0xC0,0x81,0x81,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xDF,0x87,0x87,0xC3,0xC3,0xA3,0x91,0x91,0x11,0x11,0x19,0x99,0x89,0x09,0x09,
0x01,0x83,0xC3,0xC2,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,0x03,0x37,0x3D,0xBF,0xBF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x20,0x40,0x40,0x40,0x40,0x06,0x06,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x3E,0x7C,0x70,0xE0,0xC3,0x1F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,
0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x40,0x70,0x3C,0x1C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xC0,0xA0,0xC0,0xC0,0x00,0xC5,0xFF,0xFF,0xFF,0xFF,0xFD,0xFD,0xFF,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0F,0x3F,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xDF,0x9F,0x9F,0x1F,0x1F,0x1E,0x9E,0xDE,0xDE,0xDE,0xDE,0xDE,
0xDE,0x1E,0x1C,0x1C,0x1F,0x1F,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x1F,
0x1F,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
0x40,0x40,0x00,0x00,0x00,0x00,0x30,0x08,0x08,0x03,0x80,0x80,0x80,0xF8,0xF8,0xFE,
0xEF,0xC7,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFD,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0xE0,0xEF,0xE0,0xEF,0xE0,0x80,0x0F,0x6F,0x60,0xCF,0xAF,0xBF,
0x23,0x84,0xC0,0xA0,0xE0,0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,
0x02,0x04,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x07,0x0F,0x1F,0x3F,0x3F,0x7F,0x7C,0x7C,0xF8,0xF9,0xFB,0xFB,0xFB,0xFB,0xF9,
0xF9,0x78,0x78,0x7C,0x3E,0x3F,0x1F,0x1F,0x0F,0x07,0x03,0x01,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,0xC1,0xE1,0xFF,0xFF,0xFE,0xFE,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x9F,0xBF,0xDF,0xFF,0xFF,0xEF,0xE0,0x98,0x98,0x9A,0x87,0xA7,
0xA7,0x8F,0x8F,0x9F,0x9F,0x9A,0x9E,0x9C,0xFF,0xFB,0xFA,0xFC,0xFC,0xFC,0xEC,0xE8,
0xF8,0xF0,0xB0,0xB0,0xA0,0xE0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x00,0x00,0x20,
0x00,0x00,0x00,0x40,0xC0,0xC0,0x44,0x04,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,
0xE0,0xD0,0xB0,0xF0,0xF8,0xF8,0xB8,0x9C,0xDC,0xDC,0x7E,0xFC,0xE4,0xEC,0xEC,0xF4,
0xF8,0xF8,0xFC,0xFC,0xF4,0xFE,0xFE,0xFE,0xFE,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};    //这是page7的内容

void main(void)
{	
	unsigned char i;
	unsigned int j;
	/*--  文字:  我  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
	
	
	init_i2c();
	clear_oled();   //清屏函数
	
	w_cmd_i2c(0x20);  //选择页寻址模式
	w_cmd_i2c(0x02);
	
	//w_cmd_i2c(0xB0);  //选择page  1011 0xxx
	//w_cmd_i2c(0x00);    //设置起始地址  低位
	//w_cmd_i2c(0x10);    //设置起始地址  高位
	//w_data_i2c(0x80);  //发送数据

	for(i=0;i<8;i++){
		
		w_cmd_i2c(0xB0+i);    //变换page  共有0-7 8个
		w_cmd_i2c(0x00);    //设置起始地址  低位
		w_cmd_i2c(0x10);    //设置起始地址  高位
		//i=3;
		for(j=128*i; j<(128*(i+1)); j++){   //变换的是tx中的数据
			w_data_i2c(tx[j]);  //tx中的数据  
		}
	}

	while(1){}
}  
//下面是函数封装


void clear_oled(void)
{
	char i;  int j;

	for(i=0;i<8;i++){
		w_cmd_i2c(0xB0+i);    //变换page
		w_cmd_i2c(0x00);    //设置起始地址  低位
		w_cmd_i2c(0x10);    //设置起始地址  高位
		for(j=0;j<128;j++){
			w_data_i2c(0x00);  //写0就行  
		}
	}
	
}

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

void w_cmd_i2c(char cmd)
{
	i2c_start();
	send_messege_i2c(0x78);
	ack();
	send_messege_i2c(0x00);
	ack();
	send_messege_i2c(cmd);
	ack();
	i2c_stop();
}

void w_data_i2c(char data1)
{
	i2c_start();
	send_messege_i2c(0x78);
	ack();
	send_messege_i2c(0x40);
	ack();
	send_messege_i2c(data1);
	ack();
	i2c_stop();
}

void i2c_start(void)
{
	scl=1;
	sda=0;	
	sda=1;  //我的  
	/*
	scl=0;  //老师的
	sda=1;
	scl=1;*/
	
	_nop_();   //
	sda=0;
	_nop_();   //
	scl=0;
}

void i2c_stop(void)
{
	scl=0;
	sda=0;
	scl=1;
	_nop_();   //
	sda=1;
	_nop_();   //
	sda=0;  //老师不要这个
}

char ack(void)      //应答信号
{
	char flag;
	sda=1;
	//_nop_();  //老师要的
	scl=1;
	_nop_();
	flag=sda;
	//_nop_();  //老师要的
	scl=0;
	_nop_();
	return flag;
}

void send_messege_i2c(char messege)
{
	char i;
	
	for(i=0;i<8;i++){
		scl=0;
		_nop_();   //必要
		sda= messege & 0x80 ;	
		//_nop_();  //老师要的
		scl=1;
		_nop_();
		scl=0;
		messege=messege<<1;
	}
}

6.编译的注意事项

其中的data 、xdata为ram的中的数据,可以随程序执行变化。
code中为rom中数据,调用后更改不了。5中的图片点阵太大,也不需要更改,编码在code中即可 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超好用万能提示词框架,ChatGPT效率翻三倍!

前几天写了几篇自己的AI实践&#xff1a; 《程序员&#xff0c;如何借力ChatGPT&#xff1f;》 《普通人&#xff0c;如何借力ChatGPT&#xff1f;》 《我认为&#xff0c;最好用的AI工具是它》 《如何借力AI工具做PPT》 很多朋友在后台留言&#xff0c;问我应该如何写高质量的…

云原生Docker网络管理

Docker网络 Docker 网络实现原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c; Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c; 同时Docker网桥是每个容器的默认网关。 …

redis整合通过QQ邮箱发送验证码

目录 1.QQ开启服务 2.java中配置 2.1.导入依赖 2.2.yml配置 2.2.1 mail配置 2.2.2 redis配置&#xff08;与mail同级&#xff0c;在spring下一级&#xff09; 2.3.conroller层 2.3.1 在controller类上加上 2.3.2 生成验证码方法 2.3.3发送邮件接口 2.3.4 用户登录接口&…

【事件驱动微服务架构】专家组:事件驱动的大规模架构

赖斯&#xff1a;欢迎来到我们关于架构的专题小组&#xff0c;你们一直想知道轨道。该专题小组称为事件驱动的大规模架构。当您思考事件驱动架构时&#xff0c;您会想到什么&#xff1f;这是规模、性能和灵活性的好处吗&#xff1f;也许你想到了一个你可能经历过的特殊问题。也…

Web Audio API实现简单变声效果

前言 想在网页中实现实时音频变声效果该如何实现呢&#xff0c;之前遇到这种处理音视频的需求&#xff0c;可能会想到需要借助C代码实现。但是现在随着浏览器性能的提升、web API的丰富&#xff0c;通过浏览器原生的API也可以操作音频数据实现很多复杂的效果&#xff0c;为web音…

mitt用100行实现发布-订阅模式还收获了9k的Star

我们先了解什么是发布-订阅模式&#xff0c;发布-订阅模式它是一种对象间一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖它的对象都将得到状态的通知。 发布-订阅模式流程如下&#xff1a; 订阅者将自己想订阅的事件注册到调度中心&#xff1b;…

快手 Flink 的稳定性和功能性扩展

摘要&#xff1a;本文整理自快手技术专家刘建刚&#xff0c;在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分&#xff1a; 1. 快手 Flink 平台 2. 稳定性保障和智能运维 3. 复杂场景下的功能扩展 4. 批处理的定制优化 Tips&#xff1a;点击「阅读原文…

maven添加指定仓库和镜像

maven历史版本下载地址&#xff1a;https://archive.apache.org/dist/maven/maven-3/ maven版本和java版本的关系&#xff1a;https://maven.apache.org/docs/history.html 项目中添加仓库 有两种方式 1.在pom.xml中添加&#xff08;优先级高&#xff09; 2.在setting.xml中添…

【已解决】-Mac/Mac mini/Macbook上修改鼠标指针大小

问题&#xff1a; MacOS默认的鼠标指针太小了&#xff0c;平时很容易找不到在哪里。 解决办法&#xff1a; 在 Mac 上&#xff0c;点击苹果菜单 >“系统偏好设置”&#xff0c;然后点按“辅助功能” 。 点击“显示”&#xff0c;然后点击“指针”。 设定以下任一选项…

【SQL】Oracle实现远程访问

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

CDN和Web加速器之间的区别

在数字时代&#xff0c;网站、社交媒体、电子商务、内容流平台和超个性化网络体验激增。因此&#xff0c;需要实时可靠地为最终用户提供大量生成的内容&#xff0c;而不会出现延迟或崩溃&#xff0c;无论其位置、网络、设备或浏览器如何。为此&#xff0c;使用CDN和web加速器就…

【模电实验】运算放大器构成的温度闭环控制系统的研究

运算放大器构成的温度闭环控制系统的研究 —、实验目的 设计并连接运算放大器构成的温度闭环控制系统&#xff0c;测量并调试该闭环控制系统&#xff0c;初步形成闭环控制的概念。 二、温度闭环控制系统的工作原理 图1所示为温度闭环控制系统框图&#xff0c;各部分工作原理…

vue3中setup语法糖那些事儿

vue3中setup语法糖那些事儿 什么是语法糖&#xff1f;vue3相比于vue2有什么新的语法糖?refreactivewatch生命周期Teleport setup语法糖<script setup>与传统vue3有何不同传统vue3和setup语法糖&#xff0c;两者之间写法如何转换&#xff1f; 什么是语法糖&#xff1f; …

NodeJs性能分析工具

&#xff08;头等人&#xff0c;有本事&#xff0c;没脾气&#xff1b;二等人&#xff0c;有本事&#xff0c;有脾气&#xff1b;末等人&#xff0c;没本事&#xff0c;大脾气。——南怀瑾&#xff09; NodeJs内存分析的必要性 回顾过去&#xff0c;我们排查web应用问题的途径…

EasyRecovery16计算机电脑硬盘格式化数据恢复软件

EasyRecovery16是一款综合性的数据恢复工具&#xff0c;软件具备非常成熟的算法&#xff0c;适用于多种数据丢失情况&#xff0c;可以帮助用户快速恢复不同介质丢失的数据。easyrcovery软件共有三种版本&#xff0c;分别为个人版、专业版、企业版。这三种版本的软件都可以免费使…

市场类型与完全竞争市场

短期完全竞争市场 区分市场类型的几条标准&#xff1a; 生产者的数量商品的同质性&#xff08;差异化程度&#xff09;进出市场的障碍信息是否完全 市场类型&#xff1a; 完全垄断寡头垄断垄断性竞争完全竞争 完全竞争市场的特征&#xff1a; 企业&#xff1a;数目多&…

Python学习41:文本分析(1)——统计文件中的字符

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ open(name[, mode[, bufferi…

MySQL了解之复制(一)

1.1、复制解决的问题 数据复制技术有以下一些特点&#xff1a; (1) 数据分布 (2) 负载平衡(load balancing) (3) 备份 (4) 高可用性(high availability)和容错 1.2、复制如何工作 从高层来看&#xff0c;复制分成三步&#xff1a; (1) master将改变记录到二进制…

第二十六章 开发Productions - ObjectScript Productions - 定义业务流程

文章目录 第二十六章 开发Productions - ObjectScript Productions - 定义业务流程介绍业务逻辑工具的比较 第二十六章 开发Productions - ObjectScript Productions - 定义业务流程 业务流程负责生产中的更高级别处理。本页介绍它们并讨论如何设计和开发业务流程类。 介绍 …

三分钟快速了解什么是MES系统

近年来在制造业的推动下&#xff0c;大家是否会经常听到MES系统这一词&#xff0c;但是对于其具体能解决什么问题却不是很清晰。接下来&#xff0c;请允许我用一个简单的故事来让大家快速地了解一下到底什么是MES系统以及MES系统能够解决什么问题。本文仅限于科普&#xff0c;没…