《单片机原理及应用》思考题与习题参考答案

更新时间:2024-05-23 02:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机原理及应用》思考题与习题参考答案

绪论

0.1解:

单片微型计算机(Single-Chip Microcomputer),简称单片机。就是将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)和其他多种功能器件集成在一块芯片上的微型计算机。

单片机的主要特点有:(1)可靠性高(2)便于扩展(3)控制功能强(4)低电压、低功耗(5)片内存储容量较小,除此之外,单片机还具有集成度高、体积小、性价比高、应用广泛、易于产品化等特点 0.2 解:

当前单片机的主要产品有:Intel的8051系列、Motorola的M68HC系列、Philips(飞利浦)的80C51系列、台湾义隆公司(EMC)EM78系列单片机、美国Microchip公司的PIC单片机系列、Atmel公司的AT90系列单片机Ubicom公司的Scenix单片机、日本爱普生科技公司的Epson单片机、Zilog公司的Z86系列、美国国家半导体公司NSCOP8单片机、台湾Winbond(华邦)的W78系列等。

MCS-51为主流产品。 MSP430的功能较强。是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。 EM78系列单片机采用高速CMOS工艺制造,低功耗设计为低功耗产品,价格较低。具有三个中断源、R-OPTION功能、I/O唤醒功能、多功能I/O口等。具有优越的数据处理性能,采用RISC结构设计。

Microship单片机是市场份额增长较快的单片机。它的主要产品是PIC系列8位单片机。CPU采用RISC结构,运行速度快,价格低适于用量大、档次低、价格敏感的产品。

Motorola是世界上最大的单片机生产厂家之一,品种全、选择余地大、新产品多。其特点是噪声低,抗干扰能力强,比较适合于工控领域及恶劣的环境。

AVR是增强RISC内载Flash的单片机,单片机内部32个寄存器全部与ALU直接连接,突破瓶颈限制,每1MHz可实现1MIPS的处理能力,为高速、低功耗产品。端口有较强的负载能力,可以直接驱动LED。支持ISP、IAP,I/O口驱动能力较强。

Scenix单片机除传统的I/O功能模块如并行I/O、UART、SPI、I2C、A/D、PWM、PLL、DTMF等,增加了新的I/O模块(如USB、CAN、J1850、虚拟I/O等)。其特点是双时钟设置,指令运行速度较快,具有虚拟外设功能,柔性化I/O端口,所有的I/O端口都可单独编程设定。

Epson单片机主要为日本爱普生科技公司生产的LCD配套。其单片机的特点是LCD驱动部分性能较好,低电压、低功耗。

Z8单片机是Zilog公司的主要产品,采用多累加器结构,有较强的中断处理能力。价格低。

COP8单片机片内集成了16位A/D,内部使用了抗电磁干扰EMI(Electro Magnetic Interference)电路,在看门狗电路及单片机的唤醒方式上都有独到之处。程序加密控制功能

也比较好。

W78系列与标准的8051兼容,W77系列为增强型51系列,对8051的时序作了改进,在同样时钟频率下,速度提高2.5倍。Flash ROM容量从4KB到64KB,有ISP功能。 0.3解:

(1)第一阶段(1974—1976年):制造工艺落后,集成度低,而且采用了双片形式。典型的代表产品有Fairchild公司的F8系列。其特点是:片内只包括了8位CPU,64B的RAM和两个并行口,需要外加一块3851芯片(内部具有1KB的ROM、定时器/计数器和两个并行口)才能组成一台完整的单片机。

(2)第二阶段(1977—1978年):在单片芯片内集成CPU、并行口、定时器/计数器、RAM和ROM等功能部件,但性能低,品种少,应用范围也不是很广。典型的产品有Intel公司的MCS-48系列。其特点是,片内集成有8位的CPU,1KB或2KB的ROM,64B或128B的RAM,只有并行接口,无串行接口,有1个8位的定时器/计数器,中断源有2个。片外寻址范围为4KB,芯片引脚为40个。

(3)第三阶段(1979—1982年): 8位单片机成熟的阶段。其存储容量和寻址范围增大,而且中断源、并行I/O口和定时器/计数器个数都有了不同程度的增加,并且集成有全双工串行通信接口。在指令系统方面增设了乘除法、位操作和比较指令。其特点是,片内包括了8位的CPU,4KB或8KB的ROM,128B或256B的RAM,具有串/并行接口,2个或3个16位的定时器/计数器,有5~7个中断源。片外寻址范围可达64KB,芯片引脚为40个。代表产品有Intel公司的MCS-51系列,Motorola公司的MC6805系列,TI公司的TMS7000系列,Zilog公司的Z8系列等。

(4)第四阶段(1983年至今): 16位单片机和8位高性能单片机并行发展的时代。16位机的工艺先进,集成度高,内部功能强,运算速度快,而且允许用户采用面向工业控制的专用语言,其特点是,片内包括了16位的CPU,8KB的ROM,232B 的RAM,具有串/并行接口,4个16位的定时器/计数器,有8个中断源,具有看门狗(Watchdog),总线控制部件,增加了D/A和A/D转换电路,片外寻址范围可达64KB。代表产品有Intel公司的MCS-96系列,Motorola公司的MC68HC16系列,TI公司的TMS9900系列,NEC公司的783××系列和NS公司的HPC16040等。然而,由于16位单片机价格比较贵,销售量不大,大量应用领域需要的是高性能、大容量和多功能的新型8位单片机。

近年来出现的32位单片机,是单片机的顶级产品,具有较高的运算速度。代表产品有Motorola公司的M68300系列和Hitachi(日立)公司的SH系列、ARM等。 0.4解:

面对工控领域对象,嵌入到工控应用系统中,实现嵌入式应用的计算机称之为嵌入式计算机系统,简称嵌入式系统。单片机从体系结构到指令系统都是按照嵌入式应用特点专门设计的,能最好的满足对控制对象、应用系统的嵌入、现场的可靠运行以及非凡的控制品质要求。 0.5解:

选择原则:主要从指令结构、运行速度、程序存储方式和功能等几个方面选择单片机。

MCS-51为主流产品。

Motorola是世界上最大的单片机厂商。品种全、选择余地大、新产品多。其特点是噪声

低,抗干扰能力强,比较适合于工控领域及恶劣的环境。

Microship单片机是市场份额增长较快的单片机。它的主要产品是PIC系列8位单片机。其特点是运行速度快,低价位,适用于量大、档次低、价格敏感的产品。

美国德州仪器(TI)公司生产的MSP430系列单片机是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。

在嵌入式系统低端的单片机领域,Intel公司的MCS-51形成了既具有经典性又不乏生命力的一个单片机系列。许多半导体厂家、电器公司以MCS-51系列中的8051为基核,推出了许多兼容性的CHMOS单片机----80C51系列。

此外,还有Zilog、EM78、Senix、NEC、Epson、NS、三星、富士通、华邦、Philips、ARM等单片机。

第1章

1.1解:

MCS-51为主流产品。 MSP430的功能较强。是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。 EM78系列单片机采用高速CMOS工艺制造,低功耗设计为低功耗产品,价格较低。具有三个中断源、R-OPTION功能、I/O唤醒功能、多功能I/O口等。具有优越的数据处理性能,采用RISC结构设计。

PIC系列8位单片机是Microship公司的产品。CPU采用RISC结构,运行速度快,价格低适于用量大、档次低、价格敏感的产品。

Motorola是世界上最大的单片机生产厂家之一,品种全、选择余地大、新产品多。其特点是噪声低,抗干扰能力强,比较适合于工控领域及恶劣的环境。

AVR是增强RISC内载Flash的单片机,单片机内部32个寄存器全部与ALU直接连接,突破瓶颈限制,每1MHz可实现1MIPS的处理能力,为高速、低功耗产品。端口有较强的负载能力,可以直接驱动LED。支持ISP、IAP,I/O口驱动能力较强。 1.2解:

MCS-51单片机在片内集成了中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O接口、串行I/O接口和中断系统等几大单元。

CPU是整个单片机的核心部件,由运算器和控制器组成。运算器可以完成算术运算和逻辑运算,其操作顺序在控制器控制下进行。控制器是由程序计数器PC(Program Counter)、指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)、定时控制逻辑和振荡器OSC等电路组成。CPU根据PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,以产生执行本条指令所需的全部信号。

程序存储器(ROM)用于存储程序、常数、表格等。 数据存储器(RAM)用于存储数据。

8051内部有两个16位可编程序的定时器/计数器T0和T1,均为二进制加1计数器。可用于定时和对外部输入脉冲的计数。

8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。可实现

对5个中断源的管理。8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。其中,IE用于控制5个中断源中哪些中断请求被允许向CPU提出,哪些中断源的中断请求被禁止;IP用于控制5个中断源的中断请求的优先权级别。

I/O接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。可分为串行和并行I/O接口。 1.3解:

80C51单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。通常把4个端口称为P0~P3。在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。 1.4解:

控制线一共有6条: (1)ALE/

:地址锁存允许/编程线,配合P0口引脚的第二功能使用。在访问片外存储

上输

器时,8051CPU在P0.7~P0.0引脚上输出片外存储器低8位地址的同时在ALE/

出一个高电位脉冲,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,8051自动在ALE/时脉冲源使用。 (2)

/Vpp:允许访问片外存储器/编程电源线,可以控制8051使用片内ROM还是使用

=0,则允许使用片内ROM;若

=1则允许使用片外ROM。

片外ROM。若(3)

上输出频率为fosc/6的脉冲序列。该脉冲序列可用作外部时钟源或作为定

:片外ROM选通线,在执行访问片外ROM的指令MOVC时,8051自动在

上产生一个负脉冲,用于为片外ROM芯片的选通。其他情况下线均为高电平封锁状

态。

(4)RST/VPD:复位/备用电源线,可以使8051处于复位工作状态。 1.5解:

指令:人为输入计算机,由计算机识别并执行一步步操作的命令的形式称为指令。 程序:一系列指令的有序集合称为程序。

程序在计算机中是按序执行的,CPU通过程序计数器PC控制程序的执行顺序,一般情况下程序是按序执行的,当执行转移、调用、返回等指令时,程序转移到相应的目的地址处执行。CPU根据程序计数器PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,产生执行本条指令所需的全部信号,完成本条指令的执行。 1.6解:

(1)80C51在结构上的特点

80C51采用将程序存储器和数据存储器截然分开,分别寻址的结构,称为Harvard结构。

(2)在物理和逻辑上的地址空间

存储器上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。

在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 (3)访问格式

访问片内RAM采用MOV格式 访问片外RAM采用MOVX格式 1.7解:

堆栈是一个特殊的存储区。主要功能是暂时存放数据和地址,通常用来保护断点和现场。它的特点是按照“先进后出”的存取数据。堆栈指针SP是一个8位寄存器,是用于指示堆栈的栈顶地址的寄存器,它决定了堆栈在内部RAM中的物理位置。 1.8解:

8051有21个特殊功能寄存器(PC除外),它们被离散地分布在内部RAM的80H~FFH地址单元中,共占据了128个存储单元,其中有83位可以位寻址。特殊功能寄存器SFR的分布和功能见教材P18表1.2.2。 1.9解:

8051单片机的4个I/O口在结构上是基本相同的,但又各具特点。这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入“1”,使输出驱动场效应管FET截止,以免误读数据。各自特点如下:

(1)P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。每个引脚可驱动8个TTL负载。

(2)P1口为8位准双向I/O口,内部具有上拉电阻,一般作通用I/O口使用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置1。每个引脚可驱动4个TTL负载。

(3)P2口为8位准双向I/O口,内部具有上拉电阻,可直接连接外部I/O设备。它与地址总线高8位复用,可驱动4个TTL负载。一般作为外部扩展时的高8位地址总线使用。

(4)P3口为8位准双向I/O口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。作为通用I/O口时,功能与P1口相同,常用第二功能。作为第二功能使用时,各位的作用见教材P23表1.2.5所示。 1.10解:

数据指针DPTR是16位的专用寄存器,它由两个8位的寄存器DPH(高8位)和DPL(低8位)组成。专门用来寄存片外RAM及扩展I/O口进行数据存取时的地址。编程时,

ADDC A,33H DA A

MOV 43H,A

2.15解:

ORG 0000H

LJMP MAIN ORG 0030H MAIN: MOV R7,#20H MOV R1,#40H MOV DPTR,#3000H LOOP:MOV A,@R1

2.16解:

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R0,#30H MOV R1,#00H MOV R2,#00H MOV R3,#07H LP2: MOV A,@R0 ADD A,R2 MOV R2,A JNC LP1 INC R1 LP1: INC R0

2.17解:

ORG 0000H LJMP START ORG 0030H

START: MOV DPTR,#2001H MOVX A,@DPTR MOV 30H,A MOV DPTR,#2002H MOVX A,@DPTR ADD A,30H MOV B,A MUL AB MOV R1,A CJNE A,#10,NET1 MOV DPTR,#2000H MOVX @DPTR,A

2.18解: ORG 0000H LJMP MAIN ORG 0030h MAIN: MOV DPTR,#2000H

SJMP $ END

MOVX @DPTR,A INC R1 INC DPTR

DJNZ R7,LOOP SJMP $ END

DJNZ R3,LP2

MOV R3,#03H LP3: CLR C

MOV A,R1 RRC A

MOV R1,A MOV A,R2 RRC A

MOV R2,A DJNZ R3,LP3 MOV 3AH,R2 SJMP $

END

SJMP NET3 NET1: JNC NET2 CLR C

MOV A,R1 SUBB A,#10

MOV DPTR,#2000H MOVX @DPTR,A

SJMP NET3 NET2: MOV A,R1 ADD A,#10

MOV DPTR,#2000H

MOVX @DPTR,A NET3: SJMP $ END

MOV A,#OFFH MOVX @DPTR,A MOV DPTR,#2100H MOV A,#34H

MOVX @DPTR,A MOV DPTR,#2008H MOV A,#33H MOVX @DPTR,A MOV DPTR,#2108H MOV A,#44H MOVX @DPTR,A MOV DPTR,#200EH MOV A,#0EEH MOVX @DPTR,A MOV DPTR,#210EH MOV A,#32H MOVX @DPTR,A MOV DPTR,#2000H MOV R1,#30H MOV R2,#15 LOOP: MOVX A,@DPTR

MOV @R1,A INC DPTR INC R1 DJNZ R2,LOOP MOV R1,#30H MOV DPTR,#2100H MOV R2,#15 MOV R0,#40H LOOP2:

2.19解:

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#100 MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV DPTR,#2000H LOOP: MOVX A,@DPTR CJNE A,#00H,NET1 INC R3 INC DPTR

2.20解:

MOVX A,@DPTR CLR C ADDC A,@R1 INC LOOP1 MOV @R0,@01 SJMP LOOP4 LOOP1: MOV @R0,#00 LOOP4: INC R0 MOV @R0,A INC R1 INC DPTR INC R0 DJNZ R2,LOOP2 MOV R0,#40H MOV DPTR,#2200H MOV R2,#30 LOOP3: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,LOOP3 SJMP $ END

DJNZ R2,LOOP

SJMP NET3 NET1: JC NET2 INC R4 INC DPTR

DJNZ R2,LOOP

SJMP NET3 NET2: INC R5 INC DPTR

DJNZ R2,LOOP NET3: SJMP $

END

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV DPTR,#1000H MOV A,#22H MOVX @DPTR,A MOV DPTR,#1030H MOV A,#33H MOVX @DPTR,A MOV DPTR,#1000H MOV R2,#31H MOV R0,#30H LOOP: 2.21解:

ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV DPTR,#2040H MOV R2,#50 CLR 7FH DEC R2 LS: MOVX A,@DPTR MOV 20H,A INC DPTR MOVX A,@DPTR MOV 21H,A MOV A,20H

