目录:
1.AT24C02(I2C总线)
2.AT24C02数据存储&秒表(定时器扫描按键数码管)
1.AT24C02(I2C总线)







弱上拉:




开漏输出:




















2.AT24C02数据存储&秒表(定时器扫描按键数码管)






函数未调用警告:






位声明:


I2c开始、结束:


发送字节:



接受字节:





发送应答:



接收应答:


I2C_SDA=1







应答了,点亮

测试这个:


测试完之后继续:




写数据,读数据:


先写:

运行:

在读:

分别运行:也可以读到,就实现掉电不丢失

第一个例子:按键保存读取








按下按键1:加1

按键2:减1:

按键3:保存:


重启:按下按键4:读取


第二个例子:定时器扫描按键、数码管












每隔一秒取反一次,说明定时器没问题




过滤按键抖动:

每隔20us检测一下

更改:





验证:



按2:

按3:

这样写并不会影响主循环的执行



定时器扫描数码管:
数码管里面也有delay可以进行修改定时器扫描数码管


修改:



主函数不用调,定时器会自动调用扫描显示在数码管上


什么都不显示:








按下第一个按键:

第二个按键:

在加个delay:也不会影响,不会出现任何闪烁,因为扫描实在定时器里面的,不会影响我们的按键检测,他影响的是相应时间,相应是在主函数,一直按着他也在扫描,松手就变了

实现秒表:
添加-的断码:












按下按键1才启动秒表:


按键1:清0:

引入:AT24C02



按键3:缓存:

断电重启:

按键4:读取缓存:
