存储器卡读写实验
实验十存储器读写实验报告

微机原理实验——存储器读写实验报告计科11-1赵锦波08113367实验十存储器读写实验一、实验目的1、熟悉6264静态RAM的使用方法,掌握PC机外存扩充的手段。
2、通过对硬件电路的分析,学习了解总线的工作时序.二、实验内容1.电路图(RAM为2K的6264)2.编制程序,将字符A-Z循环写入扩展的6116RAM中,然后再将6116的内容读出来显示在主机屏幕上。
三、源程序;***************************;固定段地址0d000, 微动开关选中6000H,即6264片选6000选中;********data segment;数据段开始message db 'please enter a key to show thecontents!',0dh,0ah,'$';定义字节,显示输出信息data ends;结束code segment;代码段assume cs:code,ds:data,es:data;段分配指令start:mov ax,data;送数据段地址mov ds,ax;数据段地址不能直接送ds,所以借助axmov ax,0d000h;固定段地址0d000Hmov es,ax;es=0d000Hmov bx,06000h;微动开关选中6000Hmov cx,100h;设置循环次数,写入100个A-Zmov dx,40h;A的ascii码为41hrep1:inc dl;rep1为标签名称用于loop rep1,dl=0+1=1mov es:[bx],dl;bx存放6001Hinc bx;bx+1,即06001Hcmp dl,5ah;Z的ascii码为5ah,即与Z比较jnz ss1;zf=0时转移mov dl,40h;A的前一个字符的ASCII码为40Hss1:loop rep1;loop在cx不为0时循环mov dx,offset message;偏移量送dxmov ah,09;输出字符串int 21hmov ah,01h;从键盘输入一个字符int 21hmov ax,0d000hmov es,ax;es=0d000Hmov bx,06000h;从0d6000H开始循环写入mov cx,0100h;设置循环次数,写入100个A-Zrep2:mov dl,es:[bx]mov ah,02h;显示一个字符int 21hinc bxloop rep2mov ax,4c00h;返回dosint 21h;返回doscode ends;代码段结束end start;全部结束四、实验流程图六、运行结果1、试验箱连接试验结果:七、实验心得实验开始摸不着头脑,边问边摸索才知道,实验要求我们:使用汇编语言的基本知识将字符A-Z循环写入扩展6264RAM中,再将6264内容读出显示在屏幕上。
存储器卡读写实验

