久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2667|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)保存數(shù)據(jù)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:34216 發(fā)表于 2018-10-10 06:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)驅(qū)動(dòng)數(shù)碼管顯示1,按一下鍵盤+1顯示2,,怎么保存 ? 斷電開機(jī)顯示2
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:7485 發(fā)表于 2018-10-10 08:17 | 只看該作者
必須有ROM,如flash、eeprom eprom等。

回復(fù)

使用道具 舉報(bào)

板凳
ID:330198 發(fā)表于 2018-10-10 09:00 | 只看該作者
可以利用51單片機(jī)的EEPROM每次按下把數(shù)據(jù)存入,下次上電自動(dòng)讀取。下面的程序是讀寫EEPROM程序。僅供參考。
——————————————————————————————————————————————————
#include "reg52.h"
#include "intrins.h"

typedef unsigned char BYTE;
typedef unsigned int WORD;

/*Declare SFR associated with the IAP */
sfr IAP_DATA    =   0xC2;           //Flash data register
sfr IAP_ADDRH   =   0xC3;           //Flash address HIGH
sfr IAP_ADDRL   =   0xC4;           //Flash address LOW
sfr IAP_CMD     =   0xC5;           //Flash command register
sfr IAP_TRIG    =   0xC6;           //Flash command trigger
sfr IAP_CONTR   =   0xC7;           //Flash control register

/*Define ISP/IAP/EEPROM command*/
#define CMD_IDLE    0               //Stand-By
#define CMD_READ    1               //Byte-Read
#define CMD_PROGRAM 2               //Byte-Program
#define CMD_ERASE   3               //Sector-Erase

/*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
//#define ENABLE_IAP 0x80           //if SYSCLK<30MHz
//#define ENABLE_IAP   0x81           //if SYSCLK<24MHz
#define ENABLE_IAP 0x82            //if SYSCLK<20MHz
//#define ENABLE_IAP 0x83           //if SYSCLK<12MHz

//Start address for STC15w204s EEPROM
#define IAP_ADDRESS1 0x0000   //型號(hào)不同,地址不同,具體見datasheet
#define IAP_ADDRESS2 0x0200   


/*----------------------------
Disable ISP/IAP/EEPROM function
Make MCU in a safe state
----------------------------*/
void IapIdle()
{
    IAP_CONTR = 0;                  //Close IAP function
    IAP_CMD = 0;                    //Clear command to standby
    IAP_TRIG = 0;                   //Clear trigger register
    IAP_ADDRH = 0x80;               //Data ptr point to non-EEPROM area
    IAP_ADDRL = 0;                  //Clear IAP address to prevent misuse
}

/*----------------------------
Read one byte from ISP/IAP/EEPROM area
Input: addr (ISP/IAP/EEPROM address)
Output:Flash data
----------------------------*/
BYTE IapReadByte(WORD addr)
{
    BYTE dat;                       //Data buffer

    IAP_CONTR = ENABLE_IAP;         //Open IAP function, and set wait time
    IAP_CMD = CMD_READ;             //Set ISP/IAP/EEPROM READ command
    IAP_ADDRL = addr;               //Set ISP/IAP/EEPROM address low
    IAP_ADDRH = addr >> 8;          //Set ISP/IAP/EEPROM address high
    IAP_TRIG = 0x5a;                //Send trigger command1 (0x46)
    IAP_TRIG = 0xa5;                //Send trigger command2 (0xb9)
    _nop_();                        //MCU will hold here until ISP/IAP/EEPROM operation complete
    dat = IAP_DATA;                 //Read ISP/IAP/EEPROM data
    IapIdle();                      //Close ISP/IAP/EEPROM function

    return dat;                     //Return Flash data
}

