ATMega16内部EEPROM存储器的应用

发布者:MindfulCreator最新更新时间:2012-10-09 来源: 21ic 关键字:ATMega16  EEPROM  存储器 手机看文章 扫描二维码
随时随地手机看文章

  数字化方向的发展在给我们的生活带来巨大便利的同时,也带给我们一些小小的麻烦:我们需要记忆的密码越来越多,银行卡,信用卡,EMAIL,甚至家中的门锁。由于这些密码的重要性,即便把它们存储在电脑的某个角落之中,我们仍然担心由于种种原因而造成的密码泄露或遗失。

  ATMega16作为一款嵌入式单片机,用来存储密码是非常合适的。首先相对于家用PC,它是工业级的产品,可以更有效地保证存储的密码不会因为外部的温湿度等环境条件的变化而被破坏。其次,ATMega16不需要操作系统,直接运行用户自行编写的程序,具有很好的个体性。再次,其内部可加密的EEPROM存储器相对于外部EEPROM存储器增加了通过非法手段直接读取EEPROM中内容的难度,从而提高了安全性。

  本文中,笔者用ATMega16设计的密码保管箱将会是这样:它有一个4×4小键盘供我们操作,并通过串口调试工具将密码保管箱对操作的反应显示在电脑上,电路见今年第5期杂志第39页文章,在硬件上我们不用添加任何器件。它的工作过程是:将各种各样的密码存入ATMega16的EEPROM中,然后设置一个密码保管箱的密码,当输入正确的密码保管箱密码,则把所有存储的密码通过串口送到电脑上显示。

  要完成该设计,我们需要首先了解如何操作ATMega16的内部EEPROM存储器。ATMega16内部有512个字节的EEPROM存储器,可以单独对每一个字节进行读取或写入,并且具有至少10万次写入/擦除周期的寿命。EEPROM通过相应的寄存器进行操作,其中有:

   EEPROM的高位地址寄存器EEARH中只有EEAR8位有效,与低地址寄存器EEARL组成9位的地址空间可以寻址到整个512字节,用于指定EEPROM地址。

   如果是写EEPROM操作,则EEDR中包含了将要写入EEPROM中的数据。如果是读EEPROM操作,读出的内容在EEDR中。

   位3-EERIE:EEPROM准备完成中断允许。如果全局中断I使能,且置位EERIE,则如果EEPROM准备完成,将引起中断请求。清零EERIE将屏蔽该中断。[page]

  位2-EEMWE:EEPROM主机写入允许。该位决定是否允许对EEPROM进行写入操作。当EEMWE被置位时,在EEWE为1的4个时钟周期内,将写数据到指定的地址;当EEMWE为0,设置EEWE为1不能触发写EEPROM操作。

  位1-EEWE:EEPROM写允许。  该位作为EEPROM的写入触发。当地址和数据被正确设置以后,且EEMWE为1,则置位EEWE,将触发数据写入EEPROM。如果EEMWE不为1,EEWE不能触发写EEPROM的操作。写EEPROM应该遵循以下步骤:

  (1)等待EEWE为0,即EEPROM为空闲状态;

  (2)等待SPMCR寄存器中的SPMEN位为0;

  (3)写新的EEPROM地址到寄存器EEAR(视具体情况可选);

  (4)写新的EEPROM数据到寄存器EEDR(视具体情况可选);

  (5)写1到EEMWE,并同时写0到EEWE;

  (6)在写1到EEMWE后的4个时钟周期内,写1到EEWE位。

  步骤(2)一般情况下可以省略,还需要注意的是,在步骤(5)和步骤(6)之间发生中断将使写入过程失败,因此建议在对EEPROM进行写操作时清零全局中断允许标志位以屏蔽所有中断。

  位0-EERE:EEPROM读允许。该标志作为读取EEPROM操作的触发。当EEAR寄存器被设置了正确的地址后,向EERE位写入1,将触发EEPROM的读取操作。

  简单的读写EEPROM的C代码见本期配刊光盘的本文目录。

  有了上述内容,实现“密码保管箱”实例的程序流程就比较简单了。先完成ATMega16单片机的初始化,其初始化代码可以通过ICC AVR软件自动生成。之后,程序开始检测4×4小键盘上的输入,如果小键盘的输入与程序中设定的密码管理箱密码相同,则将存储在EEPROM中的密码送到串口中通过电脑或液晶显示模块进行显示。当然,我们还需要考虑一些编程细节,比如如何比较设定的密码与用户输入的密码等。关于小键盘的操作我们在今年第5期第39页的文章中已经用汇编语言实现过,本期配刊光盘中给出了采用C语言编写的程序,代码看起来更清晰易懂。

  设计好程序后,我们可以用上期介绍的ICC AVR软件进行程序的编译。打开ICC AVR,建立一个工程psmanager,并在工程选项里设定芯片为ATMega16,然后选择Tools→Application Builder,或者点击菜单栏上的快捷图标,进入应用程序生成器,可以帮助用户快速生成初始化等相关代码。

  如次啊图所示,Target CPU选择M16,Xtal speed根据实际使用情况选择。在Ports项里面是端口初始状态的设置。Timer0、Timer1、Timer2中分别是ATMega16的3个定时器的设置。UART中是串口的设置。根据实际需要选择合适的设置,然后点击OK,ICC AVR会按照所设置的选项产生初始化代码,用户也可以自行编写初始化代码。

  将Application Builder。产生的代码保存为main.c,并且加入工程。接下来将需要写入EEPROM的密码生成*.eep文件,假设有两组密码需要存储,分别是建设银行卡密码(为123456)和EMAIL ABC@163.COM密码(为ABCDEFG),并设定密码保管箱的密码为“567890”。

  ICC AVR用以下方法产生用于写入EEPROM的eep文件:

  #pragma  data:eeprom

  //设置数据区到EEPROM

  char key[]={‘5’,‘6’,‘7’,

  ‘8’,‘9’,‘O’}

  char password[]={“CBC:

  123456%ABC@163.COM:

  ABCDEFG$")

  //假设我们用“%”作为密码之

  间的分割;“$”为密码结束标志

  #pragma  data:data

  //设置数据区回到数据存储器

  将以上代码添加在main.c中,注意必须紧跟着头文件之后。这样ICC AVR编译完成后,除了生成单片机执行文件}.hex,同时还将产生一个eep文件,可以通过Ponyprog软件写入ATMega16的EEPROM存储器中。由于某种原因,在ATMega16的O~511共512个字节的EEPROM中,在地址O处的字节是不能使用的,所以上面的密码将从EEPROM的地址1处依次存储,即ATMega16可用的EEPROM为511个字节。

  本例程中将功能相关的函数放在一起构成一个C文件,因此在一个工程中会有多个C源文件,这样做的好处是使得结构清晰,修改和扩充都很方便。但是要注意文件包含问题,可以查阅相关的C语言书籍。

  在完成所有的代码后进行编译,将编译后生成的hex文件和eep文件一起写入ATMega16。步骤如下:打开Ponyprog软件,选择File→OpenProgram(FLASH)File,选中生成的hex文件;再选择File→Open Data(EEPROM)File,将文件类型更改为*.eep,然后选中eep文件。连接好硬件后,点击Command→Write All,即可写入。

  工作中的系统如上图所示。  因为本文介绍的“密码保管箱”要借助于电脑进行显示,还不够独立,笔者将在下期介绍如何使用ATMega16控制液晶显示屏,让密码保管箱可以独立使用。

