您的当前位置:首页正文

单片机总结

2020-06-05 来源:尚佳旅游分享网
第一章

1、微处理器MPU定义:是集成在同一块芯片上的具有运算和控制功能的中央处理器,微处理器主要由运算器和控制器两部分组成。 2、存储器

3、 单片机定义:一种把微处理器、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器、串行通讯接口以及中断系统等部件集成在同一块芯片上的有完整功能的微型计算机 。

第二章

1、MCS-51单片机的基本组成:

1)中央处理器(运算器、控制器) 2)程序处理器(ROM) 3)数据处理器(RAM):片内数据存储器包括128B的RAM、128B 的特殊功能寄存器空间 4)并行I/O口 5)串行I/O口 6)定时器/计时器

7)中断系统(2个外部中断源INT0和INT1,3个内部中断源,即2个定时器/计数器溢出中断和1个串行口中断,这些中断具有两个中断优先级,分别为高优先级中断和低优先级中断)

8)时钟电路

2、MCS-51单片机的引脚功能:

1) 主电源引脚Vcc ,Vss

2) 时钟电路引脚 XTAL1 ,XTAL2(XTAL1接地,XTAL2输入外部脉冲信号) 3) 控制信号引脚(RST/VPD:复位/备用电源引脚;

ALE/ PROG:地址锁存允许/编程信号引脚; EA/Vpp:允许访问片外存储器/编程电源引脚;(其接低电平时,8051

只访问片外ROM,而不管片内是否有ROM。对8031来说,由于无片内ROM,该引脚只能接地。当接高电平时,8051首先访问片内程序存储器) PSEN:片外程序存储器读选通引脚;) 4) 输入/输出引脚(4个并行I/O端口) 3、

4、8051可分三个独立的存储空间:

(1)片内、外统一编址的64KB程序存储器地址空间,0000H~FFFFH(用16位地址)。 (2)64KB片外数据存储器地址空间,0000H~FFFFH(用16位地址)。

(3)256B片内数据存储器的地址空间。用8位地址,其中低128B(00H~7FH)是真正的RAM区,高128B(80H~FFH)为特殊功能寄存器(SFR)区。 访问这几个不同的逻辑空间时,采用的指令: 片内外程序存储器空间----MOVC 片内数据存储器空间和SFR----MOV 片外数据存储器地址空间----MOVX

5、在程序存储器中,有6个单元具有特殊功能:

0000H: 复位入口。8051复位后,PC=0000H,即程序从0000H开始执行指令。 0003H:外部中断0入口。

000BH:定时器0溢出中断入口。 0013H:外部中断1入口。

001BH:定时器1溢出中断入口。 0023H:串行口中断入口 6、

CY:进位标志 AC:半进位标志

RS1、RS0:工作寄存器组选择位 00 选择工作寄存器0组 01 选择工作寄存器1组 10 选择工作寄存器2组 11 选择工作寄存器3组 P:奇偶校验位 F0:用户标志位 OV:溢出标志位

7、SP:堆栈指针(规律:“先进后出,后进先出”) 8、振荡周期:晶体振荡器的周期; 状态周期:振荡周期2倍;

机器周期:一个机器周期包括12个振荡周期; 指令周期:执行一条指令的时间。 9、复位要求:

1)复位时间不少于24个时钟周期; 2)高电平复位。

10、1)8051单片机有4个I/O端口P0~P3,对应于片内地址80H,90H,A0H,B0H;

2)在无片外扩展存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用;在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线; 3)①P0口作为I/O口

输出时:接上拉电阻以输出高电平 输入时:锁存器写1

②P1、P2、P3口作为I/O口 输出时:不用接接上拉电阻 输入时:锁存器写1

第三章

1、寻址方式:

1)直接寻址 2)立即寻址 3)寄存器寻址 4)寄存器间接寻址 5)变址寻址 6)相对寻址 7)位寻址

2、源操作数寻址方式(5种):

立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 目的操作数寻址方式(3种):

直接寻址、寄存器寻址、寄存器间接寻址 3、十六位数的传递指令(1条):MOV DPTR,#data16

这是唯一的一条16位立即数传递指令 累加器A与片外RAM之间的数据传递类指令(4条) MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A

在MCS-51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过AM读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。

4、条件转移指令:

1)判A内容是否为0转移指令:

JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A≠0,就转移. 2)CJNE指令:

利用这些指令,可以判断两数是否相等。

