0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何对PIC16F628A的内部EEPROM执行基本的读写操作

454398 来源:网络整理 作者:网络整理 2019-12-06 11:39 次阅读

EEPROM( E 电上 E 可刮擦的 P 可擦写的 R ead- O nly M emory )是一种非易失性存储器,可以在电路板上进行电编程,擦除和重新编程。大多数PIC微控制器都带有一些内置的EEPROM,是存储系统掉电时不会丢失的数据的好地方。一个很好的例子是一个数字锁系统,其中的访问代码可以存储在微控制器的EEPROM中,这样即使断开电源后内容仍保持完整。在我的“ 初学者的数据记录器”项目中,我使用了PIC12F683的内部EEPROM来存储测得的温度值。在今天的实验中,我们将学习如何对PIC16F628A的内部EEPROM执行基本的读写操作。

如何对PIC16F628A的内部EEPROM执行基本的读写操作

使用PIC的内部EEPROM进行读/写操作

理论

PIC16F628A单片机具有128字节的数据EEPROM,地址范围为00h至7Fh。有四个用于读取和写入此存储器的特殊功能寄存器,分别是EECON1,EECON2,EEDATA和EEADR。 EEADR将您希望读取或写入的地址保存在EEPROM中,而EEDATA将您刚刚读取的或希望写入EEPROM的8位数据保存。 EECON1和EECON2是控制寄存器,用于启用EEPROM读/写操作。我们将在这里忽略这些寄存器的详细信息,因为我们将使用mikroC编译器进行编程,其中用于EEPROM操作的内置库例程负责配置这些寄存器。但是,您可以在PIC16F628A的数据手册中找到这些寄存器的详细信息。

电路设置

此实验需要一个16×2字符的LCD进行显示和三个用于用户输入的触觉开关。下面的电路图显示了LCD和PIC16F628A微控制器的开关的连接。

实验13的电路图

三个轻触开关分别连接到RB0,RB1和RB3引脚。 LCD以4位模式工作,数据引脚由PIC16F628A的RB4至RB7引脚驱动。 LCD RS和E控制引脚连接到RA0和RA1引脚。在软件部分讨论了这三个轻触开关的功能。

实验板上的实验电路设置

软件

我们将为PIC16F628A编写一个小型应用程序软件,该软件将对PIC16F628A的选定内部EEPROM位置(00h至0Fh)执行读,写和删除操作。按下“读取”按钮时,将读取00h-0Fh位置存储的16字节信息,并将其显示在LCD屏幕上。按下“写入”按钮会将字符串“ Embedded-Lab.com”写入这些位置,而如果按下“清零”按钮,则这些位置中的值将全部替换为0。

mikroC Pro用于PIC编译器的EEPROM读写操作提供以下功能:

无符号短 EEPROM_Read(无符号短地址):-从指定地址

无效 EEPROM_Write(无符号短地址,无符号短数据):-将数据写入指定地址

您可以从下面的链接下载完整的源代码和十六进制文件。

下载mikroC项目文件

输出

已擦除的EEPROM位置中的默认值为FFh(255)。当此值(FFh)显示在LCD上时,屏幕上所有5×10点均处于活动状态。因此,当您第一次读取处于擦除状态的EEPROM时,将读取所有FFh(请参见下图)。一旦完成写入操作,请关闭电源几秒钟,然后再次将其关闭,然后按读取按钮。您会看到字符串(Embedded-Lab.com)仍保留在EEPROM中。

主菜单

读取开头的所有FF

写操作

再次读取新存储的值a

归零位置

读取全零
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7120

    浏览量

    161918
  • PIC16F628A
    +关注

    关注

    1

    文章

    8

    浏览量

    9973
