文档库 最新最全的文档下载
当前位置:文档库 › AT24C02存储器的读写及显示

AT24C02存储器的读写及显示

AT24C02存储器的读写及显示
AT24C02存储器的读写及显示

天津职业技术师范大学

课程设计

AT24C02存储器的读写及显示

自动化与电气工程学院测控0702

关蓓蓓(6 号)

宋三虎(22号)

王成坤(25号)

一、设计任务:

通过对EEPROM器件AT24C02的读写用LM016来显示

流程图

二、程序设计:

#include

#include

#define REG0 XBYTE[0x0000]

#define REG1 XBYTE[0x0001]

#define REG2 XBYTE[0x0002]

#define REG3 XBYTE[0x0003]

Unsigned char busyflag;

unsigned char dat,datn;

unsigned char word1[16]={"This programm"};

unsigned char word2[16]={"by SongSanhu"};

code unsigned char word3[16]={"https://www.wendangku.net/doc/3f6235272.html,!"};

code unsigned char word4[16]={"85957581@https://www.wendangku.net/doc/3f6235272.html,!"};

code unsigned char word5[16]={"Wellcome To!"}; code unsigned char word6[16]={"proteus Tool!"}; sbit P10=P1^0;

sbit P11=P1^1;

sbit P12=P1^2;

sbit P13=P1^3;

sbit P14=P1^4;

sbit P15=P1^5;

sbit P16=P1^6;

sbit P17=P1^7;

#define unchar unsigned char

#define uint unsigned int

#include

#include "intrins.h"

sbit Scl=P3^4;

sbit Sda=P3^5;

void Start(void)

{

Sda=1;

Scl=1;

_nop_();

_nop_();

_nop_();

_nop_(); Sda=0;

_nop_();

_nop_();

_nop_();

_nop_();

}

void Stop(void) {

Sda=0;

Scl=1;

_nop_(); _nop_();

_nop_();

_nop_(); Sda=1;

_nop_();

_nop_();

_nop_();

_nop_();

}

void Ack(void) {

Sda=0;

_nop_();

_nop_();

_nop_();

_nop_();

Scl=1;

_nop_();

_nop_();

_nop_();

_nop_();

Scl=0;

}

void NoAck(void) {

Sda=1;

_nop_();

_nop_();

_nop_();

_nop_();

Scl=1;

_nop_();

_nop_();

_nop_();

_nop_();

Scl=0;

}

void Send(unsigned Data) {

unsigned BitCounter=8; unsigned temp;

do

{

temp=Data;

Scl=0;

_nop_();

_nop_();

_nop_();

_nop_();

if((temp&0x80)==0x80)

else

Sda=0;

Scl=1;

temp=Data<<1;

Data=temp; BitCounter--;

}while(BitCounter);

Scl=0;

}

uchar; Read(void)

{

unsigned temp=0; unsigned temp1=0; unsigned BitCounter=8; Sda=1;

do{

Scl=0;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

if(Sda)

temp=temp|0x01;

else

temp=temp&0xfe;

if(BitCounter-1)

{

temp1=temp<<1;

temp=temp1;

}

BitCounter--;

}while(BitCounter);

return(temp);

}