西安邮电大学智能卡技术及应用课内实验报告实验名称:存储器卡读写实验专业名称:智能科学与技术班级:学生姓名:学号:指导教师:实验日期:2016年4月18日实验一存储器卡读写实验一.实验目的1.了解CI2串行总线的工作原理;2.通过实验了解存储器卡存、取数据的过程。
二.实验器材1.KEIL软件;2.PROTEUS仿真软件。
三.实验内容往24C04芯片中写入一个数据(如“129”),然后再从24C04芯片中读出刚才的数据并把它显示在数码管上。
四.实验步骤1.硬件电路仿真使用Proteus软件画出如图1所示的电路图,要求:使用两个按钮来分别模拟读卡和拔卡(清除数据)的过程,用一个发光二极管来模拟卡座上电的过程。
(注:电路图画好后,给存储器24C04导入24C04.bin文件,给51单片机导入hex文件)图 1 硬件电路图2.软件编写图2 程序流程图程序截图:图33.实验结果刚开始运行时,单片机没有读取任何数据,此时数码管显示数字为0;当“读卡”按钮按下时,此时发光二极管亮,数码管显示预先存入24C04芯片的数值;当“清除”按钮按下时,此时此时发光二极管灭,数码管数值清零。
图4图5图6五、实验总结通过本次实验我了解了存储器卡存、取数据的过程,同时了解CI2串行总线的工作原理。
实验在程序编写过程中遇到了问题,还是参考过老师以及网上的程序得到同学的帮助,才大体上完成。
每次实验都有新的收获,以后我会更加努力学习的。
六、实验代码#include <reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define NOP4(){_nop_();_nop_();_nop_();_nop_();} //延时4ussbit SCL = P1^0; //SCL引脚sbit SDA = P1^1; //SDA引脚sbit BUTTON = P1^5; //定义读卡按键sbit LED = P1^6;//定义模拟上电卡座sbit BUTTONQ = P1^7;//定义模拟取卡按键uint shu; //定义写入变量//数码管显示数组uchar code DUAN_XUAN[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x8 2,0xf8,0x80,0x90};//延迟函数void Delay(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}void DelayMS(uint x){uchar t;while(x--){for(t=120;t>0;t--);}}/*IIC启动*/void Start(){SDA=1;SCL=1;NOP4();SDA=0;NOP4();S CL=0;}/*IIC停止*/void Stop(){SDA=0;SCL=0;NOP4();SCL=1;NOP4();S DA=1;}/*读取应答*/void RACK(){SDA=1;NOP4();SCL=1;NOP4();SCL=0; }/*发送非应答信号*/void NO_ACK(){SDA=1;SCL=1;NOP4();SCL=0;SDA=0; }/*向24c04中写一字节*/void Write_A_Byte(uchar b){uchar i;for(i=0;i<8;i++){//循环移入8位b<<=1;SDA=CY;_nop_();SCL=1;NOP4() ;SCL=0;}RACK(); //读取应答}/*向24c04中读一字节*/uchar Receive_A_Byte(){uchar i,d;for(i=0;i<8;i++){SCL=1;d<<=1;d|=SDA;SCL=0;}return d;}/*任意地址写数据*/void Write_Random_Address_Byte(uchar add,uchar dat){Start();Write_A_Byte(0xa0);Write_A_Byte(add);Write_A_Byte(dat);Stop();DelayMS(10);}/*当前地址读数据*/uchar Read_Current_Address_Data(){ uchar d;Start();Write_A_Byte(0xa1);d=Receive_A_Byte();NO_ACK();Stop();return d;} /*任意地址读数据*/uchar Random_Read(uchar addr){ Start();Write_A_Byte(0xa0);Write_A_Byte(addr);Stop();returnRead_Current_Address_Data();}//显示函数void display(uint x){uchar bai,shi,ge;bai=x/100; //取百位shi=x%100/10; //取十位ge=x%10; //取个位P0=0xff; //消影Delay(1);P2=0x01;P0=DUAN_XUAN[ge]; //显示个位Delay(10);P0=0xff;P2=0x02;P0=DUAN_XUAN[shi]; //显示十位Delay(10);P0=0xff;P2=0x04;P0=DUAN_XUAN[bai]; //显示百位Delay(10);}//主函数void main(){uint x;x=0;shu=129; //把要写的值赋给变量BUTTON=1;LED=0;Write_Random_Address_Byte(0x00,sh u); //往00地址写入一个值shu = Random_Read(0x00) ; // 读00地址的值while(1){if(BUTTON==0) {//判断读卡按键Delay(40);if(BUTTON==0) { //消抖LED=1; //灯亮x=shu; //把读出的数赋给显示变量}}if(BUTTONQ==0) {//判断清除按键Delay(40);if(BUTTONQ==0){LED=0; //灯灭x=0;//对显示变量的值清零}}display(x); //显示 }}。
微机原理存储器的读写实验

