标题: 如何掉电存储数据 比如我想要数码管从1到100显示 [打印本页]

作者: sim    时间: 2018-1-11 19:21
标题: 如何掉电存储数据 比如我想要数码管从1到100显示
如何掉电存储数据 比如我想要数码管从1到100显示 当显示到任意数字式 断电 等再接电时 数码管的数字与断电之前的一样
作者: yzwzfyz    时间: 2018-1-11 21:43
你想个招:在掉电之前检测到掉电,关键是要保证掉电后,稍稍给CPU一点点时间(保证有电),利用这一点点的时间,将数码上的数据保存至非易失性存储器中。
在每次起动时,取保存的数据作为LED显示的起点。
一个星期想不出来,再来问我。
作者: 白衣如风    时间: 2018-1-11 21:56
加个eeprom
作者: dzbj    时间: 2018-1-11 22:28
显示数据不直接显示 先放到缓冲区 显示程序从缓冲区调用 用片子的一个管脚经过分压接到降压前的电源输入端上 在降压芯片或者模块的输出端接个比较大的电容 比如220uf的 程序里经常看输入端是否掉电 一旦发现掉电 把缓冲区的数据写入EEPROM

每次上电 先从EEPROM把数据调入缓冲区 然后 显示程序还是从缓冲区调数据

stc的一些片子带低电压检测 可以设定在一个较高阀值 一般从阀值到禁止eeprom写入电压之间 电压的下降时间足够保存了 如果用这种片子 把电压检测端接到单片机供电端 然后开寄存器 程序里也相应处理 就行了 比之前的办法简单
作者: resetlove    时间: 2018-1-11 22:51
在电源上并接大电容,在掉电之前检测到掉电,CPU将数据和掉电标志写入flash中。
在每次起动时,根据掉电标志读取保存的数据作为LED显示的起点。
作者: zml88    时间: 2018-1-11 23:08
1、使用电池进行RAM数据维持;
2、单片机外接EEPROM芯片或者使用内部有EEPROM用户数据存储区的单片机。每次将数据送显示前,先将待显示数据写入EEPROM。系统复位后,先读出EEPROM中存储的数据到显示缓冲区。
作者: bioger    时间: 2018-1-12 08:21
电源加一个大电容  然后加一个EEPROM
作者: 翰林学士287    时间: 2018-1-13 10:54

显示数据不直接显示 先放到缓冲区 显示程序从缓冲区调用 用片子的一个管脚经过分压接到降压前的电源输入端上 在降压芯片或者模块的输出端接个比较大的电容 比如220uf的 程序里经常看输入端是否掉电 一旦发现掉电 把缓冲区的数据写入EEPROM

每次上电 先从EEPROM把数据调入缓冲区 然后 显示程序还是从缓冲区调数据

stc的一些片子带低电压检测 可以设定在一个较高阀值 一般从阀值到禁止eeprom写入电压之间 电压的下降时间足够保存了 如果用这种片子 把电压检测端接到单片机供电端 然后开寄存器 程序里也相应处理 就行了 比之前的办法简单
作者: ciximg    时间: 2018-1-13 11:35
加一个eeprom
作者: 维超    时间: 2018-1-13 11:59
老51芯片就外加24C02类的eeprom,外加掉电检测(可以采用比较器)来触发单片机来存储。开机时再调用即可。
作者: 无量寿经    时间: 2018-1-13 15:58
百度网盘有与你这个要求完全相符的视频和例程,是与纸版教材《51单片机轻松入门 基于STC15W4K系列配套》的,网盘地址:https://pan.baidu.com/s/1bURkE6

作者: shanxiaoke1    时间: 2018-1-13 16:29
这时这么多大神,有没有人可以帮我写个程序
作者: 大力做大力愛    时间: 2018-1-14 20:38
加一块24C02(eeprom)芯片  然后程序在你每次计数加一后吧数值写入24C02中  这个程序你要自己摸索的  网上很多24c02的程序  稍微改一改很简单的
作者: dzbj    时间: 2018-1-14 21:16
shanxiaoke1 发表于 2018-1-13 16:29
这时这么多大神,有没有人可以帮我写个程序

大家都在努力帮你啊 给你提供了足够多和足够用的思路 但具体得你自己去做 这就像你饿了要吃饭 大家给你推荐了很多菜谱 但你要让别人给你做好再喂到你嘴里 你就得付钱 因为那是人家的劳动 是精力和时间的付出 要知道 每个人一辈子时间就那么点 给你了就再也没有那块时间了
作者: 1320451695    时间: 2018-1-14 21:35
例如:#include <AT89X51.H>//数字0-9的字形码unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};unsigned char dispcount;void delay02s(void);void main(void){ P1_0=0;//选通第一位数码管 while(1) {  for(dispcount=0;dispcount<10;dispcount++)  {   P0=table[dispcount];   delay02s();  } }} void delay02s(void){unsigned char i,j,k;for(i=20;i>0;i--)for(j=30;j>0;j--)for(k=248;k>0;k--);}  补充:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1