void WrToROM(unsigned Data[],unsigned Address,unsigned Num) {

Unsigned char i;

unsigned *PData;

PData=Data;

Start();

Send(0xa0);

Ack();

Send(Address);

Ack();

for(i=0;i

{

Send(*(PData+i));

Ack();

}

Stop();

}

void RdFromROM(unsigned Data[],unsigned Address,unsigned Num)

{

int i=0;

unsigned *PData;

PData=Data;

for(i=0;i

{

Start();

Send(0xa0);

Ack();

Send(Address+i);

Ack();

Start();

Send(0xa1);

Ack();

*(PData+i)=Read();

Scl=0;

NoAck();

Stop();

}

}

void busy()

{

do

{

busyflag=REG1;

}while(busyflag);

}

void wrc(unsigned char wcon)

busy();

REG0=wcon;

}

void wrd(unsigned char wdat) {

busy();

REG2=wdat;

}

void rdd()

{

busy();

dat=REG3;

}

void lcdint()

{

wrc(0x38);

wrc(0x01);

wrc(0x06);

wrc(0x0c);

}

void wrn(unsigned char word[]) {

unsigned char i;

for(i=0;i<16;i++)

{

wrd(word[i]);

}

}

void main()

{

unsigned char i;

lcdint();

wrc(0x80);

wrn(word1);

wrc(0xc0);

wrn(word2);

while(1)

{

if(P10==0)

{

for(i=0;i<16;i++)

word1[i]='d';

WrToROM(word1,0x00,16); wrc(0x80);

wrn(word1);

}

if(P11==0)

{

RdFromROM(word2,0x00,16); WrToROM(word2,0x80,16); wrc(0x80);

wrn(word1);

wrc(0xc0);

wrn(word2);

}if(P12==0)

{

wrc(0x80);

wrn(word3);

wrn(word4);

}

if(P13==0) {

wrc(0x80); wrn(word5); wrc(0xc0); wrn(word6); }

if(P14==0) {

wrc(0x80); wrn(word3); wrc(0xc0); wrn(word4); }

if(P15==0) {

wrc(0x80); wrn(word5);

wrn(word6);

}

if(P16==0)

{

wrc(0x80);

wrn(word3);

wrc(0xc0);

wrn(word4);

}

if(P17==0)

{

wrc(0x80);

wrn(word5);

wrc(0xc0);

wrn(word6);

}

}

}

三、硬件电路设计:

四、总结:

学习protues、keil软件,掌握绘制原理,对AT24C02存储器的读写编

辑有了更多的理解,通过对存储器的读写以及输出完成老师给我们的任务。

24C02读写程序

HT49 MCU系列单片机读写HT24系列的EEPROM应用范例HT49 MCU系列单片机读写HT24系列的EEPROM应用范例文件编码:HA0017s 简介: HT24系列的EEPROM是通过I2C协议控制其读写的。HT49系列单片机的接口部分是简单I/O 口,可以用来很方便地采用I2C协议控制周边器件。 HT24系列的EEPROM总共8个管脚,三个为芯片地址脚A0、A1、A2,在单片机对它进行操作时,从SDA输入A0、A1、A2数据和芯片外部A0、A1、A2所接地址需一一对应。一个为芯片写保护脚WP,WP脚接低电平时,芯片可进行读写操作;WP脚接高时,芯片只可进行读,不可进行写。另外两个管脚为电源脚VCC,VSS。 用单片机对HT24系列的EEPROM进行控制时,HT24系列的EEPROM的外部管脚VCC、VSS、WP、A0、A1、A2根据需要,对应接上,SDA、SCL接到单片机控制脚上。 引脚名称I/O 功能描述 A0~A2 I 地址输入 VSS I 电源负极输入 SDA I/O 串行数据输入/输出 SCL I 串行数据传送时钟信号输入 WP I 写保护 VCC I 电源正极输入 HT24系列的EEPROM根据型号不同,EEPROM的容量大小不同,当EEPROM的空间大于1页(256bytes)时,即大于2048bits,则HT49 MCU需要控制A0、A1、A2来确定写HT24系列的EEPROM的第几页,HT24系列的EEPROM空间大小如下表所示: 型号引脚A0、A1及A2使用方法容量大小 HT24LC02 A0、A1、A2引脚作为器件地址输入,从SDA输入A0、A1、 A2数据和芯片引脚A0、A1、A2所接状态需一一对应 2K(256×8) HT24LC04 A1、A2引脚作为器件地址输入,从SDA输入A1、A2数据 和芯片引脚A1、A2所接状态需一一对应,A0引脚浮空 4K(512×8, 2pages) HT24LC08 A2引脚器件地址输入,从SDA输入A2数据和芯片引脚A2 所接状态需一一对应,其余引脚浮空 8K(1024×8, 4pages) HT24LC16 A0、A1、A2全部浮空,不必接16K(2048×8,8pages)

计算机组成原理实验三-存储器读写和总线控制实验

《计算机组成原理》 实验报告 实验三存储器读写和总线控制实验

一、实验目的 1、掌握半导体静态随机存储器 RAM 的特性和使用方法。 2、掌握地址和数据在计算机总线的传送关系。 3、了解运算器和存储器如何协同工作。 二、实验环境 EL-JY-II 型计算机组成原理实验系统一套,排线若干。 三、实验内容与实验过程及分析(写出详细的实验步骤,并分析实验结果) 实验步骤: 开关控制操作方式实验 注:为了避免总线冲突,首先将控制开关电路的所有开关拨到输出高电平“1”状态,所有对应的指示灯亮。 本实验中所有控制开关拨动,相应指示灯亮代表高电平“1”,指示灯灭代表低电平“0”。连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。 1、按图 3-5 接线图接线: 2、拨动清零开关 CLR,使其指示灯显示状态为亮—灭—亮。 3、往存储器写数据: 以往存储器的(FF)地址单元写入数据“AABB”为例,操作过程如下:

4、按上述步骤按表 3-2 所列地址写入相应的数据 5、从存储器里读数据: 以从存储器的(FF)地址单元读出数据“AABB”为例,操作过程如下: 6、按上述步骤读出表 3-2 数据,验证其正确性。 实验线路图如下所示

四、实验总结(每项不少于20字) 存在问题:由于对操作系统不熟悉和本实验对线路需求大,排线出现错误;读取数据时也出现错误。 解决方法:在实验之前检查线路,发现错误及时纠错;将读取错误的数据进行重新存储,再验证查询。 收获:了解了半导体静态随机存储器RAM的特性和使用方法、地址和数据在计算机总线的传送关系。 五、教师批语

实验十四 存储器扩展机读写实验

实验十四存储器扩展机读写实验 一、实验目的 (1)通过阅读并测试示例程序,完成程序设计题,熟悉静态RAM的扩展方法。 (2)了解8086/8088与存储器的连接,掌握扩展存储器的读写方法。 二、实验内容 1.实验原理(62256RAM介绍) 62256是32*8的静态存储器,管脚如图所示。其中:A0~A14为地址线,DB0~DB7为数据线,/cs为存储器的片选,/OE为存储器数据输出选通信号,/WE为数据写入存储器信号。62256工作方式如下图。 /CS /WE /OE 方式DB-~DB7 H X X 未选中高阻 L H H 读写禁止高阻 L L H 写IN L H L 读OUT 2.实验内容 设计扩展存储电器的硬件连接图并编制程序,讲字符A~Z循环存入62256扩展RAM 中,让后再检查扩展存储器中的内容。 三、程序设计 编写升序,将4KB扩展存储器交替写入55H和0AAH。 程序如下: RAMADDR EQU 0000H RAMOFF EQU 9000H COUNT EQU 800H CODE SEGMENT ASSUME CS:CODE START: PROC NEAR MOV AX,RAMADDR MOV DS,AX MOV BX,RAMOFF MOV CX,COUNT MOV DL,55h MOV AX ,0AAH REP: MOV [BX],DL INC BX MOV [BX],AX INC BX LOOP REP JMP $ CODE ENDS END START 四、实验结果 通过在软件上调试,运行时能够看到内存地址的改变,证明此扩展的程序成功实现了。 五、实验心得

实现存储器EEPROM AT24C02的数据读写操作 采用IIC总线读写 C程序

/*************************************************************** 功能:11:32 2008-6-27 作者:SG 时间:2004-03-15 版本:V1.0 ***************************************************************/ #include "INTRINS.H" #include "reg52.h" #define WriteDeviceAddress 0xa0 //写驱动地址指令 #define ReadDeviceAddress 0xa1 //读驱动地址指令 sbit AT24C02_SCL = 0xa4; sbit AT24C02_SDA = 0xa5; /*------------------------------------------------------------- 功能:发起始信号 ------------------------------------------------------------*/ void Start_Cond() { AT24C02_SCL = 0; _nop_(); AT24C02_SDA = 1; _nop_(); AT24C02_SCL = 1; _nop_(); AT24C02_SDA = 0; _nop_(); } /*------------------------------------------------------------- 功能:发停止信号 ------------------------------------------------------------*/ void Stop_Cond() { AT24C02_SCL = 0; _nop_(); AT24C02_SDA = 0; _nop_(); AT24C02_SCL = 1; _nop_(); AT24C02_SDA = 1; _nop_();

静态存储器-实验报告

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称计算机组成与结构 项目名称静态随机存储器实验 班级 学号 姓名 同组人员无 实验日期 2015-10-24

一、实验目的与要求 掌握静态随机存储器RAM 工作特性及数据的读写方法 二、实验逻辑原理图与分析 2.1 实验逻辑原理图及分析 实验所用的静态存储器由一片6116(2K ×8bit)构成(位于MEM 单元),如下 图所示。6116有三个控制线:CS(片选线)、OE(读线)、WE(写线),当片选有效(CS=0)时,OE=0时进行读操作,WE=0时进行写操作,本实验将CS 常接地线。 由于存储器(MEM)最终是要挂接到CPU 上,所以其还需要一个读写控制逻辑,使得CPU 能控制MEM 的读写,实验中的读写控制逻辑如下图所示,由于T3的参与,可以保证MEM 的写脉宽与T3一致,T3由时序单元的TS3给出。IOM 用来选择是对I/O 还是对MEM 进行读写操作,RD=1时为读,WR=1时为写。 XMRD XIOR XIOW XMWR RD IOM WE T3 读写控制逻辑 实验原理图如下如所示,存储器数据线接至数据总线,数据总线上接有8 个LED 灯显示D7…D0的内容。地址线接至地址总线,地址总线上接有8个LED 灯显示A7…A0的内容,地址由地址锁存器(74LS273,位于PC&AR 单元)给出。数据开关(位于IN 单元)经一个三态门(74LS245)连至数据总线,分时给出地址和数据。地址寄存器为8位,接入6116的地址A7…A0,6116的高三位地址A10…A8接地,所以其实际容量为256字节。

计算机组成原理存储器读写和总线控制实验实验报告

信息与管理科学学院计算机科学与技术 实验报告 课程名称:计算机组成原理 实验名称:存储器读写和总线控制实验 姓名:班级:指导教师:学号: 实验室:组成原理实验室 日期: 2013-11-22

一、实验目的 1、掌握半导体静态随机存储器RAM的特性和使用方法。 2、掌握地址和数据在计算机总线的传送关系。 3、了解运算器和存储器如何协同工作。 二、实验环境 EL-JY-II型计算机组成原理实验系统一套,排线若干。 三、实验内容 学习静态RAM的存储方式,往RAM的任意地址里存放数据,然后读出并检查结果是否正确。 四、实验操作过程 开关控制操作方式实验 注:为了避免总线冲突,首先将控制开关电路的所有开关拨到输出高电平“1”状态,所有对应的指示灯亮。 本实验中所有控制开关拨动,相应指示灯亮代表高电平“1”,指示灯灭代表低电平“0”。连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。 1、按图3-1接线图接线: 2、拨动清零开关CLR,使其指示灯显示状态为亮—灭—亮。 3、往存储器写数据:

以往存储器的(FF ) 地址单元写入数据“AABB ”为例,操作过程如下: 4、按上述步骤按表3-2所列地址写入相应的数据 表3-2 5、从存储器里读数据: 以从存储器的(FF ) 地址单元读出数据“AABB ”为例,操作过程如下: (操作) (显示) (操作) (显示) (操作) (显6、按上述步骤读出表3-2数据,验证其正确性。 五、实验结果及结论 通过按照实验的要求以及具体步骤,对数据进行了严格的检验,结果是正确的,具体数据如图所示:

实验一扩展存储器读写实验

实验一:扩展存储器读写实验 一.实验要求 编制简单程序,对实验板上提供的外部存贮器(62256)进行读写操作。 二.实验目的 1.学习片外存储器扩展方法。 2.学习数据存储器不同的读写方法。 三.实验电路及连线 将P1.0接至L1。CS256连GND孔。 四.实验说明 1.单片机系统中,对片外存贮器的读写操作是最基本的操作。用户藉此来熟悉MCS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。 用户编程可以参考示例程序和流程框图。本示例程序中对片外存贮器中一固定地址单元进行读写操作,并比较读写结果是否一致。不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试用户电路时非常有效。 用户调试该程序时,可以灵活使用单步、断点和变量观察等方法,来观察程序执行的流程和各中间变量的值。 2.在I状态下执行MEM1程序,对实验机数据进行读写,若L1灯亮说明RAM读

写正常。 3.也可进入LCA51的调试工具菜单中的对话窗口,用监控命令方式读写RAM,在I状态执行SX0000↓ 55,SPACE,屏幕上应显示55,再键入AA,SPACE,屏幕上也应显示AA,以上过程执行效果与编程执行效果完全相同。 注:SX是实验机对外部数据空间读写命令。 4.本例中,62256片选接地时,存储器空间为0000~7FFFH。 五.实验程序框图 实验示例程序流程框图如下: 六.实验源程序: ORG 0000H LJMP START ORG 0040H START:

24c02读写程序教学资料

24c02读写程序

E2PROM芯片24C02的读写程序 一、实验目的: 给24C02的内部RAM写入一组数据,数据从24C02内部RAM的01h开始存放。然后再把这组数据读出来,检验写入和读出是否正确。 在这里我们给24C02中写入0、1、2的段码,然后把它读出来,送到数码管显示。 二、理论知识准备: 上面两个实验主要学习的是利用单片机的串口进行通讯,本实验要介绍的是基于I2C总线的串行通讯方法,下面我们先介绍一下I2C总线的相关理论知识。 (一)、I2C总线概念 I2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。目前很多公司都推出了基于I2C总线的外围器件,例如我们学习板上的24C02芯片,就是一个带有I2C总线接口的E2PROM存储器,具有掉电记忆的功能,方便进行数据的长期保存。 (二)、I2C总线结构 I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。 一个典型的I2C总线应用系统的组成结构如下图所示(假设图中的微控制器、LCD驱动、E2PROM、ADC各器件都是具有I2C总线接口的器件):

我们知道单片机串行通讯的发送和接收一般都各用一条线TXD和RXD,而I2C总线的数据线既可以发送也可以接受,工作方式可以通过软件设置。所以,I2C总线结构的硬件结构非常简洁。 当某器件向总线上发送信息时,它就是发送器,而当其从总线上接收信息时,又成为接收器。 (三)、I2C总线上的数据传送 下面我们看看I2C总线是如何进行数据传送的。我们知道,在一根数据线上传送数据时必须一位一位的进行,所以我们首先研究位传送。 1、位传输 I2C总线每传送一位数据必须有一个时钟脉冲。被传送的数据在时钟SCL的高电平期间保持稳定,只有在SCL低电平期间才能够改变,示意图如下图所示,在标准模式下,高低电平宽度必须不小于4.7us。 那么是不是所有I2C总线中的信号都必须符合上述的有效性呢?只有两个例外,就是开始和停止信号。 开始信号:当SCL为高电平时,SDA发生从高到低的跳变,就定义为开始信号。 停止信号:当SCL为高电平时,SDA发生从低到高的跳变,就定义为结束信号。 开始和结束信号的时序图如下图所示:

24c02读写程序大全

24c02读写程序大全 2C总线的应用(24C02子程序) // 对24C02的读、写 // extern void DelayMs(unsigned int); // extern void Read24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); // extern void Write24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); /***************************************************************************/ #define WriteDeviceAddress 0xa0 #define ReadDviceAddress 0xa1 #include #include #include /***************************************************************************/ sbit SCL=P2^7; sbit SDA=P2^6; bit DOG; /***************************************************************************/ void DelayMs(unsigned int number) { unsigned char temp; for(;number!=0;number--,DOG=!DOG) { for(temp=112;temp!=0;temp--) { } } } /***************************************************************************/ void Start() { SDA=1; SCL=1; SDA=0; SCL=0; } /***************************************************************************/ void Stop() { SCL=0; SDA=0;

存储器卡读写实验.

姜郑歌大毋 KkAh UNi?PSiTy OF TEIECOMMUHCATWN9西安邮电大学 智能卡技术及应用 课内实验报告 实验名称:存储器卡读写实验 专业名称:智能科学与技术 班级: 学生姓名: 学号: 指导教师: 实验日期:2016年4月18日

实验一存储器卡读写实验 一.实验目的 1.了解I2C串行总线的工作原理; 2.通过实验了解存储器卡存、取数据的过程。 二.实验器材 1.KEIL软件; 2.P ROTEU仿真软件。 三.实验内容 往24C04芯片中写入一个数据(如“ 129”,然后再从24C04芯片中读出刚 才的数据并把它显示在数码管上。 四.实验步骤 1■硬件电路仿真 使用Proteus软件画出如图1所示的电路图,要求:使用两个按钮来分别模拟读卡和拔卡(清除数据)的过程,用一个发光二极管来模拟卡座上电的过程。 (注:电路图画好后,给存储器24C04导入24C04.bin文件,给51单片机导入 hex文件) 图1硬件电路图 CL智能卡读取宴验tj mu CE 3Pr TQLZ a/皿 眄. E.cZlK E.E Z IEE Jl K.T rti 起.E/?U fc VIPT iT-iTi? T.E Z IM 丘.aZiu T.Vu T.rZiQ rr.^Aii R-. Vid lICiHx R..4/m R-. VTW n T/ilff n a/iirr ft 4/Ti n 蚌 liT5 n/q s ;; ■ /*? ?L F C5 w it 常

-|#include ^iTiclude #dje£ine Uint unsigned, int Sdef ine uchar unsigned char ^define N0P4() {_nop_ C); sb it sblt sblt Ebit Shit uint "数码管显示数组 UCJiar code DITAN XU AN []- □ KU O J OKf 0xa4,0x]o0^0x99,0x92,0x82 * Qxf 氐 OxSO^ 0x90 TF 延迟函数 void Delay(uint x) EH uchar 1; while (X --) for ( t-D ; KIZO ; 1++); void Dei&yHS (uint K ) 2.软件编写 硬件初始化 _____ # ____ 将数据写入 24CM 芯片 读取数堀赋值给 一个賁量 .,判fe 是否育'?否 X /判断是哪'^、. J 、按键 “渎卡"檢谨, 显示数据,LED 图2程序流程图 程序截图: SCL - PL*Q; 3DA = Pl'l ; BUTTON = Pl A 5; LEP = Pl*6 J EUTTQNQ - FIT ; Shu; Tiov O ; nop () ; nop ():> "延时Qus //scE^ia^ --- //SDA 引脚 "定义摸拟读卡按蹲 "走义摸拟上电卡座 "定义模拟取卡按键 "定文写入变量

存储器扩展实验

实验5 存储器扩展实验 一、实验目的 1.掌握PC存储器扩展的方法。 2.熟悉6264芯片的接口方法。 3.掌握8031内部RAM和外部RAM的数据操作 二、实验设备 PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路,PROTEUS仿真软件。 三、实验内容 1)向外部存储器的7000H到8000H区间循环输入00~0FFH数据段。设置断点,打开外部数据存储器观察窗口,设置外部存储器的窗口地址为7000H—7FFFH。全速运行程序,当程序运行到断点处时,观察7000H—7FFFH的内容是否正确。 四、实验原理 实验系统上的两片6264的地址范围分别为:4000H~5FFFH,6000H~7FFFH,既可作为实验程序区,也可作为实验数据区。6264的所有信号均已连好。(3000H~3FFFH也可用) 五、实验方法 1、运用PROTUES软件进行虚拟仿真实验。按照实验要求用PROTUES软件绘制电路,编制程序,并通过调试。 2、运用星研仿真系统进行实际系统仿真实验。将星研仿真器与微机和目标板相互连接构成完整的硬件仿真系统,按照实验要求在通用实验板上进行硬件系统连接,并用星研仿真器进行系统仿真运行调试。 3、实验说明 在采用星研仿真时,若CPU选型为8051则,应将P2、P3口修改为总线模式(默认为IO口模式)。若为8031CPU则无此选项,因此不必修改。 4、星研仿真器设置时,注意,在项目工作环境设置选项中的存储器借出方式中,不能借用仿真器的外部数据空间(直接选择默认方式即可),否则无法正确测试实验箱上的存储器。 5、利用星研仿真器,在选择用户板外部RAM方式下,可以在存储器窗口中,通过直接对外部存储器单元的内容进行修改来确定该单元是否可用,可以修改的单元,表明用户可用,如果无法修改(无论键盘输入任何数字与字符,始终显示FF),则表明该存储单元不可用。 六、实验电路 1、PROTEUS 仿真电路

存储器和IO扩展实验,计算机组成原理

科技学院 课程设计实验报告 ( 2014--2015年度第一学期) 名称:计算机组成原理综合实验题目:存储器和I/O扩展实验 院系:信息工程系 班级: 学号: 学生姓名: 指导教师:李梅王晓霞 设计周数:一周 成绩: 日期:2015 年1 月

一、目的与要求 1. 内存储器部件实验 (1)熟悉ROM芯片和RAM芯片在功能和使用方法等方面的相同和差异之处;学习用编程器设备向EEPROM芯片内写入一批数据的过程和方法。 (2)理解并熟悉通过字、位扩展技术实现扩展存储器系统容量的方案; (3)了解静态存储器系统使用的各种控制信号之间正常的时序关系; (4)了解如何通过读、写存储器的指令实现对58C65 ROM芯片的读、写操作; (5)加深理解存储器部件在计算机整机系统中的作用。 2. I/O口扩展实验 学习串行口的正确设置和使用。 二、实验正文 1.主存储器实验内容 1.1实验的教学计算机的存储器部件设计(说明只读存储器的容量、随机读写器的容量,各选用了什么型号及规格的芯片、以及地址空间的分布) 在教学计算机存储器部件设计中,出于简化和容易实现的目的,选用静态存储器芯片实现内存储器的存储体,包括唯读存储区(ROM,存放监控程序等) 和随读写存储区(RAM)两部分,ROM存储区选用4片长度8位、容量8KB 的58C65芯片实现,RAM存储区选用2片长度8位、容量2KB的6116芯片 实现,每2个8位的芯片合成一组用于组成16位长度的内存字,6个芯片被分 成3组,其地址空间分配关系是:0-1777h用于第一组ROM,固化监控程序, 2000-2777h用于RAM,保存用户程序和用户数据,其高端的一些单元作为监 控程序的数据区,第二组ROM的地址范围可以由用户选择,主要用于完成扩 展内存容量(存储器的字、位扩展)的教学实验。 1.2扩展8K字的存储空间,需要多少片58C65芯片,58C65芯片进行读写时的特殊要求 要扩展8K字的存储空间,需要使用2片(每一片有8KB容量,即芯片内由8192个单元、每个单元由8个二进制位组成)存储器芯片实现。对 58C65 ROM芯片执行读操作时,需要保证正确的片选信号(/CE)为低点平, 使能控制信号(/OE)为低电平,读写命令信号(/WE)为高电平,读58C65 ROM 芯片的读出时间与读RAM芯片的读出时间相同,无特殊要求;对58C65 ROM 芯片执行写操作时,需要保证正确的片选信号(/CE)为低电平,使能控制信 号(/OE)为高电平,读写命令信号(/WE)为低电平,写58C65 ROM芯片的 维持时间要比写RAM芯片的操作时间长得多。为了防止对58C65 ROM芯片执 行误写操作,可通过把芯片的使能控制引脚(/OE)接地来保证,或者确保读 写命令信号(/WE)恒为高电平。 1.3在实验中思考为何能用E命令直接写58C65芯片的存储单元,而A命令则有时不正确;

ATMEGA16读写iic(TWI)(24c02) C语言程序

ATMEGA16读写iic(24c02) C语言程序测试通过 #include #include "I2C.h" #include "1602.h" #include "delay.h" /*通过AVR往I IC写数据,并通过串口把数据读出显示出来*/ //=============================================================== void UART_init(void) //UART初始化 { DDRD = 0x02; PORTD = 0x00; UCSRA = 0x02; /*无倍速*/ UCSRB = 0x18; /*允许接收和发送*/ UC SRC = 0x06; /*8位数据,1位停止位,无校验*/ UBRRH = 0x00; UBRRL = 12; /*9600*/ } //=============================================================== void USART_TXD(float data) //发送采用查询方式 { while( !(UCSRA & BIT(UDRE)) ); UDR=data; while( !(UCSRA & BIT(TXC )) ); UCSRA|=BIT(TXC); } void main(void) { unsigned char i; //LCD_init(); uart_init();//TART初始化 SEI(); //全局中断使能

while(1) {/* I2C_Write('n',0x00); I2C_Write('c',0x01); I2C_Write('e',0x02); I2C_Write('p',0x03); I2C_Write('u',0x04); */ i=I2C_Read(0x00); //LCD_write_char(0,0,i); USART_TXD(i); i=I2C_Read(0x01); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x02); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x03); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x04); //LCD_write_data(i); USART_TXD(i); } } /*上面上主函数部分*/ #include #include "delay.h" //I2C 状态定义 //MT 主方式传输 MR 主方式接受#define START 0x08 #define RE_START 0x10 #define MT_SLA_ACK 0x18 #define MT_SLA_NOACK 0x20 #define MT_DATA_ACK 0x28 #define MT_DATA_NOACK 0x30 #define MR_SLA_ACK 0x40 #define MR_SLA_NOACK 0x48 #define MR_DATA_ACK 0x50 #define MR_DATA_NOACK 0x58

实验五存储器读写实验报告

实验五存储器读写实验报告 实验报告 课程名:《计算机组成原理》题目:实验五存储器读写班级:计算机+ 自动化0901班姓名:张哲玮,郑俊飞 《计算机组成原理》实验报告- 1 - 实验五、存储器读写实验 一、目的与要求 (1)掌握存储器的工作特性 (2)熟悉静态存储器的操作过程,验证存储器的读写方法 二、实验原理及原理图 (1)?静态存储器芯片6116的逻辑功能 6116是一种数据宽度为8位(8个二进制位),容量为2048字节的静态存储器芯片,封在24引脚的封装中,封装型式如图2-7所示。6116芯片有8根双向三态数据线D7-D0,所谓三态是指输入状态,输出状态和高阻状态,高阻状态数据线处于一种特殊的“断开”状态;11根地址线A10-A0,指示芯片内部2048个存储单元号;3根控制线CS片选控制信号,低电平时,芯片可进行读写操作,高电平时,芯片保存信息不能进行读写;WE 为写入控制信号,低电平时,把数据线上的信息存入地址线A10-A0指示的存储单元中;0E为输出使能控制信号,低电平时,把地址线A10-A0指示的存储单元中的数据读出送到数据线上。

6116芯片控制信号逻辑功能表 (2).存储器实验单元电路 因为在计算机组成原理实验中仅用了256个存储单元,所以6116芯片的3根地址线A11-A8接地也没有多片联用问题,片选信号CS接地使芯片总是处于被选中状态。芯片的WE和0E信号分别连接实验台的存储器写信号M-W和存储器读信号M-Ro这种简化了控制过程的实验电路可方便实验进行。 存储器部件电路图 (3)?存储器实验电路 存储器读\写实验需三部分电路共同完成:存储器单元(MEM UNIT),地址寄存器单元(ADDRESS UNIT)和输入,输出单元(INPUT/OUTPIT UNIT).存储器单元6116芯片为中心构成,地址寄存器单元主要由一片74LS273组成,控制信号B-AR的作用是把总线上的数据送入地址寄存器,向存储器单元电路提供地址信息,输入,输出单元作用与以前相同。

计算机组成原理实验五存储器读写实验

实验五 存储器读写实验实验目的 1. 掌握存储器的工作特性。 2. 熟悉静态存储器的操作过程,验证存储器的读写方法。 二、实验原理 表芯片控制信号逻辑功能表

2. 存储器实验单元电路 芯片状态 控制信号状态 DO-D7 数据状态 M-R M -W 保持 1 1 高阻抗 读出 0 1 6116-^总钱 写人 1 0 总线-*6116 无效 报警 ^2-10 D7—DO A7—A0

團2-8存储器实验电路逻辑图 三、实验过程 1. 连线 1) 连接实验一(输入、输出实验)的全部连线。 2) 按逻辑原理图连接M-W M-R 两根信号低电平有效信号线 3) 连接A7-A0 8根地址线。 4) 连接B-AR 正脉冲有效信号 2. 顺序写入存储器单元实验操作过程 1) 把有B-AR 控制开关全部拨到0,把有其他开关全部拨到1,使全部信号都处 于无效 状态。 2) 在输入数据开关拨一个实验数据,如“ 00000001”即16进制的01耳 把IO-R 控制开关拨下,把地址数据送到总线。 3) 拨动一下B-AR 开关,即实现“1-0-1 ”产生一个正脉冲,把地址数据送地 址寄存器保存。 4) 在输入数据开关拨一个实验数据,如“ 10000000',即16进制的80耳 把IO-R 控 制开关拨下,把实验数据送到总线。 3. 存储器实验电路 0 O O 0 0 olo O O O O 0 00 OUTPUT L/O :W 8-AR £ ■」2 ■七 ol^Fgr' L P O 74LS273 A7- AO vz 0 o|o 0 r 6116 A7 INPUT D7-O0 [olololololololol T2

STM32F103读写24C02程序使用过肯定能用

//实验24C02连接在PF口 //WP、A0、A1、A2都接地 #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #define AT24C02 0xa0 //AT24C02 地址 /******************************** 变量定义---------------------------------------------------------*/ GPIO_InitTypeDef GPIO_InitStructure; //GPIO ErrorStatus HSEStartUpStatus; unsigned char Count1 , Count2; unsigned int USEC; static vu32 TimingDelay; unsigned char Readzfc; unsigned char pDat[8] = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55}; unsigned char R_Dat[8]; /*********************************声明函数-----------------------------------------------*/ void RCC_Configuration(void); void SysTick_Configuration(void); void Delay_us_24C02(u32 nTime); /************************************24C02硬件接口******************************/ #define SData GPIO_Pin_6 //I2C 时钟 #define SCLK GPIO_Pin_7 //I2C 数据 /********************************宏定义*******************************************/ #define SCL(x) x ? GPIO_SetBits(GPIOF , SCLK) : GPIO_ResetBits(GPIOF , SCLK) #define SDA(x) x ? GPIO_SetBits(GPIOF , SData) : GPIO_ResetBits(GPIOF , SData) /********************************变量*******************************************/ u8 ack; /******************************************************************* 起动总线函数 函数原型: void Start_I2c(); 功能: 启动I2C总线,即发送I2C起始条件. ********************************************************************/ void Start_I2c() { SDA(1); //SDA=1; 发送起始条件的数据信号 Delay_us_24C02(1); SCL(1); //SCL=1; Delay_us_24C02(5); //起始条件建立时间大于4.7us,延时 SDA(0); //SDA=0; /*发送起始信号*/ Delay_us_24C02(5); // 起始条件锁定时间大于4μs

应广单片机读写24C02程序代码

应广单片机读写24C02程序代码 #include "extern.h" #include "main.h" //*************************************************** //*************************************************** //??ò?I2C?ó?ú I2C_SDA equ pb.2 I2C_SCL equ pb.0 I2C_SDA_DIR equ pbc.2 I2C_SCL_DIR equ pbc.0 I2C_LONG_DLY equ 50 I2C_SHORT_DLY equ 20 I2C_SDA_HIGH equ set1 I2C_SDA I2C_SDA_LOW equ set0 I2C_SDA I2C_SCL_HIGH equ set1 I2C_SCL I2C_SCL_LOW equ set0 I2C_SCL I2C_SDA_OUTPUT equ set1 I2C_SDA_DIR I2C_SDA_INPUT equ set0 I2C_SDA_DIR I2C_SCL_OUTPUT equ set1 I2C_SCL_DIR I2C_SCL_INPUT equ set0 I2C_SCL_DIR //??ò?I2C??á? uchar i2c_rw_addr; //?áD?μ??? uchar i2c_rw_byte; //?áD?êy?Y uchar i2c_rw_cmd; //?áD?μ????tμ??? uchar i2c_rw_temp; //?áD??y?ì?D????á? uchar i2c_rw_cnt; //?áD??y?ì?D????á? //---------------------------- //?úéúSTARTD?o? //---------------------------- i2c_start: I2C_SDA_OUTPUT

实验一 存储器实验

实验一存储器实验 1.FPGA中LPM_ROM定制与读出实验 一.实验目的 1、掌握FPGA中lpm_ROM的设置,作为只读存储器ROM的工作特性与配置方法。 2、用文本编辑器编辑mif文件配置ROM,学习将程序代码以mif格式文件加载于 lpm_ROM中; 3、在初始化存储器编辑窗口编辑mif文件配置ROM; 4、验证FPGA中mega_lpm_ROM的功能。 二.实验原理 ALTERA的FPGA中有许多可调用的LPM (Library Parameterized Modules)参数化的模块库,可构成如lpm_rom、lpm_ram_io、lpm_fifo、lpm_ram_dq的存储器结构。CPU 中的重要部件,如RAM、ROM可直接调用她们构成,因此在FPGA中利用嵌入式阵列块EAB 可以构成各种结构的存储器,lpm_ROM就是其中的一种。lpm_ROM有5组信号:地址信号address[ ]、数据信号q[ ]、时钟信号inclock、outclock、允许信号memenable,其参数都就是可以设定的。由于ROM就是只读存储器,所以它的数据口就是单向的输出端口,ROM中的数据就是在对FPGA现场配置时,通过配置文件一起写入存储单元的。图3-1-1中的lpm_ROM有3组信号:inclk——输入时钟脉冲;q[23、、0]——lpm_ROM的24位数据输出端;a[5、、0]——lpm_ROM的6位读出地址。 实验中主要应掌握以下三方面的内容: ⑴ lpm_ROM的参数设置; ⑵ lpm_ROM中数据的写入,即LPM_FILE初始化文件的编写; ⑶lpm_ROM的实际应用,在GW48_CP+实验台上的调试方法。 三.实验步骤 (1)用图形编辑,进入mega_lpm元件库,调用lpm_rom元件,设置地址总线宽度address[] 与数据总线宽度q[],分别为6位与24位,并添加输入输出引脚,如图3-1-1设置与连接。 (2)设置图3-1-1为工程。 (3)在设置lpm_rom数据参数选择项lpm_file的对应窗口中(图3-1-2),用键盘输入 lpm_ROM配置文件的路径(rom_a、mif),然后设置在系统ROM/RAM读写允许,以便能

怎么实现对存储器24C02程序的读写

决 怎么实现24C02程序的读写 我是个新手,对24C02 一窍不通,请问怎么给24C02写程序。是不是要像给单片机写程序那样需要一个编程器,或是需要其他的什么软硬件。另外再给我介绍一些24C02的入门知识,谢谢。 问题补充: 24C02是不是只是一个存储器?使用它时需不需要专门给它写段程序再烧进去? 我们将24c02 的两条总线接在了P26 和P27 上,因此,必须先定义: sbit SCL=P2^7; sbit SDA=P2^6; 在这个试验中,我们写入了一个字节数值0x88 到24c02 的0x02 的位置。 写入完成后,P10 灯会亮起,我们再在下一颗来读出这个字节来验证结果。――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个52 标准内核的头文件 //本课试验写入一个字节到24c02 中 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 #define WriteDeviceAddress 0xa0 //定义器件在IIC 总线中的地址 #define ReadDviceAddress 0xa1 sbit SCL=P2^7; sbit SDA=P2^6; sbit P10=P1^0; //定时函数 void DelayMs(uint number) { uchar temp; for(;number!=0;number--) { for(temp=112;temp!=0;temp--) ; } } //开始总线

相关文档
相关文档 最新文档