但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能: 如果两数不相等,则CPU还会用CY(进位位)来反映哪个数大,哪个数小。 如果前面的数大,则CY=0,否则CY=1。(JC:进位标志,CY=1,跳转)

因此在程序转移后再次利用CY就可判断出哪个数大,哪个数小了。

5、可以位寻址的特殊功能寄存器: A累加器,B寄存器、PSW

IP(中断优先级控制寄存器) IE(中断允许控制寄存器) SCON(串行口控制寄存器)

TCON(定时器/计数器控制寄存器) P0-P3(I/O端口锁存器) 6、位寻址:

位条件转移指令: ①判Cy转移指令 JC rel JNC rel

第一条指令的功能是如果Cy=1就转移,否则就顺序执行,第二条指令则和第一条指令相反。 ②判位变量转移指令 JB bit,rel JNB bit,rel JBC bit,rel

第一条指令:如果指定的(bit)=1,则转移,否则顺序执行,第二条指令功能相反。 同样理解:JB bit,标号

第三条指令是如果指定的(bit)=1,则转移,并把该位清0,否则顺序执行。

第四章

1、伪指令:

控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。 常用的伪指令:

 ① ORG

定位目的程序的起始地址。 格式: ORG 表达式 如:ORG 0000H

 ② END

汇编语言程序结束伪指令。

 ③ EQU 赋值伪指令。

格式: 字符名称 EQU 例: AA EQU 30H K1 EQU 40H

MOV A,AA ; (30H)→(A) MOV A,K1 ;(40H)→(A)

 ④ DATA

格式:字符名称 DATA 表达式 DATA命令功能与EQU类似,但有以下差别:

(1) EQU定义的字符名必须先定义后使用,而DATA定义的字符名可以后定义先使用。 (2) 用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名。 (3) DATA语句中可以把一个表达式的值赋给字符名称,其中的表达式应是可求值的。DATA伪指令常在程序中用来定义数据和地址。

⑤ DB(另起一行,需要再写一个DB)

从指定单元开始定义(存储)若干个字节的数据或ASCII码字符,常用于定义数据常数表。

格式:DB 字节常数或ASCII字符 例: ORG 1000H

DB 34H,0DEH,’A’,’B’ DB 0AH,0BH,20  ⑥ DW(Define Word)

从指定单元开始定义(存储)若干个字的数据 或ASCII码字符。

格式:DW 字常数或ASCII字符 例:ORG 2000H

DW 1234H,’B’ DW 0AH,20 汇编后:(2000H)=12H,(2001H)=34H,(2002H)=‘B’,(2003H)=0AH,(2004H)=20  ⑦DS定义存储空间命令 格式:DS 表达式

在汇编时,从指定地址开始保留DS之后表达式的值所规定的存储单元以备后用。 org 1000h ds 08h db 30h,8ah

汇编后,(1008H)=30h (1009H)=8ah  ⑧ BIT:位地址符号指令。

把位地址赋于规定的字符名称。 格式:字符名称 BIT 位地址 例: ABC BIT P1.1 QQ BIT P3.2

2、例题:

I、变量存在内部RAM的20H单元中,其取值范围:0~5,编程,查表法求其平方值。 org 1000h

start:mov dptr,#table mov a,20h

movc a,@a+dptr mov 21h,a sjmp $

table:db 0,1,4,9,16,25 end

II、50ms延时子程序。设晶振频率为12MHz,则机器周期为1us。 DEL: MOV R7,#200 ;1MC DEL1:MOV R6,#123 ;1MC NOP ;1MC DEL2:DJNZ R6,DEL2 ;2MC

DJNZ R7,DEL1 ;2MC RET ;2MC

延时时间:t=[1+200[(1+1+2*123)+2]+2]*1us ≈50000us=50ms

III、将内部RAM中起始地址为data的数据串送到外部RAM中起始地址为buffer的存储区域中,直到发现‘$’字符,传送停止----循环次数事先不知道先判断,后执行。

MOV R0,#data

MOV DPTR,#buffer LOOP1:MOV A,@R0

CJNE A,#24H,LOOP2 ;判断是否为$字符 SJMP LOOP3 ;是,转结束 LOOP2:MOVX @DPTR,A ;不是,传送数据 INC R0 INC DPTR

SJMP LOOP1 ;传送下一数据 LOOP3:END

IV、利用查表法求平方和 ,设a、b、c分别存于内部RAM的DA、DB、DC三个单元中。

MOV A,DA ;取a

ACALL SQR ;调用查表子程序 MOV R1,A ;a的平方暂存R1中 MOV A,DB ;取b

ACALL SQR ;调用查表子程序

ADD A,R1 ;求出平方和暂存阿A中 MOV DC,A ;结果存于DC 中 SJMP $

SQR:MOV DPTR,#TAB ;子程序 MOVC A,@A+DPTR RET

TAB: DB 0,1,4,9,16,25,36,49,64,81 END

第五章

1、中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。

将能引起中断的事件称为中断源; CPU现行运行的程序称为主程序;

处理随机事件的程序称为中断服务子程序。 2、中断的优点:

分时操作;大大提高了CPU的工作效率 实时处理; 故障处理

3、8051中断系统有以下四个特殊功能寄存器: (1)定时器控制寄存器TCON(用六位)。 (2)串行口控制寄存器SCON(用二位)。

(3)中断允许寄存器IE (4)中断优先级寄存器IP

4、

(TF1)T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0;

(TF0)同理为T0的中断请求标志位,含义与TF1相同;

(IE1)外部中断INT1中断标志位;IE1=1,外部中断1向CPU申请中断;CPU响应该中断请求时,由硬件使IE1清零;

(IT1)外部中断INT1触发方式控制位,IT1=0,低电平触发方式;IT1=1,下降沿触发方式;

(IE0)外部中断INT0中断标志位,含义与IE1相同; (IT0)外部中断INT0触发方式控制位,含义与IT1相同。 5、 SCON寄存器——串行口控制寄存器:

TI (SCON.1)——串行发送中断标志;

RI (SCON.0)——串行接收中断标志 6、 中断允许控制IE:

EA——总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断;

(某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。)

ES——串行口中断允许位;

EX1——外部中断1中断允许位; EX0——外部中断0中断允许位;

ET1——定时器/计数器T1中断允许位; ET0——定时器/计数器T0中断允许位;

7、中断优先级控制IP:

 单片机中有两个中断优先级,即高优先级中断和低优先级中断,前者优先权高于后者(在程序中设置,相应位=1,为高优先级);

 同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件形成,无法改变)。[INT0—T0—INT1—T1—串行口]

8、中断处理过程分为三个阶段:中断响应、中断处理和中断返回 中断响应(CPU响应中断)条件: (1)有中断源发出中断请求。

(2)中断总允许位EA =1,即CPU开放总中断。

(3) 申请中断的中断源的中断允许位为1,即该中断源开放。 9、中断处理:中断服务程序从中断子程序入口地址开始执行,直到返回指令RETI为止,这个过程称为中断处理(或中断服务)。

中断服务子程序一般包括两部分内容,一是保护和恢复现场,二是处理中断源的请求。

10、外部中断扩展方法: 1. 定时器T0,T1。(工作在计数方式下) 2. 中断和查询结合

第六章

1、特殊功能寄存器TMOD用于控制定时器/计数器的工作方式;

TCON用于控制定时器/计数器的启动运行并记录T0、T1的溢出标志等。 2、定时器:计数输入信号来自内部振荡信号(定时器的计数速率为振荡频率的1/12); 计数器:计数的输入信号来自外部引脚T0(P3.4)或Tl(P3.5)上的计数脉冲(最高计数频率为振荡频率的1/24)。 3、方式寄存器TMOD:

字节地址为89H,低4位控制T0,高4位控制T1,不可位寻址

GATE:门控位。当GATE=l时,计数器受外部中断输入引脚信号(或)控制,/INT0控制T0计数, /INT1控制T1计数,当/INT0=1(或/INT1=1),且运行控制位TR0(或TR1)为“1”时,T0(或T1)开始计数;否则,停止计数。当GATE=0时,外部中断信号(或)不参与控制,此时只要运行控制位TR0(或TR1)为1,计数器T0(或T1)就开始计数。(一般不用门控位)

C/T:计数器/定时器方式选择位。C/T=0时,表示定时方式;当C/T=1时,表示计数方式。

Ml和M0:操作方式选择位。

4、控制寄存器TCON

(TR1):T1运行控制位;由软件置1或清0来启动或关闭T1工作,因此又称为T1的启/停控制位;

(TR0):T0运行控制位,其功能和操作类同TR1;

(TF1)T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0;

(TF0)同理为T0的中断请求标志位,含义与TF1相同;

(IE1)外部中断INT1中断标志位;IE1=1,外部中断1向CPU申请中断;CPU响应该中断请求时,由硬件使IE1清零;

(IT1)外部中断INT1触发方式控制位,IT1=0,低电平触发方式;IT1=1,下降沿触发方式;

