AT24C02


一.存储器介绍

1.易失性存储器/RAM

全称:RamdomAccessMemory

百度百科:它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器(如硬盘)中。

①SRAM(静态RAM) steady

  • 用电路储存,CPU用到,速度最快,容量小

②DRAM(动态RAM)

  • 用电容充放电的高低电平来存储,通常配一个扫描电路,给它补电

2.非易失性存储器/ROM

全称:non-volatile memory

百度百科:是指当电流关掉后所存储的数据不会消失的电脑存储器,缺点是存储比较慢

①Mask ROM(掩膜ROM):只读不写

②PROM(可编程ROM):只能写一次

  • 编程时左边给高电平、下边给0可以把蓝色的二极管击穿,实现可写,所以也叫烧录程序哈哈

③EPROM(可擦除可编程ROM):可写

④E2PROM(电可擦除可编程ROM):5V几毫秒就能擦除

⑤Flash(内存):

⑥硬盘、软盘、光盘等:通过磁介质传递

二.AT24C02介绍

三.I2C

1.起始&终止

2.发送/接受字节

👆注意主机和从机,在SDA中紫色是从机,黑色是主机

应答可以作为第九位

  • 主机释放了SDA(给SDA置1)变成高电平,把控制权给从机
  • 此时从机可以操控发1或发0
  • 当SCL拉低,从机自动将下一位数据放到总线上

3.发送/接收应答

应答可以作为数据的第九位

用来判断从机是否应答或者主机是否发送应答

呜呜呜呜呜呜呜呜呜呜从1:15:21开始,代码不能正常运行呜呜呜呜呜呜呜呜呜呜放弃了放弃了

四.学到了啥


感觉比较有用的是在定时器里调用函数,同时对不同模块函数计时

void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count1,T0Count2;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count1++;
	if(T0Count1>=20)		//20ms返回一次1或0
						//通过记录上一次和这一次的返回值判断是按下还是松开
	{
		T0Count1=0;
		Key_Loop();//这时候Key函数无中生有,有了自己的中断
	}
	
	T0Count2++;
	if(T0Count2>=2)		
	{
		T0Count2=0;
		Nixie_Loop();
	}
}

Key_Loop Nixie_Loop

只需要改变T0Count>=x就可以有针对的计时

这个loop函数相当于绕了一个圈把子函数调用了一次,但是起码起到了计时的作用


文章作者: WB
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WB !
  目录