第1章 绪论 1
1.1 微型计算机的发展历史 1
1.2 微型计算机的组成 2
1.2.1 微型计算机系统的层次关系和体系结构 2
1.2.2 微处理器 5
1.2.3 存储器 6
1.2.4 I/O接口 7
1.3 微型计算机的数制和编码 7
1.3.1 数制 8
1.3.2 数据在计算机中的表示 10
1.3.3 常用编码 11
1.4 单片机简介 13
1.4.1 单片机的发展和应用 13
1.4.2 MCS-51系列单片机概况 13
1.5 小结 13
1.6 习题 14
第2章 MCS-51单片机的基本结构 15
2.1 MCS-51单片机的体系结构 15
2.2 MCS-51单片机的内部资源 16
2.2.1 中央处理器(CPU) 17
2.2.2 存储器和寄存器 18
2.2.3 常用特殊功能寄存器的功能 23
2.3 MCS-51单片机的引脚功能 24
2.4 并行I/O端口的引脚特性 27
2.4.1 P0口的引脚特性 27
2.4.2 P1口的引脚特性 29
2.4.3 P2口的引脚特性 29
2.4.4 P3口的引脚特性 30
2.5 MCS-51/52单片机的最小系统电路 31
2.5.1 时钟电路和时钟信号 31
2.5.2 复位电路 31
2.6 小结 33
2.7 习题 33
第3章 MCS-51单片机汇编语言程序设计 35
3.1 汇编语言的伪指令 35
3.2 指令格式和相关符号 39
3.2.1 指令格式 39
3.2.2 指令的分类和指令描述符号 40
3.3 指令的寻址方式 41
3.3.1 立即数寻址 41
3.3.2 寄存器寻址 41
3.3.3 直接寻址 42
3.3.4 寄存器间接寻址 42
3.3.5 位寻址 42
3.3.6 变址寻址 43
3.3.7 相对寻址 43
3.4 MCS-51指令集 44
3.4.1 数据传送指令 44
3.4.2 算术运算指令 51
3.4.3 逻辑运算指令 55
3.4.4 移位指令 58
3.4.5 控制转移指令 58
3.5 汇编语言程序设计 65
3.5.1 顺序程序设计 65
3.5.2 分支程序设计 67
3.5.3 循环程序设计 72
3.5.4 子程序设计 78
3.6 小结 86
3.7 习题 86
第4章 MCS-51单片机的内部功能单元 88
4.1 中断系统 88
4.1.1 单片机与外部设备的数据传送方式 88
4.1.2 MCS-51单片机中断系统的功能和结构 89
4.2 外部中断 95
4.2.1 外部中断的初始化设置 95
4.2.2 中断程序设计方法 96
4.2.3 外部中断请求的撤除 98
4.2.4 外部中断源的扩展 98
4.3 定时/计数器 100
4.3.1 定时/计数器的基本工作原理 100
4.3.2 与定时/计数器相关的寄存器 101
4.3.3 定时/计数器的工作方式 102
4.3.4 定时/计数器的初始化 104
4.3.5 定时功能应用举例 106
4.3.6 计数功能应用举例 109
4.3.7 测高电平时长举例 111
4.4 串行通信接口 112
4.4.1 串行通信的基础知识 113
4.4.2 串行通信的类型 114
4.4.3 MCS-51单片机串口的基本结构 115
4.4.4 MCS-51单片机串口的相关特殊功能寄存器 115
4.4.5 串口的工作方式 118
4.4.6 RS-232C串行通信接口 125
4.4.7 RS-485串行通信接口 127
4.5 小结 128
4.6 习题 128
第5章 MCS-51单片机的并行扩展 130
5.1 MCS-51单片机的片外并行总线 130
5.1.1 总线的作用 130
5.1.2 MCS-51单片机片外总线的构成 130
5.2 片外存储器的扩展 132
5.2.1 片外程序存储器的连接与访问 132
5.2.2 片外数据存储器的连接与访问 135
5.2.3 单片机访问片外存储空间的时序 144
5.3 并行I/O接口的扩展 147
5.3.1 I/O接口概述 147
5.3.2 MCS-51单片机并行I/O口的使用 149
5.3.3 简单并行I/O接口的扩展 149
5.4 并行接口芯片8255A的扩展 153
5.4.1 8255A的内部结构和引脚 153
5.4.2 8255A的控制字 155
5.4.3 8255A的工作方式 157
5.4.4 应用举例 161
5.5 显示器与键盘接口的扩展 163
5.5.1 显示器的扩展 163
5.5.2 键盘的扩展 174
5.6 D-A和A-D接口的扩展 185
5.6.1 D-A转换器的工作原理和性能指标 186
5.6.2 DAC0832芯片的接口扩展 188
5.6.3 A-D转换器的工作原理和性能指标 198
5.6.4 ADC0809芯片的接口扩展 201
5.7 小结 207
5.8 习题 207
第6章 常用串行总线接口技术 209
6.1 SPI串行总线 209
6.1.1 SPI总线的引脚功能和时序 209
6.1.2 SPI总线A-D转换芯片TLC2543 210
6.1.3 TLC2543的应用实例 213
6.2 I2C总线 216
6.2.1 I2C总线的引脚功能和时序 217
6.2.2 I2C总线日历时钟芯片PCF8563 219
6.2.3 PCF8563的应用实例 221
6.3 单总线 230
6.3.1 单总线的引脚功能和时序 230
6.3.2 DS18B20的使用方法 232
6.3.3 DS18B20的应用实例 234
6.4 小结 239
6.5 习题 239
第7章 KeilμVision4集成开发环境使用 240
7.1 建立Keil工程 240
7.2 生成源程序文件 242
7.3 工程的基本设置 243
7.4 程序的运行和调试 246
7.4.1 程序的编译和链接 247
7.4.2 程序的调试 248
7.5 小结 255
7.6 习题 255
第8章 C51语言程序设计基础 256
8.1 计算机程序设计语言概述 256
8.2 C51语言的变量 257
8.2.1 变量的数据类型 257
8.2.2 变量的存储 259
8.3 C51语言的常量 260
8.4 运算符 261
8.5 数组 263
8.6 C51语言的基本语句 263
8.6.1 条件语句 263
8.6.2 开关语句 264
8.6.3 循环语句 264
8.7 函数 265
8.7.1 函数的定义 265
8.7.2 函数的调用 266
8.8 C51程序设计实例 266
8.8.1 外部中断程序设计 266
8.8.2 定时/计数器程序设计 267
8.8.3 串行接口程序设计 273
8.8.4 并行接口程序设计 279
8.8.5 键盘显示器接口程序设计 281
8.9 小结 299
8.10 习题 299
第9章 Proteus虚拟仿真 300
9.1 集成环境ISIS的使用 300
9.1.1 原理图的绘制 301
9.1.2 虚拟模型的仿真运行 309
9.1.3 基于ISIS的汇编语言程序设计 313
9.1.4 ISIS和Keil的联机调试 315
9.2 虚拟仿真实例 316
9.2.1 简易音乐演奏系统设计 316
9.2.2 直流电动机转速PWM控制 323
9.3 小结 337
9.4 习题 337
参考文献 338