蓝桥杯嵌入式菜鸟学习笔记——EEPROM+按键的简单应用

学完EEPROM和按键之后看到一道题,就试着做了一下,由于刚接触,花了不少时间才完成。自我感觉学到了不少东西,就打算记录下来。这也是我写的第一篇博客。
在这里插入图片描述我的思路是一步一步来,先用按键实现变量的增减,并将其显示到LCD液晶屏上。然后在将数据存储到EEPROM中,掉电不丢失。

按键采用外部中断的方式

(这里展示主要部分代码。)
因为已经规定好了变量的范围,所以在写中断服务函数的时候就要注意。在这里插入图片描述

然后是LCD对应函数

这里要注意sprintf函数的使用,格式化的时候因为655535是五位数,所以要写成%5d。(这个很重要,必须注意)
在这里插入图片描述

现在基本功能就完成了。

在这里插入图片描述

EEPROM部分

AT24C02一次只能发送和接收一个字节。但是题目要求的是16位的变量。所以要自己在8位的基础上写一个16位的收发程序。
(这里要注意两个发送函数之间要有一个大约5ms的延时,保证一次写入结束再进行下一次。接收函数也是。不加延时的话会导致数据失真,这个在AT24C02的数据手册也能看到。)
在这里插入图片描述

最后把上面那两个函数加到主函数就完成了。

在这里插入图片描述
还有一个之前令我比较头疼的问题:
本来我把 **write_AT24c0216(0x21,Value)**这个函数分别放在四个外部中断服务函数里面,可是按键就失灵了。之后我把 **write_AT24c0216(0x21,Value)**函数里边的延时去掉就可以正常工作了。可是去掉延时后EEPROM的写入又会不准。解决措施就是把那个函数放到main函数的while(1)循环中。

总结:每一部分都有需要注意的地方,我在这里再给大家总结一下。还有就是第一次写博客,不是特别好,大家将就看。
(下一篇写按键检测消抖的问题)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43690936/article/details/104128053