(IE0)外部中断INT0中断标志位,含义与IE1相同; (IT0)外部中断INT0触发方式控制位,含义与IT1相同。

5、例6-2:设8051系统中,主频为12MHz,要求利用定时器T1定时,使得P1.1引脚输出周期为4ms的方波。

解:利用P1.1引脚输出信号周期为4ms的方波,只要使P1.1每隔2ms改变一次电平,故定时值应为2ms。由于fosc=12MHz,所以计数间隔T=1μs。

(1)定时器T1工作在方式0, 即13位计数器。

13-3-6

定时初值:X=M﹣计数次数=2﹣2*10/10 =8192﹣2000=6192=11000001 10000B。由于TL1的高3位不用,可得到:TH1初值为0C1H, TL1初值为10H。

方式字TMOD可设为00H,采用中断方式工作的源程序如下: ORG 0000H LJMP MAIN ORG 001BH LJMP TF1INT ORG 0030H

MAIN: MOV TMOD,#00H ;T1按方式0,定时器状态工作 MOV TH1,#0C1H ;给T1赋初值 MOV TL1,#10H

SETB ET1 ;T1溢出中断允许 SETB TR1 ;启动T1工作

SETB EA ;CPU开中断 HERE: SJMP HERE

TF1INT:CLR TR1 ;T1中断入口 MOV TH1,#0C1H ;重装T1初值 MOV TL1,#10H SETB TR1

CPL P1.1 ;由P1.1输出方波 RETI ;中断返回

(2)定时器T1工作在方式1, 即16位计数器。

16-3-6

定时初值:X=M﹣计数次数=2﹣2*10/10=65536﹣2000=63536=F830H。 可得到:TH1初值为0F8H, TL1初值为30H。

方式字TMOD可设为10H,采用查询方式的源程序如下:

MAIN: MOV TMOD,#10H;T1按方式1 LOOP:MOV TH1,#0F8H ;T1赋初值 MOV TL1,#30H

SETB TR1 ;启动T1工作

WAIT: JNB TF1,WAIT ;等待T1溢出 CLR TF1 ;清零溢出标志位 CPL P1.1 ;由P1.1输出方波 SJMP LOOP

(3)定时器T1工作在方式2, 即8位计数器。

由于T1工作在方式2时最大的计数次数为256次,而定时2ms需要计数2000次,因此,直接一次定时不能达到,可以采用每次定时0.2ms,定时10次来实现。

8

定时初值:X=M﹣计数次数=2﹣2*10-4/10-6 =56=38H。 可得到:TH1和TL1初值均为38H。

方式字TMOD可设为20H,采用查询方式的源程序如下:

MAIN: MOV TMOD,#20H ;T1按方式2,定时器状态工作 MOV R3,#10 ;设置0.2ms定时10次 MOV TH1,#38H ;T1赋初值 MOV TL1,#38H

SETB TR1 ;启动T1工作 NOP

LOOP: JNB TF1,LOOP ;等待T1溢出 CLR TF1 ;清零溢出标志位 DJNZ R3,LOOP ;2ms定时到 MOV R3,#10

CPL P1.1 ;由P1.1输出方波 SJMP LOOP

例6-3:应用8051的定时器T0监测生产流水线的工件数量,每生产1个工件产生一个计数脉冲至P3.4(T0),每生产100个工件,由P1.0发出一个5ms的低电平脉冲,控制包装设备将其包装成一箱,8051的工作时钟为12MHz。

解:用T0作计数器,记录工件数量,用T1作定时器,当T0计数满100时在P1.0脚输出一个5ms低电平脉冲,控制包装设备打包。

选择T0为计数器,工作方式2;选择T1为定时器,工作方式1。

(1)方式字TMOD为00010110B=16H。

8

(2)T0计数初值X0=2﹣100=9CH,因此T0初值为:TH0=TL0=9CH。

16-3-6

(3)T1定时初值X1=2﹣5*10/10=65536﹣5000=60536=0EC78H,因此T1初值为:TH1=0ECH,TL0=78H。

源程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP T0INT ORG 001BH LJMP T1INT

MAIN:SETB P1.0 ;P1.0输出为高 MOV TMOD, #16H ;置T0、T1的工作方式 MOV TH0,#9CH

MOV TL0,#9CH ;计数初值送计数器 SETB EA ;CPU开中断 SETB ET0 ;T0开中断 SETB ET1 ;T1开中断 SETB TR0 ;启动T0