2.22解: ORG 0000H LJMP MAIN ORG 0030H MAIN: LCALL SUBONE AJMP $

; SUBONE use dptr,a,30h,31h SUBONE: MOV DPTR,#2000H LOOP: MOVX A,@DPTR XRL A,#41H

MOVX

A,@DPTR

MOV @R0,A INC DPTR INC R0

DJNZ R2,LOOP MOV DPTR,#1000H MOV A,#00 MOV R2,#31H LOOP1: MOVX @DPTR,A INC DPTR DJNZ R2,LOOP1 SJMP $

END

CJNE A,21H,LOOP LOOP: JNC LOOP1 MOV A,20H MOVX @DPTR,A DEC DPTR MOV A,21H MOVX @DPTR,A INC DPTR SETB 7FH LOOP1: DJNZ R2,LS JB 7FH,MAIN SJMP $ END

JNZ TT MOV A,30H MOV DPTR,#20A0H MOVX @DPTR,A MOV DPTR,#20A1H MOV A,31H MOVX @DPTR,A RET TT: INC DPTR MOV 30H,DPH

MOV

31H,DPL

MOV A,31H CJNE A,@00H,LOOP 2.23解:

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#20 MOV R1,#30H MOV DPTR,#2000H TT: MOVX A,@DPTR CLR C SUBB A,#30H SWAP A MOV 41H,A INC DPTR MOVX A,@DPTR CLR C SUBB A,#30H MOV @R1,A 2.24解:

ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV DPTR,#2400H MOV A,#07H MOVX @DPTR,A MOV DPTR,@2450H MOV A,#06H MOVX @DPTR,A MOV 30H,#24H MOV 31H,#00H MOV 32H,#25H MOV 33H,#00H

2.25解:

ORG 0000H LJMP MAIN ORG 0030H

MAIN: MOV DPTR,#2030H MOV A,#03H MOVX @DPTR,A MOV DPTR,#2031H

RET END

MOV A,41H XCHD A,@R1 MOV @R1,A INC R1 INC DPTR DJNZ R2,TT

MOV DPTR,#3000H MOV R1,#30H

MOV R2,#0AH TT1: MOV A,@R1

MOVX @DPTR,A INC R1 INC DPTR

DJNZ R2,TT1 SJMP $ END

MOV R2,#51H LOOP: MOV DPH,30H MOV DPL,31H MOVX A,@DPTR MOV DPH,32H MOV DPL,33H MOVX @DPTR,A INC 31H INC 33H DJNZ R2,LOOP AJMP $ END

MOV A,#05H

MOVX @DPTR,A MOV DPTR,#2030H MOVX A,@DPTR LCALL SQR MOV R1,A

MOV DPTR,#2031H

SQR:

TAB: MOVX A,@DPTR LCALL SQR ADD A,R1

MOV DPTR,#2040H MOVX @DPTR,A AJMP $ INC A

MOVC A,@A+PC RET

DB 0,1,4,9,16,25 DB 36,49,64,81,100 DB 121,144,169,196,225 END

LOOP1:

LOOP2:

LOOP3:

LOOP4: MOV R0,#4EH JB P3.2,$ SETB TR0 JNB P3.2,$ JB P3.2,$ CLR TR9

MOV @R0,TL0 INC R0

MOV @R0,TH0 MOV R1,#50H MOV R5,#3 CLR A

MOV @R1,A INC R1

DJNZ R5,LOOP1 MOV R7,#10H MOV R0,#4EH MOV R6,#2 CLR C

MOV A,@R0 RLC A

MOV @R0,A INC R0

DJNZ R6,LOOP3 MOV R5,#3 MOV R1,#50H MOV A,@R1 ADDC A,@R1 DA A

MOV @R1,A INC R1

DJNZ R5,LOOP4 DJNZ R7,LOOP2 SJMP $ END

;等待P3.2变低 ;启动T0工作 ;等待P3.2变高 ;等待P3.2再次变低 ;停止计数

;存放计数的二进制数低字节入4EH ;存放计数的二进制数高字节入4EH ;BCD码首址 ;BCD码字节数 ;清存BCD码单元

;二进制数位数 ;二进制数首址 ;二进制数字节数

;2字节二进制数左移1位 ;BCD码字节数

;BCD码乘2加C运算

3.23解::

