基础篇 3
第1章 单片机基础知识 3
1.1 引言 3
1.1.1 计算机 3
1.1.2 微型机 6
1.1.3 单片机与嵌入式计算机 7
1.2 常用的数制和码制 7
1.2.1 常用的数制及其转换 7
1.2.2 常用的码制 11
实验一:认识补码 17
1.3 单片机内部结构概论 18
1.3.1 中央处理器CPU概论 19
1.3.2 存储器概论 23
1.3.3 输入/输出接口概论 26
1.4 单片机产品概述 27
1.4.1 单片机产品的类型 27
1.4.2 单片机产品的应用 28
本章小结 28
思考与练习 29
第2章 MCS-51系列单片机系统的基本组织 30
2.1 总体结构 30
2.1.1 内部结构 30
2.1.2 外部引脚 31
2.2 CPU的特性 32
2.3 存储器的组织 33
2.3.1 程序存储器 33
2.3.2 数据存储器 35
2.3.3 特殊功能寄存器 37
2.3.4 外部数据存储器和I/O接口 39
2.4 I/O接口 39
2.4.1 P1口 40
2.4.2 P3口 41
2.4.3 P2口 42
2.4.4 P0口 42
实验二:认识P0~P3 C7 43
2.5 时钟和时钟电路 46
2.5.1 内部方式 46
2.5.2 外部方式 46
2.6 启动和复位电路 46
2.6.1 上电启动电路 47
2.6.2 人工按钮复位电路 47
本章小结 48
思考与练习 48
第3章 MCS-51系列的指令系统 50
3.1 指令格式和寻址方式 50
3.1.1 立即寻址方式 51
3.1.2 直接寻址方式 52
3.1.3 寄存器寻址方式 52
3.1.4 寄存器间接寻址方式 53
3.1.5 变址寻址方式 53
3.1.6 相对寻址方式 54
3.1.7 位寻址方式 55
3.1.8 学习寻址方式的意义 55
3.2 数据传送类指令 56
3.2.1 内部数据传送指令 56
3.2.2 内外数据传送指令 61
3.2.3 查表指令 62
实验三:寻址方式和堆栈的认识 63
3.3 数据处理类指令 66
3.3.1 算术运算指令 67
3.3.2 逻辑运算指令 72
3.3.3 移位指令 74
3.4 位操作类指令 77
3.4.1 位变量传送指令 77
3.4.2 位变量设置指令 78
3.4.3 位变量逻辑运算指令 78
3.5 程序转移类指令 80
3.5.1 无条件转移指令 80
3.5.2 有条件转移指令 82
3.5.3 调用和返回子程序的指令 85
实验四:转移类指令和位操作类指令的认识 88
3.6 CPU执行指令的时序 89
本章小结 91
思考与练习 92
第4章 MCS-51系列汇编语言程序设计 96
4.1 伪指令 96
4.1.1 起始指令 97
4.1.2 结束指令 97
4.1.3 数据定义类指令 97
4.2 汇编语言的语句格式 101
实验五:认识汇编语言程序的格式 101
4.3 汇编语言程序设计的方法 102
4.3.1 顺序结构程序的设计 103
4.3.2 分支结构程序的设计 103
4.3.3 循环结构程序的设计 105
4.3.4 子程序设计 107
4.3.5 经典程序设计举例 113
实验六:查表程序设计 123
实验七:排序程序设计 124
本章小结 125
思考与练习 126
第5章 MCS-51单片机系列的中断系统 129
5.1 中断的概念 129
5.1.1 什么是中断 129
5.1.2 中断源 130
5.1.3 中断的优先级 130
5.1.4 控制中断的特殊功能寄存器 131
5.2 中断处理过程 134
5.2.1 中断申请 134
5.2.2 中断响应条件 134
5.2.3 中断处理过程 135
5.2.4 中断请求信号的撤消 136
5.3 中断程序的编制 136
5.3.1 中断初始化程序的编制 136
5.3.2 中断服务子程序的编写 137
实验八:认识中断系统和中断服务子程序编写 138
本章小结 140
思考与练习 141
第6章 MCS-51单片机的定时器/计数器 142
6.1 定时器/计数器的结构和工作原理 142
6.1.1 定时器/计数器T0和T1 142
6.1.2 定时器/计数器T2 146
6.1.3 定时器/计数器的使用极限 150
6.2 控制定时器/计数器的特殊功能寄存器 151
6.3 定时器/计数器的应用及其编程 153
6.3.1初始化编程 153
6.3.2定时器/计数器应用编程 154
实验九:定时器/计数器应用 160
本章小结 162
思考与练习 163
第7章 MCS-51单片机的串行接口 167
7.1 串行通信的概念 167
7.2 单片机串行接口的结构原理 170
7.3 单片机串口的工作方式和相关的特殊功能寄存器 172
7.3.1 串行口控制寄存器SCON(Serial Control) 172
7.3.2 串行口工作方式0 174
7.3.3 串行口工作方式1 176
7.3.4 串行口工作方式2.3 177
7.3.5 串行口数据传送的波特率 178
7.4 串行口应用举例 179
实验十:串行口双机通信 186
本章小结 189
思考与练习 190
扩展、接口和应用篇 193
第8章 MCS-51单片机的扩展技术 193
8.1 单片机扩展原理 193
8.2 程序存储器的扩展 194
8.2.1 EPROM存储器芯片 195
8.2.2 程序存储器芯片与系统的连接举例 196
8.3 数据存储器的扩展 200
8.3.1 常用静态随机存储器(SRAM)芯片 201
8.3.2 数据存储器扩展应用举例 202
8.3.3 CPU如何访问外部存储器 206
实验十一:数据存储器的扩展和测试 208
8.4 并行接口的扩展 209
8.4.1 基本并行接口及其扩展 210
实验十二:基本并行口及其扩展 214
8.4.2 8255A并行口及其扩展 216
实验十三:8255A并行口及其扩展 226
8.5 综合接口芯片8155 228
本章小结 232
思考与练习 233
第9章 键盘/显示器的接口技术 235
9.1 LED数码显示器的结构原理和接口技术 235
9.1.1 LED数码显示器的结构原理 235
9.1.2 LED数码显示器的显示码 236
9.1.3 LED显示器的显示方式及其显示程序 237
9.2 键盘结构的原理与接口技术 242
9.2.1 键盘电路的结构原理 242
9.2.2 键抖动问题 244
9.2.3 键盘接口电路举例 245
9.3 8279显示器/键盘接口电路的原理和应用 248
9.3.1 8279的内部结构 248
9.3.2 8279的接口工作方式 249
9.3.3 8279的控制命令字、状态字和数据格式 250
9.3.4 8279芯片的外部引脚 253
9.3.5 8279的应用举例 254
实验十四:8279显示器/键盘接口和编程 261
本章小结 261
思考与练习 262
第10章 D/A和A/D转换器的接口技术 263
10.1 D/A转换器和接口技术 264
10.1.1 D/A转换器的原理 264
10.1.2 D/A转换器的性能指标 266
10.1.3 DAC0832的结构原理和接口技术 267
10.1.4 DAC0832的应用和编程 270
实验十五:D/A转换器应用举例 273
10.2 A/D转换器和接口技术 274
10.2.1 A/D转换器的原理 274
10.2.2 A/D转换器的主要性能指标 275
10.2.3 ADC0809的结构原理和接口技术 276
10.2.4 A/D转换器的应用举例 278
实验十六:A/D转换器的应用和编程 281
本章小结 283
思考与练习 283
第11章 单片机应用系统的研制 285
11.1 单片机应用系统设计概述 285
11.2 单片机应用系统的硬件设计 286
11.3 单片机应用系统的软件设计 290
11.4 单片机应用系统设计举例 291
实验十七:单片机应用系统设计举例 311
本章小结 312
思考与练习 312
C51篇 315
第12章 C51程序设计初步 315
12.1 C51概论 315
12.1.1 C51语言与C语言 315
12.1.2 C51语言与51系列汇编语言 316
12.2 C51的数据类型 316
12.2.1 数据类型 316
12.2.2 存储器类型 317
12.2.3 访问特殊功能寄存器 319
12.2.4 位变量的定义 320
12.2.5 C51指针 320
12.2.6 绝对地址访问 321
12.2.7 存储器模式 322
12.3 C51位变量逻辑运算符 322
12.4 C51程序设计 323
12.4.1 基本并行接口的输入/输出程序的设计 323
12.4.2 8255A并行接口的输入/输出程序的设计 324
12.4.3 51串行口发送/接收程序的设计 325
12.4.4 D/A转换控制程序的设计 328
12.4.5 A/D转换控制程序的设计 329
12.4.6 步进电机控制单片机应用系统的设计 331
12.4.7 直流电机控制单片机应用系统的设计 334
12.5 C51的函数库 339
12.6 多模块及其C51语言与汇编语言混合编程 340
本章小结 342
实验十八:C51语言程序设计(逻辑函数的运算) 342
思考与练习 343
附录51 系列单片机的指令表 345
参考文献 350