关键字:ATMega16  EEPROM  存储器 引用地址:ATMega16内部EEPROM存储器的应用

上一篇:单片机的异步串行通信功能和基本使用方法
下一篇:基于ATmega16的数字光功率计系统实现方案

推荐阅读最新更新时间:2024-03-16 13:09

三星宣布开始量产其功耗最低的车载UFS 3.1存储器解决方案
全新UFS 3.1解决方案为IVI系统进行了优化,功耗降低33%,进一步为未来车载应用赋能    三星将打造完整的UFS 3.1产品阵容,以满足客户对未来车载存储器解决方案的各种需求    今日,三星电子宣布,已开始量产为车载信息娱乐系统(IVI)优化的全新车载UFS 3.1存储器解决方案。该解决方案拥有三星车载存储器最低的功耗,可助力汽车制造商为消费者打造优秀的出行体验。    为满足客户的不同需求,三星的UFS 3.1(通用闪存)将推出128、256和512千兆字节(GB)三种容量。在未来的汽车(电动汽车或自动驾驶汽车)应用中,增强的产品阵容能够更有效地管理电池寿命。其中,256GB容量的产品,功耗较上一代产品降低了约33%,
[汽车电子]
三星宣布开始量产其功耗最低的车载UFS 3.1<font color='red'>存储器</font>解决方案
英特尔、美光及三星开始NAND缩微大赛
  全球NAND闪存的尺寸缩小竞赛再次打响。无论英特尔与美光的联合体,IMFlash,三星及东芝都欲争得NAND缩小的领导地位而互相较劲。但是实际上在目前存储器下降周期时尺寸缩小竞赛并无实际的意义。   按分析师报告,IMFlash正讨论2x nm,而三星己悄悄地作出3xnm样品及美光计划利用每单元3位技术于今年第四季度开始量产。   在DRAM领域,三星一直是技术领导者,目前已作出46nm DRAM样品。   究竟谁是NAND尺寸缩小的领导者,据今年早些时候报道,东芝与新帝合资公司己走在前列,尺寸小到32纳米。   目前英特尔与美光联合体正计划重新夺回领导地位,近期己推出34纳米NAND芯片。   近期美光也
