第二章 单片机结构及原理
1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:(1)一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。
(2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。 (3)4K ROM程序存贮器:存贮程序及常用表格。
(4)128B RAM 数据存贮器:存贮一些中间变量和常数等。 (5)两个16bit定时器/计数器:完全硬件定时器
(6)32根可编程I/O口线:标准8位双向(4个)I/O接口,每一条I/O线都能地作输入或输出。
(7)一个可编程全双工串行口。 (8)五个中断源。
2、什么是指令?什么是程序?
答:指令是规定计算机执行某种操作的命令。
程序是根据任务要求有序编排指令的集合。
3、如何认识S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间?
答:S51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。在逻辑上有3个存储器地址空间:片内、片外统一的KB程序存储器地址空间,片内256B数据存储器地址空间,片外KB的数据存储器地址空间。 4、开机复位后,CPU使用的是哪组工作寄存器?他们的地址是多少?CPU如何确定和改变当前工作寄存器组?
答:开机复位后,CPU使用的是第0组工作寄存器,地址为00H~07H,CPU通过改变状态字寄存器PSW中的RS0和RS1来确定工作寄存器组。
5、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果CPU在操作中要使用两组工作寄存器,SP应该多大?
答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针SP复位后指向07H单元,00H~1FH为工作寄存器区,20H~2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。如果CPU在操作中要使用两组工作寄存器,SP应该至少设置为0FH。
6、S51/52的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为8MHz时,一个单片机周期为多少微秒?
答:时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是执行一条指令所需要的时间,由若干个机器周期组成。
若fosc=8MHz,则一个机器周期=1/8×12μs=1.5μs
7、S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突?
答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。 8、程序状态字寄存器PSW的作用是什么?常用状态标志有哪些位?作用是什么?
答:程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下:
PSW.7(Cy):进位标志位。 PSW.6(AC):辅助进位标志位,又称为半进位标志位。 PSW.5(F0):用户标志位。
PSW.4、PSW.3(RS1和 RS0):寄存器组选择位。 PSW.2(OV):溢出标志位。 PSW.1(空缺位):此位未定义。 PSW.0(P):奇偶校验位。
9、位地址7CH和字节地址7CH有何区别?位地址7CH具体在内存中什么位置?
答:字节地址7CH是片内数据存储器中的一个地址单元,该地址单元中可以存放8位二进制数,位地址7CH是内部数据存储器中位寻址区中的一位,该地址单元中可以存放1位二进制数。位地址7CH具体在片内数据存储器字节地址为2FH中的第4位(2FH.4)。
10、S51/52中4个I/O端口的作用是什么?S51/52的片外三总线是如何分配的?
答:I/O端口是单片机与外界联系的重要通道,实现与外部设备的信息的传输。总线分配:片外数据总线(8根)通过P0口输出,片外地址总线(16根)通过P0口(低8位)和P2口(高8位)输出,片外控制总线(PSEN ,ALE , RD ,WR ,EA)主要通过P3口。 11、S51/52中4个I/O端口在结构上有何异同?
S51/52单片机的4个I/O口在结构上是基本相同的,但又各具特点。这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入“1”,使输出驱动场效应管FET截止,以免误读数据。各自特点如下:
(1)P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。每个引脚可驱动8个TTL负载。
(数字电路按工艺有肖特基双极晶体管和CMOS工艺两种,使用双极晶体管的数字电路称TTL数字电路,
单片机输出端带负载能力,意思就是单片机的P3端口只能并联4个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口相同,常用第二功能。
12、复位的作用是什么?有几种复位方法?复位后单片机的状态如何?
答:复位是单片机的初始化操作。单片机在RST引脚产生两个机器周期(即24个时钟周期)以上的高电平即可实现复位。主要的复位方法有上电自动复位和按键手动复位两种。按键手动复位又分:按键电平复位和按键脉冲复位。
第三章 指令系统
1、简述下列名词术语的基本概念:指令、指令系统、程序、汇编语言指令 答:指令:规定单片机进行某种操作的命令称为指令。 指令系统:单片机能够执行的各种指令的集合。
程序:一系列指令的有序集合称为程序。
汇编语言指令:用助记符形式来表示机器指令。
2、80C51单片机有哪几种寻址方式?这几种寻址方式是如何寻址的?
答:共7种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址,位寻址和相对寻址。
寄存器寻址方式:由指令指出某一寄存器的内容做为操作数。
- 1 -
直接寻址方式:指令中操作数直接以单元地址的形式给出。
寄存器间接寻址方式 :寄存器间接寻址方式,寄存器中存放的则是操作数的地址,即操作数是通过寄存器间接得到的。
立即寻址方式:操作数在指令中直接给出。
变址寻址方式:变址寻址是为了访问程序存储器中的数据和表格。MCS-51的变址寻址是以DPTR或PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成的16•位地址做为操作数地址,以达到访问数据和表格的目的。
位寻址方式:指对片内RAM的位寻址区和某些可寻址的特殊功能寄存器进行位操作的寻址方式。
相对寻址方式:相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。 3、要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式?
答:访问特殊功能寄存器可以采用直接寻址、寄存器寻址和位寻址(针对可以进行位寻址的特殊功能寄存器)方式。访问片外数据存储器可采用寄存器间接寻址方式。 4、80C51单片机的指令系统可以分为哪几类?说明各指令的功能。 答:51单片机指令系统按功能可分为5类:
(1)数据传送指令 主要进行数据的传送、交换等; (2)算术运算指令 主要进行基本的加减乘除运算;
(3)逻辑运算指令 主要实现逻辑运算与移位运算; (4)控制转移指令 主要是实现对程序流程的控制; (5)位操作指令
5、外部数据传送指令有哪几条?有和区别?
答:外部数据传送指令有读指令和写指令两类,每类指令的寻址范围不同,分别为: 读外部存储器指令: MOVX A,@Ri ;寻址范围为256字节 MOVX A,@DPTR ;寻址范围为K字节 写外部存储器指令: MOVX @Ri,A ;寻址范围为256字节 MOVX @DPTR,A ;寻址范围为K字节 6、在S51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,请分别分析下段程序按序执行后的结果。
MOV A,40H ;A=48H MOV R0,A ;R0=48H MOV P1,#0FFH ;P1=FFH MOV @R0,30H ;(48H)=38H MOV DPTR,#1246H ;DPTR=1246H MOV 40H,38H ;(40H)=40H MOV R0,30H ;R0=38H MOV 90H,R0 ;(90H)=38H MOV 48H,#30H ;(48H)=30H MOV A,@R0 ;A=40H MOV P2,P1 ;P2=38H 7、略
8、DA A 指令的作用是什么?怎样使用?
答:对十进制BCD数作加法时进行调整,当结果的低4位A0~A3>9,或半进位AC=1,则A0~A3+6,否则不加;当结果的高4位A4~A7>9,或进位CY=1,则A4~A7+6,否则不加;这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正,使其仍为BCD码表示形式。
9、试编程将片外数据存储器60H中的内容传送到片内RAMH单元中。
- 2 -
答: MOV R0,#60H MOVX A,@R0 MOV H,A
10、试编程将寄存器R7的内容传送到R1中去。 答: MOV A,R7 MOV R1,A
11、已知当前PC值为210H,请用两种方法将程序存储器2F0H中的常数送入累加器A中。 答:(1)以程序计数器PC作为基址寄存器 MOV A,#0E0H MOVC A,@A+PC
(2)以数据指针DPTR作为基址寄存器 MOV DPTR,#02F0H
MOV A,#00H
MOVC A,@A+DPTR
12、试说明下段程序中每条指令的作用,并分析当指令执行完后,R0中的内容是什么? MOV R0,#0A7H ;R0=A7H,立即数送寄存器R0
XCH A,R0 ;A=A7H,累加器A中的数据与R0中的数据进行交换 SWAP A ;A=7AH,累加器A中的高低四位进行交换 XCH A,R0 ;R0=7AH,数据交换回R0 13、请用两种方法实现累加器A与寄存器B的内容交换。 答:(1)MOV R0,A MOV A,B MOV B,R0 (2)MOV R0,B XCH A,R0
14、试编程将片外RAM中40H单元的内容与R1的内容交换。 答: MOV R0,#40H MOVX A,@R0 XCH A,R1 MOVX @R0,A
15、已知:A=0C9H,B=8DH,CY=1。
执行指令 ADDC A,B结果如何? A=57H,CY=1,OV=1,AC=1,P=1 执行指令 SUBB A,B结果如何? A=3BH,CY=0,AC=1,OV=1
16、试编程将片外RAM中30H和31H单元中的内容相乘,结果存放在32H(低位)和33H(高位)单元中。
答: MOV R0,#30H MOVX A,@R0 MOV B,A INC R0 MOVX A,@R0 MUL AB INC R0 MOVX @R0,A
- 3 -
MOV A,B INC R0 MOVX @R0,A
17、试用3种方法将累加器A中的无符号数乘2. 答:(1)MOV R0,A ADD A,R0 (2)MOV B,#2 MUL AB (3)RL A
18、分析依次执行下列指令的结果:
MOV 30H,#0A4H ;(30H)=A4H MOV A,#0D6H ;A=D6H MOV R0,#30H ;R0=30H MOV R2,#47H ;R2=47H ANL A,R2 ;A=46H ORL A,@R0 ;A=E6H SWAP A ;A=6EH CPL A ;A=91H XRL A,#0FFH ;A=6EH ORL 30H,A ;(30H)=EEH
19、求下列指令执行后,累加器A及PSW中进位CY、奇偶位P和溢出位OV的值。 (1)当A=5BH时 ;ADD A,#8CH (2)当A=5BH时 ;ANL A,#7AH (3)当A=5BH时 ;XRL A,#7FH
(4)当A=5BH,CY=1时 ;SUBB A,#0E8H 答:(1)A=E7H,CY=1,P=0,OV=0 (2)A=5AH ,P=0 (3)A=24H ,P=0
(4)A=72H,CY=1,P=0,OV=0
20、把累加器A中的低4位数据送到外部数据存储器的2000H单元。 答: ANL A,#OFH
MOV DPTR,#2000H MOVX @DPTR,A
21、试说明指令CJNE @R1,#7AH,10H的作用,若本指令地址为250H,其转移地址是多少? 答:指令作用:如果以R1内容为地址的单元中的数据等于7AH,则程序顺序执行,否则转移后继续执行。若本指令地址为250H,则转移地址为250H+03H+10H= 263H。 22、将累加器A中的数据由0递增,加到50,结果在累加器A中。 答: CLR A
MOV R0,#50 L1: INC A
DJNZ R0,L1
23、试说明压栈指令和弹栈指令的作用及执行过程。
- 4 -
答:压栈(入栈或进栈)指令的作用是将数据存入堆栈中,其执行过程是先将堆栈指针SP的内容加1,然后将直接地址单元中的数据压入SP指向的单元中。若数据已推入堆栈,则SP指向最后推入数据所在的存储单元(即指向栈顶)。
弹栈(出栈)指令的作用是将数据从堆栈中取出,其执行过程为先将堆栈指针SP所指出单元的内容送入直接寻址单元中,然后将SP的内容减1,此时SP指向新的栈顶。 24、下述程序执行后,SP=?,A=?,B=?。 ORG 2000H MOV SP,#40H MOV A,#30H
LCALL 250H ;下条指令地址2008H送41H、42H,SP=42H ADD A,#10H
MOV B,A ;地址为200AH L1: SJMP L1 ORG 250H
MOV DPTR,#200AH
PUSH DPL ;SP+1=43H,DPL→(43H) PUSH DPH ;SP+1=44H,DPH→(44H) RET ;200AH→PC 答:上述程序执行后,SP=42H,A=30H,B=30H。
25、发光二极管点亮规律:先是第1和第8个亮,延时一段时间后,第2和第7个亮,延时后,再是第3和第6个亮,延时后,最后是第4和第5个点亮,延时后循环。
26、若系统晶振频率为6MHz,求子程序DELAY的延时时间,若想加长或缩短时间,应该怎样修改? 答: DELAY: MOV R2,#0FAH L1: MOV R3,#0FAH L2: DJNZ R3,L2 DJNZ R2,L1 RET
总时间计算:T=4μs+(250×4μs+4μs)×250+4μs=251.008ms 估算:T=250×4μs×250=250ms
若想加长延时时间,可以增加循环次数或再加一重循环; 若想减小延时时间,可以减少循环次数或较少一重循环。
27、P1口连接8个共阳极连接的发光二极管,是编制灯亮移位程序。 答: MOV A,#0FEH L1: MOV P1,A RL A
LCALL DELAY ;DELAY子程序同上题 SJMP L1
28、试编一程序,将外部数据存储器2100H单元中的高4位置“1”,其余位清“0”。 答: MOV DPTR,#2100H MOVX A,@DPTR ORL A,#0F0H ANL A,#0F0H MOVX @DPTR,A
29、试编程将片内数据存储器40H单元的第0为和第7位置1,其余取反。 答: MOV A,40H
- 5 -
CPL A SETB ACC.0 SETB ACC.7 MOV 40H,A
30、将A.5与80H位相与的结果,通过P1.4输出。 MOV C,80H ANL C,ACC.5 MOV P1.4,C
31、请用位操作指令,求下列逻辑方程。 (1)P1.7ACC.0(B.0P2.1)P3.2 MOV C,B.0 ORL C,P2.1 ANL C,ACC.0 ORL C,/P3.2
MOV
P1.7,C
(2)PSW.5P1.3ACC.2B.5P1.1 MOV C,P1.3 ANL C,ACC.2 MOV 20H,C MOV C,B.5 ANL C,/P1.1 ORL C,20H
MOV
PSW.5,C
(3)P2.3P1.5B.4ACC.7P1.0 MOV C,B.4 ANL C,/P1.5 MOV 20H,C MOV C,P1.0 ANL C,/ACC.7
ORL
C,20H (下一行)MOV P2.3,C
第四章 汇编语言程序设计
1、编程将片内40H~60H单元中的内容送到以3000H为首的存储区内。答: MOV R1,#40H MOV R2,#21H MOV DPTR,#3000H L1: MOV A,@R1 MOVX @DPTR,A INC R1 INC DPTR DJNZ R2,L1 2、编程计算下列算式的程序 (1)23H+45H+ABH+03H=
- 6 -
MOV A,#23H ADD A,#45H ADD A,#0ABH
XCH A,B ;溢出处理 ADDC A,#00H XCH A,B
ADD A,#03H ;A中为结果低位,B中为高位 (2)CDH+15H-38H-46H= MOV A,#0CDH ADD A,#15H SUBB A,#38H SUBB A,#46H (3)1234H+8347H=
MOV A,#34H ADD A,#47H MOV 30H,A MOV A,#12H ADDC A,#83H
MOV 31,A ;30H存结果低位,31H存结果高位 (4)AB123H-43ADCH= CLR C
MOV A,#23H SUBB A,DCH MOV 30H,A MOV A,#0B1H SUBB A,#3AH MOV 31H,A MOV A,#0AH SUBB A,,#04H
MOV 32H,A ;30H为低位,32H为高位 3、设有两个4位BCD码,分别存放在23H、22H单元和33H、32H单元中,求他们的和,并送入43H、42H单元中(低位在低字节,高位在高字节)。 答: MOV A,22H ADD A,32H MOV 42H,A MOV A,23H ADDC A,33H MOV 43H,A 4、略
5、编程计算片内RAM区50H~59H单元中数的平均值,结果存放在5AH中。 答: MOV R0,#8 MOV R1,#50H MOV A,#00H L1: ADD A,@R1 INC R1
- 7 -
DJNZ R0,L1 MOV B,#8 DIV AB MOV 5AH,A
6、编写计算下式的程序。设乘积和平方结果均小于255。a 、b值分别存在片外3001H和3002H单元中,结果存于片外3000H单元中。
(1)Y25,abab ,ab
ab,ab
MOV DPTR,#3001H MOVX A,@DPTR MOV 30H,A INC DPL
MOVX A,@DPTR CJNE A,30H,L1 MOV A,#25 SJMP SAVE L1: JNC L2 MOV B,30H MUL AB SJMP SAVE L2: MOV B,A MOV A,30H DIV AB
SAVE: MOV DPTR,#3000H
MOVX
@DPRT,A
(ab)210(2)Y(ab)2 (ab)210
MOV DPTR,#3001H MOVX A,@DPTR MOV 30H,A INC DPTR MOVX A,@DPTR ADD A,30H MOV B,A
MUL AB MOV 31H,A CJNE A,#10,L1 SJMP SAVE L1: JC L2 CLR C
SUBB
A,#10
;a暂存30H单元
;是否a=b
,(ab)210,(ab)210
,(ab)210; (a+b)
2
- 8 -
SJMP SAVE L2: ADD A,#10
SAVE: MOV DPTR,#3000H MOVC @DPTR,A
7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中,试编程求其对应项之和,结果存放到以220H为首地址的存储区中。 答: MOV DPH,#02H MOV R1,#15
MOV R2,#00H ; 数组1首地址低位 MOV R3,#10H ; 数组2首地址低位 MOV R4,#20H ; 和首地址低位 L1: MOV DPL,R2 MOVX A,@DPTR MOV R1,A MOV DPL,R3 MOVX A,@DPTR ADD A,R1 MOV DPL,R4 MOVX @DTPR,A INC R2 INC R3 INC R4 DJNZ R1,L1 SJMP $
8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正数、负数和零的个数。
答: MOV 30H,#00H ;正数计数器 MOV 31H,#00H ;负数计数器 MOV 32H,#00H ;零计数器 MOV DPTR,#2000H MOV R1,#100 L4: MOVX A,@DPTR INC DPTR
CJNE A,#0,L1 INC 32H SJMP L2 L1: JC L3 INC 30H SJMP L2 L3: INC 31H L2: DJNZ R1,L4 SJMP $
9、将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片内RAM 30H~60H中,并将原数据块区域全部清零。 答: MOV R0,#30H
- 9 -
LP:
10、试编写一子程序,是R1、R0指向的两个片外RAM连续单元中的高4位二进制数,合并成一个字节,装入累加器A中。已知R0指向低地址,并要求该单元高四位放在A中高四位。 答: MOVX A,@R1 ANL A,#0F0H SWAP A MOV R2,A MOVX A,@R0 ANL A,#0F0H ORL A,R2
11、试编程把以2040H为首地址的连续50个单元的无符号数按降序排列,存放到以3000H为首地址的存储区中。
答: MOV R2,#50 MOV R3,#20H
MOV R4,#40H ;源地址 MOV R5,#30H
MOV R6,#00H ;目的地址
SEND: MOV DPH,R3 ;SEND将2040H数据块移入3000H存储区 MOV DPL,R4 MOVX A,@DPTR INC DPTR MOV R3,DPH MOV R4,DPL MOV DPH,R5 MOV DPL,R6 MOVX @DPTR,A INC DPTR MOV R5,DPH MOV R6,DPL DJNZ R2,SEND
MOV R2,#49 ;重复次数 CMP1: MOV DPTR,#3000H
MOV R3,#49 ;比较次数 CMP2: MOVX A,@DPTR
MOV MOV MOVX MOV AND MOVX INC INC DJNZ SJMP R2,#31H
DPTR ,#1000H A,@DPTR @R0,A A,#00H @DPTR,A R0 DPTR R2,LP $
- 10 -
L1:
MOV B,A INC DPTR MOVX A,@DPTR CJNE A,B,L1 JC NOMOVE MOV 30H,A CLR C
MOV A,DPL SUBB A,#01H MOV DPL,A MOV A,30H MOVX @DPTR,A INC DPTR MOV A,B MOVX @DPTR,A
NOMOVE: DJNZ R3,CMP2 ;50个数重复一遍? DJNZ R2,CMP1 ;排序结束? LJMP $
12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出ASCII码为A,将其地址送到20A0H和20A1H单元中。 答: MOV DPTR,#2000H MOV R2,#100 GO_ON: MOVX A,@DPTR
CJNE A,#41H,IFEND MOV A,DPH MOV B,DPL
MOV DPTR,#20A0H MOVX @DPTR,A INC DPTR XCH A,B MOVX @DPTR,A SJMP OVER IFEND: INC DPTR
DJNZ R2,GO_ON OVER: SJMP OVER
13、设在200H~204H单元中,存放5个压缩BCD码,编程将他们转换成ASCII码,存放到以205H单元为首地址的存储区。 答: MOV R2,#05H MOV R3,#02H MOV R4,#00H MOV R5,#02H MOV R6,#05H CHLP: MOV DPH,R3
MOV DPL,R4
MOVX A,@DPTR
- 11 -
INC DPTR MOV R3,DPH MOV R4,DPL MOV B,A SWAP A
ANL A,#0FH ORL A,#30H MOV DPH,R5 MOV DPL,R6 MOVX @DPTR,A INC DPTR MOV A,B ANL A,#0FH ORL A,#30H MOVX @DPTR,A MOV R5,DPH MOV R6,DPL DJNZ R2,CHLP
14、有一无符号数据块长度在30H单元中,其首地址为31H单元,求出数据块中最大值,并存入40H中。
答: MOV R0,#31H MOV R1,30H MOV 40H,#00H LOOP: MOV A,@R0 CJNE A,40H,L1 SJMP AGAIN L1: JNC L2 SJMP AGAIN L2: MOV 40H,A AGAIN: INC R0
DJNZ R1,LOOP SJMP $ 15、略
16、在以2000H为首地址的存储区内,存放20个用ASCII码表示的0~9之间的数,试编程,将它们转换成BCD码,并以压缩BCD码的形式存在3000H~3009H单元中。 答: MOV R2,#10 MOV R3,#20H MOV R4,#00H MOV R5,#30H MOV R6,#00H LP: MOV DPH,R3 MOV DPL,R4 MOVX A,@DPTR ANL A,#0FH SWAP A
- 12 -
XCH A,B INC DPTR MOVX A,@DPTR ANL A,#0FH ORL A,B INC DPTR MOV R3,DPH MOV R4,DPL MOV DPH,R5 MOV DPL,R6 MOVX @DPTR,A INC DPTR MOV R5,DPH MOV R6,DPL DJNZ R2,LP SJMP $
17、试编程实现下列逻辑表达式功能。设P1.7~P1.0为8个变量的输入端,而其中P1.7又作为变量的输出端。
;输入端定义
X0 EQU P1.0
X1 EQU P1.1 X2 EQU P1.2 X3 EQU P1.3 X4 EQU P1.4 X5 EQU P1.5 X6 EQU P1.6
X7 EQU P1.7
(1)YX0X1X2X3X4X5X6X7
MOV ANL ANL ORL MOV MOV ANL ANL ORL ORL MOV
C,X0 C,X1 C,/X2 C,X3 00H,C C,X4 C,X5 C,X6 C,/X7 C,00H P1.7,C
(2)YX0X1X2X3X4X5X6X7
MOV ANL CPL
C,X0 C,X1 C
- 13 -
MOV 00H,C MOV C,X2 ANL C,X3 ANL C,X4 CPL C
MOV 01H,C MOV C,X5 ANL C,X6 ANL C,X7 CPL C
ORL C,O1H CPL C
ORL C,00H MOV P1.7,C 18、略 19、略
20、试编写延时1s、1min、1h子程序。
;单片机时钟fosc=12MHz,计算为近似值 ;1s延时子程序 DLY_1S: MOV R0,#10 L3: MOV R1,#200 L2: MOV R2,#250 L1: DJNZ R2,L1 DJNZ R1,L2 DJNZ R0,L3 RET
;延时1min
DLY_1M: MOV R3,#60 L4: LCALL DLY_1S DJNZ R3,L4 RET
;延时1h
DLY_1H: MOV R4,#60 L5: LCALL DLY_1M DJNZ R4,L5 RET
21、用程序实现c=a2+b2。设a、b均小于10,a存在31H单元中,b存在32H单元中,c存33H单元。
答: ORG 1000H SR: MOV A,31H
ACALL SQR MOV R1,A MOV A,32H
- 14 -
ACALL ADD MOV SJMP SQR A,R1 33H,A $
;求平方子程序如下(采用查平方表的方法) SQR: INC A
MOVC A, @A+PC RET
TABLE: DB 0, 1, 4, 9, 16
DB 25,36,49,,81 END
22、如何实现将内存单元40H~60H的数逐个对应传到片外20H~2560H单元中? 答: MOV R0,#40H MOV DPTR,#20H MOV R2,#21H L1: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,L1 SJMP $ 23、参考21题 24、参考21题 25、参考实验程序 26、参考实验程序
第五章 定时/计数器
1、S51单片机内部有几个定时/计数器,他们有哪些专用寄存器组成?
答:S51单片机内部有两个16位定时/计数器,为定时器0(T0)和定时器1(T1)。在定时器/计数器的16位的计数器是由两个8位的专用寄存器TH0、TL0,TH1、TL1组成。 2、S51单片机的定时/计数器有哪几种工作方式,各有什么特点?
答:定时器/计数器有四种工作方式:方式0,方式1,方式2,方式3。其中,方式3只适用于T0。
以T0为例:①方式0,16位寄存器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位组成一个13位计数器;②方式1,和方式0的工作相同,唯一的差别是TH0和TL0组成一个16位计数器;③方式2,把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器。TH0由软件预置值。当TL0产生溢出时,一方面使溢出标志TF0置1,同时把TH0中的8位数据重新装入TL0中;④方式3,将使TL0和TH0成为两个相互的8位计数器,TL0利用T0本身的一些控制,它的操作与方式0和方式1类似。而TH0被规定为只用作定时器功能,对机器周期计数,并借用了T1的控制位TR1和TF1。在这种情况下TH0控制了T1的中断。这时T1还可以设置为方式0~2,用于任何不需要中断控制的场合,或者用作串行口的波特率发生器。
- 15 -
3、定时/计数器用作定时方式时,其定时时间与哪些因素有关?作为计数时,对外界计数频率有何?
答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。
定时/计数器作计数时,由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
4、当定时器T0用作方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭? 答:定时器T0用作方式3时,由于TR1位已被T0占用,此时通过控制位C/T切换其定时或计数器工作方式。当设置好工作方式时,定时器T1自动开始运行,若要停止,只需送入一个置定时器T1为方式3的方式字。
5、已知S51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲。矩形波高电平宽度50µs,低电平宽度350µs。 答: ORG 1000H
MOV TMOD,#02H ;设置工作方式 MOV TH0,#09CH ;设置定时器初值 MOV TL0,#09CH
SETB TR0 ;启动定时器
LOOP: SETB P1.2 ;P1.0输出高电平
MOV R0,#07H
DEL: JBC TF0 ,REP ;定时是否到?
AJMP DEL
REP: SETB P1.2 ;P1.0输出低电平
DJNZ R0,DEL AJMP LOOP END
6、在S51单片机中,已知时钟频率为12MHz,请编程使P1.0和P1.1分别输出周期为2ms和500μs的方波。
答:选择方式2,用定时器T1 MOV TMOD,#20H MOV TH1,#06H MOV TL1,#06H SETB TR1
L1: MOV R2,#04H L2: JNB TF1,$ CLR TF1, CPL P1.1 DJNZ R2,L2 CPL P1.0 LJMP L1
7、设系统时钟为24MHz,试用定时器T0做外部计数器,编程实现每计到1000个脉冲,是T1开始2ms定时,定时时间到后,T0又开始计数,循环往复。
答: MOV TMOD,#15H ;T1定时方式1,T0计数方式1 L1: MOV TH0,#0FCH MOV TL0,#18H SETB TR0
- 16 -
8、略 9、略
JNB CLR CLR MOV MOV SETB JNB CLR CLR LJMP TF0,$ TR0 TF0
TH1,# H TL1,# H TR1 TF1,$ TR1 TF1 L1
第六章 80C51的串行接口
1、什么是串行异步通信?他有哪些特点?有哪几种帧格式?
答:串行通信即所传输数据的各位按顺序一位一位的发送或接收。串行通信分为同步和异步两种方式。
在异步通信中数据或字符是一帧一帧地传送的。帧定义为一个字符的完整的通信格式,通常也称为帧格式。
它的主要特点:由于异步通信每传送一帧有固定的格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单;此外它还能利用校验位检测错误。
帧格式的一般形式是先用一个起始位“0”表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符结束。
2、某异步通信接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。
答:设每个字符由1个起始位、8个数据位、1个可编程位和1个结束位组成,其传送波特率为: 11b×3600/60s=660bps
3、80C51单片机的串行口由哪些基本功能部件组成? 答: 80C51单片机的串行口基本功能部件主要有:两个数据缓冲寄存器SBUF,一个串行口控制寄存器SCON,一个输入移位寄存器。
4、80C51单片机的串行口有几种工作方式?几种帧格式?如何设置不同方式的波特率? 答:80C51单片机的串行口有四种工作方式,由串行口控制寄存器中的SM0、SM1控制。
80C51单片机的串行通信有8位、10位、11位三种帧格式。
波特率设置:4种工作方式波特率的计算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,均由定时器T1的溢出率控制。具体计算如下:
方式0:波特率固定为时钟频率的1/12,不受SMOD的影响。(SMOD为波特率倍增位)
SMOD
方式1的波特率=2/32×定时器T1的溢出率
SMOD
方式2的波特率=2/×fosc
SMOD
方式3的波特率=2/32×定时器T1的溢出率
5、为什么定时器T1用作串行口波特率发生器时,常采用工作方式2?
答:在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。串口有四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,有定时
- 17 -
器T1的溢出率控制。定时器T1用作串行口波特率发生器时,因为工作方式2是自动重装载方式,因而定时器T1作波特率发生器常采用工作方式2.
6、已知定时器T1设置成方式2,用作波特率发生器,系统时钟频率为24MHz,求可能产生的最高和最低的波特率是多少?
答:最高波特率:TH1=0FFH,TL1=0FFH
波特率最高=2/32×24M/(12×(256-255))bps=0.125Mbps 最低波特率:TH1=00H,TL1=00H
波特率最低=1/32×24M/(12×(256-0))bps=244bps
9、串行口异步通信时,ASCII码“3”的字符格式(10位)如何?
答:串行口异步通信时,10位的数据帧结构为:一个起始位(0),8个数据位(先低位后高位),一个停止位(1)。
故ASCII码“3” 的字符格式为:0110011001B。
10、若选用定时器T1作波特率发生器,设fosc=6MHz,计数初值为0FDH,SMOD=1,求波特率是多少?
答:若选用定时器 T1作波特率发生器,波特率由下式确定:
波特率=(定时器T1溢出率)/n
公式中:①n为32或16,取决于特殊功能寄存器PCON中的SMOD位的状态。若SMOD=0,则n=32。若SMOD=1,则n=16。②定时器T1溢出率=定时器T1的溢出次数/秒。 由题可知:fosc=6MHz,计数初值为0FDH,SMOD=1,故
6MHz10.42kHz
16122560FDH第七章 中断系统
1、什么是中断?在单片机中中断能实现哪些功能?
答:中断是通过硬件来改变CPU程序运行方向。计算机在执行程序过程中,由于CPU以外的原因,有必要尽快终止当前程序的执行,而去执行相应的处理程序,待处理结束后,在回来继续执行被终止的原程序。这种程序在执行过程中由于外界的原因而被中间打断的情况成为“中断”。
中断能实现的功能:(1)能实现中断及返回。
(2)能实现优先权的排队。 (3)能实现中断的嵌套。
2、什么是中断优先级?中断优先级处理的原则是什么?
答:通常,在系统中会有多个中断源,有时会出现两个或更多个中断源同时提出中断请求的情况,这就要求计算机能区分各个中断源的请求,有能确定首先为哪一个中断源服务。为了解决这一问题,通常给各中断源规定了优先级别,称为优先权或中断优先级。
中断优先级处理原则:两个或两个以上的中断源同时提出中断申请时,计算机首先为中断优先权最高的中断服务,服务结束以后,再响应级别较低的中断源。
3、80C51有几个中断源,各中断标志如何产生的,又如何清“0”的?CPU响应中断时,中断入口地址各是多少?
答:8051单片机有5个中断源,分别是:外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口中断。
中断标志产生与清“0”: (1)外部中断:外部中断由外部原因引起,可以通过两个固定的引脚(INT0和INT1)输入信号。一旦输入信号有效,则向CPU申请中断并使IE0(或IE1)=1。硬件复位。
- 18 -
(2)定时器中断:定时器中断是为了满足定时或计数溢出处理的需要而设置的。当定时/计数器的计数结构发生计数溢出时,即表明定时时间到或计数次数到,此时就以计数器溢出信号作为中断请求,去置一个溢出标志位(TF0或TF1=1)。使用中断时通过硬件复位,在查询方式下可由软件复位。
(3)串口中断:串行中断请求是在单片机内部产生的。当发送完数据或接收完数据后,就会置相应标志位(TI或RI=1)。一旦响应中断,必须由软件进行复位。
中断入口地址:外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口中断的入口地址依次为:0003H,000BH,0013H,001BH,0023H。 4、中断响应时间是否确定不变的?为什么?
答:中断响应时间不是确定不变的。由于CPU不是在任何情况下都可以中断请求予以响应,不同情况对中断响应的时间也是不一样的。中断信号会在每个机器周期的S5P2时刻对相应中断标志位进行置位,若CPU在下一个机器周期才能查询到中断请求,如果满足中断响应的条件,下一条指令将是一硬件长调用指令,使程序转入中断矢量入口,调用本身需要2个机器周期,因此响应中断至少需要3个机器周期。如遇正在执行的指令,或有同级、更高级的中断服务正在进行,则需更长时间。若系统中只有一个中断源,则响应时间为3~8个机器周期。
5、用定时器T1定时,要求在P1.6口输出一个方波,周期为1min,晶振为12MHz,请用中断方式实现,并分析采用中断后的优点。
答:使用定时器T1,工作在方式1,定时50ms ORG 0000H LJMP MAIN ORG 001BH LJMP T1_SER ORG 0100H
MAIN: MOV TMOD,#10H
MOV R0,#20 ;1s定时次数 MOV R1,#30 ;定时30s MOV TH1,#3CH MOV TL1,#0B0H SETB ET1 SETB EA SETB TR1 SETB P1.6 SJMP $ 0RG 0200H T1_SER: MOV TH1,#3CH MOV TL1,#0B0H DJNZ R0,L1 MOV R0,#20 DJNZ R1,L1 MOV R1,#30 CPL P1.6 L1: RETI
6、中断响应过程中,为什么通常要保护现场?如何保护?
答:因为一般主程序和中断服务程序都可能会用到累加器、PSW及其他寄存器。CPU在进入中断服务程序后,用到上述寄存器时,就会破坏原来存在寄存器中的内容,一旦中断返回,就会造成主程
- 19 -
序的混乱。因此在进入中断服务程序后,一般要先保护现场,然后在执行中断处理程序,在返回主程序之前再恢复现场。
保护方法一般是把累加器、PSW或其他相关寄存器数据压入堆栈。在保护现场时,一般规定此时CPU不响应新的和中断请求,这就要求在编写中断服务程序时,注意在保护现场或恢复现场时要关闭中断。
7、试用中断法设计秒、分脉冲发生器。
答:利用定时器T0定时,P1.0作为秒发生器输出端,P1.1作为分脉冲发生器的输出端。设晶振为12MHz。片内50H和51H单元分别用于秒、分计数。使用T0方式1定时50ms。 ORG 0000H
LJMP MAIN
ORG 000BH` LJMP T0_SER ORG 0100H
MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV 50H,#20 MOV 51H,#60 SETB ET0 SETB EA SETB TR0 SJMP $ ORG 0200H T0_SER: MOV TH0,#3CH MOV TL0,#0B0H DJNZ 50H,L1 MOV 50H,#20 SETB P1.0 NOP NOP
CLR P1.0 DJNZ 51H,L1 MOV 51H,#60 SETB P1.1 NOP NOP
CLR P1.1 L1: SETB TR0 RETI
8、S51单片机的和中断系统有几个优先级,如何设定?若扩充8个中断源,如何确定优先级?
- 20 -
答:51单片机有两个中断优先级,中断优先级的设定:由专用寄存器IP同一管理,由软件设置每个中断源为高优先级中断或低优先级中断,实现两级中断嵌套。如果几个同一优先级中断源同时向CPU申请中断,CPU按硬件逻辑确定先后顺序。
若扩充8个中断源,可以采用中断和查询结合扩充外中断源的方法确定优先级。
9、试用中断计数设计一个秒闪电路,其功能是发光二极管LED每秒闪400ms。频率24MHz。 答:根据题意,LED点亮400ms,灭600ms
使用T0,工作方式1,定时25ms,通过P1.0
ORG 0000H LJMP MAIN
ORG 000BH` LJMP T0_SER ORG 0100H
MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA
MOV R1,#00H SETB TR0 SJMP $ ORG 0200H T0_SER: PUSH PSW INC R1
CJNE R1,#16,SUB1 SETB P1.0
SUB1: CJNE R1,#24,TEND CLR P1.0 MOV R1,#00H TEND: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 POP PSW RETI
10、MCS-51单片机外部中断有哪两种触发方式?对触发电平或脉冲信号有何要求?如何选择和设定?
答:MCS-51单片机外部中断有两种触发方式:①电平触发;②跳变触发。
对于电平触发方式,要求中断引脚上的电平应至少保持12个振荡周期,以保证电平信号能被采样到,还要求在中断返回前撤销中断请求(使引脚上的电平变高);对于跳变触发方式,要求输入的负脉冲宽度至少保持12个振荡周期,以确保检测到引脚上的电平跳变。
MCS-51单片机的外部中断可以用程序控制为电平触发或跳变触发。即通过编程对定时器/计数器控制寄存器TCON中的IT0和IT1位进行清“0”或置“1”。若是0,则为电平触发。
- 21 -
第八章 单片机的系统扩展
1、在8051单片机扩展系统中,程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?
答:程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于数据存储器的读写信号由RD(P3.7)和WR(P3.6)信号控制,而程序存储器由读选通信号PSEN控制,因此虽然共处同一地址空间,但控制信号不同,所以不会发生总线冲突。
2、问什么当P2作为扩展存储器的高8位地址后,不再适宜做通用I/O端口了?
答:P2口做扩展存储器的高8位地址总线后,即使没有全部占用,空余的几根线也不宜作通用的I/O端口使用,否则会给软件编写及使用带来不必要的麻烦。
3、以S51为主机,扩展2片62RAM存储器芯片,设计硬件布线图。
P2.7P2.6P2.5P2.4~P2.0CES51WEWEOED7~D0CED7~D0D7~D0P0.7~P0.0PSENWRRD 4、根据图8-9电路设计程序,其功能是按下K0~K3,对应LED4~LED7发光,按下K4~K7,对应LED0~LED3发光。
答:根据要求不编程如下
START: MOV DPTR,#0FEFFH MOVX A,@DPTR CJNE A,#0FFH,L1 SJMP START L1: MOV B,A LCALL DEL20MS MOVX A,@DPTR CJNE A,B,START SWAP A
MOVX @DPTR,A LJMP START
5、请利用译码器74HC138设计一个姨妈电路,分别选中2片29C256和2片62256,且列出个芯片所占的地址空间范围。
答:29C256和62256为32K字节的容量,需要15根地址线,电路连接如图。
OEALEG3736262CEQ7~Q0A0~A7A8~A12A0~A7A8~A12- 22 -
P2.7ABCE1E2Y7Y6Y5Y4Y3Y2Y0Y0P2.6~P2.0[A8..A14][A0..A7]CSCSCEWEWEOED7~D0S51CED7~D01D7~D02D7~D03D7~D04P0.7~P0.0PSENWRRD[D0..D7]OECECEALEG37327256272566225662256CEQ7~Q0A0~A7A8~A14A0~A7A8~A14A0~A7A8~A14A0~A7A8~A14 地址空间范围:(1)0000H~7FFFH (2)8000H~FFFFH
(3)0000H~7FFFH
(4)8000H~FFFFH
6、试说明8155内部结构特点,其定时/计数器与S51内部的定时/计数器有何异同?
答:8155内部有3个可编程的I/O端口,1个14位的可编程定时/计数器,还有256字节的数据存储器。
与S51的定时计数器不同的是: (1)8155的可编程定时/计数器是一个14位的减法计数器,其只有一种固定的工作方式。而S51的定时/计数器是加1计数器,可以有8位、13位、16位等计数方式。
(2)8155的定时/计数器不论是定时还是计数,都需要由外部提供计数脉冲。S51的定时/计数器在内部定时时,不需要单独提供计数脉冲。
(3)8155定时/计数器计满溢出时,由TIMEOUT端输出脉冲或方波,输出波形通过软件可定义为4种;而S51的定时/计数器则没有专门的输出脉冲端。
7、解释在80C51系列单片机扩展多个芯片时,可能出现“地址不连续”或一个芯片有多个地址的现象?
答:单片机在扩展芯片时,如果扩展芯片容量小于K,P2口作为高8位地址线时就会多出一些地址线不用,这些多余的地址线一部分可以作为片选信号,还可能有剩余部分未用(可以是0,也可以是1),此时采用不同的编址方式,就可以出现“地址不连续”或一个芯片多个地址的现象。
8、8255有哪几种工作方式?怎样进行选择?说明8255控制字的作用及各位功能。 答:8255A有方式0、方式1、方式2三种工作方式。 (1)方式0(基本I/O方式)
8255A的PA、PB、PC4~PC7,PC0~PC3可分别被定义为方式0输入或方式0输出。 方式0输出具有锁存功能,输入没有锁存。 方式0适用于无条件传输数据的设备。 (2)方式1(应答I/O方式)
PA口、PB口定义为方式1时,PC口的某些位为状态控制线,其余的线为I/O线。 方式1适用于打印机等具有握手信号的输入/输出设备。 (3)方式2(双向选通I/O方式)
方式2是方式1输入和方式1输出的结合,方式2仅对PA口有意义。
方式2使PA口成为8位双向三态数据总线口。既可发送数据又可接收数据。PA口方式2工作时,PB口仍作I/O口,PC口高5位作状态控制线,低3位可作I/O线。
8255A的工作方式可通过设置8255A的控制字来选择。
8255A有两种控制字,即方式控制字和PC口位置位/复位控制字。
- 23 -
方式控制字的格式及各位的含义如图1所示:
D71D6D5D4D3D2D1D00:PC3~PC0输出;1:PC3~PC0输入0:PB口输出;1:PB口输入B口方式位0:方式0;1:方式10:PC7~PC4输出;1:PC7~PC4输入0:PA口输出;1:PA口输入A口方式位00:方式0;01:方式1;1×:方式2图1 8255A方式控制字格式A组B组
PC口位置位/复位控制字的格式及各位的含义如图2所示:
D70D6×D5×D4×D3D2D1D00:清“0”;1:置“1”000:PC,0;010:PC,2;100:PC,4;110:PC,6001:PC,1;011:PC,3;101:PC,5;111:PC,7图2 PC口位置位/复位控制字格式
9、8255A的A、B口工作于方式0,A口输输出,B口输输入,C口上半部输出,下半部输入。 答:设A、B、C与控制端口的地址分别为FF80H、FF81H、FF82H、FF83H,编写接口电路与8255A的初始化程序。
MOV DPTR,#0FF83H ;初始化8255A MOV A,#13H ;10000011B MOVX @DPTR,A 10、简述在扩展I/O接口中单片机RD和WR引脚在控制接口电路中起什么作用?
答:在扩展I/O接口中,单片机的RD引脚功能是控制外部I/O接口电路将数据送到数据总线上,供CPU读入;
而WR引脚功能是是控制外部I/O接口电路将数据总线上的数据送到接口电路的内部寄存器内,供接口电路的控制或数据传送。
第九章 接口技术
1、试说明非编码键盘的工作原理,为何要消除键抖动?又为何要等待键释放?
答:由非编码键盘所提供的行和列矩阵,通过接口电路或单片机的I/O口与CPU相连。CPU可以采用查询或中断方式了解有无键输入并检查是哪一个键按下,且将键号送入CPU。当设置的功能键或数字键按下时,计算机应用系统应完成该键所设定的功能。
- 24 -
由于目前,无论是按键或是键盘的大部分,都是利用机械触点的合、断作用。机械触点在闭合及断开瞬间由于弹性作用的影响,在闭合及断开即释放瞬间均有抖动过程,从而使电压信号也出现抖动。抖动时间长短与开关的机械特性有关。
按键的稳定闭合时间,有操作人员的按键动作所确定,一般为十分之几秒至几秒间。在此期间电压信号将出现多次变化很容易产生误判。为了保证CPU对键的依次闭合仅作依次键处理,必须去除抖动影响。
当释放同时同样存在键抖动影响,为了确保键释放也需要等待和判断。 2、LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?
答:静态显示时,数据是分开送到每一位LED上的。而动态显示则是数据是送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示则好一点,适合用在显示位数较多的场合。
3、说明矩阵式键盘按键按下的识别原理。
答:按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平亦为高。将行、列线信号配合起来并做适当的处理,才能确定闭合键的位置。 4、常用的开关型驱动器件有哪些?
答:常用的开关型驱动器件有光电耦合器、继电器、晶闸管、功率MOS管、集成功率电子开关、固
- 25 -
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务