为了衡量串行通信的速度,应该有一个测量单位,在数据通信中,描述数据传送速度的方式有3种: 波特率定义为每秒传送信号的数量,单位为波特(Baud)。比特率定义为每秒传送二进制数的信号数(或每秒传送二进制码元的个数),单位是bps(bit per second)或写成b/s(位/秒)。数据传送速率(或字符传送速率)定义为每秒传送多少个字符(或单位时间内平均数据传移速率,单位是字符/秒。

在串行通信中,传送的信号可能是二进制、八进制或十进制等。只有在传送的信号是二进制信号时,波特率才与比特率数值上相等。而在采用调制技术进行串行通信时,波特率是描述载波信号每秒钟变化为信号的数量(又称为调制速率)。在这种情况下,波特率与比特率在数值上可能不相等。

3.24解:

异步通信中,接收器和发送器有各自的时钟,数据常以字符为单位组成字符帧传送,用一帧来表示一个字符,其字符帧的数据格式为:在一帧格式中,先是一个起始位“0”(低电平),然后是5~8个数据位,规定低位在前,高位在后,接下来是1位奇偶校验位(可以省略),最后是1~2位的停止位“1”(高电平)。 异步通信的优点是不需要传送同步脉冲,可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。 3.25解:

MCS-51单片机的串行接口由发送缓冲器SBUF、发送控制器、接收缓冲器SBUF、输入移位寄存器、接收控制器、波特率发生器等部件组成。

发送缓冲器SBUF用于存放将要发送的数据,接收缓冲器SBUF用于存放接收的数据,输入位移寄存器用于接收缓冲并实现串/并转换,发送/接收控制寄存器用于控制串行口的工作,波特率发生器用于控制串行口发送/接收数据的速度。 3.26解:

随着传输距离的增加,误码率增加,出现重传增加,数据传输速率降低。 3.27解:

串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的。当向SBUF发\写\命令时(执行\,A\指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完使发送中断标志位TI=1。在满足串行接口接收中断标志位RI(SCON.O)=0的条件下,置允许接收位REN(SCON.4)=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使R1=1。当发读SBUF命令时(执行\A,SBUF\指令),便从接收缓冲器SBUF读取信息通过80C5l内部总线送CPU。 3.28解:

串行口有四种工作方式:方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。

字符帧的数据格式为:在一帧格式中,先是一个起始位“0”(低电平),然后是5~8个数据位,规定低位在前,高位在后,接下来是1位奇偶校验位(可以省略),最后是1~2位的停止位“1”。两个字符帧之间可以有空闲位,也可以无空闲位。

在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率(T1溢出信号的频率)控制。各种方式的通信波特率如下:

① 方式0的波特率固定为系统晶振频率的1/12,其值为fosc/12。 其中:fosc——系统主机晶振频率

② 方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:

波特率=(2SMOD/64)×fosc

即:当SMOD=1时,波特率为fosc/32,当SMOD=0时,波特率为fosc/64

③ 方式1和方式3的波特率由定时器T1的溢出率控制。因而波特率是可变的。 定时器T1作为波特率发生器,相应公式如下:

波特率=(2SMOD/32)×定时器T1溢出率 T1溢出率=T1计数率/产生溢出所需的周期数

=(fosc/12)/(2K?TC)

式中:K——定时器T1的位数

TC——定时器T1的预置初值 3.29解:

当一片80C51(主机)与多片80C51(从机)通信时,

① 主机的SM2位置0,所有从机的SM2位置1,处于接收地址帧状态。

② 主机发送一地址帧,其中,8位是地址,第9位为地址/数据的区分标志,该位置1表示该帧为地址帧。

③ 所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并把本站地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。

④ 从机发送数据结束后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志。

⑤ 主机接收数据时先判断数据接收标志(RB8),若接收帧的RB8=0,则存储数据到缓冲区,并准备接收下帧信息。若RB8=1,表示数据传送结束,并比较此帧校验和,若正确则回送正确信号00H,此信号命令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,命令该从机重发数据。

⑥ 主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。

⑦ 从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。 3.30解:

在微机与单片机构成的测控网络信中,对于串行口数据传输接口的抗干扰能力,在不超过接口标准指定的适用范围时,都具有一定的抗干扰能力,以保证信号传输的可靠性。但在一些工业测控系统中,通信环境往往十分恶劣,就必须充分考虑通信的抗干扰能力,以保证通信的可靠性。

(1)选择合适的通信标准。例如:长距离传输采用RS-485标准能有效抑制功模干扰,采用20Ma电流环可以降低信号对各种电器噪声的敏感程度。

(2)在高噪声环境下使用光纤传输介质在高噪声环境下可以有效减少噪声干扰。 (3)采用光电隔离技术可以提高系统的安全性和可靠性

(4)在发送器输出接口采用限流电路或在发送器输出端外接电容器,可以有效抑制数据传输过程中的串扰。

(5)采取降低发送端数据速率的方法可以减少接收端接收数据益处的错误。

3.31解:11(位)×3600(字符/分钟)=39600b/分钟=660b/s (方式3为每个字符11位)。 3.32解:

主程序框图如下: 串口初始化

FFH送SBUF

设 标 志

调延时程序 标志位取反 标志为1 标志为零 FF送SBUF

标志为零 程序如下: ORG 0040H OOH送SBUF

MOV SCON,#00H MOV SBUF,#0FFH SETB C MOV 00H,C

AA:ACALL DELAY

CPL 00H MOV C,00H JC BB

MOV SBUF,#00H SJMP CC

BB:MOV SBUF,#0FFH CC:AJMP AA DELAY: MOV R7,#8

D1:MOV R6,#250 D2:MOV R5,#250

D3:DJNZ R5,D3

DJNZ R6,D2 DJNZ R7,D1

RET

END

3.33 解:

采用查询方式编写发送程序如下:

ORG 0000H

LJMP START ORG 0030H

START: MOV SCON,#80H

MOV PCON,#80H MOV R0,#20H MOV R7,#16 LS: MOV A,@R0

MOV C,P MOV TB8,C MOV SBUF,A JNB TI,$

CLR TI ;清TI标志位 DJNZ R7,LS RET

;设定方式2发送

;给待发送数据块地址指针R0置初值 ;给数据块长度计数器R7置初值 ;取一字节数据送A

;P随A变,P→TB8 ;启动发送

;查询发送标志,等待一字节发送完

3.34 解:

程序如下:

START:

PN: RIG: PER:

END

ORG 0000H LJMP START ORG 0100H

MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1

MOV SCON,#0D0H MOV R0,#30H MOV R7,#16 JNB RI,$ CLR RI

MOV A,SUBF JN BP,PN JNB RB8,PER LJMP RIG JB RB8,PER MOV @R0,A INC R0

DJNZ R7,LOOP CLR 7F SJMP $ SETB 7F SJMP $ END

;设定T1为模式2定时 ;送时间常数

;启动定时器T1

;串行接口设定为方式3,并允许接收

;查询等待接收

;从串行接口中读取数据

;对该字节进行查错处理若P=RB8无错,否则有;若P=1,RB8=0,有错,转出错处理 ;若P=1,RB8=1,无错,转保存数据 ;若P=0,RB8=1,有错,转出错处理

;若P=0,RB8=0,无错,保存接收到的数据

;16字节未接收完,则继续

;正确接收完16位数据,清出错标志位7F

;校验有错,置位7F

第4章

4.1解:

MCS-51系列单片机具有很强的外部扩展功能。其外部引脚可构成三总线结构,即地址总线、数据总线和控制总线。单片机所有的外部扩展都是通过三总线进行的。

(1)地址总线(AB)

地址总线用于传送单片机输出的地址信号,宽度为16位,可寻址的地址范围为216=64KB。地址总线是单向的,只能由单片机向外发出。P0口提供低8位地址,P2口提供高8位地址。由于P0口既做地址线又做数据线,分时复用,所以,P0口提供的低8位地址是由P0口经锁存器提供的。锁存信号是由CPU的ALE引脚提供的。

(2)数据总线(DB)

数据总线是由P0口提供的,宽度为8位。P0口是双向三态口,是单片机应用系统中使用最频繁的通道。P0口提供的数据总线上要连接多个扩展的外围芯片,而某一时刻只能有一个有效的数据传输通道。具体哪一个芯片的数据通道有效,是由各个芯片的片选信号控制选择的。欲使CPU与某个外部芯片交换数据,则CPU必须先通过地址总线发出该芯片的地址,使该芯片的片选信号有效,则此时P0口数据总线上的数据只能在CPU和该芯片之间进行传送。

(3)控制总线(CB)

控制总线实际上是CPU输出的一组控制信号。每条控制信号都是单向的,但是由多条不同的控制信号组合而成的控制总线则是双向的。MCS-51系列单片机中用于系统扩展的控制信号有,,, ALE和。

4.2解:

接口(也称为I/O接口)是指连接CPU与外部输入/输出设备之间的部件,这些部件是CPU与外设之间进行信息传送的媒介。

I/O接口芯片都有一个或几个端口,一个端口对应于接口芯片内部的一个寄存器或一组寄存器,计算机系统要为每个端口分配一个地址,各个端口的地址是唯一的,不能重复。在信息传送过程中,接口起着数据锁存、数据缓冲、输入/输出、联络、数据转换、中断管理、时序控制、可编程、电器特征匹配等作用。 4.3解:

CPU与外设之间传输数据的控制方式通常有三种:程序方式、中断方式和DMA方式。 程序方式:指用输入/输出指令,来控制信息传输的方式,是一种软件控制方式,根据程序控制的方法不同,又可以分为无条件传送方式和条件传送方式。

无条件传送方式接口简单,适用于那些能随时读写的设备。条件传送方式(查询方式) 的特点是接口电路简单,CPU利用率低(程序循环等待),接口需向CPU提供查询状态。适用于CPU不太忙,传送速度要求不高的场合。要求各种外设不能同时工作,外设处于被动状态。

中断方式:当外设准备好时,由外设通过接口电路向CPU发出中断请求信号,CPU在允许的情况下,暂停执行当前正在执行的程序,响应外设中断,转入执行相应的中断服务子程序,与外设进行一次数据传送,数据传送结束后,CPU返回继续执行原来被中断的程序。其特点是CPU的利用率高,外设具有申请CPU中断的主动权, CPU和外设之间处于并行工作状态。但中断服务需要保护断点和恢复断点(占用存储空间,降低速度), CPU和外设之间需要中断控制器。适用于CPU的任务较忙、传送速度要求不高的场合,尤其适合实时控制中的紧急事件处理。

存储器直接存取方式(DMA):外设利用专用的接口(DMA控制器)直接与存储器进行高速数据传送,并不经过CPU(CPU不参与数据传送工作),总线控制权不在CPU处,而由DMA 控制器控制。其特点是接口电路复杂,硬件开销大。大批量数据传送速度极快。适用于存储器与存储器之间、存储器与外设之间的大批量数据传送的场合。 4.4解:

在计算机系统中,凡需要进行读写操作的部件都存在编址的问题。存储器的每个单元均有自己的地址,对于I/O接口,则需要对接口中的每个端口进行编址。通常采取两种编址方法:一种是独立编址,另一种是统一编址。

统一编址又称“存储器映射方式”。在这种编址方式下 ,I/O端口地址置于存储器空间中,在整个存储空间中划出一部分空间给外设端口 ,端口和存储单元统一编址。其优点是无需专门的I/O指令,对端口操作的指令类型多,从而简化了指令系统的设计。缺点是端口占用存储器的地址空间,使存储器容量更加紧张,同时端口指令的长度增加,执行时间较长,端

口地址译码器较复杂。

独立编址又称“I/O映射方式”。这种方式的端口单独编址构成一个I/O空间,不占用存储器地址空间。其优点是端口所需的地址线较少,地址译码器较简单,采用专用的I/O指令,端口操作指令执行时间少,指令长度短。缺点是输入输出指令类别少,一般只能进行传送操作。

MCS-51单片机采用了统一编址方式,即I/O端口地址与外部数据存储单元地址共同使用0000H~FFFFH(64KB)。因此,MCS-51单片机应用系统扩展较多外部设备和I/O接口时,要占去大量的数据存储器的地址。 4.5解:

所谓的全地址译码法是利用译码器对系统地址总线中未被外扩芯片用到的高位地址线进行译码,以译码器的输出作为外围芯片的片选信号。全地址译码法芯片的地址范围确定方法是:以外部扩展的全部芯片未用到的地址线作为地址译码器的输入,译码器的输出作为片选信号接到外部扩展芯片上。

全地址译码法优点是存储器的每个存储单元只有惟一的一个系统空间地址,不存在地址重叠现象;对存储空间的使用是连续的,能有效地利用系统的存储空间;利用同样的高位地址线,全地址译码法编址产生的选片线比线选法多,为系统扩展提供了更多的冗余条件。其缺点是所需地址译码电路较多,尤其在单片机寻址能力较大和所采用的存储器容量较小时更为严重。全地址译码法是单片机应用系统设计中经常采用的方法。

部分地址译码法是指单片机的未被外扩芯片用到的高位地址线中,只有一部分参与地址译码,其余部分是悬空的。在部分地址译码方式下,无论CPU使悬空的高位地址线上的电平如何变化,都不会影响它对外部存储单元的选址,故存储器每个存储单元的地址不是惟一的,存在地址重叠现象。因此,采用部分地址译码法时必须把程序和数据存放在基本地址范围内(即悬空的高位地址线全为低电平时存储芯片的地址范围),以避免因地址重叠引起程序运行的错误。部分地址译码法的优点是可以减少所用地址译码器的数量。 4.6解:

P2口用作扩展存储器的高8位地址总线以后,即使没有全部占用,空余的几根也不宜用作I/O口,否则会给软件编写及使用带来不必要的麻烦。主要是时序上处理比较困难。 4.7解:

程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于数据存储器的读和写由和信号控制,而程序存储器由读选通信号控制,这些信号在逻辑上时序上不会产生冲突,因此,两者虽然共处于同一地址空间,但由于控制信号不同,所以不会发生总线冲突。 4.8 解:

硬件连接图如下图所示。

图 4.8题硬件连接电路图 各芯片的地址范围为:

2732:E000H~EFFFH 6116:D800H~DFFFH 8255:BFFCH~BFFFH 4.9 解:

硬件连接电路图如图4.9所示。各芯片的地址范围为: 2764(1#):0000H~1FFFH 2764(2#):2000H~3FFFH 6264(1#):4000H~5FFFH 6264(2#):6000H~7FFFH

图4.9 4.9题硬件连接电路图

4.10解:

(1)并行总线扩展的方法 (2)串行口扩展方法

(3)I/O端口模拟串行方法

(4)通过单片机内I/O的扩展方法 4.11解:

8255A有3种工作方式:方式0、方式1和方式2。 ① 方式0(基本输入/输出方式)。这种方式不需要任何选通信号,适合于无条件传输数据的设备,数据输出有锁存功能,数据输入有缓冲(无锁存)功能。

② 方式(1选通输入/输出方式)。这种工作方式下,A组包括A口和C口的高四位(PC7~PC4),A口可由程序设定为输入口或输出口,C口的高四位则用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低四位(PC3~PC0),功能和A组相同。

③ 方式2(双向I/O口方式)。仅A口有这种工作方式,B口无此工作方式。此方式下,A口为8位双向I/O口,C口的PC7~PC3用来作为输入输出的控制和同步信号。此时,B口可以工作在方式0或方式1。 4.12解:

程序如下:

MOV DPTR,#7F03H MOV A,#10010100B MOV @DPTR,A

4.13解:

写入控制端口的控制字的最高位为1则为方式控制字,否则为C口置位/复位控制字。 4.14 解:

8155输入时钟的周期=1/500×103=2×10-6 (s),8155定时器/计数器的初值=20×10-3/2×10-6=10000=2170H。由于定时器/计数器按方式1工作,所以写入定时器/计数器的初值为6170H。程序如下:

ORG 0000H LJMP START ORG 0100H

START: MOV DPTR,#7F04H ;写定时器/计数器的初值

MOV A,#70H MOVX @DPTR,A INC DPTR MOV A,#61H MOVX @DPTR,A MOV DPTR,#7F00H ;写命令字,启动定时器/计数器工作 MOV A,#0C5H

MOVX @DPTR,A SJMP $ END

4.15解:

设8155有关寄存器端口地址为: 20H 命令寄存器 24H 定时器低字节 25H 定时器高字节

在8155的TIMEROUT引脚上输出10mS方波的程序如下:

ORG 1000H

MOV R0,#25H MOV A,#58H MOVX @R0,A DEC R0

MOV A,#0F0H MOVX @R0,A MOV R0,#20H MOVX @R0,A SJMP $

4.16解:

电路连接图如图4.16所示。

图4.16 4.16题硬件连接电路图

其中,PB0~PB3接红色发光二极管,PB4~PB7接绿色发光二极管。设MCS-51单片机主频为1MHz。

程序如下:

ORG 1000H

START:MOV DPTR, #7FFFH ; 数据指针指向8255A控制口

MOV A, #80H MOVX @DPTR, A ; 工作方式字送8255A控制口 MOV DPTR, #7FFDH ; 数据指针指向8255A 的B口 LP1:MOV A, #0FH ; 置红色发光二极管亮 MOVX @DPTR, A ; 置红色发光二极管亮 LCALL DELAY ; 调用1S延时子程序 MOV A, #0F0H MOVX @DPTR, A ; 置绿色发光二极管亮

LCALL DELAY LJMP LP1 ; 循环执行

DELAY: MOV R7,#8 ; 1S延时子程序

D1:MOV R6,#250 D2:MOV R5,#250

D3:DJNZ R5,D3

DJNZ R6,D2 DJNZ R7,D1 RET SJMP $ END

4.17解:

RS-232C采取不平衡传输方式,是为点对点(即只用一对收、发设备)通信而设计的,采用负逻辑,其驱动器负载为3k?~7k?。由于RS-232C发送电平与接收电平的差仅为2~3V,所以其共模抑制能力差,再加上双绞线上的分布电容,因此,RS-232C适用于传送距离不大于15m,速度不高于20kb/s的本地设备之间通信的场合。

RS-422由RS-232发展而来,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到1220m(速率低于100kb/s时),并允许在一条平衡总线上最多连接10个接收器。RS-422是一种单机发送、多机接收的单向、平衡的通信总线标准。

RS-485是在RS-422的基础上制定的标准,增加了多点、双向通信能力,通常在要求通信距离为几十米至上千米时,广泛采用RS-485总线标准。它采用平衡发送和差分接收,即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号变成TTL电平。具有较高的灵敏度,能检测低至200mV的电压,具有抑制共模干扰的能力,数据传输可达千米以上。

RS-232的双机通信接口电路如图4.17-1所示。

图4.17-1 4.17-1题硬件连接电路图

RS-422和RS-485的双机通信接口电路如图4.17-2所示。

图4.17-2 4.17-2题硬件连接电路图 4.18解:

DS12C887是美国Dallas公司生产的实时日历时钟芯片,采用CMOS技术,与

MC146818B和DS1287管脚兼容,可直接替换。内含一个锂电池,在断电情况下运行十年以上不丢失数据。具有秒、分、时、星期、日、月、年计数功能,对于一天内的时间记录,有12小时制和24小时制两种模式。在12小时制模式中,用AM和PM区分上午和下午,可实现闰年调整。时间的表示方法有两种,二进制数和BCD码表示方法。内部有128字节RAM,其数据具有掉电保护功能。可以选择Motorola和Intel总线时序。用户可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。工作电压为4.5~5.5V,工作电流为7~15mA。DS12C887具有功耗低、外围接口简单、精度高、工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟场合中。

DS12C887内部有128B的存储器,系统占用15B,用户可用113B,具体分布情况如下表

所示。

取 值 范 围 地 址 功 能 二进制 十进制 00H 秒 00~3BH 00~59 01H 秒报警 00~3BH 00~59 02H 分 00~3BH 00~59 03H 分报警 00~3BH 00~59 时,12小时模式 0~0CH AM,81~8CH PM 04H 01-12 AM, 81-92 PM 时,24小时模式 00~17H 00~23 时报警,12小时模式 0~0CH AM,81~8CH PM 05H 01-12 AM, 81-92 PM 时报警,24小时模式 00~17H 00~23 06H 星期,星期日=1 01~07H 01~07 07H 日 01~1FH 01~31 08H 月 01~0CH 1~12 09H 年 00~63H 00~99 0AH 控制寄存器A 0BH 控制寄存器B 0CH 控制寄存器C 0DH 控制寄存器D 32H 世纪 13H,14H 19, 20 0EH~31H, 33H~7FH 用户数据区 4.19解:

MAX692A是美国Maxim公司的系统监控芯片产品,具有后备电池切换、电压监视器、 “看门狗”监控等功能。 4.20解:

“看门狗(WDT)”,也称为程序监视定时器。WDT的作用是通过不断监视程序每周期的运行事件是否超过正常状态下所需要的时间,从而判断程序是否进入了“死循环”,并对进入“死循环”的程序作出系统复位处理。

在程序中设置适当的指令,清WDT,就可监视微处理器的工作。例如在主程序开始时,将WDT置位,如果主程序执行过程中产生死循环,就无法清WDT,超过WDT的定时时间时,WDT就会对微处理器发出复位信号。从而实现对系统程序的监控。 4.21解:

I2C总线是由串行数据线SDA和串行时钟线SCL构成的,可发送和接收数据。它允许若干兼容器件共享总线。所有挂接在I2C总线上的器件和接口电路都应具有I2C总线接口,且所有的SDA/SCL同名端相连。总线上所有器件要依靠SDA发送的地址信号寻址,不需要片选线。

I2C总线最主要的优点是其简单性和有效性。占用的空间小,降低了互连成本。总线的长度可高达7.6m,并且能够以10kbps的最大传输速率支持40个组件。支持多主控器件,其中,任何能够进行发送和接收的设备都可以成为主器件。主控能够控制信号的传输和时钟频率。当然,在某时刻只能有一个主控器件。

在单片机控制系统中,广泛使用I2C器件。如果单片机自带I2C总线接口,则所有I2C器件对应连接到该总线上即可;若无I2C总线接口,则可以使用I/O口模拟I2C总线。

使用单片机I/O口模拟I2C总线时,硬件连接非常简单,只需两条I/O口线即可,在软件中分别定义成SCL和SDA。MCS-51单片机实现I2C总线接口电路如图4.21所示。

4.21 4.21

电路中单片机的P1.0引脚作为串行时钟线SCL,P1.1引脚作为串行数据线SDA,通过程序模拟I2C串行总线的通信方式。I2C总线适用于通信速度要求不高而体积要求较高的应用系统。

第5章

5.1 解:

传感器是将电量或非电量转换为可测量的电量的检测装置,是由敏感元件和转换元件组成的。国际电工委员会IEC将传感器定义为:传感器是测量系统中的一种前端部件,它将各种输入变量转换成可供测量的信号。 5.2 解:

(1)输入通道的特点:

① 输入通道要靠近拾取对象采集信息,以减少传输损耗,防止干扰; ② 输入通道工作环境因素严重影响通道的方案设计,没有选择的余地;

③ 传感器的输出往往是模拟信号、微弱信号输出,转换成计算机要求的信号电平时,需要使用一些模拟电路技术,因此输入通道通常是模拟、数字等混杂电路;

④ 传感器、变送器的选择和环境因素决定了输入通道电路设计的繁简,因为在输入通道中必须将传感器、变送器的输出信号转换成能满足计算机输入要求的TTL电平,输入通道中传感器、变送器输出信号与计算机逻辑电平的相近程度影响着输入通道的繁简程度;

⑤ 传感器输出信号一般比较微弱,为便于计算机拾取,常需要放大电路,这也是计算机系统中最容易引入干扰的渠道,所以输入通道中的抗干扰设计是非常重要的。

(2)输出通道的特点:

① 小信号输出,大功率控制;

② 输出伺服驱动控制信号,在伺服驱动系统中的状态反馈信号,作为检测信号输入至输入通道;

③ 输出通道接近被控对象,环境复杂恶劣,电磁和机械干扰较为严重。

5.3解:

D/A转换器(Digit to Analog Converter)是将数字量转换成模拟量的器件,通常用DAC表示,它将数字量转换成与之成正比的电量,广泛应用于过程控制中。 5.4 解:

D/A转换器的主要性能指标有:

(1)分辨率:单位数字量所对应模拟量增量,即相邻两个二进制码对应的输出电压之差称为D/A转换器的分辨率。它确定了D/A产生的最小模拟量变化,也可用最低位(LSB)表示。

(2)精度:精度是指D/A转换器的实际输出与理论值之间的误差,它是以满量程VFS的百分数或最低有效位(LSB)的分数形式表示。

(3)线性误差:D/A转换器的实际转换特性(各数字输入值所对应的各模拟输出值之间的连线)与理想的转换特性(始、终点连线)之间是有偏差的,这个偏差就是D/A的线性误差。即两个相邻的数字码所对应的模拟输出值(之差)与一个LSB所对应的模拟值之差。常以LSB的分数形式表示。

(4)转换时间TS(建立时间):从D/A转换器输入的数字量发生变化开始,到其输出模拟量达到相应的稳定值所需要的时间称为转换时间。 5.5解:

D/A转换芯片的主要结构特性为: (1)数字输入特性

数字输入特性包括接收数的码制、数据格式以及逻辑电平等。目前批量生产的D/A转换芯片一般都只能接收自然二进制数字代码。

(2)模拟输出特性

目前多数D/A转换器件均属电流输出器件,手册上通常给出的输入参考电压及参考电阻之下的满码(全l)输出电流I0。另外还给出最大输出短路电流以及输出电压允许范围。 (3)锁存特性及转换控制

D/A转换器对数字量输出是否具有锁存功能将直接影响与CPU的接口设计。如果D/A转换器没有输入锁存器,通过CPU数据总线传送数字量时,必须外加锁存器,否则只能通过具有输出锁存功能的I/O给D/A送入数字量

(4)参考电源

D/A转换中,参考电压源是唯一影响输出结果的模拟参量,是D/A转换接口中的重要电路,对接口电路的工作性能、电路的结构有很大影响。

5.6解:

① 8位并行D/A转换;

② 片内二级数据锁存,提供数据输入双缓冲、单缓冲、直通三种工作方式;

③ 电流输出型芯片,电流稳定时间1us。通过外接一个运算放大器,可以很方便地提供电压输出;

④ DIP20封装、单电源(+5 V~+15 V,典型值+5 V); ⑤ 只需在满量程下调整其线性度; ⑥ 单一电源供电(十5V~+15V), ⑦ 低功耗,200mW。

⑧ 与MCS-51连接方便。

5.7解:

:片选输入线,低电平有效。

ILE:数据锁存允许输入,高电平有效。 :写1信号输入,低电平有效。当

的第一级锁存。

:写2信号输入,低电平有效。

数据传输信号输入,当

存,并开始进行D/A转换。

,ILE,=010时,数据写入DAC0832

,=00时,数据由第一级锁存进入第二级锁

5.8解:

(1)D/A转换器的数字输入是由数据线引入的,而数据线上的数据是变动的,为了保持D/A转换器输出的稳定,就必须在微处理器与D/A转换器输入口之间增加锁存数据的功能,即必须有锁存器。

(2)有锁存器和无锁存器的D/A转换器与80C51接口的电路有显著不同。

① 内部无锁存器的D/A转换器,如DAC80(8位)、AD7520(10位)、AD7521(12位)。它们的结构简单,内部不带锁存器。

对于这一类D/A转换器,最适合与单片机80C51的P1、P2等具有输出锁存功能的I/O口直接接口。但是当它们与P0口相接口时,则需在器输入端增加锁存器。

② 内部有锁存器的D/A转换器,不仅具有数据锁存器,而且还提供地址译码电路,有些包含双重,甚至多重的数据缓冲结构,如DAC0832、DAC1230、AD7542以及AD7549等。

这种类型的D/A转换器以高位的居多。它们以与80C51中的P0口相接口较为合适,一般只是是需要占用多根口线。 5.9解:

逐次逼近式A/D转换器的转换原理即“逐位比较”,如图5.9所市,它由N位寄存器、D/A转换器、比较器和控制逻辑等部分组成,N位寄存器代表N位二进制数码。

图5.9 逐次逼近式A/D转换器原理图

当模拟量Vx送入比较器后,启动信号通过控制逻辑电路启动A/D开始转换。首先,置N位寄存器最高位(Dn-1)为“1”,其余位清“0”;N位寄存器的内容经D/A转换后得到整个量程一半的模拟电压VN,与输入电压Vx比较。若Vx≥VN时,则保留Dn-1=1;若Vx

将模拟量变换成计算机能够直接处理的数字量,便于与计算机连接,通过计算机处理被测的模拟量。 5.11解:

逐次逼近型的A/D转换器DAC0809 、DAC0816 双积分型A/D转换器 MC14433 、ICL7035 5.12解:

A/D转换器位数的确定与整个测量控制系统所要测量控制的范围和精度有关,计算时应比总精度要求的最低分辨率高一位。实际选取的A/D转换器的位数应与其它环节所能达到的精度相适应。只要不低于它们就行,选得太高既没有意义,而且价格还要高得多。 5.13解:

(1)积分型、电荷平衡型和跟踪比较型A/D转换器转换速度较慢,转换时间从几毫秒到几十毫秒不等,只能构成低速A/D转换器,一般运用于对温度、压力、流量等缓变参量的检测和控制。

(2)逐次比较型的A/D转换器的转换时间可从几μS到100μS左右,属于中速A/D转换器,常用于工业多通道单片机控制系统和声频数字转换系统等。

(3)高速A/D转换器适用于雷达、数字通讯、实时光谱分析、实时瞬态记录、视频数字转换系统等。 5.14解:

在软件编写时,应根据硬件连接电路计算被选择的模拟通道的地址;执行一条输出指令,启动A/D转换;转换结束后,执行一条输入指令,读取A/D转换结果。

可以采用延时、查询和中断的方法判别A/D转换结束 。 5.15解:

(1)应设置D/A转换器的双缓冲方式的情况

有些D/A转换器(如DAC0832)的内部具有两极缓冲结构,即芯片内有一个8位输入寄存器和一个8位DAC寄存器。

这样的双缓冲结构,可以使DAC转换输出前一个数据的同时,将下一个数据传送到8位输入寄存器,以提高D/A转换的速度。更重要的是,能够使多个D/A转换器在分时输入数据后,同时输出模拟电压。

(2)D/A转换器DAC0832的双缓冲方式的接口电路如图5.15所示。

图5.15 DAC0832双缓冲连接电路图

5.16解:

单片机只能处理数字形式的信息,但是在实际工程中大量遇到的是连续变化的物理量,如温度、压力、流量、光通量、位移量以及连续变化的电压、电流等。对于非电信号的物理量,必须先由传感器进行检测,并且转换为电信号,然后经过放大器放大为OV~5V电平的模拟量。所以必须加接模拟通道接口,以实现模拟量和数字量之间的转换。A/D(模/数)转换就是把输入的模拟量变为数字量,供单片机处理;而D/A(数/模)转换就是将单片机处理后的数字量转换为模拟量输出。 5.17解:

A/D转换芯片中采样保持电路的作用是把一个时间连续的信号变换为时间离散的信号,并将采样信号保持一段时间。当外接模拟信号的变化速度相对于A/D转换速度来说足够慢,在转换期间内可视为直流信号的情况下,可以省略采样保持电路。 5.18解:

对于8位A/D转换器,实际满量程电压为5V,则其量化单位1LSB=5V/256=0.0196V,考虑到A/D转换时会进行四舍五入处理,所以最大量化误差为(1/2)LSB,即0.0098V。 5.19解:

硬件电路连接图如图5.19所示。

图5.19 5.19题逻辑电路图

当VO=2.5V时,D=80H;VO=1.25V时,D=40H。 程序如下:

ORG

LJMP MAIN ORG MAIN: MOV NEXT: MOV MOVX ACALL MOV MOV MOVX LOOP: ACALL DJNZ AJMP DELAY: ?? RET END

0100H DPTR,#7FFFH A,#80H @DPTR,A DELAY R4,#04H A,#40H @DPTR,A DELAY R4,LOOP NEXT 0000H

5.20 解:硬件电路连接图如图5.20所示。

图5.20 5.20题逻辑电路图

设80C51的时钟频率为12MHz,程序如下:

ORG 0000H

MAIN:

LJMP ORG LJMP ORG MOV MOV MOV MOV MOV MOV

MAIN 001BH T1_1 0100H SP,#60H R7,#100 R1,#30H R0,#00H R2,#20 R3,#60

;设堆栈指针 ;置采集次数

;片外RAM地址高位 ;片外RAM地址低位 ;置入初值20(计1 s) ;置入初值60(计1 min)

LOOP:

T1_1:

LOOP1:

RETI_0:

MOV TOMD,#10H MOV TH1,#3CH MOV TL1,#0B0H SETB EA SETB ET1 SETB TR1 SJMP LOOP DJNZ R7,LOOP SJMP $ ORG 0200H MOV TH1,#3CH MOV TL1,#0B0H DJNZ R2,RETI_0 MOV R2,#20 DJNZ R3,RETI_0 MOV R6,#8 MOV DPTR,#7FF8H MOVX @DPTR,A JB P1.0,$ MOVX A,@DPTR PUSH DPH PUSH DPL MOV DPH,R1 MOV DPL,R0 MOVX @DPTR,A INC DPTR MOV R1,DPH MOV R0,DPL POP DPL POP DPH INC DPTR DJNZ R6,LOOP1 RETI END

;定时器T1工作于模式1 ;计数器初值

;开中断

;定时器T1允许中断 ;启动定时器T1 ;等待中断

;是否到100次?

;中断服务程序,重新赋计数器初值

;1 s未到,返回

;重新置“100 s”计数器初值 ;1 min未到,返回 ;8个通道计数器初值 ;IN0地址

;启动A/D转换 ;判转换是否结束 ;读取转换结果

;将通道地址压入堆栈

;将片外RAM地址送DPTR

;将转换结果存入片外RAM ;片外RAM地址增1 ;保存片外RAM地址

;恢复通道地址

;8个通道是否采集结束 ;中断返回

第6章

6.1解:

具有人机对话功能。实现人对应用系统的状态干预和数据输入以及应用系统向人报告运行和运行结果。 6.2解:

发光二极管显示器,简称LED(Light Emitting Diode); 液晶显示器,简称LCD(Liquid Crystal Display); 荧光管显示器,简称CRT。 6.3解:

要使LED显示器显示出字符,必须提供段码和位选码。

段码(即字码):可以用硬件译码的方法获得,也可以用软件的方法获得。 位选码:静态显示和动态显示。 6.4解:

(1)建立显示数据缓冲区:存放待显示数字、字符在字型编码表中的序号; (2)软件译码:利用查表方法获得字型编码(段码);

(3)位扫描输出:采用移位方法逐位点亮LED显示器; (4)延时子程序:控制点亮时间和时间间隔。 6.5解:

(1)静态显示方式:静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中。在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。由于单片机本身提供的I/O口有限,实际使用中,通常通过扩展I/O口的形式解决输出口数量不足的问题。

静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。随着显示器位数的增加,需要的I/O口线也将增加。

(2)动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以既保证亮度,又保证显示。若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。 6.6解:

通常的按键所用开关为机械弹性开关。由于机械触电的弹性作用,按键在闭合及断开的瞬间均伴随有一连串的抖动。键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅作一次处理,必须去除抖动。 消除抖动的方法有硬件和软件两种方法。硬件方法常用RS触发器电路。软件方法是当检测出键闭合后执行一个10ms~20ms的延时程序,再一次检测键的状态,如仍保持闭合状态,则确认真正有键按下。 6.7解:

液晶显示器简称LCD(Liquid Crystal Diodes),是一种被动式的显示器,即液晶本身并不发光,利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。

LCD显示器有笔段式和点阵式两种,点阵式又可分为字符型和图像型。笔段式LCD显示器类似于LED数码管显示器。每个显示器的段电极包括七个笔划(段)和一个背电极BP(或COM)。可以显示数字和简单的字符,每个数字和字符与其字形码(段码)对应。

点阵式LCD显示器的段电极与背电极呈正交带状分布,液晶位于正交的带状电极间。点阵式LCD的控制一般采用行扫描方式,通过两个移位寄存器控制所扫描的点。

80C51与液晶显示模块LCM的基本接口电路如图6.7所示。

图6.7 80C51与液晶显示模块LCM的基本接口电路

液晶显示模块初始化子程序(将系统设置成显示2行字符,5×7点阵,开显示,显示光标,字符闪烁,清屏,光标为移动方式,自动地址为增量方式。):

电源打开后,在电源上升到4.5V并维持15ms后,写入功能设置控制字,选择数据接口位数等;等待5ms后,检查忙标志,在不忙的情况下,再进行其他的功能设置;检查忙

标志,在不忙的情况下,关显示;检查忙标志,在不忙的情况下,清屏;检查忙标志,在不忙的情况下,设定输入方式,初始化结束。程序如下:

LCD: MOV A, #38H MOV DPTR, #8000H

MOVX @DPTR, A LCALL BUSY

MOV A, #01H MOV DPTR, #8000H MOVX @DPTR, A LCALL BUSY

MOV A, #07H MOV DPTR, #8000H MOVX @DPTR, A LCALL BUSY

MOV A, #0FH MOV DPTR, #8000H MOVX @DPTR, A RET

PUSH DPH PUSH DPL PUSH PSW PUSH ACC

MOV DPTR, #8001H MOVX A, @DPTR

JB ACC.7, LOOP POP ACC POP PSW POP DPL POP DPH RET

; 保护现场

; 8位数据,2行显示,5×7点阵 ; LCD 的口地址

; 清屏

; AC自动加1,整体显示移动

; 开显示,开光标,字符闪烁

BUSY:

LOOP:

; 读BH及AC ; 忙,继续等待

; 不忙,恢复现场返回

6.8 解:

(1)判断键盘上有无键按下:列输出全0,读行输入状态,若状态为全1,则说明键盘无键按下;若不全为1,则说明键盘有按下。

(2)消除按键抖动的影响:在判断有键按下后,用软件延时的方法,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键按下,否则当作按键抖动处理。

(3)求按键位置,计算键号:用扫描的方法识别闭合键N所在的行号X和列号Y,并根据:以下公式计算闭合键的键号N =X行首键号+列号Y。

(4)键闭合一次仅进行一次按键处理:方法是等待按键释放之后,再进行按键功能的处理操作。 6.9解:

硬件电路连接图如图6.9所示。

图6.9 6.9题LED显示器/键盘电路图

6.10解:

硬件连接电路图如图6.10所示。

图6.10 6.10题扩展键盘电路图 程序如下:

ORG 1000H

START:MOV DPTR, #7FFFH ; 8255初始化

MOV A, #81H

MOVX @DPTR, A KEY: ACALL KEY1 ; 检查有键闭合否 JNZ LKEY1 ; A非0说明有键按下 ACALL DELAY1 ; 执行一次延时子程序(延时6 ms) AJMP KEY

LKEY1: ACALL DELAY1 ACALL DELAY1 ; 有键闭合延时2×6ms=12ms以去抖动 ACALL KEY1 ; 延时以后再检查是否有键闭合 JNZ LKEY2 ; 有键闭合,转LKEY2 ACALL DELAY1 ; 无键闭合,说明是干扰信号,不作处理 AJMP KEY ; 延时6ms后转KEY继续等待键入 LKEY2: MOV R2, #0EFH ; 扫描初值送R2,设定PC4为当前扫描线 MOV R4, #00H ; 回送初值送R4 LKEY4: MOV DPTR, #7FFEH ; 指向PC口

MOV MOVX MOV JB MOV

A, R2 @DPTR, A ; 扫描初值送PC口 A, @DPTR ; 取回送线状态

ACC.0, LONE ; ACC.0=1,第0行无键闭合,转LONE A, #00H ; 装第0行行值

LONE: LTWO: LTHR:

LKEYP: LKEY3: NEXT:

AJMP LKEYP JB ACC.1, LTWO MOV A, #08H AJMP LKEYP JB ACC.2, LTHR MOV A, #10H AJMP LKEYP JB ACC.3, NEXT MOV A, #18H ADD A, R4 PUSH ACC ACALL DELAY1 ACALL KEY1 JNZ LKEY3 POP ACC RET

INC R4 MOV A, R2 JNB ACC.7, KND RL A

; 转计算键码

; ACC.1=1,第1行无键闭合,转LTWO ; 装第1行行值 ; 转计算键码

; ACC.2=1,第2行无键闭合,转LTHR ; 装第2行行值

; ACC.3=1,第3行无键闭合,转NEXT ; 装第3行行值 ; 计算键码 ; 保存键码 ; 延时6ms

; 判断键是否继续闭合,若闭合再延时 ; 若键释放,则键码送A ; 列号加1

; 第7位为0,以扫描到最高列,转KND ; 循环左移一位

MOV R2, A AJMP LKEY4 ; 进行下一列扫描 KND: AJMP KEY ; 扫描完毕,开始新的一轮 KEY1: MOV DPTR, #7FFEH ; 将PC口地址送DPTR,PC口高四位作为扫描线 MOV A, #00H ; 所有扫描线均为低电平 MOVX @DPTR, A ; PC口向列线输出00H MOVX A, @DPTR ; 取回送线状态 CPLA ; 行线状态取反 ANL A, #0F0H ; 屏蔽A的高四位 RET ; 返回

DELAY1: MOV R7,#4 ; 延时6mS延时子程序

D1:MOV R6,#220 D2: DJNZ R6,D2

DJNZ R6,D2 DJNZ R7,D1 RET END

6.11解:

硬件连接电路图如图6.11所示。

图6.11 6.11题扩展键盘电路图 程序如下:

ORG 1000H

SERKEY: MOV SCON, #00H MOV A, #00H LCALL VARTO

; 设置串行口

; 键盘初始化,送00H到列线上 ; 发送数据

本文来源:https://www.bwwdw.com/article/bgt7.html

Top