[嵌入式]
ROHM旗下LAPIS开发高可靠性NOR Flash存储器“MR29V12852B”
ROHM集团旗下的LAPIS Semiconductor公司(蓝碧石半导体)开发出128Mbit NOR Flash存储器 MR29V12852B ,该产品非常适用于对品质有高要求的车载设备和工业设备的数据存储介质。 Flash存储器根据存储数据的存储单元的排列形式不同而分为NAND型和NOR型两种。NAND型的特征是每比特的价格相对便宜,多用作手机、数码相机、数码音响等保存数字数据的存储介质;NOR型的特征是存储数据的可靠性高,多用作品质要求高的车载设备、工业设备等保存固件的存储介质。 包括Flash存储器在内的非易失性存储器,毋庸置疑会有偶发数据错误的可能性。尤其在品质要求高的车载设备和工业设备中,为了系统
[嵌入式]
ROHM旗下LAPIS开发高可靠性NOR Flash<font color='red'>存储器</font>“MR29V12852B”
普冉股份:EEPROM产品应用于海外手机头部厂商旗舰机型
据普冉股份公告表示,公司采用电荷俘获的SONOS工艺结构40nm工艺节点下的NOR Flash全系列产品研发完成并成为量产交付主力,晶圆良率达到95%以上,实现了对公司原有55nm工艺节点下的NOR Flash产品的升级替代,产品竞争力及晶圆产出率有效提升。 其中L系列64Mb NOR Flash产品完成海外手机头部厂商TWS蓝牙耳机认证。技术储备的40nm以下新一代工艺完成试流片,进入产品和工艺优化阶段。 此外,公司采用浮栅ETOX工艺结构NOR Flash中大容量PY系列产品首颗开始量产出货,应用于可穿戴和安防等市场。车载EEPROM产品完成了AEC-Q100标准的全面考核,首先在车身摄像头和车载中控应用上实现了海外客户的批量
[手机便携]
技术文章—互联环境中的安全存储器
嵌入式系统越来越普遍地采用云技术来进行数据采集、事件检测和软件更新。这些远程物联网设备普遍通过固件完成设置,这些固件有可能存储在主机MCU中,也有可能存储在外置非易失性存储器的用户空间中。而这些非易失性存储器中的内容则是恶意攻击的主要对象。对于所有全新开发的物联网设备来说,采取应对措施防止非易失性存储器的非授权修改,已成为一项基本的设计要求。 图 1 - 作为节点的互联嵌入式系统 本文将对分立闪存存储器领域开始涌现的加密和安全基础设施进行介绍,并探讨如何将这些新特性用于物联网互联设备的安全保障。 新一代安全NOR闪存产品 NOR闪存制造商已经开发出了一些NOR闪存产品,这些产品通过集成加密基础设施,能够提供
[嵌入式]
技术文章—互联环境中的安全<font color='red'>存储器</font>
中国存储器产业发展论坛:探索中国存储器产业发展道路
 3月14日,由SEMI主办、JEDEC协办的“中国存储器产业发展论坛”与SEMICON China 2017同期召开。论坛力邀各路半导体行业风云人物,共同探讨在移动通讯、云计算和物联网的驱动下,中国企业如何学习先进经验,借助市场和资金的优势,在国际竞争中获得应有的地位,共同推动全球以及中国存储器市场的发展。下面就随模拟电子小编一起来了解一下相关内容吧。 本次论坛的主题演讲主要分为以下几个部分: 一、 彭安: 存储器 最新发展简介 有着28年丰富半导体行业经验的富微电子有限公司的首席策略官和业务发展副总裁,JEDEC主席特助和委员会JC63及JC64.8副主席彭安先生在演讲中指出:“随着全球存储器产业升级的到来,存储器市场
[模拟电子]
μPSD中存储器系统的配置
背景 如果对ST公司的μPSD器件有一定了解,熟悉MCS-51系列单片机的内部结构及原理,使用过PSDSOFT EXPRESS和KEIL开发设计,将对理解本文有很大的帮助。 MCS-51单片机采用哈佛结构的系统结构,即数据存储器空间与程序存储器空间互相独立。它有16根地址总线,最大寻址能力为64K,这决定程序或数据空间不能超过64K。以上两点是本文所有讨论的前提基础。 μPSD的存储器系统结构 μPSD由标准8032核和ST公司的PSD(可编程系统器件)构成,存储器系统包含两个主要部分,一是8032的内部存储器资源:256B内部RAM和128B内部特殊功能寄存器SFR;二是PSD中的存储器模块:主/次FLASH存储器,
[工业控制]
μPSD中<font color='red'>存储器</font>系统的配置
一种简易数字波形存储器的实现
摘要:给出了采用类似DMA的设计思路以及使用双口RAM、快速逻辑电路和CPU(AT89C51)组成的数字波形存储系统的整体电路,从而解决了波形数据的快速采集和输出显示问题。 关键词:DMA;双端口;RAM;存储器;AT89C51 GAL 随着信号处理技术的发展,波形存储变得日益重要,各种类型的波形存储装置也越来越多。相对于其它波形存储装置,本文给出的设计的最大特点是速度快,可进行DMA存储,且不占用CPU时间来对信号进行处理。 1 系统的总体设计 由于本设计采用了双口RAM和DMA思想,而且数据的采集、存储与输出均由逻辑电路控制,因此,提高了数据示波器的采样速度,同时易于实现“实时显示”,并可在“伪”实时处理时对数据进行
[缓冲存储]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved