单片机入门捷径与实例.pdf

单片机入门捷径与实例.pdf
 

书籍描述

内容简介
本书从初学者的角度对他们在学习单片机过程中遇到的问题进行了归纳,选取了200多个问题,以“非典型”问答方式介绍MCS-51系列及其兼容单片机的基本知识和接口技术。主要内容包括由外而内地介绍MCS-51系列及其兼容单片机的基本结构,指令系统及程序设计,C51语言程序设计,中断系统、定时器/计数器、串行口的工作原理,存储器扩展和接口技术等,并精选择了一些程序设计、中断系统、定时器/计数器应用、串行口应用、接口技术及典型的新型接口器件的应用程序实例。最后给出了部分汇编语言和C51语言程序索引,方便读者设计程序时参考。

作者简介
广东省电梯技术学会理事;广东省自动化学会会员;《控制理论与应用》杂志审稿专家;广东省科技厅科技咨询专家;广东省综合评标专家库评标专家。广东省自然科学基金项目——最经济智能控制的交流传动系统结构及运动过程研究;广州市高等学校第二批教育教学改革研究项目——基于PROTEUS系统仿真的单片机课程教学改革;广州大学实验教学改革研究项目——单片机及嵌入式系统实验教学改革。

目录
第1章 对单片机的基本认识 1
1.1 单片机是什么? 1
1.2 单片机是什么样子? 1
1.3 单片机有哪些型号? 2
1.4 从外形看,怎么知道单片机的功能? 2
1.5 怎么知道单片机是否在工作? 2
1.6 单片机和微机有什么区别? 2
1.7 单片机与专用集成电路有什么区别? 3
1.8 单片机与可编程控制器(PLC)有什么区别? 3
1.9 单片机的组成结构是怎样的? 4
1.10 什么是普林斯顿结构和哈佛结构? 5
1.11 MCS-51单片机有什么功能? 5
1.12 AT89S系列单片机的功能有什么特点? 6
1.13 单片机用得多吗? 6
第2章 由外到里认识单片机——单片机的引脚功能 8
2.1 单片机的引脚有些什么作用? 8
2.2 单片机接晶体振荡器有什么作用? 9
2.3 单片机有哪些时序单位? 9
2.4 引脚一定要连接吗? 10
2.5 复位有什么作用? 10
2.6 复位以后单片机处于什么状态? 10
2.7 什么是I/O端口? 11
2.8 为什么要外接存储器? 12
2.9 为什么要复用P0口? 12
2.10 扩展外部存储器,一定要用到P2口吗? 12
2.11 外部数据存储器的地址资源用不完,能否实现外借? 13
2.12 并行口的“读引脚”和“读锁存器”操作有何区别? 13
2.13 P1口的结构和工作是怎样的? 14
2.14 P3口的结构和工作是怎样的? 15
2.15 P2口的结构和工作是怎样的? 17
2.16 P0口的结构和工作是怎样的? 18
2.17 为什么I/O口锁存器的位置1,才能进行输入操作? 20
2.18 I/O口的输入/输出操作需要先进行初始化吗? 20
2.19 AT89C2051、AT89S2051等单片机为什么只有20个引脚? 20
2.20 怎样才能使单片机工作? 21
2.21 什么是单片机最小系统? 22
2.22 AT89S系列单片机有什么新的引脚功能? 22
第3章 由外到里认识单片机——单片机的内部基本功能 23
3.1 单片机的CPU在哪里? 23
3.2 程序状态字PSW起什么作用? 23
3.3 程序计数器PC起什么作用? 24
3.4 特殊功能寄存器有什么作用? 25
3.5 什么是程序存储器地址空间? 26
3.6 未使用的程序存储器单元里的内容是什么? 27
3.7 什么是数据存储器地址空间? 27
3.8 8052等器件有256字节内部数据存储器单元,是否会与特殊功能寄存器产生地址冲突? 29
3.9 如何选择使用工作寄存器组? 29
3.10 AT89S系列单片机有哪些新的特殊功能寄存器? 29
3.11 什么是AT89S系列单片机的ISP系统内编程? 32
第4章 指令系统和程序设计 36
4.1 指令跟硬件功能有关系吗? 36
4.2 还需要人工编译汇编语言源程序吗? 36
4.3 理解机器码有什么作用,有必要吗? 36
4.4 字节型传送指令MOV有什么特点? 37
4.5 把累加器写成A与写成ACC有什么不同? 37
4.6 指令格式中的direct是什么意思? 38
4.7 一个内部数据存储器单元应该用direct还是Rn形式表示好? 38
4.8 如何理解指令中的“@”标识符? 39
4.9 如何理解指令中的“#”标识符? 39
4.10 如何区分指令中的数值是地址还是常数? 39
4.11 什么是堆栈操作? 40
4.12 堆栈操作指令的特点是什么? 40
4.13 工作寄存器Rn和累加器A可以堆栈吗? 41
4.14 堆栈区的起点可以自由设定吗? 41
4.15 堆栈区的大小是固定的吗? 41

4.16 如何实现数据交换? 42
4.17 传送指令MOVC有什么特点? 42
4.18 传送指令MOVX有什么特点? 43
4.19 算术运算指令的特点是什么? 44
4.20 可以实现累加器A的内容自己相加吗? 45
4.21 如何实现DPTR的内容减1? 45
4.22 乘法指令和除法指令的操作有什么特点? 46
4.23 有哪些针对累加器A本身的逻辑操作指令? 46
4.24 如何进行与、或、异或运算? 47
4.25 LJMP和AJMP指令的区别是什么,如何选用? 48
4.26 LCALL和ACALL指令的区别是什么,如何选用? 48
4.27 子程序是以LCALL、ACALL指令开始的吗? 49
4.28 有几种子程序返回指令,其用途是什么? 49
4.29 “SJMP rel”和“JMP @A+DPTR”指令有什么作用? 49
4.30 “JZ rel”和“JNZ rel”指令是对哪个寄存器的? 50
4.31 CJNE指令的功能是什么? 51
4.32 DJNZ指令在程序中的作用是什么? 51
4.33 如何理解转移指令中的rel? 51
4.34 空操作NOP指令是没有用的指令吗? 52
4.35 如何进行可寻址位的数据传送? 53
4.36 可寻址位有哪些运算指令? 53
4.37 可寻址位有哪些转移指令? 54
4.38 在程序中如何表示一个可寻址的位? 54
4.39 如何区分一条指令是字节操作指令还是位操作指令? 54
4.40 子程序有什么作用,在什么情况下要采用子程序? 55
4.41 设计子程序有什么需要注意的地方? 55
4.42 什么是保护和恢复现场? 56
4.43 子程序的调用可以嵌套吗? 56
4.44 为什么中断响应不自动保护“现场”? 57
4.45 主程序的主体应放在程序存储器的哪一部分? 57
4.46 什么是标号? 57
4.47 “$”是什么符号? 58
4.48 使用伪指令有什么好处? 58
4.49 有哪些常用的伪指令? 58
4.50 单片机的程序结构与C语言一样吗? 61
4.51 在什么情况下能用“DA A”指令? 61
4.52 如何进行压缩BCD码数的减法运算? 62
4.53 在汇编语言源程序中,如何表示BCD码常数? 63
4.54 如何理解和编写软件延时子程序? 63
4.55 指令有“常用”和“不常用”之分吗? 64
第5章 单片机的C51语言程序设计 65
5.1 C51语言和C语言的程序有什么异同? 65
5.2 C51语言程序中变量的存储器类型指的是单片机本身的存储器吗? 65
5.3 C51语言如何对程序中的变量确定存储单元? 66
5.4 C51语言如何定义和访问单片机的特殊功能寄存器? 66
5.5 C51语言程序如何直接访问单片机内部数据存储器单元? 67
5.6 C51语言如何定义和访问单片机的可寻址位? 67
5.7 C51语言程序如何访问单片机外部数据存储器和I/O接口器件? 68
5.8 C51语言的逻辑运算符与汇编语言中的逻辑运算指令是相同的吗? 69
5.9 C51语言的位运算符与汇编语言中的位操作指令是相同的吗? 69
5.10 C51语言的指针和汇编语言的间接寻址方式有什么区别? 69
5.11 在C51语言程序中如何使用单片机的中断功能? 70
5.12 C51语言程序的中断函数会自动保护现场吗? 71
5.13 在C51语言程序中如何使用定时器/计数器? 71
5.14 在C51语言程序中如何使用工作寄存器? 71
5.15 C51语言程序可以和汇编语言程序放在一起吗? 71
5.16 如何提高C51语言程序的执行速度? 72
5.17 采用C51语言设计的程序,是从main()开始执行的吗? 73
第6章 中断系统应用 74
6.1 为什么要中断? 74
6.2 中断系统有什么作用? 74
6.3 中断从哪里来? 75
6.4 如何知道中断来了? 75
6.5 中断了,干什么? 75
6.6 中断请求什么时候来? 76
6.7 中断服务子程序在哪里? 76
6.8 中断完了干什么? 76
6.9 有多个中断源同时申请中断,怎么办? 77
6.10 有一个中断正在处理(响应)时,又有新的中断申请,怎么办? 77
6.11 中断系统应具有什么功能? 77
6.12 MCS-51单片机有哪几个中断源? 78
6.13 对外部中断信号有什么要求? 79
6.14 在中断响应后,进入中断服务前要满足什么条件? 79
6.15 从中断申请到进入程序需要多长时间? 80
6.16 响应中断后,如何处理中断申请标志? 80
6.17 如何设置中断系统? 81
6.18 能否用程序控制对中断申请的取舍? 82
6.19 “AJMP $”和“SJMP $”是“等待中断”的指令吗? 82
6.20 可以用转移指令退出中断服务程序吗? 83
6.21 如何掌握中断优先级的顺序? 83
6.22 在中断服务程序中如何利用工作寄存器? 83
6.23 外中断应用程序举例 84
第7章 定时器/计数器应用 88
7.1 为什么需要定时器/计数器? 88
7.2 定时器/计数器的工作原理是怎样的? 88
7.3 定时器/计数器有几种工作方式? 89
7.4 如何设置定时器/计数器的工作? 89
7.5 定时器/计数器在方式0是如何工作的? 91
7.6 定时器/计数器在方式1是如何工作的? 91
7.7 定时器/计数器在方式2是如何工作的? 92
7.8 定时器/计数器0在方式3是如何工作的? 93
7.9 如何使定时器/计数器按我们的希望溢出? 94
7.10 如何计算定时器/计数器的计数初值? 94
7.11 如何选用定时器/计数器的工作方式? 95
7.12 如何实现超过定时器/计数器范围的定时? 96
7.13 单片机上电或复位后,定时器/计数器会不会自动开始工作? 96
7.14 用方式0、1、3进行周期性定时/计数时,为什么要重新装入计数初值? 96
7.15 如何设计定时器/计数器的应用程序? 96
7.16 定时器/计数器应用举例 97
第8章 串行口应用 115
8.1 什么是同步和异步串行通信? 115
8.2 什么是单工、半双工、全双工方式? 115
8.3 实现串行通信要用哪些引脚? 116
8.4 为什么需要时钟控制串行通信? 116
8.5 MCS-51单片机的串行口是哪种接口协议? 116
8.6 如何知道串行发送/接收是否已经完成? 116
8.7 串行口如何控制? 117
8.8 复位后,单片机的串行口会自动处于接收数据的状态吗? 117
8.9 串行缓冲寄存器SBUF有什么作用? 118
8.10 什么是波特率?如何确定波特率? 118
8.11 如何计算串行方式1、3的波特率? 118
8.12 什么是串行发送?发送时数据传送的顺序是怎样的? 119
8.13 什么是串行接收?接收时数据传送的顺序是怎样的? 119
8.14 需要关心发送/接收的详细过程吗? 120
8.15 串行口的发送/接收会影响程序的执行吗? 120
8.16 串行方式0的发送/接收条件是怎样的? 120
8.17 串行方式1的发送/接收条件是怎样的? 121