HERE:SJMP HERE ;模拟主程序

T0INT:MOV TH1,#0ECH ;置T1定时5ms初值 MOV TL1,#78H

CLR P1.0 ;P1.0输出低电平 SETB TR1

RETI ;中断返回

T1INT:SETB P1.0 ;定时5ms时间到,P1.0恢复为高电平 CLR TR1 ;T1停止工作 RETI ;中断返回

第七章

1、并行通信,即数据的各位同时传送;

串行通信,即数据一位一位顺序传送,串行通信制式:单工、半双工和全双工 串行通信的分类:异步通信、同步通信

在异步通信中,数据是以字符(或字节)为单位组成字符帧,一帧一帧传送的; 在同步通信中,在数据开始前用同步字符来指示,并由时钟来实现发送端和接受端同步,在检测到同步字符后,就连续按顺序传送数据,直到通信告一段落。

方式0的波特率 = fosc/12

2、RS-232C接口标准规定了数据和控制信号的电压范围,采用负逻辑,规定+3V~+15V之间的任意电压表示逻辑0电平,-3V~-15V之间的任意电压表示逻辑1电平。 单片机不能与PC机直接进行串行通信,采用电平转换芯片MAX232。

第八章

1、单片机系统扩展内容:三总线的产生、ROM的扩展 、RAM的扩展、并行I/O口的

扩展 。

2、总线是指连接系统中各扩展部件的一组公共信号线。一般的微型计算机都具有三总线结

构:

(1)地址总线 (2)数据总线 (3)控制总线

地址总线由单片机的P0口通过地址锁存器(常用的地址锁存器有:带三态缓冲输

出的8D锁存器74LS373或8282、带清除端的8D锁存器74LS273)提供低8位地址A0~A7,P2口提供高8位地址A8~A15。

P0、P2口在系统扩展中用做地址总线后,就不能再作为一般I/O口使用。 由于地址总线宽度为16位,故可寻址范围为64 KB。

数据总线由P0口直接提供,用D0~D7表示(数据总线是双向的,可以进行双向的数据传送);

控制总线是指单片机用于控制片外的ROM、RAM和I/O端口的一组控制线。主要有以下四种:

①ALE(地址锁存允许信号线):用于锁存P0口输出的低8位地址的控制线。 ②PSEN(程序存储允许输出信号线):用于片外程序存储器EPROM的读数(取指)控制。 ③RD、WR:用于片外数据存储器RAM的读/写控制。

④EA:用于选择片内或片外程序存储器 3、多个EPROM扩展:

⑴线选法是利用单片机地址线中的最高几位空余线中一根作为某一片存储器芯片或I/O外设的片选信号(如P2.7接EPROM的片选端CE)。线选法一般用于应用系统中扩展芯片较少的场合。

线选法的特点是:连接简单,无须译码芯片。但地址空间的利用率低,地址一般不连续(分散),也可能产生地址重叠(即地址不是唯一的)。因此,线选法一般用于简单的存储器扩展。

⑵译码法是用译码器对单片机的最高几位空余的地址线(如P2.7、P2.6等)进行译码,而译码器的输出作为“片选” 控制线。常用的译码器有3/8译码器74LS138、双2/4译码器74LS139、4/16译码器74LS154等。 4、 程序存储器的扩展:

可用来扩展的存储器芯片: (1)EPROM:2764(8K*8)(13根片选线,选通时,低电平有效),27128,27256,27512等

2

(2)EPROM:2864 (8K*8) ,28128等 还要用到锁存器芯片:例74LS373 5、 数据存储器的扩展:

可用来扩展的存储器芯片: (1)SRAM (静态随机数据存储器) 6116,6264(13根片选线,选通时,低电平有效),62256

2

(2)EPROM 2864

静态 RAM用于存放数据或作为程序运行时工作单元,因此在使用时不仅需利用它的读出方式,还需用到它的写入方式

 /CE信号为片选信号

 /OE为存储器读出控制信号  /WE为存储器写入控制信号 6、 简单I/O口扩展:

(1) I/O口的直接输入/输出

(2) 用TTL电路或MOS电路扩展I/O口

如:用8位三态缓冲器74LS244可扩展输入口;

用8D锁存器74LS273、74LS373、74LS377 等可组成输出口

 因为74LS273和74LS244都是在P2.7为0时被选通,所以二者地址都可以为7FFFH  两个芯片的地址虽然相同,但可以通过读写操作来区别