收藏 人收藏

    评论

    相关推荐

    STM32F103利用软件模拟I2C读写EEPROM,超过385个字节就读写不了的原因?

    在STM32F103的芯片中,利用软件模拟I2C读写EEPROM,在使用页写入的方式进行读写时,能够读写385个字节,(
    发表于 03-19 07:45

    stm32f4软件模拟I2C读写EEPROM无器件响应是什么原因造成的?

    利用STM32F4软件模拟I2C读写EEPROM时,在检测I2C总线设备时,在等待应答阶段,CPU读取SDA线口状态值为1(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)),导致
    发表于 03-19 06:36

    STM32 FLASH模拟EEPROM,烧写程序时设置为读保护Level-2级别,还能正常读写这个模拟的EEPROM吗?

    STM32系列内部FLASH模拟EEPROM,烧写程序时设置为读保护Level-2级别,还能正常读写这个模拟的EEPROM吗?
    发表于 03-13 07:34

    M24C16为什么只能读写最后一次的数据?

    我的现象是,每次写完一组数据(16个字节),然后再读出来,发现是正确的。 但是如果再读取上一次或者上几次读写的数据,也就是更改一下EEPROM的地址,读出来的数据和最新的一次是一样的。 我不清楚是我
    发表于 03-12 07:53

    pic16f628a烧录设置

    PIC16F628A是微芯科技(Microchip)推出的一款8位微控制器芯片。它是一款多功能的芯片,被广泛应用于各种嵌入式系统和电子设备中。烧录是将程序代码写入芯片的过程,它是使用这款芯片的第一步
    的头像 发表于 12-19 09:43 871次阅读

    APM32F4 Flash模拟EEPROM介绍和代码实现

    Flash与EEPROM一次操作的数据大小不同。虽然MCU内部的Flash和EEPROM一样,可以实现按字节的读写,但是在写入的时候,是必须
    的头像 发表于 12-01 17:52 373次阅读
    APM32F4 Flash模拟<b class='flag-5'>EEPROM</b>介绍和代码实现

    PIC16F73

    电路PIC
    jf_34538777
    发布于 :2023年11月15日 14:24:18

    CW32单片机I2C接口读写EEPROM芯片介绍

    CW32单片机I2C接口读写EEPROM芯片介绍
    的头像 发表于 11-09 17:42 565次阅读
    CW32单片机I2C接口<b class='flag-5'>读写</b><b class='flag-5'>EEPROM</b>芯片介绍

    STC15F2K60S2单片机内部EEPROM读写操作的介绍

    STC15系列单片机内部集成了大容量的EEPROM,其与程序空间是分开的。
    的头像 发表于 11-08 17:41 1024次阅读
    STC15F2K60S2单片机<b class='flag-5'>内部</b><b class='flag-5'>EEPROM</b><b class='flag-5'>读写</b><b class='flag-5'>操作</b>的介绍

    pic16f877的红外测距模块怎么使用?

    pic16f877的红外测距模块怎么使用
    发表于 10-17 06:14

    stm32f4软件模拟I2C读写EEPROM无器件响应是什么原因造成的?

    利用STM32F4软件模拟I2C读写EEPROM时,在检测I2C总线设备时,在等待应答阶段,CPU读取SDA线口状态值为1(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)),导致
    发表于 08-07 06:32

    STM32CUBEIDE(16)----内部Flash读写

    本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以对一些需要断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是STM32F103RBT6,128K大小的Flash。
    的头像 发表于 07-27 09:24 953次阅读
    STM32CUBEIDE(<b class='flag-5'>16</b>)----<b class='flag-5'>内部</b>Flash<b class='flag-5'>读写</b>

    STM32CubeMx入门教程(7):I2C的读写应用

    导语“本次 教程使用CubeMx配置I2C进行I2C总线设备的数据读写操作,使用EEPROM作为实验对象”
    发表于 07-12 11:34 1532次阅读
    STM32CubeMx入门教程(7):I2C的<b class='flag-5'>读写</b>应用

    [MM32软件] MM32F002使用内部flash存储数据怎么操作

    * ptr, u16 len); 我是直接用MM32F002的例程,为什么使用这两行代码存储set_wendu这个全局变量存储不了。 试过改EEPROM_Write,EEPROM_Re
    发表于 06-16 10:56

    基于51单片机的iic--24c02EEPROM读写程序

    基于51单片机的iic--24c02EEPROM读写例程源代码
    发表于 05-12 16:44 0次下载