单片机原理及应用.docx

上传人:b****8 文档编号:8940655 上传时间:2023-02-02 格式:DOCX 页数:175 大小:1.22MB
下载 相关 举报
单片机原理及应用.docx_第1页
第1页 / 共175页
单片机原理及应用.docx_第2页
第2页 / 共175页
单片机原理及应用.docx_第3页
第3页 / 共175页
单片机原理及应用.docx_第4页
第4页 / 共175页
单片机原理及应用.docx_第5页
第5页 / 共175页
点击查看更多>>
下载资源
资源描述

单片机原理及应用.docx

《单片机原理及应用.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用.docx(175页珍藏版)》请在冰豆网上搜索。

单片机原理及应用.docx

单片机原理及应用

 

单片机原理及应用

 

常州轻工职业技术学院

 

前言

当今,单片微型计算机技术迅速发展,由单片机技术开发的智能化测控设备和产品广泛应用到各个领域,单片机技术产品和设备促进了生产技术水平的提高。

企业迫切需要大量熟练掌握单片机技术,并能开发、应用和维护管理这些智能化产品的高级工程技术人材。

单片机以体积小、功能强、可靠性好、性能价格比高等特点,已成为实现工业生产技术进步和开发机电一体化和智能化测控产品的重要手段。

本教材内容分为十章。

以MCS-51系列单片机为介绍对象,分别介绍MCS-51系列单片机结构原理、MCS-51单片机指令系统、汇编语言程序设计、并行I/O口的使用、并行I/O口的扩展方法及使用、中断系统和定时/计数器、A/D转换接口和D/A转换接口技术、键盘与显示器接口技术等内容。

本教材由杨文新、龚益民、韩迎辉老师编写,谢丽华、刘军良老师参与本书图表的绘制。

 

编者

2004年7月

 

目录

第一章认识单片机……………………………………………3

第二章MCS-51单片机指令系统………………………………14

第三章汇编语言程序设计……………………………………27

第四章并行I/O口…………………………………………33

第五章并行I/O口的扩展…………………………………40

第六章中断系统………………………………………………49

第七章定时/计数器………………………………………55

第八章A/D转换接口……………………………………60

第九章D/A转换接口………………………………………63

第十章键盘与显示器接口…………………………………67

附录一WAVE软件的操作使用

附录二ASCII码表

附录三MCS-51单片机指令系统表

附录四单片机练习题

附录五单片机实验指导书

 

第一章认识单片机

一、什么是单片机

单片机是将CPU、存储器、输入/输出接口、定时/计数器等集成在一块芯片上,是目前销量最大、应用面最广、价格最便宜的微型计算机。

如图1-1所示:

 

例1-1单片机彩灯控制系统(单片机控制8个发光二极管每隔0.1秒轮流点亮。

使用单片机实验板进行演示。

二、典型单片机产品

1.MCS-51系列

美国Intel公司生产的8位字长单片机。

基本型产品有8051、8031、8751等。

2.AT89C51系列

美国ATMEL公司生产的8位字长单片机。

与MCS-51系列单片机兼容,内含4KB的flash存储器。

三、MCS-51单片机的内部的硬件结构及引脚

(一)MCS-51单片机内部的总体硬件结构

8051单片机的内部基本结构,如图1-2所示。

(二)MCS-51单片机的引脚

8051单片机是HMOS工艺制造,外形为40条引脚,如图1-3所示。

因为受芯片引脚数量的限制,有很多引脚具有双功能。

1、主电源引脚

VCC:

芯片工作电源端,接+5V。

Vss:

电源接地端。

2、时钟振荡电路引脚

XTAL1:

内部晶体振荡电路的反相器输入端。

接法如图1-5。

XTAL2:

内部晶体振荡电路的反相器输出端。

接法如图1-5。

3、控制信号引脚

RST————RST为复位信号输入端。

外部接复位电路。

接法如图1-4。

ALE————ALE为地址锁存允许信号。

在不访问外部存储器时,ALE以时钟振荡频率的1/6的固定频率输出,用示波器观察ALE引脚上的脉冲信号是判断单片机芯片是否正常工作的一种简便方法。

————外部程序存储器ROM的读选通信号。

到外部ROM取指令时,

自动向外发送负脉冲信号。

————为访问程序存储器的控制信号。

 

4、并行I/O端口引脚

P0口(P0.0~P0.7);P1口(P1.0~P1.7);P2口(P2.0~P2.7);P3口(P3.0~P3.7)。

 

(三)复位电路与时钟电路

1.复位电路

(1)复位电路

单片机的RST引脚是复位信号输入端,RST引脚上保持两个机器周期(24个时钟周期)以上的高电平时,可使单片机内部可靠复位。

单片机常用的外部复位电路如图1-4。

 

(2)复位状态

复位后,单片机内部的各寄存器的内容将被初始化,包括程序计数器PC和特殊功能寄存器,其中(PC)=0000H,特殊功能寄存器的状态见表1-1。

复位不影响片内RAM和片外RAM中的内容。

表1-1复位后特殊功能寄存器的初始状态

SFR名称

初始状态

SFR名称

初始状态

ACC

00H

TMOD

00H

B

00H

TCON

00H

PSW

00H

TH0

00H

SP

07H

TL0

00H

DPL

00H

TH1

00H

DPH

00H

TL1

00H

P0~P3

FFH

SBUF

不确定

IP

ХХХ00000B

SCON

00H

IE

0ХХ00000B

PCON

0ХХХХХХХB

2.时钟电路

时钟电路用于产生时钟信号,时钟信号是单片机内部各种微操作的时间基准,在此基础上,控制器按照指令的功能产生一系列在时间上有一定次序的信号,控制相关的逻辑电路工作,实现指令的功能。

电容容量范围为30PF±10PF,石英晶体频率的范围为1.2~12MHZ,常用6MHZ或12MHz。

 

 

3.时序单位

 

(1)时钟周期(是时钟信号频率fosc的倒数)

时钟周期=1/fosc

(2)机器周期:

机器周期=12×时钟周期

(3)指令周期

一条指令从被读取到被执行的整个过程所需的时间称为指令周期。

思考题:

fosc分别为6MHZ和12MHZ时,机器周期分别为多少?

四、MCS-51单片机的内部硬件的主要功能

(一)中央处理单元CPU

它由运算器和控制器两部分组成。

1.运算器

运算器是进行各种算术运算和逻辑运算的部件。

与运算器有关的寄存器包括ACC、B、PSW。

(1)累加器ACC(8位寄存器)

(2)B寄存器(8位)

(3)程序状态字寄存器PSW(8位)

PSW主要用于存放程序状态信息以及运算结果的标志,所以又称标志寄存器。

其格式如下(D1位没有定义):

D7D6D5D4D3D2D1D0

CY

AC

F0

RS1

RS0

OV

P

CY——进位标志位。

AC——辅助进位标志位。

F0——用户标志位

RS1、RS0——工作寄存器区选择控制位

OV——溢出标志位。

P——奇偶标志位。

2.控制器

(1)控制器的组成

控制器是由程序计数器PC、指令寄存器、译码器、定时与控制电路等组成的。

(2)程序计数器PC

PC是一个16位的寄存器,PC中的内容是下一条将要执行的指令代码的起始存放地址。

当单片机复位之后,(PC)=0000H,引导CPU到0000H地址读取指令代码,CPU每读取一个字节的指令,PC的内容会自动加1,指向下一个地址,使CPU按顺序去读取后面的指令,从而引导CPU按顺序执行程序。

(二)存储器

1.8051的存储器分为两大存储空间:

程序存储器(ROM)空间

(1)片内4KB的程序存储器,其地址为0000H~0FFFH

(2)片外64KB的程序存储器,其地址为0000H~FFFFH

数据存储器(RAM)空间

(1)片内256B的数据存储器,00H~7FH为通用的数据存储区,80H~FFH为专用的特殊功能寄存器区

(2)片外64KB的数据存储器,其地址为0000H~FFFFH

与8051不同的是,8751片内包含4KB的EPROM程序存储器,而8031内部不包含程序存储器。

2.程序存储器

(1)程序存储器主要用于存放程序和表格常数。

(2)程序存储器分为片内、片外两部分,总容量最大为64KB,地址为0000H~FFFFH。

(3)

引脚的接法

对于8051、8751等片内有程序存储器的芯片,

引脚应该接高电平;对于8031这种片内无程序存储器的芯片,

引脚应该接低电平。

3.数据存储器

数据存储器主要用于存放各种数据。

以下只对内部数据存储器进行介绍。

7FH

30H

2FH

20H

1FH

 

00H

图1-8内部数据存储器的结构

(1)低128B的内部数据存储器

按其功能不同划分为三个区域。

①工作寄存器区(00H~1FH)

该区均分为四个小区,任何时候,只有一个区的工作寄存器可以工作,称为当前工作寄存器区。

当前区的选择可通过对寄存器PSW中的RS1、RS0两个位的设置来进行,见表1-2。

表1-2当前工作寄存器区的选择

RS1

RS0

当前工作寄存器区

0

0

0区

0

1

1区

1

0

2区

1

1

3区

 

思考题:

单片机复位时,当前工作寄存器区是哪个?

②位寻址区(20H~2FH)

位寻址区有16个单元组成,共128个位,每个位具有位地址,表1-3中表格数据是每个位的位地址。

每个单元也可作一般的数据缓冲单元使用。

位地址映象

7FH

7EH

7DH

7CH

7BH

7AH

79H

78H

77H

76H

75H

74H

73H

72H

71H

70H

6FH

6EH

6DH

6CH

6BH

6AH

69H

68H

67H

66H

65H

64H

63H

62H

61H

60H

5FH

5EH

5DH

5CH

5BH

5AH

59H

58H

57H

56H

55H

54H

53H

52H

51H

50H

4FH

4EH

4DH

4CH

4BH

4AH

49H

48H

47H

46H

45H

44H

43H

42H

41H

40H

3FH

3EH

3DH

3CH

3BH

3AH

39H

38H

37H

36H

35H

34H

33H

32H

31H

30H

2FH

2EH

2DH

2CH

2BH

2AH

29H

28H

27H

26H

25H

24H

23H

22H

21H

20H

1FH

1EH

1DH

1CH

1BH

1AH

19H

18H

17H

16H

15H

14H

13H

12H

11H

10H

0FH

0EH

0DH

0CH

0BH

0AH

09H

08H

07H

06H

05H

04H

03H

02H

01H

00H

表1-3片内RAM的位寻址

字节地址

2FH

2EH

2DH

2CH

2BH

2AH

29H

28H

27H

26H

25H

24H

23H

22H

21H

20H

 

③用户区(30H~7FH)

为一般数据缓冲区,堆栈区通常也设置在这个区域内。

(2)高128字节(特殊功能寄存器区)

8051内部有21个特殊功能寄存器(简称SFR),它们均为8位的寄存器,离散分布在80H~FFH区域,剩下107个单元是没有定义的,用户不能使用。

见表1-4。

有11个SFR的字节地址可被8整除(地址以0和8结尾),可以位寻址(表中已给出它们的位地址)。

 

表1-4特殊功能寄存器地址对照表

SPR名称

符号

D7位地址/位定义D0

字节地址

B寄存器

B

F7

F6

F5

F4

F3

F2

F1

F0

(F0H)

累加器A

ACC

E7

E6

E5

E4

E3

E2

E1

E0

(E0H)

程序状态字

PSW

D7

D6

D5

D4

D3

D2

D1

D0

(D0)

CY

AC

F0

RS1

RS0

OV

------

P

中断优先级控制

IP

BF

BE

BD

BC

BB

BA

B9

B8

(B8H)

-----

-----

------

PS

PT1

PX1

PT0

PX0

I/O端口3

P3

B7

B6

B5

B4

B3

B2

B1

B0

(B0H)

P3.7

P3.6

P3.5

P3.4

P3.3

P3.2

P3.1

P3.0

中断允许控制

IE

AF

AE

AD

AC

AB

AA

A9

A8

(A8H)

EA

---

---

EA

ET1

EX0

ET0

EX0

I/O端口2

P2

A7

A6

A5

A4

A3

A2

A1

A0

(A0H)

P2.7

P2.6

P2.5

P2.4

P2.3

P2.2

P2.1

P2.0

串行数据缓冲

SBUF

(99H)

串行控制

SCON

9F

9E

9D

9C

9B

9A

99

98

(98H)

SW0

SW1

SW2

REN

TB8

RB8

TI

RI

I/O端口1

P1

97

96

95

94

93

92

91

90

(90H)

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

定时/计数器1(高字节)

TH1

(8DH)

定时/计数器0(高字节)

TH0

(8CH)

定时/计数器1(低字节)

TL1

(8BH)

定时/计数器0(低字节)

TL0

(8A)

定时/计数器方式选择

TWOD

GATE

C/T

W1

W0

GATE

C/T

W1

W0

(89H)

定时/计数器控制

TCON

8F

8E

8D

8C

8B

8A

89

88

(88H)

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

电源控制与波特率选择

PCON

(87H)

数据指针高字节

DPH

(83H)

数据指针低字节

DPL

(82H)

堆栈指针

SP

(81H)

I/O端口0

P0

87

86

85

84

83

82

81

80

(80H)

P0.7

P0.6

P0.5

P0.4

P0.3

P0.2

P0.1

P0.0

※五、计算机中的数制与编码

(一)常用数制

数制也就是进位制,计算机中常用的进位制有二进制(B字母结尾)、十进制(D字母结尾,可省略)、十六进制(H字母结尾)等。

其中二进制是计算机内部使用的,十进制、十六进制通常是人们书写程序或描述计算机工作过程时使用的。

 

(二)数制间的转换

三种进制的对应关系见表1-5。

表1-5三种进制数对照表

二进制(B)

十六进制(H)

十进制(D)

二进制(B)

十六进制(H)

十进制(D)

0000

0

0

1000

8

8

0001

1

1

1001

9

9

0010

2

2

1010

.A

10

0011

3

3

1011

B

11

0100

4

4

1100

C

12

0101

5

5

1101

D

13

0110

6

6

1110

E

14

0111

7

7

1111

F

15

 

1.十进制转换为二进制

整数部分的转换方法称为“除2取余法”。

小数部分的转换方法称为“乘2取整法”。

2.二进制转换成十进制

将二进制数的各个非零位分别乘以位权之后相加求和。

3.十进制转换成十六进制

整数部分的转换方法称为“除16取余法”。

小数部分的转换方法称“乘16取整法”。

4.十六进制转换成十进制

将十六进制数的各个非零位分别乘以位权后相加求和。

5.二进制与十六进制之间的转换

二进制数转换成十六进制数的方法是:

4位二进制数对应于1位十六进制数(对应关系见表1-4)。

十六进制数转换为二进制数的方法是:

将每1位十六进制数用对应的4位二进制数替换。

练习:

1.将194转换成二进制数

2.将120转换成十六进制数

3.将10101000B转换成十进制数

4.将19BH转换成十进制数

5.将二进制数1011011.110B转换为十六进制数

6.将十六进制数7B.25H转换为二进制数

(三)常用二进制编码

1.二进制编码的十进制数

十进制数用二进制编码的形式来表示,称为二——十进制编码,即:

BCD码(BinaryCodeDecimal)。

最常用的是8421BCD码。

表1-5列出了BCD码(8421码)与十进制数的对照表。

互换时,可以按4位对应1位的原则,进行转换。

表1-6BCD(8421)码与十进制数的对照表

十进制数

BCD码

十进制数

BCD码

0

0000

5

0101

1

0001

6

0110

2

0010

7

0111

3

0011

8

1000

4

0100

9

1001

课堂练习:

(1)将79.32转换成BCD码

(2)将BCD码10000110.0101转换成十进制

2.字符编码(ASCll码)

计算机中的各种字符,包括0~9数字、大小写英文字母、标点符号及用于控制的特殊符号等,也必须用二进制编码表示。

在计算机中一般统一使用ASCII码来表示字符。

ASCII码是美国信息交换标准代码的简称。

每个字符的ASCII码是由7位二进制数构成,第八位(最高位)通常定为奇偶校验位。

例如:

数字0~9的ASCII码为30H~39H;大写字母A~Z的ASCII码为41H~5AH。

(四)带符号数的表示

在计算机中是使用数字“0”和“1”来表示数的符号的。

如,“+”号用“0”表示;“–”号用“1”表示。

一个数在计算机中有三种表示方法:

原码、反码、补码。

下面以8位带符号数为例进行介绍。

1、原码

最高位(D7位)作符号位,用“0”或“1”表示数的正或负,其余位为数值位,用来表示该数的大小,即绝对值。

例:

[+112]原码=01110000B

[–112]原码=11110000B

原码所能表示的十进制范围是:

–127~+127。

2、反码

正数的反码与原码相同;负数的反码,符号位为1,数值位是将原码的数值位按位取反(即原来是“0”的,取为“1”,原来是“1”的,取为“0”)。

例:

[+112]反码=01110000B

[–112]反码=10001111B

反码可表示的十进制范围是:

–127~+127。

3、补码表示法

正数的补码与原码相同;负数的补码,符号位为“1”,数值位是将反码的数值位加1形成。

例:

[+112]补码=01110000B

[–112]补码=10010000B

用补码可表示的十进制范围是:

–128~+127。

因为带符号数用补码表示,可以简化运算,所以较常用。

(五)无符号数

无符号的8位二进制数没有符号位,8位均为数值位。

即:

8位无符号二进制数对应的十进制范围为(0~255)。

第二章MCS-51单片机指令系统

一、指令的表达形式

每条指令有两种不同的表达形式:

1.二进制代码(机器码)指令

2.助记符(汇编语言)指令

助记符指令:

MOVA,#30H

二进制代码指令:

0111010000110000

助记符指令必须转换成二进制代码指令才能存入存储器。

本章仅介绍助记符指令格式,对应的机器码格式可参考附录。

二、汇编语言指令格式

操作码[第一操作数][,第二操作数][,第三操作数]

(1)操作码:

用来规定指令进行何种操作,是指令中不能空缺的部分。

(2)操作数:

表示参与指令操作的数据或数据所在的地址。

为可选项。

有两个操作数时,前一个为目的操作数,后一个为源操作数。

三、指令中有关操作数符号的说明

Rn——工作寄存器R0~R7(n=0、1、2…7)。

Ri——工作寄存器R0和R1(i=0或1)。

Direct——内部RAM的单元地址,地址范围为00~FFH。

#data——8位立即数,即常数。

#data16——16位立即数。

addr16——16位目的地址。

Addrll——11位目的地址。

四、MCS-51单片机指令系统

MCS—51的指令按功能分为五大类:

数据传送、算术运算、逻辑运算、控制转移和位操作指令。

(一)数据传送类指令

注意:

源操作数在传送前后保持不变。

1.内部数据传送指令

指令功能说明

MOVA,Rn;A←(Rn)

MOVA,direct;A←(direct)

MOVA,@Ri ;A←((Ri))

MOVA,#data;A←#data

MOVRn,A;Rn←(A)

MOVRn,direct;Rn←(direct)

MOVRn,#data;Rn←#data

MOVdirect,A;direct←(A)

MOVdirect,Rn;direct←(Rn)

MOVdirect,@Ri;direct←((Ri))

MOVdirect1,direct2;direct1←(direct2)

MOVdirect,#data;direct←#data

MOV@Ri,A;(Ri)←(A)

MOV@Ri,direct;(Ri)←(direct)

MOV@Ri,#data;(Ri)←#data

MOVDPTR,#data16;DPTR←#data16

【例2-1】设(30H)=40H,(40H)=10H,(P1)=0CAH,试判断下列程序执行后的结果。

MOVR0,#30H;R0←#30H

MOVA,@R0;A←(30H),(A)=40H

MOVR1,A;R1←(A),(R1)=40H

MOVB,@R1;B←(40H),(B)=10H

MOV@R1,P1;(R1)←(P1),(40H)=0CAH

MOVP2,P1;P2←(P1),(P2)=0CAH

结果是:

(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH

2.外部数据传送指令

此类指令完成对片外RAM单元中数据的读/写操作。

(1)读指令

MOVXA,@DPTR;A←((DPTR))

MOVXA,@Ri;A←((Ri))

(2)写指令

MOVX@DPTR,A;(DPTR)←(A)

MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1