微机原理存储器的读写实验一、实验目的1.了解存储器的基本原理和工作过程;2.掌握存储器的读写操作;3.通过实验验证存储器的读写正确性和可靠性。
二、实验器材1.存储器电路板;2.存储器读取电路板;3.逻辑分析仪;4.示波器。
三、实验原理1.存储器的组成存储器由多个存储单元组成,每个存储单元可存储一个数据位。
存储器的组成方式可以是并行结构或串行结构。
2.存储器的工作原理存储器的工作过程包括读取和写入两个部分。
读取操作:当控制信号使得读信息有效(RE=1)时,存储器从指定单元中输出数据到数据输出总线。
写入操作:当控制信号使得写信息有效(WE=1)时,数据从数据输入总线写入到指定单元。
3.存储器读写时序存储器读写时序包括地址输入、读写控制信号的生成和数据输入输出等步骤。
四、实验步骤1.连接实验电路将存储器电路板与逻辑分析仪、示波器等设备连接。
2.设置操作模式将存储器电路板上的读写模式设置为读写模式。
3.编写代码并烧录使用程序设计语言编写读写存储器的代码,并将代码烧录到EPROM或其他可编程存储器中。
4.运行实验程序将存储器电路板上的读写控制信号接入示波器或逻辑分析仪,观察读写时序是否正确。
5.验证读写正确性和可靠性通过读取和写入不同地址的数据,检查读取到的数据是否正确,写入后再读取是否一致。
五、实验结果与分析通过观察示波器或逻辑分析仪的输出结果,可以判断存储器的读写控制信号是否正确生成。
同时,通过验证读写数据的正确性,可以评估存储器的可靠性。
六、实验总结1.存储器的读写操作是微机系统的基本操作之一,对于存储器的工作原理和时序要有一定的了解;2.在实验过程中,要确保读写时序和控制信号的正确生成;3.通过验证读取和写入数据的正确性,可以评估存储器的可靠性。
通过完成存储器的读写实验,我们可以更深入地理解存储器的工作原理和操作方式,并通过验证读写数据的正确性,进一步评估存储器的可靠性。
这对于进一步研究和应用微机系统具有重要意义。
存储器读写实验

实验三 8255A 并 行 口 实 验
一、实验目的 1、掌握8255A和微机接口方法。 2、掌握8255A的工作方式和编程原理。 二、实验原理 1、 如实验原理图,PC口8位接8个开关K1~ K8,PB口8位接8个发 光二极管,从PC口读入8位开关量送PB口显示。拨动K1~ K8,PB口 上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。
实验七 A/D转换实验
一、实验目的 1、 加深理解逐次逼近法模数转换器的特征和工作原理。 2、掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。 二、实验原理 1、本实验采用 ADC0809 做 A/D 转换实验。ADC0809 是一种8路模拟输入 、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为 ±1/512,适用于多路数据采集系统。ADC0809片内有三态输出的数据锁 存器,故可以与8088微机总线直接接口。 图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。一 般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选 信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、 START、ENABLE信号。ADC0809的转换结束信号EOC未接, 如果以中 断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源 输入通道。本实验以延时方式等待A/D转换结束,ADC0809的通道号选 择线ADD-A、ADD-B、ADD-C 接系统数据线的低3位,因此 ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H 、 06H、07H。
《计算机组成原理》存储器读写实验报告

《计算机组成原理》实验报告实验名称:存储器读写实验班级:学号:姓名:一、实验目的1、掌握存储器的工作特征2、熟悉静态存储器的操作过程,验证存储器的读取方法二、实验设备1、YY—Z02计算机组成原理实验仪一台。
2、排线若干。
3、PC微机一台。
三、实验原理1.存储器是计算机的主要部件,用来保存程序和数据。
从工作方式上分类,其可分为易失性和非易失性存储器,易失性存储器中的数据在关电后将不复存在,非易失性存储器中的数据在关电后不会丢失。
易失性存储器又可分为动态存储器和静态存储器,动态存储器保存信息的时间只有2ms,工作时需要不断更新,既不断刷新数据;静态存储器只要不断电,信息是不会丢失的。
2.静态存储器芯片6116的逻辑功能:3.存储器实验单元电路:存储器实验单元电路控制信号逻辑功能表:4.存储器实验电路:存储器读写实验需三部分电路共同完成:存储器单元、地址寄存器单元和输入、输出单元。
存储器单元以6116芯片为中心构成,地址寄存器单元主要由一片74LS273组成,控制信号B-AR的作用是把总线上的数据送人地址寄存器,向存储器单元电路提供地址信息,输入、输出单元作用与以前相同。
四、实验结果记录(1)连线准备1.连接输入、输出实验的全部连线。
2.按实验逻辑原理图连接M-W、M-R两根信号低电平有效信号线。
3.连接A7—A0 8根地址线。
4.连接B-AR正脉冲有效信号线。
(2)记录结果(包含采集结果前的动作)地址写入数据读出数据结果说明01H 00100000 00100000 数据的写入与读取02H 00010011 00010011 数据的写入与读取03H 00100110 00100110 数据的写入与读取04H 10000001 10000001 数据的写入与读取05H 00000101 00000101 数据的写入与读取25H 不写存储器11110011 一个随机地址36H 00100001 00100001 数据的写入与读取0A0H 写总线悬空时的数据11111111 总线悬空时表示的数据是FFH,即写入的数据是11111111,所以读出结果为11111111。
实验一 存储器读写实验

