一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 10699|回复: 92
收起左侧

[51单片机] STC89C51/52--eeprom读写实验软件

  [复制链接]
发表于 2010-6-1 17:47 | 显示全部楼层 |阅读模式
本帖最后由 倪大德 于 2010-6-1 18:01 编辑

          89c51/52为使数据在掉电后不丢失,一般是在片外扩展存储器,单片机与存储器之间通
过IIC 或SPI 等接口来进行数据通信。这样不光会增加开发成本,同时也增加软件开发成本。


           STC89C51/52是利用IAP技术实现EEPROM,内部Flash擦写次数为100000次以上。使用起来
更加方便。


      本人充分利用STC串口编程线,在不增加硬件成本的前提下,开发了STC89C51/52-EEPROM
读写软件。界面如下:


      1. STC89C51/52的EEPROM共分8个扇区。可分别读,写,擦除!
      2. 玩LED点阵屏的朋友总感觉RAM不够!其实完全可利用STC89C51/52的EEPROM,一个扇区可
存储16个汉字,总的可存储16*8=128个汉字。利用本软件可直接将提取的字码分别写入到STC89C51/52
8个扇区中,方便直接调用!(已作实验)


      郑重说明:
      如转载请给于涟接,说明来自一乐社区!(以前发现过)


界面图.JPG

评分

参与人数 1 +12 收起 理由
fat + 12 感谢分享

查看全部评分

 楼主| 发表于 2010-6-1 17:47 | 显示全部楼层
本帖最后由 倪大德 于 2010-6-1 23:05 编辑

应用说明 ---

    写示意图:

         写.JPG

   读,擦除示意图:

   读.JPG

  取码示意图:

取码.JPG


  说明:取码写入后。单片机应断电后重新上电,再可用读查看写入的内容。


主要源码:

     玩LED点阵屏,可参阅以下源码。


//====== 演示 STC89C51RC  EEPROM 操作
//====== 程序编写  倪大德  10-06-01修正
//====== 芯片STC89C52RC    晶振11.0592MHz(波特率9600)
//====== 参阅文档:见宏晶STC89C51RC应用说明
//====== ttp://www.yleee.net/

#include "STC89C51RC.H"
#include <intrins.h>
/*
//ISP相关的特殊功能寄存器
#define ISP_DATA   0XE2     
#define ISP_ADDRH  0XE3
#define ISP_ADDRL  0XE4
#define ISP_CMD    0XE5
#define ISP_TRIG   0XE6
#define ISP_CONTR  0XE7
*/
//定义常量
//#define ENABLE_ISP  0x80      // >20M=80H
#define ENABLE_ISP  0x81        // <20MHz
//#define ENABLE_ISP  0x82      // <10M=82H
//#define ENABLE_ISP  0x83      // <5M=83H
unsigned char temp=0;
unsigned int flash_addr;
code unsigned int DATA_FLASH_START_ADDRESS[8] =
{0x2000,0x2200,0x2400,0x2600,0x2800,0x2a00,0x2c00,0x2e00};

//===============================================================读出该扇区512个数据
void byte_read(unsigned char ss)
{  
   unsigned int i;
   flash_addr = DATA_FLASH_START_ADDRESS[ss];  
for(i = 0; i<512; i++)                     
{
  ISP_ADDRH = flash_addr >> 8;           
  ISP_ADDRL = flash_addr & 0x00ff;                                 
  ISP_CONTR = ENABLE_ISP;                 //打开IAP功能   
  ISP_CMD = 0x01;                        
        EA=0;
  ISP_TRIG = 0x46;                        
  ISP_TRIG = 0xb9;                        //送B9 IAP触发启动
  _nop_();
        SBUF=ISP_DATA;   
        while(TI==0);        
        TI=0;               
        flash_addr++;                          
        EA=1;
    IAP_disable();                      //关IAP
  }
}
//===============================================================写入该扇区512个数据
void byte_progrom(unsigned char ss)
{
  ISP_CONTR = ENABLE_ISP;                 //打开IAP功能
        ISP_CMD = 0x02;                        
        ISP_ADDRH = flash_addr >> 8;            
  ISP_ADDRL = flash_addr & 0x00ff;      
        ISP_DATA = ss;                        
  EA=0;
        ISP_TRIG = 0x46;                        
  ISP_TRIG = 0xb9;                        //送B9 IAP触发启动
  _nop_();
         EA = 1;
        IAP_disable();                      //关IAP
}
//=====================================================扇区擦除
void sector_ersae(unsigned char ss)
{
     flash_addr = DATA_FLASH_START_ADDRESS[ss];           
        ISP_CONTR = ENABLE_ISP;                 //打开IAP功能
        ISP_CMD = 0x03;   
     ISP_ADDRH = flash_addr >> 8;            
  ISP_ADDRL = flash_addr & 0x00ff;        
        EA=0;
        ISP_TRIG = 0x46;         
  ISP_TRIG = 0xb9;                        // IAP触发启动
  _nop_();
        EA = 1;
        IAP_disable();                      //关IAP
}
//===================================================延时
void delay_eeprom(unsigned int n)
{
     unsigned int i;
     for(i=1;i<n;i++){;}
}

//====================================================主函数                    
void main(void)
{

}


附件:(内有)

1.读写上位机软件
2.HEX文件 (源码见上)
3.STC89C51头文件
4.STC89C51应用手册

STC发.zip (2.48 MB, 下载次数: 1091)

点评

高手,可用这个软件查看采集的信息  详情 回复 发表于 2021-12-21 20:29
发表于 2010-6-1 22:10 | 显示全部楼层
几次想学习stc 的ipa 功能, 感觉太难没下得去手,没想到本坛就有高人,先记号再学习
发表于 2010-6-1 22:26 | 显示全部楼层
又见好东西了。
 楼主| 发表于 2010-6-1 23:07 | 显示全部楼层
本帖最后由 倪大德 于 2010-6-1 23:10 编辑

不知何因,感觉发图太慢!

         有不明处,可参阅STC89C51应用手册!
发表于 2010-6-2 00:01 | 显示全部楼层
虽然还看不懂C,还是帮顶一下,等以后好好学习一下读写片内存储器的方法
 楼主| 发表于 2010-6-2 06:45 | 显示全部楼层
虽然还看不懂C,还是帮顶一下,等以后好好学习一下读写片内存储器的方法
灰灰的丝丁鱼 发表于 2010-6-2 00:01 https://www.yleee.com.cn/images/common/back.gif


           STC89C51应用手册中有汇编实例。
发表于 2010-6-2 07:02 | 显示全部楼层
虽然还看不懂,还是帮顶一下.
发表于 2010-6-2 08:19 | 显示全部楼层
虽然还看不懂,还是帮顶一下.
无锡风 发表于 2010-6-2 07:02 https://www.yleee.com.cn/images/common/back.gif



    虽然不懂,但还是要围观一下!
发表于 2010-6-2 10:18 | 显示全部楼层
手头还有几片STC不会用,学习先

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-25 16:07 , Processed in 0.056598 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表