编程应用如下: TEST: MOV DPTR, #7FFFH ;指向口地址

MOVX A,@DPTR ;指向244读入数据,检测按键 MOVX @DPTR, A ;指向273输出数据,驱动LED SJMP TEST

7、8031扩展多片EPROM和RAM

8、8155内部具有:

 (1)256BRAM(存储器工作方式);

 (2)2个8位和1个16位可编程并行I/O口;

 (3)一个14位可编程定时器/计数器(定时器工作方式)  (4)地址锁存器和数据总线

第九章

1、为什么要消除键盘的机械抖动?

键盘的抖动会引起一次按键被误读多次,为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。 消除按键抖动的措施:

①硬件消抖:采用硬件电路来消除键抖动,常用的双稳态消抖电路; ②软件消抖:采用软件延时的方法进行消抖 2、矩阵式键盘接口设计: 判断按键位置:

①行扫描法;按键进行判断步骤: 1)、初始化时,让所有行线处于低电平。

2)、如有键被按下键,则键所在列将被拉成低电平,根据此列电平的变化,便能判定此列一定有键被按下,也就是获得了被按键的列位置信息; 3)、逐行置零电平,其余行置为高电平,检查各列线输入电平,此时,如果读到某列为低电平,即可确定次列与当前输出为零的行的交叉点上按键被按下。 ②线反向法: 1).将列线编程为输入线,行线编程为输出线,并使输出线(行)输出为全零电平,则列线中电平变为低所在列就是被按下的键所在的列,即获得了列号。 2).将列线编程为输出线,行线编程为输入线,并使输出线(列)输出为全零电平,则行线中电平变为低所在行就是被按下的键所在行,即获得了行号。 3、键盘的主要工作可分为三个基本步骤: 1).监视键盘的输入,即判断是否有键按下,并作消除抖动处理。 2).确定具体按键,即判断哪个键按下。 3).键功能程序执行,即完成按键功能处理 4、在单片机应用系统中,常用的显示器有: 1)、发光二极管显示器 2)、液晶显示器 3)、荧光显示器 4)、阴极射线管显示器 5、段LED数码管显示器:

十六进制数及空白与P的显示段码表:(共阴极高电平有效,共阳极低电平有效)

7、 LED显示器的静态显示与动态显示: ⑴LED静态显示方式:

各个数码管的共阴极(或共阳极)连接在一起并接地(或+5V);每个数码管的段选线(a~h)分别与一个8位的锁存输出相连.

静态LED显示原理电路:

例:假设其输出锁存器的选通地址为7FFFH,驱动器为同相驱动,要实现将40H单元中存放的0~9之间的数字在LED数码管输出显示。程序段如下:

DISP1:MOV A,40H ;显示数字送A MOV DPTR,#TAB1 ;送段码表头地址 MOVC A,@A+DPTR ;取出显示数字的段码 MOV DPTR,#7FFFH ;显示输出锁存器口地址 MOVX @DPTR,A ;段码送显示口显示 RET ;子程序结束返回 TAB1: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH LED静态显示方式的特点:

由于每一个显示器的段码分别由一个8位输出口控制,故在同一时间里,每一位显示的字符可以各不相同。这种显示方式编程容易、管理也简单、显示稳定、亮度高,但是占用I/O口线资源较多。 ⑵LED动态显示方式:

为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个8位I/O口控制,形成段选线的多路复用。而各位的共阳极(或共阴极)分别由相应的I/O口线控制,实现各位的分时选通。

4个8段LED动态显示电路:

(若要各位LED能够显示出与本位相对应的显示字符,就必须采用扫描显示方式。即在某一时刻,只让某一位的位选线处于选通状态,而其它各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的字型码,这样,同一时刻4位LED中只有选通的那一位显示出字符,而其它三位则是熄灭的) LED动态显示方式的特点:

LED数码管显示器的动态扫描工作可简单归纳为:采用分时显示的方法,利用人的视觉暂留效应,达到稳定显示的效果。动态扫描显示具有节省硬件的优点,但由于它需要不停地扫描刷新,需要占用CPU较多的时间,而且编程相对复杂。

例:假设其位码输出锁存器的选通地址为7FFFH,段码输出锁存器的选通地址为0BFFFH,如果在43H~40H单元中存放了对应于LED3~LED0的显示段码,编写下段子程序段可实现将43H~40H单元的段码在对应的LED3~LED0数码管显示器上显示。 DISP4: MOV R0,#40H ;显示段码的存放首地址 MOV R7,#0FEH ;置显示位码的初始值 DISP1: MOV A,R7 ;位码送A

