1、 1. 通过 PA 口控制 PB 口,PA 口作为输入口与开关 K0K7 相连,PB 口作为输出口与小灯 L0L7 相连。设计硬件电路,且编程控制,在拨动开关时控制小灯的亮灭。ORG 0000HLJMP MAINORG 0770HMAIN: MOV DPTR,#OFF2BHMOV A, # 90HMOVX DPTR, ALOOP1: MOV DPTR,#OFF28HMOVX A ,DPTRINC DPTR MOVX DPTR,ASJMP LOOP1END 例题 用 6264(8K8 位)给 8051 单片机的外围扩展 8K 的片外数据存储器,画出与单片机相连地址线、数据线和控制线,并注明信号名
2、称。例题 给 8051 单片机的外围扩展一片 16K8 位片外程序存储器,画出与单片机相连地址线、数据线和控制线,并注明信号名称。 LED 显示器有静态显示和动态显示两种方式,显示原理是什么?静态显示就是在同一时刻只显示一种字符,或者说被显示的字符在同一时刻是稳定不变的。其显示方法比较简单,只要将显示段码送至段码口,并把位控字送至位控口即可。动态显示是同一时刻只有被选通位的数码管能显示相应的字符,而其他所有位都是熄灭的。利用人眼对视觉的残留效应,采用动态扫描显示的方法,逐个循环的点亮各位数码管,每位显示 1ms 左右。使人感觉就好像在同时显示不同的字符一样。LED 数码显示器有两种连接方法共阳
3、极接法或共阴极接法常用键盘接口分为独立式键盘接口和行列式键盘接口。一般按键较少时采用独立式键盘,在按键较多时采用矩阵式键盘。他们的工作原理是什么?独立式键盘是指用 I/O 口线构成的单个键盘电路。每个独立式键盘单独占有一根 I/O口线,每根 I/O 口线的工作状态不会影响其他 I/O 线的工作状态。在独立式按键电路中,按键输入一般采用低电平有效,上拉电阻保证了按键断开时,I/O 口线有确定的高电平无按键按下时,常态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平亦为高。消抖和按键释放怎么理解?在第一次检测到有
4、按键按下时,该键所对应的行线为低点平,之行一段延时 10ms 的子程序后,确认该行线电平是否为低电平,如果仍为低电平,则认为该行确实有按键按下。通常在检测到一次有效的按键操作后,并不立即执行该键的功能程序,而是继续检测该键是否被释放,当检测到该键被释放后立即执行该键的功能程序,这样就可以保证一次按键操作,只执行一次键功能程序。 A/D 转换是把连续的模拟电信号转换成时间和数值离散的数字信号的过程。 A/D 转换过程主要包括采样 、量化和编码。 如当满量程电压为 5V,采用 10 位 A/D 转换器的量化间隔、绝对量化误差、相对量化误差分别为:D/A 转换器与 A/D 转换器的功能是什么?各在什
5、么场合下使用?A/D 转换是把连续的模拟电信号转换成时间和数值连续的数字信号的过程实现转换的器件称为模数转换器低速 A/D 转换器件:双积分型中速 A/D 转换器件:逐次逼近型高速 A/D 转换器件:并行比较型逐次逼近型是目前使用最广泛的一种,其性价比适中,适合一般的应用;双积分型具有转换精度高、抗干扰性好的优点,但是转换速度慢,常用于各类仪器仪表中;并行式是一种通过编码技术实现高速 A/D 转换的器件,其速度可以达到几十 ns,但是价格很高。 D/A 转换的目的是把输入的数字信号转换成与此数字量大小成正比的模拟量D/A 转换器的主要性能指标有哪些?设某 DAC 有二进制 12 位,满量程输出
6、电压为 5V,请问它的分辨率是多少? 主要性能指标:D/A 建立时间、分辨率、 D/A 转化精度 分辨率为 5/4096 判断下列说法是否正确? (1) “转换速度”这一指标仅适于 A/D 转换器,D/A 转换其可以忽略不计转换时间。(w) (2) ADC0809 可以利用“ 转换结束 ”信号 EOC 向 8051 单片机发出中断请求。(r) (3) 输出模拟量的最小变化量称为 A/D 转换器的分辨率。 (w) (4) 输出的数字量变化一个相邻的值所对应的输入模拟量的变化称为 D/A 转换器的分辨率。 (w) 请分析 A/D 转换器产生量化误差的原因,具有 8 位分辨率的 A/D 转换器,当输
7、入 05V 电压时,其最大量化误差是多少? 把电压值分成有限的数值区间,使某个区间的所有电压值都对应一个数字量,这个过程称为量化,量化导致的误差称为量化误差。 8051 单片机与 DAC0832 接口时,有那三种工作方式?各有什么特点?适合在什么场合使用?方式:直通式、单缓冲、双缓冲直通: 当 DAC0832 的片选信号 、写信号 、及传送控制信号 的引脚全部接地,允许输入锁存信号 ILE 引脚接+5V 时,DAC0832 工作于直通方式,数字量一旦输入,就直接进入 DAC 寄存器,进行 D/A 转换。但由于直通方式不能直接与系统的数据总线相连,需另加锁存器,故较少应用。单缓冲:单缓冲方式是指
8、内部的一个寄存器工作于直通状态,另一个工作于受控状态,当然也可以使两个寄存器同时选通及锁存。因此,单缓冲方式有三种不同的连接方法;在不要求多相 D/A 同时输出时,可以采用单缓冲方式,此时只需一次写操作,就开始转换,可以提高 D/A 的数据吞吐量。双缓冲:就是把 DAC0832 的两个锁存器都接成受控锁存方式。由于芯片中有两个数据寄存器,这样就可以将 8 位输入数据先保存在“输入寄存器”中,当需要D/A 转换时,再将此数据从输入寄存器送至 “DAC 寄存器”中锁存并进行 D/A 转换输出。采用这种方式,可以克服在输入数据更新期间输出模拟量随之出现的不稳定。这时,可以在上一次模拟量输出的同时,将
9、下一次要转换的数据事先存入“输入寄存器”中,一方面克服了不稳定现象,另一方面出提高了数据的转换速度;用这种方式还可以同时更新多个 D/A 转换器的输出;此外,采用两级缓冲方式也可以使位数较多的DAC 器件用于数据位数较少的系统中;在多路 D/A 转换需要同步的时候,双缓冲方式是非常有用的,比如数字式示波器RS-232、RS-485、CAN 为外总线,它们是系统之间的通信用总线;I2C、SPI 是内总线,主要用于系统内芯片之间的数据传输。SPI 只需四条线就可以完成 MCU 与各种外围器件的通信,这四条线是:串行时钟线(SCK)、主机输入/从机输出数据线(MISO) 、主机输出/从机输入数据线(
10、MOSI)、低电平有效从机选择线(/CS )。工作原理:当 SPI 工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出( 高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主 SPI 的时钟信号(SCK)用来保证传输的同步。I2C 总线只有两根双向信号线。一根是数据线 SDA,另一根是时钟线 SCL。工作原理: I2C 总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的 SDA 及 SCL 都是线“与”关系; SCL 线
11、为高电平期间,SDA 线由高电平向低电平的变化表示起始信号;SCL 线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。1. 填空题 (1) 干扰窜入单片机系统的主要途径有 空间干扰 、供电系统干扰 、过程通道干扰 其他干扰 。 (2) 干扰的耦合方式主要有:光电耦合器、隔离变压器、滤波器 等几种形式。 (3) 常用的数字滤波方法有 、 、 、 、 、 和 等几种。 (4) 常用的软件抗干扰技术有 :软件滤波、指令冗余技术、软件陷阱技术 、 “看门狗” 技术 2. 选择题 (1) 可以使 PC 摆脱“死循环”困境的是 C 。 ANOP 指令冗余 B软件陷阱技术 CWatchdog 技
12、术 D数字滤波 (2) 可以抑制空间干扰的是 D 。 A光电隔离 B双绞线传输 C可靠接地 D屏蔽技术 (4) Watchdog 定时间隔 tw 以满足最好为 A。 A1.1T中 2, 设置当前状态寄存器 CPSR 中的相应位 设置模式控制位 CPSR4:0设置中断标志位 CPSR7,禁止 IRQ若是进入 Reset 或 FIQ,还需设置中断标志位 CPSR6,禁止 FIQ3, 将产生异常中断指令的下一条指令的地址保存到相应的连接寄存器R14_ 中4, 给程序计数器(PC)强制赋值(即装入相应的异常中断向量地址) 指令寻址方式、简单汇编指令阅读NOR Flash 与 NAND Flash 优缺
13、点。Flash 闪存,分为这两种。NAND Flash 非易失性,读写速度快,容易做到大容量,用作存储数据。NOR Flash 存储速度快,用作内存片或者叫做数据缓冲。S3c44b0 的内核,S3C2410 的内核,以及他们的功能特点。S3c44b0 它采用 ARM7TDMI 核,为 32 位嵌入式微处理器。 S3C44B0X 内部集成了 8 KB 的 Cache(指令和数据共用)、写缓冲器、存储器控制器、LCD 控制器、中断控制器、总线仲裁器、电源管理单元、时钟发生器、通用并行口 GPIO、异步通信串行口 UART、I2C总线控制器、I2S 总线控制器、同步串行口 SIO、5 路 16 位
14、PWM 定时器、16 位看门狗定时器、8 路 10 位 A/D 转换器、实时钟电路以及 JTAG 接口。采用两种封装形式,一种是160 个引脚的 LQFP 封装,另一种是 160 个引脚的 FBGA 封装;S3C44B0X 的许多引脚是分时复用的,以节省引脚数。S3C2410 采用 ARM920T 核,而 ARM920T 又集成了 ARM9TDMI,所以是中高档 32位嵌入式微处理器。由于采用 ARM920T 体系结构,因此内部具有分离的 16 KB 大小的指令缓存和数据缓存。同时,它采用哈佛体系结构将程序存储器与数据存储器分开,加入了存储器部件(MMU),采用 5 级指令流水线。它使用 AR
15、M 公司特有的 AMBA 总线,对于高速设备采用 AHB 总线,而对于低速内部外设则采用 APB 总线。AHB 通过桥接器转换成APB。内部集成了许多外设接口,除了 S3C44B0X 所有内部外设,还增加了许多工作新外设接口。 1、主要嵌入式文件系统有哪几种?这些文件系统各有什么特点?(1) Romfs。传统型的 Romfs 文件系统是最常用的一种文件系统,它是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存。 (2) Cramfs。Cramfs 是 Linux 的创始人 Linux Torvalds 开发的一种可压缩只读文件系统。它的速度快,效率高,其只读的特点有利于保护文件系统免受破
16、坏,提高了系统的可靠性。 (3) Ramfs/Tmpfs。Ramfs 也是 Linux Torvalds 开发的,Ramfs 文件系统把所有的文件都放在 RAM 里运行,通常用来存储一些临时性或经常要修改的数据。Tmpfs 的一个缺点是当系统重新引导时会丢失所有数据。 (4) JFFS2。JFFS2 是一个可读写、可压缩的日志型文件系统,并提供了崩溃/掉电安全保护,克服了 JFFS 的一些缺点,使用了基于哈希表的日志节点结构,大大加快了对节点的操作速度,支持数据压缩,提供了“写平衡”支持,支持多种节点类型,提高了对闪存的利用率,降低了内存的消耗。(5) Yaffs。 Yaffs/Yaffs2
17、是一种 JFFSx 类似的闪存文件系统,它是专为嵌入式系统使用Nand 型闪存而设计的一种日志型文件。与 JFFS2 相比,它减少一些功能,所以速度更快,而且内存的占用比更小。2、嵌入式 Linux 开发一般包括哪几个步骤?每个步骤分别起什么作用?(1) 建立嵌入式 Linux 交叉开发环境。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,常采用宿主机/目标机模式。(2) 交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。 (3) 交叉调试。交叉调试就是通过在线仿真器对产品进行软硬件调试。(4) 系统测试。在整个软件系
18、统编译的过程中,嵌入式系统的硬件一般采用专门的测试仪器进行测试,而软件则需要有相关的测试技术和测试工具的支持,并要采用特定的测试策略。3、嵌入式 Linux 开发环境一般包括哪几个部分?怎样构建嵌入式 Linux 开发环境。操作系统的安装、开发环境的配置、交叉编译环境构建、Makefile 和 Make 、镜像文件的烧写建立嵌入式 Linux 开发环境,一般有三种办法:一是在 Windows 系统下安装虚拟机,再在虚拟机中安装 Liunux 操作系统;二是安装基于 PC Windows 操作系统下的CYGWIN;三是直接安装 Liunux 操作系统。4、嵌入式 Linux 内核的移植一般包括哪
19、几个步骤?各个步骤分别有什么作用?1. Bootloader 是什么?它的作用是什么?嵌入式系统的 Boot Loader 程序,即系统的引导装载程序,在操作系统内核或用户应用程序之前运行的一段小程序,通过这段小程序可以初始化硬件设备和建立内存空间的映射图,将系统的软、硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。2. 简述 Bootloader 启动方式的分类和特点。vivi、U-Boot、RedBoot、ARMBoot、Blob 和 DIY。Vivi:目前只支持使用串口与主机通信,所以必须使用一条串口电缆来连接目标板和主机U-Boot:用于多种嵌入式
20、 CPU 的 Boot Loader 程序,它可以运行在PowerPC、ARM、MIPS 等多种嵌入式开发板上。RedBoot:是一个专门为嵌入式系统定制的引导启动工具,它基于 ECOS(Embedded Configurable Operating System)的硬件抽象层,同时继承了 ECOS 的高可靠性、简洁性、可配置性和可移植性等特点。ARMBoot 是一个以 ARM 或 StrongARM 为 CPU 内核的嵌入式系统的 Boot Loader 固件程序,它只基于 ARM 固件,但是它支持多种类型的启动。Blob 是 Boot Loader Object 的缩写,是一款功能强大的
21、Boot LoaderDIY(Do It Yourself),即自己制作。上面介绍的 U-Boot、vivi 、Blob、RedBoot、 ARMboot 等成熟工具虽然移植起来简单快捷,但它们都存在着一定的局限性。DIY 代码量短小,而且灵活性很大,最重要的是将来容易维护。3. 简述 Bootloader 的操作模式。Boot Loader 的操作模式1. 启动加载(Boot Loading)模式即 Boot Loader 从目标机的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。2. 下载(Down Loading)模式当采用下载模式时,目标机的 Boot L
22、oader 将通过串口连接、网络连接等通信手段从主机上下载文件4. Bootloader 分为几个阶段?各阶段主要完成什么任务?Boot Loader 的阶段 11. 基本的硬件初始化基本的硬件初始化是 Boot Loader 一开始就执行的操作,其目的是为了阶段 2 的内核的执行准备好一些基本的硬件环境。它执行的步骤如下。(1) 屏蔽所有的中断。(2) 设置处理器的速度和时钟频率。 (3) 初始化 RAM, (4) 初始化 LED。 (5) 关闭处理器内部指令/数据缓存。 2. 加载阶段 2 的 RAM 空间为了获得更快的执行速度,通常把阶段 2 加载到 RAM 空间中来执行3. 复制阶段
23、2 到 RAM复制阶段 2 到 RAM 时要确定以下两点:(1) 阶段 2 的可执行映像在固态存储设备的存放起始地址和终止地址。(2) RAM 空间的起始地址。4. 设置堆栈指针(SP)栈指针的设置是为执行 C 语言代码作准备的。5. 跳转到阶段 2 的 C 程序入口点 Boot Loader 的阶段 2阶段 2 的代码通常用 C 语言来实现,以便实现更复杂的功能和取得更好的代码可读性及可移植性。1. 初始化阶段 2 要使用的硬件设备2. 检测系统内存映射所谓内存映射就是指整个物理地址空间中那些分配用来寻址系统的 RAM 单元。3. 加载内核映像和根文件系统映像(1) 规划内存占用的布局。 (
24、2) 从 Flash 上复制。4. 调用内核所有硬件的设置完成之后,就可以跳转到内核,并开始运行内核了。4. 简述 Bootloader stage1 的任务。定义入口。由于一个可执行的 Image 必须有一个入口点,并且只能有一个全局入口,通常这个入口放在 ROM(Flash)的 0x0 地址,因此,必须使编译器知道这个入口。该工作可通过修改链接器脚本来完成。设置异常向量(Exception Vector)。设置 CPU 的速度、时钟频率及终端控制寄存器。初始化内存控制器。将 ROM 中的程序复制到 RAM 中。初始化堆栈。转到 RAM 中执行,该工作可使用指令 ldr pc 来完成。5.简
25、述 Bootloader stage2 的任务。 调用一系列的初始化函数。初始化 Flash 设备。初始化系统内存分配函数。如果目标系统拥有 NAND 设备,则初始化 NAND 设备。如果目标系统有显示设备,则初始化该设备。初始化相关网络设备,填写 IP、MAC 地址等。进入命令循环(即整个 boot 的工作循环),接收用户从串口输入的命令,然后进行相应的工作。 6. U-Boot 是什么?简述它的特点。U-Boot 是德国 DENX 小组开发的用于多种嵌入式 CPU 的 Boot Loader 程序,它可以运行在PowerPC、ARM、MIPS 等多种嵌入式开发板上 U-Boot 作为 ARM 平台常用的引导程序,具有结构强大和功能强大的特点。