动态调试工具DEBUG 的常用命令
1. U命令(反汇编) 2. G命令(执行) 3. T命令(跟踪执行) 4. D命令(显示内存) 5. R命令(修改寄存器)
三、实验内容
1、将字符A-Z逐个存入RAM中,然后再将 这些内容读出来显示在实验箱的屏幕上。
2、用一片6116作为内存扩展,向8000H: 0H至8000H:100H单元的偶地址单元送 入0AAH(扩充)
WRITE: MOV AL,0AAH STOSB MOV AL,55H STOSB LOOP WRITE
MOV CX,50H MOV SI,0000H
READ: LODSW CMP AX,55AAH JNZ NOT_RIGHT LOOP READ MOV AL,'R' MOV DX,88H OUT DX,AL JMP $
实验程序与流程图
程序开始
向6116 写数据
从 6116 中8000H :0H 开始 的地址逐 次读出字符比较
并显示相应字符 程序结束退出
CODE SEGMENT ASSUME
CS:CODE START:
MOV CX,50H MOV DI,0 MOV AX,8000H MOV DS,AX MOV ES,AX
1、将字符A-Z逐个存入RAM中, 然后再将这些内容读出来显示在实验箱的屏幕上。
程序开始 从当前的RAM中申请一个
26字节的缓冲区
将字符逐次写入缓冲区
从缓冲区中逐次读出字符显示
程序结束
RAMDUXIE.ASM
CODE SEGMENT ASSUME CS:CODE
START: JMP START_ DAT DB 26 DUP(?) CHAR DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
存储器读写实验实验总结

存储器读写实验实验总结
存储器读写实验是一种常见的电子实验,通过这个实验,我们可以了解存储器的读写原理以及存储器的工作方式。
本次实验中,我们使用了Arduino UNO开发板和24C02 EEPROM存储器芯片,下面对实验进行总结。
实验目的:
本次实验的目的是了解存储器的读写原理、存储器芯片的类型、接口方式、存储器操作等基本概念,并通过实验掌握使用Arduino控制EEPROM存储器读写操作的方法。
实验步骤:
1. 准备材料,包括Arduino UNO开发板、24C02 EEPROM存储器芯片、杜邦线等。
2. 将EEPROM存储器芯片与Arduino开发板连接,具体连接方式可以参考实验指导书。
3. 编写程序,在程序中定义存储器读写操作所需的引脚和操作函数。
4. 将程序烧录到Arduino开发板中。
5. 运行程序,进行存储器读写操作。
实验结果:
我们通过实验成功地实现了对EEPROM存储器芯片的读写操作,确认了存储器
芯片的工作状态和数据存储情况。
通过查看串口输出信息,我们可以看到读取的数据和写入的数据以及相应的内存地址信息。
实验体会:
本次实验让我们更加深入地了解了存储器的读写原理和存储器芯片的类型、接口方式、存储器操作等基本概念。
同时,我们通过实验也掌握了使用Arduino控制EEPROM存储器读写操作的方法,对我们今后的学习和工作都将有很大帮助。
总之,存储器读写实验是一项非常有意义的实验,通过实验的学习,我们可以更好地理解存储器的工作原理,为今后的学习和工作打下坚实的基础。
存储器读写实验