/*----------------------------
Program one byte to ISP/IAP/EEPROM area
Input: addr (ISP/IAP/EEPROM address)
       dat (ISP/IAP/EEPROM data)
Output:-
----------------------------*/
void IapProgramByte(WORD addr, BYTE dat)
{
    IAP_CONTR = ENABLE_IAP;         //Open IAP function, and set wait time
    IAP_CMD = CMD_PROGRAM;          //Set ISP/IAP/EEPROM PROGRAM command
    IAP_ADDRL = addr;               //Set ISP/IAP/EEPROM address low
    IAP_ADDRH = addr >> 8;          //Set ISP/IAP/EEPROM address high
    IAP_DATA = dat;                 //Write ISP/IAP/EEPROM data
    IAP_TRIG = 0x5a;                //Send trigger command1 (0x46)
    IAP_TRIG = 0xa5;                //Send trigger command2 (0xb9)
    _nop_();                        //MCU will hold here until ISP/IAP/EEPROM operation complete
    IapIdle();
}

/*----------------------------
Erase one sector area
Input: addr (ISP/IAP/EEPROM address)
Output:-
----------------------------*/
void IapEraseSector(WORD addr)
{
    IAP_CONTR = ENABLE_IAP;         //Open IAP function, and set wait time
    IAP_CMD = CMD_ERASE;            //Set ISP/IAP/EEPROM ERASE command
    IAP_ADDRL = addr;               //Set ISP/IAP/EEPROM address low
    IAP_ADDRH = addr >> 8;          //Set ISP/IAP/EEPROM address high
    IAP_TRIG = 0x5a;                //Send trigger command1 (0x46)
    IAP_TRIG = 0xa5;                //Send trigger command2 (0xb9)
    _nop_();                        //MCU will hold here until ISP/IAP/EEPROM operation complete
    IapIdle();
}
回復(fù)

使用道具 舉報(bào)

地板
ID:386381 發(fā)表于 2018-10-10 09:44 來自手機(jī) | 只看該作者
可以在51復(fù)位腳那接個(gè)備用電池
回復(fù)

使用道具 舉報(bào)

5#
ID:407393 發(fā)表于 2018-10-10 10:20 | 只看該作者

必須有ROM,如flash、eeprom eprom等。
回復(fù)

使用道具 舉報(bào)

6#
ID:23606 發(fā)表于 2018-10-10 10:41 | 只看該作者
把數(shù)碼管顯示的值寫入eeprom,斷電后從新上電讀取eeprom相應(yīng)地址的值再顯示
回復(fù)

使用道具 舉報(bào)

7#
ID:407408 發(fā)表于 2018-10-10 10:43 | 只看該作者
單片機(jī)有EEPROM的話,在單片機(jī)掉電過程中將數(shù)碼管顯示值保存到EEPROM,再上電時(shí),數(shù)碼顯示值先從EEPROMZ中加載
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 96av麻豆蜜桃一区二区 | 午夜成人在线视频 | 中文字幕在线国产 | 国产成人精品免费 | 欧美日韩中文字幕在线播放 | 欧美韩一区二区三区 | 99久久婷婷国产综合精品首页 | 三级国产三级在线 | 中文字幕一区二区三区日韩精品 | 久久久久久国产精品免费免费狐狸 | 欧美精品一区二区免费 | 中文字幕高清视频 | 免费人成在线观看网站 | 91久久精品国产91久久 | 精品无码久久久久久国产 | 小草久久久久久久久爱六 | 亚洲综合一区二区三区 | 午夜色婷婷 | 亚洲欧美一区二区三区视频 | 亚洲国产精品成人无久久精品 | 精品久久一区 | 国产精品69久久久久水密桃 | 中文字幕日韩三级 | 欧美一级免费看 | 欧美日韩国产高清 | 免费观看毛片 | 在线亚洲精品 | 免费观看一级特黄欧美大片 | 日本国产高清 | 69性欧美高清影院 | 中文字幕免费 | 免费观看一级黄色录像 | 99免费在线视频 | 日韩视频福利 | 成人蜜桃av | 888久久久 | 成人在线免费 | 成人午夜网站 | 色噜噜亚洲男人的天堂 | 九九免费| 欧美成人精品在线观看 |