MOV DPTR,#7FFFH ;取位码口地址 MOVX @DPTR,A ;位码口输出位码

MOV A,@R0 ;段码送A

MOV DPTR,#0BFFFH ;取段码口地址 MOVX @DPTR,A ;段码口输出段码 LCALL DL1ms ;调用延时1ms子程序 INC R0 ;指向下一个显示单元 MOV A,R7 RL A

MOV R7,A ;指向下一个位码

CJNE A,#0EFH,DISP1 ;一次循环未完成, SJMP DISP4 ;完成,则重新启动循环 DL1ms: MOV R6,#250 ;延时1ms子程序 DL4T: NOP ;假设fosc=12MHz NOP DJNZ R6,DL4T RET

第十章

1、能够把模拟量转换成数字量的器件称为模/数转换器(A/D);把数字量转换成模拟量的器件称为数/模转换器(D/A)。A/D转换器和D/A转换器是实现模拟信号采集与反馈控制的重要器件。

2、描述D/A转换器的性能参数 : 1).分辨率(Resolution)

它反映了数字量在最低位上变化1位时输出模拟量的变化量。经常用1LSB来表示。 2).偏移误差(Offset Error)

它是指输入数字量为0时,输出模拟量对0的偏移值。这种误差一般可在D/A转换器外部用电位器调节到最小。 3).线性度(Linearity)

D/A转换器的实际转换特性与理想直线之间的最大误差或最大偏移。一般情况下,偏差值应小于±0.5LSB。这里LSB是指最低一位数字量变化所带来的幅度变化。 4).精度(Accuracy)

为实际模拟输出与理想模拟输出之间的最大偏差。除了线性度不好会影响精度之外,参考电压的波动等因素也会影响精度。可以理解为线性度是在一定测试条件下得到的D/A转换器的误差,而精度则是描述在整个工作区间D/A转换器的最大偏差。 5).转换速度(Conversion Rate)

即每秒钟可以转换的次数,其倒数为转换时间。

6).温度灵敏度(Temperature Sensitivity)

是指输入不变的情况下,输出模拟信号随温度的变化。 3、DAC0832管脚功能:

/cs:片选信号引脚(低电平有效)。 ILE:输入锁存允许信号(高电平有效)。 /WR1:第一级锁存写选通(低电平有效)。

当/CS=0,ILE=1,/WR1=0允许数据输入,否则,ILE=0,不允许数据输入。 /WR2:第二级锁存写选通(低电平有效)。该信号与/XFER配合,可使锁存器中的数据传送到DAC寄存器中进行转换。当/IE2=1,允许数据送入D/A转换;

/XFER:传送控制信号(低电平有效)。将与/WR2配合使用,构成第二级锁存。 D0~D7:数字输入量。D0是最低位,D7是最高位(MSB)。

IOUT1(IO1):DAC电流输出1。当DAC寄存器为全1时,表示IOUT1为最大值,当DAC寄存器为全0时,表示IOUT1为0

IOUT2 (IO2):DAC电流输出2。IOUT2为常数减去IOUT1,或者IOUT1+IOUT2=常数。在单极性输出时,IOUT2通常接地.

Rfb:内部集成反馈电阻,为外部运算放大器提供一个反馈电压。Rfb可由内部提供,也可由外部提供。

VREF:参考电压输入,要求外部接一个精密的基准电源。 VCC:数字电路供电电压,一般为+5V~+15V。 AGND:模拟地; DGND:数字地

4、8位D/A转换器接口方法: 1)、单缓冲型接口方法 2)、双缓冲型接口方法 3)、直通型的接口方法 5、D/A转换器的输出方式: 1).单极性输出

DAC0832的输出端连接成单极性输出电路,输入端连接成单缓冲型接口电路(下图): DAC0832芯片可作为8051的一个外部I/O端口,口地址为7FFFH;

例:可以实现将8051的40H单元中的数据通过DAC0832转换成模拟量后输出。 DACP1:MOV DPTR,#7FFFH MOV A,40H MOVX @DPTR,A

数字量Din与输出模拟量Vout的转换关系为: Vout =﹣Din*VREF/28

2).双极性输出 6、(1)D/A转换产生的锯齿波: ORG 0200H

MOV DPTR,#7FFFH ;指向输入寄存器地址

MOV A,#00H ;转换初值 WW: MOVX @DPTR,A ;WR1有效,启动D/A转换 INC A NOP ;延时 NOP AJMP WW

