




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、沈阳理工大学课程设计专用纸第1章设计目的1第2章设计思路22.1总体说明22.2硬件设计22.3系统整体硬件框图5第3章关键技术62.1 ARM9处理器62.2 嵌入式 C语言开发技术 82.3 ADS开发环境82.4题目针对的关键技术 11第4章程序流程13第5章主要源代码15第6章运行结果及结论19参考文献20沈阳理工大学课程设计专用纸NO.2第1章设计目的1. 学习模拟输入输出接口的原理2. 掌握接口程序实现的基本方法步熟悉掌握输3. 掌握简单并行输入输出接口的工作原理及使用方法,进 入输出单元的功能和使用。第2章设计思路2.1总体说明本课程设计为模拟输入输出接口的实验, 使用一片缓冲芯
2、片74LS244来把CPU 外面的输入数据写入 CPU的并行总线上,之后,并行总线上的数据被一片数据锁 存芯片74LS273保留,CPUS过选中锁存芯片,并读取预先设给锁存器地址内的内 容,就可以把数据读出,来确定外面的数据的高低。本实验的输入是用8个带锁的按键的按下和未按下两种工作状态来表示输入接口的高低状态(每个按键代表1个数字位,按键均不按下,代表数字量为 255,全按下为0,每个按键的都是2的 权值,在不按下时,最靠近键盘的按键代表 1,之后依次是2; 4; 8; 16; 32; 64; 128。按下时均代表0),然后,再通过8个LED灯亮和灭两种工作状态,以及 LCD 上用数据值来清
3、楚的反映各状态的输出显示,从而完成模拟的输入输出接口的实 现。2.2硬件设计该程序在硬件上需要74LS244, 74LS273等接口芯片的支持。(1)74LS244是一种三态输出的八缓冲器和线驱动器,该芯片的引脚图和功 能表如下所示。阮匚1 220-Vcc匚219二1弧8YI318二I1Y2A 1彳17二1 8A7Y 15161 2Y3A 16151 7A6Y 714_1 34A 18131他5丫 912I4YGND1011一 5A图2.1 74LS244管脚分配从图可见,该缓冲器有8个输入端和输入输出EN AlL LLL HHH XZHg Efai 317L -低电平X-任意Z -高阻74L
4、S244 功能8个输出端,从表中可见74LS244的功能为:当使能端EN为低电平时,输出等于输入;当使能端 EN为高电平,输入X 为任意值(即不论为“ H还是为“ L”都一样)时,输出为高阻态。经74LS244缓 冲后,输入信号被驱动,输出信号的驱动能力加大了。沈阳理工大学课程设计专用纸N0.1174LS244缓冲器主要用于三态输出的存储地址驱动器、时钟驱动器和总线定向接收器和定向发送器等。(2)74LS273是一种8D锁存器,具有三态驱动输出,其逻辑电路及引脚图如 图所示。CR 11匚20Vcc匚219SQ1D|_3188D2D|_4177D输入输出2Q匸5167QCRCPDQ3Q匚6156
5、QLX冥L3D-7146D+HH4DI-8135Dn140 19125QHfLLGNDf1011CPHLXQo图 2.2 74LS273管脚分配74LS273功能表由图可见,该锁存器由8个D门组成,有8个输入端1D 8D,八个输出端1Q 8Q使能端有效时,将D端数据打入锁存器中D门,当输出允许端有效时,将锁存器中锁存的数据送到输出端 Q。表中H为高电平,L为低电平,Qo为原状态,Z为高阻态,X表示任意值(即 不论为“ H还是为“ L”都一样)。从表中可见74LS273的功能为:当使能端:为高电平时,同时输出允许端 为低 电平,则输出Q等于输入D;当使能端为低电平,而输出允许端 也为低电平时,
6、则输出Q=Qo原状态,即使能端:由高电平变为低电平前,输出端 Q的状态,这 就是“锁存”的意义)。74LS273锁存器主要用于锁存地址信息、 数据信息以及DMA 页面地址信息等。(3)通常是采用TTL或CMO电路锁存器、三态门等作为扩展芯片,通过 P0 口来实现扩展的简单I/O 口扩展方案。它具有电路简单、成本低、配置灵活的特 点。本实验采用74LS244作为扩展输入、74LS273作为扩展输出的简单I/O 口扩展。 扩展电路图如下所示:WRm -RDo 1 .J - 4 7- ddddddd d 務f-lff o 1 2 3 专 $ i7 QQQQQQQ QHsuso lil* J 4 5
7、i 7:ddddddddxo. 1 3 - 4 7 QQQQQQQ QTTTil 5x+5Vo o匸 一-& rKl尹-L亠图2.3简单I/O 口扩展图在上述电路中采用的芯片为 TTL电路74LS244 74LS273其中74LS244为8 缓冲线驱动器(三态输出),/G1、/G2为低电平有效的使能端,当二者之一为高 电平时,输出为三态。74LS273为8D触发器,/CLR为低电平有效的清除端,当/CLR=O 时,输出全为0且与其他输入端无关;CP端是时钟信号,当CP由低电平向高电平 跳变时刻,D端输入数据传送到Q输出端。P0 口作为双向8位数据线,既能够从 74LS244输入数据,又能够从7
8、4LS273输出数据。输入控制信号由 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.
9、0=0,其它地址位无关)。但是由于 分别由/RD和/WR控制,两个信号不可能同时为0,所以逻辑上二者不会发生冲突。2.3系统整体硬件框图Data busCPUCS74LS273CS74LS24408个按键个LED灯图2.4系统整体硬件框图第3章关键技术2.1 ARM9处理器(1) ARM微处理器结构RISC体系结构:RISC结构优先选取使用频最高的简单指令,避免复杂指令 RISC体系结构应具有如下特点: 采用固定长度的指令格式,指令归整、简单、基本寻址方式有23种。 使用单周期指令,便于流水线操作执行。 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令 可 以访问存储器,以提
10、高指令的执行效率。除此以外,ARh体系结构还采用了一些特别的技术, 在保证高性能的前提下尽量缩 小芯片的面积,并降低功耗: 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行 效率。 可用加载/存储指令批量传输数据,以提高数据的传输效率。 可在一条数据处理指令中同时完成逻辑处理和移位处理。 在循环处理中使用地址的自动增减来提高运行效率。(2) ARM微处理器的寄存器结构ARM处理器共有37个寄存器,被分为若干个组(BANK,这些寄存器包括: 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。 6个状态寄存器,用以标识 CPU勺工作状态及程序的运行状态,均为 32
11、位, 目前只使用了其中的一部分。同时,ARM4理器又有7种不同的处理器模式,在每一种处理器模式下均有 一组相应的寄存器与 之对应。即在任意一种处理器模式下,可访问的寄存器包括 15个通用寄存器(R(R14、一至二个状态寄存器和程序计数器。在所有的寄存 器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是 在不同的处理器模式下有不同的物理寄存器。(3) ARM微处理器的指令结构ARM微处理器的在较新的体系结构中支持两种指令集:ARMt令集和Thumb旨 令集。其 中,ARM指令为32位的长度,Thumb旨令为16位长度。Thumb指令集为 ARM旨令集的功能子集,但与等价的 A
12、RM弋码相比较,可节省30%40%以上的 存储空间,同时具备32位代码的所有优点。(4)ARM微处理器的工作状态从编程的角度看,ARM一般有两种工作状态:ARM犬态和Thumb犬态。并可在 两个状态之间随时切换。ARM状态下,大多数指令都是有条件执行的;而 Thumb犬态下,只有分支指 令是有条件执行的。(5)ARM体系结构的存储器结构ARM体系结构可以用两种方式存储:大端格式和小端格式。最大寻址空间为 4GB( 232 字节)。(6)指令长度和数据类型ARM处理器的指令长度可以是 32位(ARM犬态下),也可以是16位(Thumb犬 态下)。ARM处理器支持字节(8位)、半字(16位)、字(
13、32位)三种数据类型。 其中字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低 位为0)。(7)处理器模式ARMt处理器支持7种运行模式: 用户模式(usr) 快速中断模式(fiq ) 外部中断模式(irq ) 管理模式(svc) 数据访问中止模式(abt) 系统模式(sys) 未定义指令中止模式(und)(8)ARM*系结构所支持的异常类型复位、未定义指令、软件中断、指令预取中止、数据中止、IRQ (外部中断请求)、FIQ (快速中断请求)。(9)对中断的响应: 将下一条指令的地址存入相应连接寄存器 LR,以便程序在处理异常返回时 能从正确的位置重新开始执行。若异常是从AR
14、M犬态进入,LR寄存器中保存的是 下一条指令的地址(当前PC+ 4或PC+ 8,与异常的类型有关);若异常是从Thumb 状态进入,则在LR中保存当前PC的偏移量。 将CPSF复制到相应的SPSR 根据异常的类型,强制转换 CPSR勺运行模式位。 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异 常处理程序处。(10) 各类异常的具体描述:FIQ异常是为了支持数据传输或者通道处理而设计的。IRQ属于正常的中断请求。ABORTS味着对存储器的访问失败2.2 嵌入式C语言开发技术嵌入式C语言程序设计是利用基本的C语言知识,面向嵌入式工程实际应用 进行程序设计。它首先是 C语言程序设
15、计,因此必须符合 C语言基本语法,只是 它是面向嵌入式的应用而设计的程序。函数是C语言程序设计的核心。一个较大的 C语言程序一般是由一个主函数 和若干个子函数组成,每个函数完成一个特定的功能。主函数可以调用其他函数, 其他函数之间也可以相互调用。通过函数间的相互调用可以大大减少编程的工作 量。嵌入式开发出来的应用程序最终不是要运行在PC上的,而是目标板。所以嵌入式开发就一定会有交叉编译这个环节。所基于的硬件平台包括两部分:(1) 以通用处理器为中心的协议处理模块,用于网络控制协议的处理;(2) 以数字信号处理器(DSP为中心的信号处理模块,用于调制、解调和数 / 模信号转换。2.3 ADS 开
16、发环境ADS全称为ARM Developer Suite 是ARM公司推出的新一代 ARM集成开发工 具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.Q在ADS工具诞生之前,一直使用的是 ARM SDTT具,目前ARM SDTT具已经 慢慢淘汰。ADS除了可以安装在 Windows NT4 Windows 2000 Windows 98和 Windows 95操作系统下,还支持 Windows XP和 Windows Me操作系统。ADS软件组成ADS由命令行开发工具、GUT( Graphics User In terface,图形用户界面) 开发环境(Code War
17、rior和AXD、实用程序和支持软件组成。(一) 命令行开发工具命令行开发工具在实际应用中比较广泛,用它最大的好处就是可以将许多编 译命令写在一个脚本文件中,然后只执行该脚本文件就可以让工具自动完成所有 编译的工作。命令行中常用的命令如下 armccarmcc 是 ARM C编译器,这个编译器通过了 Plum Hall C Validation Suite为ANSI C的一致性测试。Armcc用于将用ANSI C编写的程序编译成32为ARMlt 令代码。在命令控制台环境下,输入以下命令:armcc - help将可以查看armcc的语法格式以及最常用的一些操作选项。armcc最基本的用法为:a
18、rmccopti ons file1 file2file n其中oprtons是编译器所需要的选项,file1 ,file2filen是相关的文件 名。(2)armcpp 是ARM C+编译器,它将ISO C+或EC+編译成32位ARM旨令代 码。该编译器的命令选项和 armcc的选项基本一样。(3) tccTcc 是 Thumb C编译器,该编译器通过了 Plum Hall C Validation Suite 为 ANSI一致性的测试。Tcc将ANSI C源代码编译成16位的Thumb指令代码,同时 它的编译选项和用法类似armcc.(4) tcppTcpp是Thumb C+編译器,它将I
19、SO C+和 EC+源码编译成16位Thumb指令代码,同时它的编译选项和用法类似 armcc。(5) armasmArmasm 是ARM和 Thumb的汇编器,它对用ARM匚编语言和Thumb汇编语言写 的源代码进行汇编。在命令行输入:armasm -help将会看到armasm汇编器的用法 以及它的编译选项。armasmoptions sourcefile objectfilearmasmoptions -o objectfile sourcefile其中 options 为它的选项(6) armlink沈阳理工大学课程设计专用纸N0.21Armlink是ARMS接器,该命令既可以编译得到
20、的一个或多个目标文件和相关的一个或多个库文件进行连接,生成一个可执行文件,也可以将多个目标文件部 分连接成一个目标文件,以供进一步的连接。ARMS接器生成的是ELF格式的可执 行映像文件。Armlink的一般用法如下:armli nk opri on-list in put-file-list其中,opti on-list是一个区分大小写的选项表;in put-file-list是一系列库和对象文件。(7) armsdArmsd是ARM和Thumb勺符号调试器,它能够进行源码即的程序调试。用户 可以在用C或汇编语言写的代码中进行单步调试,设置断点,查看变量值和内存 单元内容。Armsd的一般用
21、法如下:armsdoprio ns其中,options是一系列调试选项;imagefile 定义一个AIF或ELF文件的名 字;arguments是呗imagefile 接受的命令行参数。(二) GUI开发环境ADS GUI开发环境包含 Code Warrior和AXD两种,其中Code Warrior是集成 开发工具,而ACD是调试工具。Code Warrior for ARM 是一套完整的集成开发工具,充分发挥了ARM RISE的优势,使产品开发人员哪个很好的应用尖端的片上系统技术。该工具是专为基 于ARMRISC的处理器而设计的,它可加速并简化嵌入式开发过程中的每一个环节, 使得开发人员
22、只需要通过一个集成软件开发环境就能研制出ARh产品,在整个开发周期中开发人员无需离开 Code Warrior开发环境,因此节省了在操作工具上花 的时间,使得开发人员有更多的精力投入到代码编写上来,Code Warrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面。用户可以实 验ADS的Code Warrior IDE为ARM和 Thumb处理器开发用C、C+或 ARM匚编演绎 编写的程序代码。Code Warrior IDE缩短了用户开发项目代码的周期,主要是由 于:一是签名的项目管理功能;二是子函数的代码导航功能,使得用户能迅速找 到程序中的子函数。AXD (AR
23、WXtended Debugger),即ARMT展调试器。调试器本身是一个软件, 以后通过这个软件使用调试代理可以对包含有调试信息的,正在运行的可执行代 码进行比如变量的查看,断点的控制等调试操作。调试代理既不是被调试的程序, 也不是调试器。(三) 实用程序ADS提供了以下的实用工具来配合前面介绍的命令行开发工具的使用。(1) Flash downloader是用于把二进制映像文件下载到 ARM开发板上的Flash 存储器的工具。(2) fromELF是ARM映像文件转换工具。该命令将 ELF格式的文件作为输入 文件,将该格式转换玩各种输出格式的文件(3) armar,ARM库函数生成器将一系
24、列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个连接器以代替几个ELF文件。(四) 支持的软件ADS为用户提供ARMulator软件,使用户可以在软件仿真的环境小或者在基于ARM勺硬件环境调试用户应用程序。ARMulator是一个ARM旨令集仿真器,集成 在ARM勺调试器AXD中,它提供对ARM处理器的指令集的仿真,为 ARM和Thumb 提供精确的模拟。用户可以在硬件尚未做好的情况下,开发程序代码。2.4 题目针对的关键技术(1) LCD的显示原理:LCD俗称液晶,LCD显示器的基本原理就是通过给不同 的液晶单元供电,控制其光线的通过与否,从而达到显示目的。在JXA
25、RM9-241冲以图形方式显示之前必须对 LCD控制器进行初始化,其过程 包括: 初始化LCD端 口,将其设置为LCD驱动控制端口; 申请显示缓冲区; 初始化LCD控制寄存器,包括设置LCD分辨率、扫描频率、显示缓冲区等。 详细的LCD初始化代码如下所示:Lcd_Port_l ni t();Lcd_I ni t(MODE_CSTN_8BIT);Glibni t(MODE_CSTN_8BIT);Lcd_Cst nOnO ff(1);(2) GUI的图形显示程序API文件,其中包括:填充矩形函数 void Fill_Rect (int x0, int yO, U16 x1, U16 y1)设定颜色
26、函数 void Set_Color(int color)等函填充矩形函数:void LCD_FillRect(U16 x0, U16 y0, U16 x1, U16 y1)(3) GUI的字符显示程序文件,其中包括:设定字体函数 const Set_Font(const GUI_FONT*pNewFont);显示字符串函数 void DispString(const U8 *s)得到单个字符的X方向长度U16 GUI_GetCharDistX(U16 c)等函数串口的驱动文件,其中包括:串 口初始化函数 Uart_Init(int mclk,int baud,char port)选择串口通道函
27、数 void Uart_Select(int ch)等待发送转换寄存器空函数Uart_TxEmpty(i nt port)等函数。第4章程序流程设计实验系统的主程序入口,之后将主程序中用到的各函数按功能分类,并保存到相应的文件中具体地实现,函数彼此之间反复的调用。实现本实验功能的主要C程序如下:whilefor(i=0;i7&1;d1 = rrr6&1;d2 = rrr5&1;d3 = rrr4&1;d4 = rrr3&1;d5 = rrr2&1;d6 = rrr1 &1;d7 = rrr0&1;data = (d77|d66|d55|d44|d33|d22|d11|d0);(*(volati
28、le unsigned char*)0x20000000) = data;/CPU 把总线值写入锁存器 for(i=0;i7&1;d1 = rrr6&1;d2 = rrr5&1;d3 = rrr4&1;d4 = rrr3&1;d5 = rrr2&1;d6 = rrr1 &1;d7 = rrr0&1;data = (d7vv7|d6vv6|d5v=1;显示16进制函数void GUI_DispHexAt(U32 v, I16P x, I16P y, U8 Len) char ac9;char* s = ac;GUI_AddHex(v, Le n, &s);Disp_Stri ng(ac, x,
29、y); _static con st char acHex16 = O, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F ;设定字体函数void Set_Fo nt( GUI_FONT* pFo nt)if (pFo nt)GUI_Co ntext.pAFo nt = pFo nt; _显示字符串函数void DispStri ng(c onst I8 *s)I16xOrg;U8Fo ntSizeY;if (!s)return;Fo ntSizeY = GUI_Co ntext.pAFo nt-YDist;xOrg = GUI_Co ntext.Disp
30、PosX;for (; *s; s+)GUI_RECT r;U16 Lin eLe n= GUI_GetL in eLe n(s,0x7fff);U16 xLi neSize = GUI_GetLi neDistX(s, Li neLe n);r.x0 = GUI_Co ntext.DispPosX;r.x1 = r.x0 + xLi neSize-1;r.y0 = GUI_Co ntext.DispPosY;r.y1 = r.y0 + Fo ntSizeY-1;GUI_DispL in e(s, Lin eLe n, &r);GUI_Co ntext.DispPosY = r.y0;s += Lin eLe n;if (*s=n) | (*s=r)GUI_Co ntext.D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训知识成长课件
- 中小学2025年《秋季学期开学通知》及致家长的一封信(4份)
- 培训的核心知识是课件
- 培训班销售技巧知识课件
- 环氧树脂测试培训课件
- 培训消防知识感想课件
- 二零二五年瓷砖装修工程承包合同
- 二零二五年度农产品深加工合同范本加工集锦
- 二零二五年度民房产权交易中介服务合同
- 2025版旅游咨询服务封面合同图片设计及制作合同
- DL-T-5161.13-2018电气装置安装工程质量检验及评定规程第13部分:电力变流设备施工质量检验
- 安全顾问聘请协议
- 糖尿病酮症酸中毒的护理课件
- 设备材料进场报验单
- 班组长计划管理能力考试题库-上(选择题)
- (完整版)《机械制造工艺基础》教案
- 小学四年级数学口算题(每页60道直接打印).文档
- 诱思探究理论
- 铣床日常点检保养记录表
- 农产品贮藏与加工教案
- 04某污水处理厂630kW柔性支架光伏发电项目建议书
评论
0/150
提交评论