改进的51单片机大容量数据存储器的系统扩展.doc_第1页
改进的51单片机大容量数据存储器的系统扩展.doc_第2页
改进的51单片机大容量数据存储器的系统扩展.doc_第3页
改进的51单片机大容量数据存储器的系统扩展.doc_第4页
改进的51单片机大容量数据存储器的系统扩展.doc_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

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

文档简介

浙江师范大学数理与信息工程学院课程设计改进的51单片机大容量数据存储器的系统扩展 数理与信息工程学院课 程 设 计 题 目: 改进的51单片机大容量数据存储器的系 统扩展 专 业: 计算机科学与技术(专升本) 班 级: 计算机专升本班 姓 名: 丁孟玮 学号 05191108 指导老师: 余水宝 成 绩: ( 2006.6 )目 录第1节 引 言3 1.1概述 31.2本设计任务31.3系统主要功能3 第2节 硬件设计42.1系统的硬件设计及功能 42.2CPLD的功能介绍 52.3AT89C52的功能介绍52.4简单大容量数据存储器系统扩展 9第3节 系统软件设计12 第4节 结束语14 参考文献 1414浙江师范大学数理与信息工程学院课程设计新颖60秒旋转电子钟改进的51单片机大容量数据存储器的系统扩展数理与信息工程学院 05计算机专升本 丁孟玮指导教师:余水宝 第1节 引 言1.1 概述在51 单片机应用系统中,有一些特殊的应用场合需要使用大容量的数据存储器。传统的用IO 口线直接控制大容量数据存储器的片选信号的扩展系统存在运行C51编译的程序时容易死机的缺点。文中先介绍一种传统I/O口线直接控制大容量数据存储器,比较简单.后根据实际使用的应用系统,介绍了一种改进的基于CPLD的51系列单片机大容量数据存储器的扩展方法,包括硬件组成和软件处理方法。1.2 本设计任务大容量数据存储器的扩展1.3 系统主要功能MCS-51 单片机系统扩展时,一般使用P0 口作为地址低8位(与数据口分时复用),而P2口作为地址高8位,它共有16根地址总线,最大寻址空间为64KB。但在实际应用中,有一些特殊场合,例如,基于单片机的图像采集传输系统,程控交换机话单的存储等,需要有大于64KB 的数据存储器。在以往的扩展大容量数据存储器的设计中,一般是用单片机的IO口直接控制大容量数据存储器的片选信号来实现,但是这种设计在运行以C51编写的程序(以LARGE 方式编译)时往往会出现系统程序跑飞的问题,尤其是在程序访问大容量数据存储器(如FLASH)的同时系统产生异常(如中断),由于此时由IO 口控制的片选使FLASH 被选中而SRAM 无法被选中,堆栈处理和函数参数的传递无法实现从而导致程序跑飞的现象。文章介绍一种基于CPLD 的大容量数据存储器的扩展系统,避免了上述问题的产生,提高了扩展大容量数据存储器系统的可靠性。该系统MCU 采用89C52,译码逻辑的实现使用了一片EPM7128 CPLD 芯片,系统扩展了一片128K 的SRAM,一片4M 字节的NOR FLASH,以上芯片均为5V 供电。第2节 硬件设计2.1 系统的硬件构成及功能W241024A 是128K 8 位的静态RAM,共需17 根地址线,其A0A7 接经CPLD 锁存输出的A0A7,A8A14 接89C52 的A 8 A 1 4 ,A 1 5 、A 1 6 分别接C P L D 输出的S R A M _ A 1 5 、SRAM_A16;M29F032D 是4M 8 位的NOR 型FLASH,共需22 根地址线。A0A14 的接法与W241024A 的相同,A15A21接经CPLD 锁存输出AL15AL21;所有数据存储器的读写控制线与M C U 相应的读写控制线相连。S R A M 和F L A S H 的片选信号由C P L D 内部译码产生:/ C S _ S R A M 接S R A M 的片选,/ C S _ F L A S H 接F L A S H 的片选。22 CPLD 的功能实现CPLD(Complex Programmed Logical Device)直接翻译就是复杂可编程逻辑器件复杂可编程逻辑器件(CPLD)。 CPLD提供的逻辑资源少得多 - 最高约1万门。 但是,CPLD提供了非常好的可预测性,因此对于关键的控制应用非常理想。 而且如Xilinx CoolRunner系列CPLD器件需要的功耗极低,并且价格低廉,从而使其对于成本敏感的、电池供电的便携式应用(如移动电话和数字手持助理)非常理想。EPM7128是可编程的大规模逻辑器件,为ALTERA公司的MAX7000系列产品,具有高阻抗、电可擦等特点,可用门单元为2500个,管脚间最大延迟为5ns,工作电压为+5V。IDT7205为FIFO型异步读写的存储器芯片,容量为81929比特,存取时间为12ns,有空、半满、满三个标志位,最大功耗为660mW,工作电压为+5V。MSM486DX属于PC104嵌入式系统的5X86系列,为AMD-133MHz CPU,具有COM1、COM2两个串口,一个LPT并口,一个FLOPPY接口,一个IDE接口,一个VGA/LCD接口,一个AT-KEYBOARD 接口,16个中断,额定功率为8W,工作电压为+5V。使用CPLD 器件可以提高系统设计的灵活性,并且可以简化电路设计,节省很多常规电路中的接口器件和I/O 口线。系统将单片机的地址线、各种控制和状态信号均引入CPLD,实现系统的地址译码和部分I/O 控制。系统中C P L D 采用的是MAX7000 系列的EPM7128STC100 10。AL15AL22 为系统锁存出来的高8 位地址,该地址锁存器的地址为:0x7F00;状态缓冲器地址为:0x7F20,通过状态缓冲器可以读取FLASH 的当前状态,判断FLASH 当前状态是忙还是空闲,如果应用系统中还有其它状态信号可以接至该状态缓冲器的输入端。/CS2/CS7 可以用作其他器件的片选。1 2 8 K 的S R A M 被S R A M _ A 1 5 和S R A M _ A 1 6 分成4 个B A N K ,每个B A N K 均为3 2 K ,其中B A N K 0 地址范围是:0x00000x7EFF,当A15 为0 时BANK0 被选中,BANK0 可用来存储用户定义的各种变量,以LARGE 方式编译的C51 用户函数的参数传递也在该区实现,只要设置C51 编译器的片外SRAM 的大小为0x7F00 字节 (32K 256 字节),起止地址为:0x0000。这样当系统在访问外部大容量数据存储器(如4M 的F L A S H )并且系统产生中断时,由于系统在函数调用时自动使A15 为0 ,故此时BANK0 是可用的,这样保证了系统在这种情况下能稳定的运行。由于访问B A N K 1 B A N K 3 时A 1 5 必须为1 ,故BANK1BANK3 的地址范围均为:0x80000xFEFF,通过SRAM_A15 和SRAM_A16 来区分它们是属于哪个BANK 的,访问BANK1BANK3 的前提是AL22 为0 。BANK1BANK3 可用来存储用户数据。当AL22 和A15 均为1 时4M 的FLASH 被选中,FLASH 被AL15AL21 分成了128 页,每页为32K。图2 CPLD的内部结构图23 AT89C52简介89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器和256byte的随机数据存储器,器件采用ATMEL公司高密度非易失性存储技术生产,与标准的51指令系统以8052产品引脚兼容,片内置通用8位中央处理器和FLASH存储单元,功能强大89C52单片机适合于许多较为复杂控制应用场合.主要性能参数:.与MCS-51产品指令和引脚完全兼容.8K字节可重擦写FLASH闪速存储器.1000次擦写周期.全静态操作:0Hz-24 Hz.三级加密程序存储器.256*8字节内部RAM.32个可编程I/O口线.3个16位定时/计数器.8个中断源.可编程串行UART通道.低功耗空闲和掉电模式功能特性概述:AT89C52提供以下标准功能:8K字节FLASH闪存存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两极中断结构,一个全双工串行通信口,片内振荡器及时钟电路.同时,AT89C52可降至0 Hz的静态逻辑操作,并支持两种软件可选的节电工作模式:空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。引脚功能说明vcc:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式8个TTL逻辑门电路,对端口P0写“1”时,可作为 高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低位)和数据复用,在访问期间激活内部上拉电阻。在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时输出一个电流。与AT89C51不同之处,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)HE 输入(P1.1/T2EX)P2口:P2是一个带有内部上拉电阻的双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉倒高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容。FLASH编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口是一组带有内部上拉电阻的双向8位I/O。P3口输出缓冲级可驱动4个TTL逻辑门电路。对P3口写“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O线外,更重要的用途是它的第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行口输出口)P3.2INT0 (外中断0)P3.3INT1(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器选通)此外,P3口还接收一些用于FLASH闪存存储器编程器和程序校验的控制信号。RST:复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALEPROG:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于所村地址的8位字节。 一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外 时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令时,每个机器周期两次有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EAVPP外部访问允许。欲使CPU仅访问外部程序存储器,EA端必须保持低电平。XTAL1:振荡器反向放大的及时内部时钟发生器的输入端。XTAL2:振荡器反向放大的输出端。特殊功能寄存器:在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器。AT89C52除了与AT89C51所有的定时/计数器和定时/计数器外,还增加了一个定时/计数器2。定时/计数器2的控制和状态位位于T2CON T2MOD,寄存器对是定时器2在16位捕捉或16位自动重装方式下捕捉/自动重装载寄存器。中断寄存器:AY89C52有6个中断源,2个中断优先级,IE寄存器控制各中断位,IP寄存器中6个中断源的每一个可定为2个优先级。数据存储器 AT89C52有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器地址是重叠的,也就是高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的。定时器0和定时器1: AT89C52的定时器和定时器1的工作方式与AT89C51相同。定时器2:定时器是一个16位定时/计数器。它既可当定时器使用,也可作为外部时间计数器使用,其工作方式由特殊功能寄存器T2CON的C/T2位选择。定时器2有三种工作方式:捕捉方式,自动重装载方式和波特率发生器方式,工作方式由T2CON的控制位来选择。见表RCLK+TCLKCP/RL2TR2MODE00116-BITAUTO-RELOADO1116BIT-CAPUTURE1X1BAUD RATE ENERATORXX0OFF定时器2由两个8位寄存器TH2和TL2组成,在定时器工作方式中,每个机器周期TL2寄存器的值加1,由于一个机器周期由12个振荡时钟构成,因此,计数速率为振荡频率的1/12。 在计数工作方式时,当T2引脚上外部输入信号产生由1至0下降沿时,寄存器的值加1,在这种方式下,每个机器周期的5SP2期间寄存器加1。由于识别1至0的跳变需要2个机器周期,因此,最高计数速率为振荡的1/24。为确保采样的正确性, 要求输入的电平在此变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。 图AT89C52框图2 基本单片机系统大容量数据存储器系统扩展MCS-51单片机系统扩展时,一般使用P0口作为地址低8位(与数据口分时复用),而P2口作为地址高8位,它共有16根地址总线,寻址空间为64KB。但在实际应用中,有一些特殊场合,例如,语音信号的采集,程控交换机话单的存储,地形图信号的收取等,需要有大于64KB的数据存储器。文章根据作者实际使用的应用系统,介绍一种大容量数据存储器的扩展系统。该系统主机采用芯片,扩展了三片62256,共96KB的动态数据存储器。系统的硬件组成:62256是32K8位的数据存储器,共有15根地址线,扩展96KB数据存储器的硬件连接原理如图1所示:为了给系统进行其它外设的扩展,占用了系统14根地址线。三片62256的第15根地址线都与8031的I/O口P1.0相连,而62256(1)的片选端与P1.1相连,62256(2)的片选端与P1.2相连,62256(2)的片选端与P1.3相连,这样的连接方式使96KB的存储空间分为6页,每片62256都占用2页存储空间。各片地的地址分配如下:62256(1):P1.0=0 P1.1=0 P1.2=1 P1.3=1 0000H3FFFHP1.0=1 P1.1=0 P1.2=1 P1.3=1 0000H3FFFH62256(2):P1.0=0 P1.1=1 P1.2=0 P1.3=1 0000H3FFFHP1.0=1 P1.1=1 P1.2=0 P1.3=1 0000H3FFFH62256(3):P1.0=0 P1.1=1 P1.2=1 P1.3=0 0000H3FFFHP1.0=1 P1.1=1 P1.2=1 P1.3=0 0000H3FFFH软件处理方法: 当访问数据存储器时,采用分页查找的方法,首取找到要访问的页数,再打开该页,在该页内查找某一单元。软件上打开某页都事先编好子程序。要访问96KB的存储空间,即地址范围为00000H-17FFFH,显然16位地址寄存器DPTR是无法寄存的,这里将地址装入PAM的起始三个连续单元中,即62256(1)起始三个单元中的内容(即要访问的某单元地址),将该数据除以4000H,得商即为该单元的页数,余数即为该页中的地址,然后利用MCS-51指令中的散转指令打开页,访问页中的单元。具体软件实现见下面的程序清单。#BUF EQU #30HCLRP1.0CLRP1.1SETBP1.2SETBP1.3MOVDPTR,#0MOVR7,#3MOVR0,#20HRDPAGE:MOVXA,DPTRMOVR0,AINCR0DJNZR7,RDPAGELCALLFPAGEMOVB,#3MULABMOVDPTR,#TABLEJMPA+DPTRFPAGE:MOVA,21HANLA,0F0HADDA,20HSWAPAMOVB,#1DIVABPUSHACCMOVA,21HANLA,0FHXCHA,BMOV21H,APOPACCRETTABLE:LJMPPAGE1LJMPPAGE2LJMPPAGE2LJMPPAGE4LJMPPAGE5LJMPPAGE6CLRP1.1SETBP1.2SETBP1.3LJMPWRRAMPAGE3:CLRP1.0SETBP1.1CLRP1.2SETBP1.3LJMPWRRAMPAGE:SETBP1.1SETBP1.2CLRP1.3LJMPWRRAMWRRAM:MOVDPH,21HMOVR0,#BUFMOVA,R0MOVXDPTR,A第3节 系统的软件设计31 系统主程序设计如用KEIL 编译C51 程序时,首先设置项目的编译模式为L A R G E 模式,并设置片外X R A M 的相关参数为:S T A R T :0x0000 ,SIZE:0x7F00。访问BANK0 时无需编写子程序,系统可以直接访问。访问S R A M 的B A N K 1 B A N K 3 步骤为:锁存高8 位地址使AL22 为0 ,设置BANK 值(要访问SRAM的绝对物理地址除于3 2 K ,商为B A N K 值,余数为B A N K 内的偏移地址) 在0x80000xFEFF 地址范围内操作SRAM(A15=1)Write_Sram_Bank123 函数的功能为写一个字节数据至片外SRAM 的BANK1BANK3,Read_Sram_Bank123 函数的功能是从SRAM 的BANK1BANK3 读一个字节数据。相关C 5 1 示例代码如下:void Write_Sram_Bank123(unsigned long address,unsigned char val)unsigned char bank;unsigned int addr_bank;bank = address / 0x8000;/ 商为BANK 值。if (bank = 1 ) & (bank = 1 ) & (bank = 3)addr_bank = address % 0x8000;/ 余数为B A N K 内地址。XBYTE 0x7f00 = bank; / AL22=0,设置BANK值。return XBYTE0x8000+ addr_bank; / 读S R A M 。else return 0xff;访问FLASH 的步骤如下:锁存高8 位地址使AL22 为1,同时设置要访问的7 位页码值(要访问FLASH 的绝对物理地址除于3 2 K ,商为页码值,余数为页内的偏移地址) 在0 x 8 0 0 0 0 x F E F F 地址范围内操作F L A S H (A 1 5 = 1 )。Write_Flash 函数实现了往4M FLASH 写一个字节的功能;Read_Flash 函数的功能是在FLASH 里读取一个字节内容。相关C 5 1 示例代码如下:void Write_Flash(unsigned long address,unsignedchar val)unsigned char data page,unsi

温馨提示

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

最新文档

评论

0/150

提交评论