4.1存储器读/写实验1.实验目的(l)熟悉静态RAM的使用方法,掌握8088微机系统扩展RAM的方法。
(2)熟悉静态RAM读/写数据编程方法。
2.实验内容对指定地址区间的RAM(2000H~23FFH)先进行写数据55AAH,然后将其内容读出再写到3000H~33FFH中。
3.硬件电路系统内部已连接好,本实验不需再做任何连线。
4.实验步骤下面以8O88CPU/MCS-51集成实验系统DVCC-58CF为例,详细说明硬件接口实验的一般步骤。
若用户采用其他的8086/8088实验装置,实验步骤基本相同。
(l)设置本实验系统为8088硬件实验状态。
下面所有8088硬件接口实验前都需做的连线:①连接串口线;②用IDE线将JFZ与J88相连;③88电源部分K88置ON;④CPU系统接口区的51与88片选用短路片将靠近88的两个引角短接;⑤将SDF与WF片选用短路片将靠近WF端短接。
接好线后,不要拆除连线,以便再做其他8088硬件接口实验。
(2)双击桌面dv88.exe,然后按DVCC实验系统右边红色复位键,上面的七段数码管显示DVCC-86H。
(3)联机操作。
通过单击DVCC实验系统上的连接图标,会自动打开数据窗口、寄存器窗口等,表示本实验系统与计算机联机成功,如果出现连接失败,则需要重新DVCC实验系统右边红色复位键。
(4)DVCC实验系统-选项-实验指南工具栏,选择要做的实验项目,查看目的、内容、原理、位置等。
了解实验的所有知识,并按内容和原理图连线。
(5)DVCC实验系统-新建,编程序,文件名保存为英文名字或数字(注意:不能包含中文字符,文件保存路径:C:/DVCC)。
(6)单击编译,改正出错的地方,直到程序完全正确。
(7)单击调试(等待数秒钟调试完毕,到没有出错标志,并且反汇编窗口装载程序正确)。
(8)单击exe可执行程序运行,运行实验程序。
(9)查看实验结果。
在程序正常运行后,再次复位和再次联机,通过串口实现内部存储器读操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储器卡读写实验
西安邮电大学
智能卡技术及应用
课内实验报告
实验名称:存储器卡读写实验
专业名称:智能科学与技术
班级:
学生姓名:
学号:
指导教师:
实验日期:2016年4月18日
实验一存储器卡读写实验
一.实验目的
1.了解C
I2串行总线的工作原理;
2.通过实验了解存储器卡存、取数据的过程。
二.实验器材
1.KEIL软件;
2.PROTEUS仿真软件。
三.实验内容
往24C04芯片中写入一个数据(如“129”),然后再从24C04芯片中读出刚才的数据并把它显示在数码管上。
四.实验步骤
1.硬件电路仿真
使用Proteus软件画出如图1所示的电路图,要求:使用两个按钮来分别模拟读卡和拔卡(清除数据)的过程,用一个发光二极管来模拟卡座上电的过程。
(注:电路图画好后,给存储器24C04导入24C04.bin文件,给51单片机导入hex文件)
图 1 硬件电路图2.软件编写
图2 程序流程图程序截图:
图3
3.实验结果
刚开始运行时,单片机没有读取任何数据,此时数码管显示数字为0;当“读卡”按钮按下时,此时发光二极管亮,数码管显示预先存入24C04芯片的数值;当“清除”按钮按下时,此时此时发光二极管灭,数码管数值清零。
图4
图5
图6
五、实验总结
通过本次实验我了解了存储器卡存、取数据的过程,同时了解C
I2串行总线的工作原理。
实验在程序编写过程中遇到了问题,还是参考过老师以及网上的程序得到同学的帮助,才大体上完成。
每次实验都有新的收获,以后我会更加努力学习的。
六、实验代码
#include <reg52.h> #include<intrins.h> #define uint unsigned int
#define uchar unsigned char
#define NOP4()
{_nop_();_nop_();_n op_();_nop_();} //延时4us
sbit SCL = P1^0;
//SCL引脚sbit SDA = P1^1;
//SDA引脚
sbit BUTTON = P1^5;
//定义读卡按键sbit LED = P1^6;//定义模拟上电卡座
sbit BUTTONQ =
P1^7;//定义模拟取卡按键
uint shu; //定义写入变量
//数码管显示数组
uchar code
DUAN_XUAN[]={
0xc0,0xf9,0xa4,0x b0,0x99,0x92,0x82,0 xf8,0x80,0x90
};
//延迟函数
void Delay(uint x){ uchar i;
while(x--){
for(i=0;i<120;i++ );
}
}
void DelayMS(uint x){
uchar t;
while(x--){
for(t=120;t>0;t--);
}
}
/*IIC启动*/
void Start(){
SDA=1;SCL=1;NOP4( );SDA=0;NOP4();SCL= 0;
}
/*IIC停止*/
void Stop(){
SDA=0;SCL=0;NOP4( );SCL=1;NOP4();SDA= 1;
}
/*读取应答*/
void RACK(){
SDA=1;NOP4();SCL= 1;NOP4();SCL=0;
}
/*发送非应答信号*/ void NO_ACK(){
SDA=1;SCL=1;NOP4( );SCL=0;SDA=0;
}
/*向24c04中写一字节*/
void
Write_A_Byte(uchar b){
uchar i;
for(i=0;i<8;i++){ //循环移入8位
b<<=1;SDA=CY;_nop _();SCL=1;NOP4();SC L=0;
}
RACK(); //读取应答
}
/*向24c04中读一字节*/
uchar Receive_A_Byte(){ uchar i,d;
for(i=0;i<8;i++){
SCL=1;d<<=1;d|=SD A;SCL=0;
}
return d;
}
/*任意地址写数据*/ void
Write_Random_Addres s_Byte(uchar
add,uchar dat){
Start();
Write_A_Byte(0xa0 );
Write_A_Byte(add) ;
Write_A_Byte(dat) ;
Stop();
DelayMS(10);
}
/*当前地址读数据*/ uchar
Read_Current_Addres s_Data(){
uchar d;
Start();
Write_A_Byte(0xa1 );
d=Receive_A_Byte( );
NO_ACK();
Stop();
return d;
}
/*任意地址读数据*/ uchar
Random_Read(uchar addr){
Start();
Write_A_Byte(0xa0);
Write_A_Byte(addr );
Stop();
return
Read_Current_Addres s_Data();
}
//显示函数
void display(uint x){
uchar bai,shi,ge;
bai=x/100; //取百位
shi=x%100/10; //取十位
ge=x%10; //取个位
P0=0xff; //消影
Delay(1);
P2=0x01;
P0=DUAN_XUAN[ge];
//显示个位
Delay(10);
P0=0xff;
P2=0x02;
P0=DUAN_XUAN[shi];
//显示十位
Delay(10);
P0=0xff;
P2=0x04;
P0=DUAN_XUAN[bai];
//显示百位
Delay(10);
}
//主函数
void main(){
uint x;
x=0;
shu=129; //把要写的值赋给变量
BUTTON=1;
LED=0;
Write_Random_Addr ess_Byte(0x00,shu); //往00地址写入一个值
shu =
Random_Read(0x00) ;
// 读00地址的值
while(1){
if(BUTTON==0) {//判断读卡按键
Delay(40);
if(BUTTON==0) { //消抖
LED=1; //
灯亮
x=shu; //
把读出的数赋给显示
变量
}
}
if(BUTTONQ==0)
{//判断清除按键
Delay(40);
if(BUTTONQ==0){
LED=0; //灯灭
x=0;//对显示变量的值清零
}
}
display(x);
//显示
}
}。