(2)三角波输出程序: DACS: MOV DPTR,#7FFFH MOV A,#00H DAS1: MOVX @DPTR,A INC A

CJNE A,#0FFH,DAS1 DAS2: MOVX @DPTR,A DEC A

CJNE A,#00H,DAS2 LJMP DAS1 (3)矩形波输出程序: START:MOV DPTR,#7FFFH MOV A,#200 MOVX @DPTR,A LCALL DELAY MOV A,#50 MOVX @DPTR,A LCALL DELAY2 LJMP START

8、 描述A/D转换器的性能参数:

1)分辨率与量化误差

2)偏移误差:

与D/A转换器一样是指输入模拟量为0时,输出数字量不为“0”的偏移值 3)线性误差:

由实际的输出特性曲线偏离理想直线的最大偏移值。 4)精度:

绝对精度是指转换器在其整个工作区间理想值与实际值之间的最大偏差。相对误差是指绝对误差与满刻度值之比。 5) 转换速度 9、ADC0809引脚图:

(1)IN0-IN7 :模拟量输入端 (2) START: A/D转换启动信号 (3).EOC: 转换结束信号

(4)OE (OUTPUT ENABLE):输出允许信号或称为A/D数据读信号。当此信号为高电平时,可从A/D转换器中读取数据。

(5)CLK:工作时钟,最高允许值为1.2MHz,可通过外接振荡电路获得时钟信号,当CLK为640kHz时,转换时间为100μs。

(6)ALE:通道地址锁存允许,上升沿有效,锁存C、B、A通道地址,使选中通道的模拟输入信号送A/D转换器。

(7)A、B、C:通道地址输入,C为最高、A为最低。 (8)D0~D7:数字量输出线;

(9)VREF(+)、VREF(-):正负参考电压,用来提供D/A转换器的基准参考电压。一般VREF(+)接+5V高精度参考电源,VREF(-)接模拟地。 (10)Vcc、GND:电源电压Vcc接+5 V , GND为数字地。 10、8051单片机与ADC0809接口设计:

ADC0809转换器程序设计方法: 采用程序查询方式、延时方式或中断控制方式来读取A/D转换器的数据。 (1)程序查询方式 所谓程序查询方式即条件传送I/O方式。在接入模拟量之后,发出启动A/D转换命令,然后查询P3.2引脚电平是否为“0”来确定A/D转换是否完成。直到P3.2 (即)引脚电平为“0”表示A/D转换已经完成,读取A/D转换器的数据。

例:利用图10-12所示的接口电路图,要求编程,将通道5输入电压转换成对应的数字量,存放在寄存器R5中。 解:程序清单:

ADC5: MOV DPTR,#7FFDH ;置IN5通道地址 MOVX @ DPTR,A ;启动A/D

WAIT: JB P3.2,WAIT ;P3.2为高,则继续查询 MOVX A,@DPTR ;数据读入A MOV R5,A ;存入R5中 RET

(2)延时方式:

A/D转换时间约为l00μs,为保险起见,则可在A/D转换器启动后,延时一个大于100μs的时间(如选200μs)再读数。 ADC5D:MOV DPTR,#7FFDH MOVX @ DPTR,A ;启动A/D MOV R7,#100

WAIT: DJNZ R7,WAIT ;延时200μs MOVX A,@DPTR ;数据读入A MOV R5,A ;存入R5中 RET

(3)中断采样方式 例10-2:根据图10-12接口电路,采用中断方式对IN2通道的模拟输入量连续采样10个点,并将采样值存放在内部数据存贮器40H~49H单元中。 程序清单如下: ORG 0000H LJMP MAIN ORG 0003H ;INT0中断处理程序入口

LJMP INT0P;主程序

MAIN: MOV R0,#50H ;数据存放区RAM首址 MOV R7, ,#10 ;A/D转换次数初值 SETB IT0 ;设INT0为边沿触发 SETB EX0 ;INT0开中断 SETB EA ;CPU开中断 MOV DPTR,#7FFAH ;A/D通道IN2首址 MOVX @ DPTR,A ;首次启动A/D转换 NOP

HERE: SJMP HERE

INT0P: MOVX A,@DPTR ;读A/D转换数据 MOV @ R0, A ;A/D数据送存 RAM INC R0 ;地址加“1\" DJNZ R7,INTR1 ; RETI ;返回 INTR1: MOVX @DPTR,A RETI

因篇幅问题不能全部显示,请点此查看更多更全内容