8.18 串行方式2、3的发送/接收条件是怎样的? 121
8.19 串行方式2、3中TB8、RB8位起什么作用? 122
8.20 什么是主从通信方式? 122
8.21 串行控制寄存器SCON的SM2位有什么作用? 123
8.22 如何应用串行方式1? 123
8.23 如何应用串行方式2、3? 130
8.24 一个完善的单片机串行通信系统应考虑哪些因素? 137
第9章 单片机接口技术与存储器扩展 138
9.1 程序存储器不够用,怎么办? 138
9.2 数据存储器不够用,怎么办? 139
9.3 什么是总线? 139
9.4 什么是三总线结构? 139
9.5 如何处理空余的高位地址线? 140
9.6 什么是I/O接口和接口技术? 141
9.7 什么是接口芯片和端口? 141
9.8 接口电路有哪些组成部分? 141
9.9 并行I/O口不够用,怎么办? 142
9.10 串行I/O口不够用,怎么办? 143
9.11 用RAM器件扩展的存储器一定是数据存储器吗? 143
9.12 用ROM器件扩展的存储器一定是程序存储器吗? 143
9.13 如何扩展程序存储器,并对扩展电路进行分析? 144
9.14 如何扩展数据存储器,并对扩展电路进行分析? 145
9.15 如何用EEPROM扩展存储器,并对扩展电路进行分析? 147
9.16 如何访问扩展的程序和数据存储器? 149
9.17 如何理解P0、P2口作为I/O口和地址/数据总线时使用上的区别? 149
9.18 P0、P2口能同时作为I/O口和地址/数据总线使用吗? 150
9.19 如何实现用外部数据存储器方式扩展I/O口? 150
9.20 单片机与外部器件间有什么数据传送方式? 152
第10章 显示与键盘接口技术 153
10.1 什么是LED数码管动态显示的“段控”和“位控”? 153
10.2 LED数码管显示器有哪些工作方式? 154
10.3 要显示的数字、字符,如何变成显示的“段码”? 155
10.4 动态显示时如何保证同时清晰看到所有位? 155
10.5 如何更新显示的内容? 155
10.6 动态显示为什么采用显示缓冲区的形式? 155
10.7 如何编写动态显示程序? 156
10.8 以按键和键盘作为输入器件时,为什么需要消抖? 163
10.9 如何编写简单的按键处理程序? 163

