基与微机实验平台串行存储器的设计方案.doc_第1页
基与微机实验平台串行存储器的设计方案.doc_第2页
基与微机实验平台串行存储器的设计方案.doc_第3页
基与微机实验平台串行存储器的设计方案.doc_第4页
基与微机实验平台串行存储器的设计方案.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基与微机实验平台串行存储器的设计方案第一章 绪论21.1 课题的背景和意义随着计算机的发展,存储器也随着发展,存储器是存放数据的芯片,是计算机发展的关键部位,中央处理器和输入输出设备都可以和存储器交换信息,有存储,缓冲和传递信息的作用。在如今是计算机领域,存储器被广泛的应用,而且,当前正在执行的是在一般的半导体存储器存储程序,和硬盘作为外部存储和二级存储,用于存储程序和数据当前不需要执行。1.2 存储器的分类由于存储器的快速发展,产生了许多的类型。存储器分为内存储器与外存储器。存储器一般包括一定容量,CPU的内部存储器可以存储和操作构成的半导体存储器的。根据属性区分,该存储器一般可定为随机存取存储器和只读存储器的两种类型,英文缩写为RAM和ROM。每一个存储器的内容可以随时按需要进行读/写的需要进行分配,RAM是被用来存储各种各样输入和输出的数据与程序,中间得出的结果,与外存储器交换的内容也一样可以作堆栈来利用。ROM只读不写,一般用来存放已经写好不需要写该或者是添加的程序和数据。RAM的分类(1)DRAM(动态随机存取存储器)这是一个非常一般的RAM,由单个电子管和电容器构成的一个位存储单元,DRAM把每一个内存单位当作一个电荷存储在位存储单元之中,根据电容的充电与放电当做储存方式,不过因为电容自身存在漏电的现象,所以一定要每几微秒就必须刷新一次,不然的话数据有可能丢失。存取时间与放电时间总的来说是一致的,大概有24ms。因为在成本上说相对比较实惠,所以DRAM一般都用来作为计算机内部的主要存储器。(2)SRAM(静态随机存取存储器)静态,一般针对的是内存中的内容能够长期存储在其中并且没有必要随时都可以进行存取。其中每6颗电子管构成单个位存储单元,由于不存在电容器,所以没有必要不断充电就可以正常工作,它能够比普通的动态随机处理内存运行速度更方便更平稳,一般被用来作为高速缓存。ROM的分类(1)掩膜ROM因为制造商在生产时写进去的内容,写完后只要求读取,而不能够继续写入。基本存储原理是:以元器件的“有/无”来表示存储信息(“1”或“0”),可以用二极管或晶体管作为原件。(2)PROM(可编程只读存储器)PROM被称作为“单次可编程的只读存储器”。PROM在刚刚出厂的时候,里面的内容全是1,用户能够按照自己的要求把当中的某些单元写成0,及将1的熔丝熔断(当然也有些厂出产的PROM里面的内容刚开始全是0,那就相反,用户可以把其中需要的写1),用来让用户实现对程序的编辑。(3)EPROM(可擦可编程只读存储器)EPROM是一个拥有可多次修改的能力,在擦除之后就可以实现再次编写程序的ROM,在使用紫外线照射来消除写入的程序,清除掉里面的数据,这种种类的芯片非常容易识别出来,因为在它的封装上有一个玻璃窗,用于紫外线照射,在编辑完程序后的芯片需要用黑色不干胶纸盖住其上面的石英玻璃窗口,用来防止其受到阳光的直接照射,而破坏里面的程序。(4)E2PROM(电可擦可编程只读存储器)它的使用方式和功能与EPROM差不多,而且其写进去的程序都可以用20V的电压来清除,与EPROM的擦写方式不同。E2ROM可以用电信号进行写入。工作方式相对简便,比EPROM现金一点。(5)FlashMemory(快闪存储器)Flash Memory是一个先进的非易丢失的存储器,从EPROM和E2PROM的基础上发展过来的。存储方式和EPROM相似,是使用单管来存储1位的信息内容,与EEPROM相同的地方使用电来擦除信息的。在目前的发展态势来看,Flash Memory的容量越来越大,价格方面越来越实惠,是一个很有前景的存储器。1.3 课题的研究内容以北京清华大学教学仪器厂研发的TPC-2003A 32位总线微机实验箱为平台,设计一个串行存储器的读写单元。要求能用实验箱上的数码管显示串行存储器(初步考虑采用AT24C02系列)进行读写操作后的存储状态。串行存储器的相关电路可参考TPC-2003A 32位总线微机实验箱所提供的小型温度控制系统的电原理图,所用编程语言要求为C、或汇编。课题要求对I2C串行通信技术,以及串行存储器的读写时序有较好的理解,对Proteus仿真软件能熟练应用。对设计方案需进行Proteus仿真,和实物演示。第二章 系统总体结构2.1 8086微型计算机的结构8086是一个因特尔系列的16微处理器,是在HMOS工艺上生产制造的,每个8086中都有16根数据线和20根地址线,采取的 40脚的DIP封装,DIP是双列直插式封装。在8086工作时,工作电压是5V,能够识别的时钟频率是4.7710MHz,其引脚信号和TTL电平相互兼容。因特尔公司推出8086的时候,也发型了一个准16位的微处理器-8088。8088与8086的内部的结构是相似的,两种芯片使用的程序是可以相互套用的一、8088/8086的结构从在结构上说8086和8088都是以执行单元EU和总线接口BIU两个部分组成。下图2-1是8088/8086的内部结构框图。图2-1 8088/8086的内部结构框图执行单元EU负责执行指令。EU在工作时不断地从指令队列取出指令代码,并完成指令 所要求的操作。它包括一个算术逻辑单元ALU,通用寄存器的REG和EU标志寄存器FLAGS控制部件。各部件的功能如下:ALU:算术单元执行算术,逻辑,移位,偏移地址计算等操作。FLAGS:存储的是特征位,比如:零位,进位,借位,溢出,奇偶校验位等等。REGs:临时存储运算结果、操作数以及操作数的地址等。EU控制部件:收取指令队列中存在指令代码,对指令进行分析、译码,构成各种控制信号的类型,对EU中的部件实现完整的控制和运用。总线接口单元BIU控制存储器和CPU及I/O接口相互之间的信息内容 (其中包含地址、数据、控制命令等)发送。 包含产生访问的存储器所要求的20位的物理地址、不停地在内存中找到指令,并进行传送、并且根据EU在所指出的内存单元和外设端口之间实现数据存和取。BIU根据的是指令指针寄存器IP、地址加法器、段寄存器、指令队列和总线控制逻辑实现。 各类部件的具体功能表示如下:总线控制逻辑:在CPU和外部总线,可实现数据,指令,以及访问其他外部信息之间的接口。段寄存器:是用来存储段基地址,为存储器段的。指令指针寄存器:保持当前指令地址被读取。它等同于前面所解释的指令计数器(PC)。指令队列:从8088和8086来说,其指令队列长度为4字节与6字节,基本上是先进先出的结构,和堆栈的工作形式差不多,在EU取出指令时,指令队列就会形成空字节,BIU就能够自行实现一回取指令周期,在所在的内存单元取出需要的指令,并执行这种指令,在执行部件需要的内容时,BIU针对EU送出的地址进行操作,在所要求的外设和内存单元之中取出所需内容送给EU使用。当在程序运算完成后,BIU会将程序的执行结果发送给指定的单元。在指令队列空闲的时候,EU就会选择等待,一直到等到指令出现为止。当BIU在执行指令的过程中,EU能够产生总线请求,所以在BIU的所在指令执行完成后,这种类型的请求才能够得到实现。总的说来,程序是按照顺序来执行,在执行跳转指令的过程中,BIU才难够使得指令队列复位,在新的地址中取出指令,而且马上送给EU单元去运行。指令队列在BIU与EU之间拥有实现“桥梁”的功能(也可以说把指令看成一个传送带,不停地将指令从BIU送到EU),这样EU与就能并行的工作。地址加法器:能够产生物理地址20位的。8086/8088所有的存器是16位的,不能够实现存储20位的地址,所以要采取特殊的方法来实现这种功能,而且8088/8086所使用是分段的手段,就是把220(1MB)的空间形成许多64KB的段成分,访问物理存储器用段基址加上段内偏移地址。根据8088/8086的要求,从以16字节为单位的边界开始分段,刚开始的地址总是四个0,也就是XXXX0H,也就是说每个段的基地址只要求16位就可以表示,严格意义上,也能够证明段基址比段起始地址高16位。因为段基址的特征,BIU在算物理地址时,也就是是左移4位段基址后与段内偏移相加。如下图2-2图2-2 物理地址计算方式二、8088/8086的内部寄存器在8088/8086中存在寄存器,14个16位的。根据其作用能划分成三种类型:控制寄存器,段寄存器与通用寄存器,如下图2-3。图2-3 内部寄存器1. 通用寄存器在通用寄存器中,存在数据寄存器、地址指针寄存器与变址寄存器。(1)数据寄存器数据寄存器一般有AX、BX、CX、DX,被用来存放运算的参数和运算的结果。其中任何数据寄存器都是16位的,不过,每个寄存器的高8 位和低8位都能够单独作为寄存器使用,其中它们的高8位分别为AH、BH、CH、DH,相反,低8位是AL、BL、CL、DL。这样就能灵活的使用,为编程者提供非常有效的便利手段,既能实现对8位的编程,又能实现对16位的编程,非常灵活。 数据寄存器不仅可以作为通用寄存器,而且它们存在自己独特的使用习惯和使用方法。AX:累加器,很多被用在存储算术逻辑运算产生的操作数与结果,而且很多的指令都要求使用到AX寄存器。BX:基址寄存器,经常被用于内存的相关基地址。CX:计数寄存器,经常被用在计数器的相关操作中。DX: 数据寄存器,相对比较灵活的寄存器,可以和AX相互联合运用,形成16位的寄存器用于运算。 (2)地址指针寄存器(SP、BP)SP:当堆栈指针寄存器,用于存储堆栈偏移地址在栈操作,PUSH或POP操作,SP会自动调整到新的堆栈。BP:基地指针寄存器。通常用于保存的存储器存取时间的基址。但通常与SS寄存器配对。作为一个通用寄存器,SP和BP还可以存储一般操作数。但事实上,他们更经常更重要的用途是位于偏移地址存储单元,尤其是当访问堆栈指针(因为他们是默认段寄存器SS)。(3)变址寄存器(SI、DI)SI:源变址寄存器,常变址寻址模式作源操作数索引指针。DI:目的变址寄存器,往往由于变址寻址方式,把目的操作数作为索引指针。作为一个通用寄存器,SI和DI还可以存储一般操作数。但在大多数情况下,它是用来存储的偏移地址存储单元。2. 段寄存器CS、SS、DS、ES 4个16位段寄存器用来存放当前可寻址的四个段的段基地。CS:代码段寄存器,表示现在运行的程序所处的存储器段。编程者不可以直接对CS进行编辑和赋值。SS:堆栈段寄存器,表示当时正在进行的程序所处的存储器段。DS:数据段寄存器,表示程序所要使用的数据所在的存储器段。ES:附加段寄存器,表示现在执行的程序所使用的存贮的另外一个存储器段。3. 控制寄存器(IP、FLAGS)IP:指令指针寄存器,被用来存放偏移地址,是预取指令的偏移地址。在8086执行程序时,都是以CS作为段基址,把IP当做偏移地址。每当一条指令已经执行完成,IP总会自己跳到下一个要执行的指令位置。与CS一样,程序编辑人员不可以直接对CS进行编辑操作。FLAGS被叫做标志寄存器,是一个16位的寄存器,不过我们只用到其中的9位,如下图2-4所示。图2-3 标志寄存器状态标志位记录了算术和逻辑运算结果的一些特征。如结果是否为零,是否有进借位,结果是否溢出等。CF进位标志位。在执行加(减)法程序操作时,只要运算结果最高位有进位CF=1,相反CF=0。PF奇偶标志位。在程序运算结束后,看结果中1的个数是否是偶数,如果是偶数PF=1,不然PF=0。AF辅助进位位。在程序执行加减法时,看执行结果,如果第三位对第四位有进位(借位)的时候AF=1,否则AF=0。ZF零标志位。看程序的执行结果,结果为0,则ZF=1,否则ZF=0。SF符号标志位。看程序结果的最高位是否是1,如果是则SF=l,否则SF=0。OF溢出标志位。当算术运算的结果超出了带符号数的范围时OF=l,否则OF=0。控制标志位用来控制程序的执行状态,可以对其在程序中进行赋值,程序员可以有效地控制微处理器的执行方式。TF跟踪标志位。可以用在对程序的调试,没执行一步就停止,可以让程序员观察每执行一步时程序的状态。IF中断允许标志位。在IF=1时,表示可以响应可屏蔽中断请求。在IF=0时,不允许响应可屏蔽中断请求。但影响不了不可屏蔽中断。DF方向标志位。在DF为1时是降序操作,相反则是增序操作,简单便用。2.2存储器AT24C02 1.概述与特点AT24C02工作电压是低压的存储芯片,串行电可擦除只读存储器有2K的容量,数学计算下来就是256个字节,其中每个字节是8bit,这种存储器在各种领域的运用非常的广泛。 2.主要特性该芯片工作电压是1.8V5.5V,其输入输出的引脚电压兼容5V电压,硬件连接电路是二线串行接口,对I2C需要很深刻的了解,内部结构为256*8(2K),每个输入引脚都有经施密特触发器,通过施密特触发器来抑制噪声,I2C接口是双向的传输数据接口,工作频率兼容400KHz,有写保护功能,而且效率高,可靠性高,擦写次数多,保存时间长的优点,其擦写次数大概是1,000,000次,保存时间大概是100年之久。3.结构框图图2-4 AT24C02结构框图4.引脚说明SCL:串行时钟信号引脚,其目的是能够将数据从输入到里面的,要求是在当SCL时钟的上升沿进行操作,要想读出信号,则相反,在下降沿读出数据。SDA:串行数据输入/输出引脚,该引脚功能能够进行数据的双方向传输,既能写入数据,也能读出数据。因为这个引脚要求在开漏状态下输出,能够和其他相关联的元器件相互连接形成。A2,A1,A0:器件/页 地址脚,用于连接其他存储器的引脚,在本课题可以了解一下,不用掌握。WP:写保护引脚,是能够让程序编辑人员进行写保护的引脚。在这个引脚是低电平时,可以进行读写操作。而该引脚是高电平时,就不可以进行读写。5.器件操作时钟及数据传输:一般情况下SDA脚常与高电位相连。当SLC是低电平时,SDA的数据可以实现改变;不过,当SCL 是高电平时,数据发生了改变,会被看作下面所讲述的两个命令构成:起始命令:在 SCL 是高电平时,SDA从高电平变化到低电平会将之看做起始命令,为了数据能够正常写入,必须把这种时序看做存储的开始,详细参见图5。停止命令:在 SCL是高电平时,和起始命令相似,SDA 从低电平到高电平的的转换,和起始信号相反,在检测到这种状态,都会被看做是停止命令,经过一个读操作,在接收到停止命令将会让 E2PROM出现低功耗模式,详细参见图5。应答:传输规律是特定的,每一次输入输出都是8bit为一组,当收到一个8bit的数据之后,从系统自动会在第9bit产生应答信号。相反,只要主芯片侦听到8 bit的一组数据以后,在第九周期,存储器就会回答一个信号给主控制器芯片,当主控制器收到该应答信号,存储器将把下一组数据8bit再次传输。如果这个阶段不曾接受主控器件的信号,存储器将暂停数据的读出,一直等到主控器件有一个命令,位停止命令时终止该操作。等待模式:AT24C02存在一个耗能非常低的一个状态。进行该状态有下面两个方法来实现:(a)上电 (b)侦听到停止位。器件复位:在程序执行过程中,有方法将芯片进行复位,程序员可以按照这种方法进行复位操作,该方法如下:(1)输入9个clk,不间断输入;(2)由时序图可以看出SCL是高电位是,把SDA也拉高;(3)创建起始条件。6.总线时序图2-5 SCL串行时钟输入SDA串行时钟输入输出图2-6 SCL串行时钟输入SDA串行时钟输入输出图2-7 数据有效图图2-8 起始与停止命令定义图2-9 输出应答2.3 8255A工作方式(1)8255外部引脚图2-11:图2-11 8255外部引脚该芯片通过A、B、C与外界连接进行通信,各个通道有8个端口可以与外界相连,因此芯片有24个引脚与外界通信,每个通道端口分类如下:(1)A口: PA0PA7,进行8位并行数据通信。(2)B口: PB0PB7,进行8位并行数据通信。(3)C口: PC0PC7,进行8位并行数据通信,在方式1和2状态时,C口是作为ACK信号接口。A1,A0:地址选择控制端口,作为控制选中PA口,PB口,PC口和控制寄存器。A1=0,A0=0, 选择PA;A1=0,A0=1, 选择PB;A1=1,A0=0, 选择PC;A1=1.A0=1, 选择控制寄存器。(2)8255A 有两个控制字如图 2-10:图2-10 控制字寄存器3个方式可以通过寄存器赋值来选择状态。其工作方式是: 方式0基本的输入输出,方式1选通输入输出方式, 方式2双向传送方式。(3)根据附录1电路图,我们要定义8255的三个端口分别为输出状态,则8255的初始化如下: MOV DX, 0F6HMOV AL,80H;设置8255为A端口、B端口和C端口输出 OUT DX ,ALMOV DX, 0f2HMOV AL,00h;BUFFERRECDI,B口初始化OUT DX,AL第三章 硬件设计3.1系统的任务规划制作一个串行存储器系统,用微机8086作为系统CPU,AT24C02作为串行存储器芯片,显示模块使用数码管,实现在串行存储器中存储数据,并能够读出数据,并在数码管中显示的功能。3.2系统的结构框图在系统设计方面,有硬件设计和软件设计两个方面。硬件设计主要是以微型计算机8086为核心,再结合AT24C02串行存储器芯片,数码管显示部分,8255A并型接口芯片。软件设计部分使用的是汇编语言。系统结构框图如下图3-1所示。80868255A24C02C数码管图3-1系统结构框图3.3方案的论证和比较3.3.1 控制模块方案一:采用8086微处理器。8086是16位的CPU,内部被设计成独立的两个功能模块:总线接口部件(BIU)与执行部件(EU),具有高可靠性,易学易用的特点。方案二:采用80486微处理器。80486是32位的处理器,是8086后发展出来的cpu,集成了8086的优点,并比8086更加强大,主要特点将浮点运算部件集成在片内,并且采用了时钟倍频技术,流水线和并行及推测技术,虚拟存储及片内存储体分段分页双重管理和保护技术,为在微型计算机环境下实现多用户多任务操作提供了非常大的帮助。本课题主要实现串行存储器的读和写,并加以显示的功能,不需要很多复杂的逻辑功能,对于速度的要求不是很高,所以采用简单易于上手的8086微处理器来完成本课题,所以选择方案一。3.3.2 显示模块方案一:采用八段数码管显示,其优点是数码管亮度高,显示很清楚,驱动也比较的简单。当用到多未显示的时候可以加上片选芯片,虽然硬件结构相对复杂,但是操作程序相对简单。方案二:采用LCD液晶显示屏。优点是驱动电压低,功耗也相对较小,可靠性很高,显示的内容相对比较丰富,没有闪烁,成本低,市场上有各种规格的液晶显示器,便于携带。对于本课题来说, 需要显示的内容相对较少, 而且对于液晶显示器的编程相对比较复杂 ,对于考虑到工作量的大小, 我选择采用数码管显示, 选择方案一。3.3.3 存储模块方案一:采用intel27128芯片,intel27128是一个128K的EPROM,需要14个地址输入线,经过译码在16K地址中选中一个单元。访问的最大时间是270ns,输出有三条控制线,分别是片选信号,输出允许信号和编程控制信号,编程相对复杂。方案二:采用E2ROM芯片28C16。28C系列与EPROM相比优点是:编程与擦写所要求的电流较小,速度快,擦写可以按照字节分别进行。方案三:采用芯片AT24C02。该芯片有借口简单,操作方便,被广泛应用于低电压及低功耗的工商业领域。只要两个接口就可以实现数据的存储和读出,编程相对容易一些。从硬件的反面来考虑,主要要求功能的实现,稳定性高,所以选择AT24C02比较方便,所以选择方案三。3.4最终方案综上所述,最终的方案决定如下:1. 采用微处理器8086为核心;2. 显示模块用数码管;3. 存储模块用AT24C02芯片;4. Proteus进行模拟实现功能。第四章 软件的设计本课题的软件设计方面主要包括两个部分,分别是Proteus和汇编程序的上机环境,这两个部分可以联合起来组成模拟的实验平台,可以进行软件的实验仿真,来看能不能实现这种功能。下面阐述的就是这两方面软件的作用。4.1Proteus软件 Proteus是一个用来开发的模拟单片机,也可以设计PCB电路板的电脑软件,是英国Labcenter公司的产品,功能十分强大。Proteus在Windows操作系统的基础上设立起来的操作平台,具有仿真的功能和对各种模拟和集成电路进行解析。Proteus提供了很多的模拟和数字仿真器件,也拥有很多外部相连的系统与各种虚拟的测量显示仪器,可以在仿真的时候观察工作状态,尤其针对于它在与外围电路相连接进行仿真具有很高的实用性和可靠性。Proteus有两大类,一个是ISIS,一个是ARES,ISIS是为了实现方便地设计原理图和对电路原理图相互进行有效的仿真,ARES是用来设计PCB板。本课题主要要求如何利用Proteus ISIS进行设计电路,用masm.exe,link.exe,tasm.exe,对汇编语言进行编译,汇编和链接。Proteus界面如下图4-1:图4-1 Proteus编辑界面当我们再设计位处理器系统时,尽管物理模型不存在,对于Proteus在开发软件方面一样可以运转。在库里面通常有LCD、开关、按钮、键盘等各种元器件。而且,它的库存里面包含了很多处理器:8086微处理器、AVR、8051、MSP430和PICMICRO等。Proteus7.5以下的版本没有关于8086的仿真,相反,其以上的版本具有仿真8086的功能。Proteus VSM 8086能和各种元器件进行连接,构成一个系统进行仿真。是8086处理和仿真的模板。想在,Proteus可以进行很多不同工作频率的仿真,不过在最大模式过程中还没有去达到。而且,由于8086微处理器内部的方面有达到很高的水准,所以在一些频率设置方面可以直接通过软件设置。想要修改关于8086的模型,可用从编辑元器件对话框方面入手。而且,能够通过编辑代码和编译代码,整合到一起,程序编辑人员能再边设计边编辑代码,这样可以准确稳定地得到结果。4.2汇编语言的上机过程4.2.1上机环境为了能够完成本课题,需要编辑和调试汇编语言,编辑汇编语言必须要有下面的编辑软件:1. EDIT.COM:编辑程序2. MASM.EXE:汇编程序3. LINK.EXE:链接程序4. DEBUG.EXE:调试程序4.2.2上机过程对汇编语言进行编辑和处理:第一步是编辑,第二部是汇编,第三部链接,第四步调试。1编辑源程序就是用一些特定的软件来编写相应的程序,在软件市场上,编辑软件很多,有:EDIT.COM,写字板,Microsoft office的world软件。在编写完程序之后,要将编写的文本用后缀名.asm表示2.汇编用相应的程序对.asm操作,得到所要的文件后缀名为.obj的文件。通过对程序进行汇编:可以看出程序在语法上出现的问题,而且能得到相关信息,供程序员进行改正;如果没有语法错误,就会得到想要的相关文件;并且能够展开宏指令。对文件进行编辑是在DOS环境中,键入:MASK EXAMPLE.ASM,再按enter键,就开始对汇编程序EXAMPLE.ASM进行编辑。此命令完成之后有3个提示,按enter键就能得到3个文件,后缀名:.OBJ,.LST,.CRF三个文件。分别键入enter键,键入完成后,该软件就对该所写的程序实现汇编。只要在此过程发现错误,软件会提示语法错误的原因供程序员参考。与此同时,让程序员修正,之后再次实现汇编。按照这种步骤,当没有错误的时候,生成想要的文件。3. 连接由汇编成功生成后缀名为.obj文件不是最终的文件,还需要程序员提供特定的步骤才能生成目标。该步骤如下:进入DOS环境,键入:LINK EXAMPLE.OBJ再加上enter键,就能够实现连接。和上面的步骤相近,要是发生错误,软件会给出相应的错误信息。这个时候,要求程序员对源程序检查、更正,然后再次连接,一直到没有错误为止。4.程序运行用DOS键入相关的指令,来执行生成的程序,来观察程序的运行状态。5.程序调试通过观察程序运行,并不容易发现出现的问题,特别是接触一些繁琐的程序更加要这样,在这个时候就一定要借助调试软件。一般都是用DBUG.EXE。4.3软件设计流程图流程图如图4-2所示:图4-2 软件设计流程图AT24C02引脚与接口电路图4-3:图4-3 AT24C02引脚与接口串行接口是未来的发展方向,节约输入输出口。 第五章 仿真的调试和总结5.1 Proteus仿真 本次设计,会看到的现象是,Proteus中显示存储器中存入的数据,和读出的数据,在数码管中显示如图5-1。和输入输出状态的波形显示,如图5-2。图5-1 实验仿真现象5.2 程序结构(1)程序的初始化:汇编语言中,关于8086的一般初始化为:MOV AX,STACKS ;初始化各段基址 MOV SS,AX MOV AX,DATA MOV DS,AX8255A的初始化:MOV DX,I8255BMOV AL,80H;设置8255为A端口、B端口和C端口输出MOV DX,LEDMOV AL,00h;BUFFERRECDI,B口初始化OUT DX,AL(2)由附录二可以看出8255的三个端口的地址和控制寄存器地址分别是:A口:0f0H;B口:0f2H;C口:0f4H;D口:0f6H。(3) 程序返回DOS指令:MOV AH,4CH INT 21H (4)根据图2-8,at24c0x的时序1)起始信号,SCL为高时,SDA从高到低,编程:27START PROCMOV DX,I8255B MOV AL,80H ;设置8255为A端OUT DX,AL 口和C端口输出MOV AL,01HPUSH DXMOV DX,SCLOUT DX,AlPOP DXMOV AL,01HPUSH DXMOV DX,SDAOUT DX,AlPOP DX PUSH DX MOV AL,0 MOV DX,SDA OUT DX,AL POP DX PUSH DX MOV DX,SCL MOV AL,0 OUT DX,AL POP DX RETSTART ENDP 2)终止信号,SCL为高,SDA从高到低,编程: 三江学院2015届本科毕业生毕业设计(论文)STOP PROCMOV DX,I8255B MOV AL,80H ;设置8255为A OUT DX,AL ;端口和C端口出MOV AL,00H PUSH DXMOV DX,SDAOUT DX,ALPOP DX MOV AL,01H PUSH DXMOV DX,SCLOUT DX,ALPOP DXCALL DELAY CALL DELAYMOV AL,01HPUSH DXMOV DX,SDAOUT DX,ALPOP DXCALL DELAYCALL DELAYRETSTOP ENDP26三江学院2015届本科毕业生毕业设计(论文)结束语本课题研究的是基与微机的串行存储器设计与仿真,主要是串行存储器的使用,课题重点是掌握I2C的工作原理,经过研究,认识到总线是一个二进制的总线,与其他器件的连接就两根线,连接到系统总线进行信息传输,由于是基与微机单片机,8086芯片中没有继承I2C接口,所以我们就根据I2C的工作方式,在硬件基础上搭建一个可以进行I2C通信的硬件电路,硬件电路采用的芯片是并行接口芯片8255A,8255A有三个不同的接口和三个不同的工作方式,我们根据需要选择方式1,其硬件接口电路与温度调控系统的电路相似,AT24C02硬件接口电路,根据I2C工作方式,要在两根线上加上上拉电阻,才能正确的进行数据存储与读取。通过该课题,让我清楚的知道8086的工作方式和汇编语言的一般结构,掌握了I2C的工作原理,提高了自己解决问题的能力,开阔了自己的眼界,增强了自己的见识,有效的提升自己的综合素质,为以后的学习和工作打下了坚实的基础。另外,存储器在市场上也有很多的类型,在本课题中,我只选择了一个比较好上手的芯片,在AT24C02中存入数字,然后读出数据,在数码显示管上显示存储的数据。尽管这种方案在理论上,Proteus中进行了仿真,但一般来说,是存储器研究的基础,所以在以后的工作和学习当中,还需要继续研究,找出更方便快捷的存储器。该课题思路还需要进行进一步探索和研究,才能够得到推广。致谢本论文是经过顾群老师的教导下最终完成的,顾群老师拥有非常丰富的实验经验和教学经验,观察力十分敏捷。从选题、资料收集、到最终论文定稿整个过程中,顾老师都表现出严谨细致、一丝不苟、认真负责的作风。当我遇到疑惑时,他会对我进行耐心地指导,循循善诱,帮我开拓思路,使我对毕业设计课题的最初的畏惧和索然无味之感,到最后的乐于探讨,在此向顾群老师表示诚挚的感谢,同时感谢顾群老师对论文格式的细心讲解。毕业设计不仅考核我们将知识融会贯通的能力,而且锻炼了我们进行科学研究的基本功,培养我们将所学知识进行综合运用从而独立地分析和解决问题,为日后的工作和学习奠定坚实的基础。感谢同学们的热忱帮助,使我充满力量斗志昂扬的完成这份毕业设计;感谢亲人的支持,始终如一的鼓励与加油,让我更懂得珍惜的可贵;最后,深深感谢相关资料的编著者和前辈们,感谢您们为我们的成长引路铺石开辟道路。 参考文献(References)1冯博琴等.微型计算机原理与接口技术M.北京:清华大学出版社,2004.27-4172葛如顶.8086/8088/80x86实用汇编语言工具库M.南京:南京大学出版社,19923朱定华等.微机原理、汇编与接口技术实验教程M.北京:清华大学出版社,2007.1-1124阮宇等.Visual C+ 6.0基础教程M.北京:清华大学出版社,2005.1-1885戴先中等.微机硬件应用实践:系统与综合M.南京:东南大学出版社,2001.1-716马丽萍等.基于Proteus 的数字钟设计及仿真J西安工程大学学报,2009,23(3)7潘孝梅等.微计算机技术实验教程M. 北京:清华大学出版社,2001.1-688冯梅琳,王芸,温家旺.基于Proteus 的温湿度数据采集系统设计与仿真J.仪表技术,2010.12-15.9毛玉良.微机系统原理及应用M.南京:东南大学出版社,2006.255-268.10Peter D.Varhol.Pentium Intels 64-bit Superscalar Architecture M. Computer Technology Research Corp,199311Berger,A.S.Hardwear and Computer Organization:The Software Perspective M.Elsevier Pte Ltd.2005附录A附录BSDA EQU 0f0H;8255A口地址LED EQU 0f2H;8255B口地址SCL EQU 0F4H;8255C口地址I8255B EQU 0F6H;8255控制寄存器地址DATA SEGMENT BUFFERSEND DB 00H;存放要写的数据 COUNTSEND DB 50BUFFERREC DB 20 DUP(0);存放读出的数据COUNTREC DB 50COUNT1 DW 1LED1 DB 0C0H,0f9H,0A4H,0B0H,99H,92H,82H,0f8H,80H,90H,92h,82h, 0F8h, 80h, 90h,0ffh;段码STRING1 DB 0DH,0AH,PLEASE INPUT YOUR STRINGS,0DH,0AH,$STRING2 DB 0DH,0AH,THE STRINGS YOU INPUT ARE:,0DH,0AH,$STRING3 DB 0DH,0AH,DO YOU WANT TO CONTINUE(Y/N):,0DH,0AH,$NUM DB 00HADDROM DB 00H ;存储器的地址DATA ENDSSTACKS SEGMENT STACKDW 256 DUP (?)STACKS ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSMAIN PROC FARSTART1: MOV AX,STACKS ;初始化各段基址 MOV SS,AX MOV AX,DATA MOV DS,AXLOOPP:MOV DX,I8255BMOV AL,80H;设置8255为A端口、B端口和C端口输出MOV DX,LEDMOV AL,00h;BUFFERRECDI,B口初始化OUT DX,ALMOV DI,0;MOV NUM,0CALL READ ;从存储器中读数CALL DISPLAY1PUSH CXMOV CX,20HONG: INC NUM ;数加1在写到存储器中CMP NUM ,10JNC DONEJMP NEXT2DONE: MOV NUM,0NEXT2:CALL WRITEPUSH CXMOV CX,50 ting1: CALL DELAYLOOP ting1POP CX CALL READ ;读出并显示到数码管CALL DISPLAY1PUSH CXMOV CX,50 HONG1: CALL DELAYLOOP HONG1POP CXLOOP HONG POP CX MOV AH,4CHINT 21H MAIN ENDP;延时:DELAY PROC PUSH BXPUSH CXMOV BX,2000ZZZ:MOV CX,1ZZ:LOOP ZZDEC BXJNZ ZZZPOP CXPOP BXRETDELAY ENDP;显示 BUFFERRECDI是入参 ledDISPLAY PROCPUSH DXMOV DX,I8255BMOV AL,80H;设置8255为A端口、B端口和C端口输出CALL DELAYMOV DX,LEDMOV AL,BUFFERRECDI;BUFFERRECDI是入参 OUT DX,ALPUSH CXMOV CX,200zuod1:CALL DELAYLOOP zuod1POP CXPOP DXRETDISPLAY ENDPDISPLAY1 PROC ;数码管显示 PUSH BX PUSH SI PUSH CX PUSH AXlll: MOV BL,NUMMOV BH,0;MOV SI,OFFSET LED1;ADD SI,BXMOV AL,BYTE PTRSI;MOV DX,LEDOUT DX,ALMOV AL,02HMOV DX,SCLOUT DX,ALMOV CX,3000HONG2: LOOP HONG2POP AXPOP CXPOP SIPOP BXRETDISPLAY1 ENDP ;启动信号START PROC CALL DELAYMOV DX,I8255B MOV AL,80H ;设置8255为A端口和C端口输出 OUT DX,AL MOV AL,01H PUSH DX MOV DX,SCLOUT DX,AlPOP DX;CALL DELAY;MOV AL,01H PUSH DX MOV DX,SDAOUT DX,AlPOP DXCALL DELAY;CALL DELAY;PUSH DXMOV AL,0MOV DX,SDAOUT DX,ALPOP DXCALL DELAY;CALL DELAY;PUSH DXMOV DX,SCLMOV AL,0OUT DX,ALPOP DXCALL DELAY;RETSTART ENDP;停止信号STOP PROCMOV DX,I8255B MOV AL,80H ;设置8255为A端口和C端口输出 OUT DX,ALMOV AL,00H PUSH DXMOV DX,SDAOUT DX,ALPOP DX MOV AL,01H PUSH DXMOV DX,SCLOUT DX,ALPOP DXCALL DELAY CALL DELAYMOV AL,01HPUSH DXMOV DX,SDAOUT DX,ALPOP DXCALL DELAYCALL DELAYRETSTOP ENDP;应答:sda低电平时间大于高电平时间ACK PROCMOV DX,I8255B MOV AL,80H ;设置8255为A端口和C端口输出 OUT DX,ALCALL DELAYMOV AL,00HPUSH DXMOV DX,SDAOUT DX,ALPOP DXCALL DELAYMOV AL,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论