单片机对掉电进行检测然后输出脉冲。但只能检测到却没有输出,请大家给看一下程序。掉电后启动备用电源。

单片机对掉电进行检测然后输出脉冲。但只能检测到却没有输出,请大家给看一下程序。掉电后启动备用电源。,第1张

1 单片机电源另外供电,稳压后加一个大容量电容足以保持单片机有足够的时间去运行掉电程序(因为你的掉电延时函数用得太多了太耗时间了);

2 掉电输出控制电路也要有足够的电容实现掉电控制(同上);

3 建议掉电检测用外部中断输入口实现;

4 建议用光电隔离芯片直接检测主电源来实现掉电检测。

直接存储是不行的,单片机本身的RAM是掉电就没有的。一般使用EEPROM,常用的有24c01等,采用I2C协议进行读写数据,怎么使用这类芯片的程序网上搜一下能搜出几吨来。可以自己搜索一下,由于你使用的51单片机,可以直接用IO口来模拟I2C协议,很简单的。

需要注意的一点就是,要注意E2P芯片的寿命(一般是读写100万次,足够了)。

存储数据的时候,可以对 *** 作数和存储的数据进行比较,不相等则存储,比如:

if

(ReadI2c()!=data)

这样可以增加使用寿命,比有些每隔1秒钟进行存储的会好多了。

碰到要存储的是时间的时候,并且是每秒钟存的话,由于寿命的原因,则要另外想办法,常用的有:

1.在掉电瞬间的时候去存储数据,这种方法要硬件上给予检测电路来告知现在掉电了,然后程序就对时间进行存储,这种方法的弊端是“必须要有检测电路”。

2.考虑到上述的问题,可以开辟多块空间来存储“时间”,每次上电依次使用不同的空间,但是为了要有“使用哪一块的判断条件”,所以必须再多一个空间存储“判断”:每次程序开始,将“判断++”,然后根据其来决定使用哪一块的“时间空间”。

/*************************************************************/

希望能有帮助,上述是对掉电记忆来讲比较不错的的方法了。

这里有一个类似的电路,供参考:

上图的原理是:当VCC掉电的时候,电容C1放电,将Q1导通,然后令Q2对外输出低电平。

详细分析参考《电压掉电监测电路》


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12037210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存