10.10 矩阵键盘电路是怎么样的? 166
10.11 单片机如何知道矩阵键盘何时有按键按下? 166
10.12 如何识别矩阵键盘中哪个键按下? 167
10.13 如何设计矩阵键盘处理程序? 168
10.14 一个完善的键盘处理程序应考虑哪些因素? 172
10.15 LCD液晶显示模块有什么特点? 173
10.16 LCD液晶显示模块有哪些引脚? 173
10.17 LCD液晶显示模块有哪些寄存器? 174
10.18 LCD液晶显示模块有哪些编程指令? 175
10.19 MCS-51指令可以对LCD模块编程吗? 177
10.20 如何使用LCD液晶显示模块? 178
10.21 什么是SPI总线? 182
10.22 显示驱动器MAX7219有什么特点? 183
10.23 如何使用和设置MAX7219的寄存器? 185
10.24 如何应用MAX7219? 186
10.25 带SPI接口的单片机如何连接和控制MAX7219? 191
第11章 实时时钟与温度传感器接口技术 197
11.1 实时时钟DS12C887如何与单片机接口? 197
11.2 串行实时时钟DS1306有什么功能? 202
11.3 单片机如何与串行实时时钟DS1306接口? 204
11.4 什么是单总线? 208
11.5 温度传感器DS18B20有什么特点? 209
11.6 DS18B20有哪些存储单元? 210
11.7 什么是循环冗余校验? 211
11.8 DS18B20是怎样实现CRC校验的? 212
11.9 MCS-51单片机如何连接和控制DS18B20? 213
11.10 单片机控制DS18B20的应用程序举例 217
附录A 223
附一:MCS-51单片机指令系统功能分类及注释表 223
附二:MCS-51单片机指令系统顺序查询及注释表 226
附录B 部分程序索引 230
附一:汇编语言程序 230
附二:C51语言程序 231
参考文献 233

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多