沈阳理工大学课程设计专用纸目录第1章设计目的.....................................................1第2章设计思路.....................................................22.1总体说明.......................................................22.2硬件设计.......................................................22.3系统整体硬件框图...............................................5第3章关键技术.....................................................62.1ARM9处理器...................................................62.2嵌入式C语言开发技术...........................................82.3ADS开发环境..................................................82.4题目针对的关键技术............................................11第4章程序流程....................................................13第5章主要源代码..................................................15第6章运行结果及结论..............................................19参考文献...........................................................20沈阳理工大学课程设计专用纸NO.1第1章设计目的1.学习模拟输入输出接口的原理2.掌握接口程序实现的基本方法3.掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能和使用。沈阳理工大学课程设计专用纸NO.2第2章设计思路2.1总体说明本课程设计为模拟输入输出接口的实验,使用一片缓冲芯片74LS244来把CPU外面的输入数据写入CPU的并行总线上,之后,并行总线上的数据被一片数据锁存芯片74LS273保留,CPU通过选中锁存芯片,并读取预先设给锁存器地址内的内容,就可以把数据读出,来确定外面的数据的高低。本实验的输入是用8个带锁的按键的按下和未按下两种工作状态来表示输入接口的高低状态(每个按键代表1个数字位,按键均不按下,代表数字量为255,全按下为0,每个按键的都是2的权值,在不按下时,最靠近键盘的按键代表1,之后依次是2;4;8;16;32;64;128。按下时均代表0),然后,再通过8个LED灯亮和灭两种工作状态,以及LCD上用数据值来清楚的反映各状态的输出显示,从而完成模拟的输入输出接口的实现。2.2硬件设计该程序在硬件上需要74LS244,74LS273等接口芯片的支持。(1)74LS244是一种三态输出的八缓冲器和线驱动器,该芯片的引脚图和功能表如下所示。图2.174LS244管脚分配74LS244功能从图可见,该缓冲器有8个输入端和8个输出端,从表中可见74LS244的功能为:当使能端EN为低电平时,输出等于输入;当使能端EN为高电平,输入X为任意值(即不论为“H”还是为“L”都一样)时,输出为高阻态。经74LS244缓冲后,输入信号被驱动,输出信号的驱动能力加大了。沈阳理工大学课程设计专用纸NO.374LS244缓冲器主要用于三态输出的存储地址驱动器、时钟驱动器和总线定向接收器和定向发送器等。(2)74LS273是一种8D锁存器,具有三态驱动输出,其逻辑电路及引脚图如图所示。图2.274LS273管脚分配74LS273功能表由图可见,该锁存器由8个D门组成,有8个输入端1D一8D,八个输出端1Q一8Q,使能端有效时,将D端数据打入锁存器中D门,当输出允许端有效时,将锁存器中锁存的数据送到输出端Q。表中H为高电平,L为低电平,Q0为原状态,Z为高阻态,X表示任意值(即不论为“H”还是为“L”都一样)。从表中可见74LS273的功能为:当使能端为高电平时,同时输出允许端为低电平,则输出Q等于输入D;当使能端为低电平,而输出允许端也为低电平时,则输出Q=Qo(原状态,即使能端由高电平变为低电平前,输出端Q的状态,这就是“锁存”的意义)。74LS273锁存器主要用于锁存地址信息、数据信息以及DMA页面地址信息等。(3)通常是采用TTL或CMOS电路锁存器、三态门等作为扩展芯片,通过P0口来实现扩展的简单I/O口扩展方案。它具有电路简单、成本低、配置灵活的特点。本实验采用74LS244作为扩展输入、74LS273作为扩展输出的简单I/O口扩展。扩展电路图如下所示:沈阳理工大学课程设计专用纸NO.4图2.3简单I/O口扩展图在上述电路中采用的芯片为TTL电路74LS244、74LS273。其中74LS244为8缓冲线驱动器(三态输出),/G1、/G2为低电平有效的使能端,当二者之一为高电平时,输出为三态。74LS273为8D触发器,/CLR为低电平有效的清除端,当/CLR=0时,输出全为0且与其他输入端无关;CP端是时钟信号,当CP由低电平向高电平跳变时刻,D端输入数据传送到Q输出端。P0口作为双向8位数据线,既能够从74LS244输入数据,又能够从74LS273输出数据。输入控制信号由P2.0和/RD相“或”后形成。当二者都为0时,244的控制端/G有效,选通74LS244,外部的信息输入到P0数据总线上。当与244相连的按键都没有按下时,输入全为1,若按下某键,则所在线输入为0。输出控制信号输入控制信号由P2.0和/WR相“或”后形成。当二者都为0后,74LS273的控制端有效,选通74LS273,P0上的数据锁存到273的输出端,控制发光二极管LED,当某线输出为0时,相应的LED发光。因为74LS244和74LS273都是在P2.0为0时被选通的,所以二者的口地址都为FEFFH(这个地址不是唯一的,只要保证P2.0=0,其它地址位无关)。但是由于分别由/RD和/WR控制,两个信号不可能同时为0,所以逻辑上二者不会发生冲突。沈阳理工大学课程设计专用纸NO.52.3系统整体硬件框图Data_bus—8个按键8个LED灯图2.4系统整体硬件框图CPU74LS244CS74LS273CS0123456701234567沈阳理工大学课程设计专用纸NO.6第3章关键技术2.1ARM9处理器(1)ARM微处理器结构RISC体系结构:RISC结构优先选取使用频最高的简单指令,避免复杂指令RISC体系结构应具有如下特点:①采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。②使用单周期指令,便于流水线操作执行。③大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:④所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。⑤可用加载/存储指令批量传输数据,以提高数据的传输效率。⑥可在一条数据处理指令中同时完成逻辑处理和移位处理。⑦在循环处理中使用地址的自动增减来提高运行效率。(2)ARM微处理器的寄存器结构ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:①31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。②6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。同时,ARM处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0~R14)、一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。(3)ARM微处理器的指令结构ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的沈阳理工大学课程设计专用纸NO.7存储空间,同时具备32位代码的所有优点。(4)ARM微处理器的工作状态从编程的角度看,ARM一般有两种工作状态:ARM状态和Thumb状态。并可在两个状态之间随时切换。ARM状态下,大多数指令都是有条件执行的;而Thumb状态下,只有分支指令是有条件执行的。(5)ARM体系结构的存储器结构ARM体系结构可以用两种方式存储:大端格式和小端格式。最大寻址空间为4GB(232字节)。(6)指令长度和数据类型ARM处理器的指令长度可以是32位(ARM状态下),也可以是16位(Thumb状态下)。ARM处理器支持字节(8位)、半字(16位)、字(32位)三种数据类型。其中字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。(7)处理器模式ARM微处理器支持7种运行模式:①用户模式(usr)②快速中断模式(fiq)③外部中断模式(irq)④管理模式(svc)⑤数据访问中止模式(abt)⑥系统模式(sys)⑦未定义指令中止模式(und)(8)ARM体系结构所支持的异常类型复位、未定义指令、软件中断、指令预取中止、数据中止、IRQ(外部中断请求)、FIQ(快速中断请求)。(9)对中断的响应:①将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR中保存当前PC的偏移量。②将CPSR复制到相应的SPSR。沈阳理工大学课程设计专用纸NO.8③根据异常的类型,强制转换CPSR的运行模式位。④强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。(10)各类异常的具体描述:FIQ异常是为了支持数据传输或者通道处理而设计的。IRQ属于正常的中断请求。ABORT意味着对存储器的访问失败2.2嵌入式C语言开发技术嵌入式C语言程序设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。它首先是C语言程序设计,因此必须符合C语言基本语法,只是它是面向嵌入式的应用而设计的程序。函数是C语言程序设计的核心。一个较大的C语言程序一般是由一个主函数和若干个子函数组成,每个函数完成一个特定的功能。主函数可以调用其他函数,其他函数之间也可以相互调用。通过函数间的相互调用可以大大减少编程的工作量。嵌入式开发出来的应用程序最终不是要运行在PC上的,而是目标板。所以嵌入式开发就一定会有交叉编译这个环节。所基于的硬件平台包括两部分:(1)以通用处理器为中心的协议处理模块,用于网络控制协议的处理;(2)以数字信号处理器(DSP)为中心的信号处理模块,用于调制、解调和数/模信号转换。2.3ADS开发环境ADS全称为ARMDeveloperSuite是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。在ADS工具诞生之前,一直使用的是ARMSDT工具,目前ARMSDT工具已经慢慢淘汰。ADS除了可以安装在WindowsNT4、Windows2000、Windows98和Windows95操作系统下,还支持WindowsXP和