第1章 51单片机结构及工作原理 1
1.1 微型计算机基础 1
1.1.1 单片机及其发展概况 1
1.1.2 计算机中的数制及相互转换 3
1.1.3 二进制数的运算 8
1.1.4 计算机中数的表示方法 10
1.2 51单片机的基本组成和功能 13
1.2.1 51系列单片机的主要功能 13
1.2.2 51系列单片机基本结构 14
1.2.3 51系列单片机外部引脚 15
1.3 51单片机的内部结构 19
1.3.1 中央处理单元 19
1.3.2 存储器 22
1.3.3 定时器/计数器 26
1.3.4 I/O口 26
1.3.5 中断系统 27
1.4 51系列单片机的工作方式 30
1.4.1 时钟和时钟电路 30
1.4.2 CPU时序 30
1.4.3 复位状态和复位电路 31
本章小结 33
习题与思考 33
第2章 51单片机指令系统及汇编语言程序设计基础 34
2.1 51单片机指令格式 34
2.1.1 指令格式 34
2.1.2 指令的字节数 35
2.1.3 指令的分类 36
2.2 51单片机寻址方式 37
2.2.1 立即寻址 38
2.2.2 直接寻址 38
2.2.3 寄存器寻址 39
2.2.4 寄存器间接寻址 39
2.2.5 变址寻址 40
2.2.6 相对寻址 40
2.2.7 位寻址 41
2.3 51单片机指令 41
2.3.1 数据传送类指令 41
2.3.2 算术运算类指令 45
2.3.3 逻辑运算及移位指令 48
2.3.4 控制转移类指令 52
2.3.5 位操作类指令 58
2.3.6 伪指令 60
2.4 汇编语言程序设计基础 62
2.4.1 汇编语言程序的格式 63
2.4.2 汇编语言程序的基本结构 64
2.4.3 顺序结构程序设计 64
2.4.4 分支程序设计 65
2.4.5 循环程序设计 68
2.4.6 查表程序设计 73
2.4.7 子程序设计 75
本章小结 80
习题与思考 80
第3章 51单片机的硬件资源 82
3.1 51单片机并行I/O口 82
3.1.1 I/O口的作用 82
3.1.2 内部并行I/O口 83
3.1.3 内部并行I/O口的应用 86
3.2 51单片机中断系统 86
3.2.1 中断的定义 87
3.2.2 中断源 87
3.2.3 中断控制 89
3.2.4 中断优先级结构 91
3.2.5 中断响应 91
3.2.6 中断响应时间 92
3.2.7 中断请求的撤除 93
3.2.8 中断系统的初始化 94
3.2.9 外部中断源的扩展 95
3.3 51单片机定时器/计数器 96
3.3.1 定时器/计数器的结构及工作原理 96
3.3.2 控制定时器/计数器的寄存器 97
3.3.3 定时器/计数器的初始化 98
3.3.4 定时器/计数器的工作方式 100
3.4 51单片机串行通信 106
3.4.1 串行通信 106
3.4.2 51单片机串行接口 108
3.4.3 51单片机串行通信的工作方式 110
本章小结 113
习题与思考 113
第4章 C51程序设计基础 115
4.1 C51语言的符号类型 115
4.1.1 标识符 115
4.1.2 关键字 115
4.1.3 运算符 117
4.1.4 分隔符 119
4.2 常量与变量 121
4.2.1 基本数据类型 121
4.2.2 常量 122
4.2.3 变量 123
4.2.4 变量的作用范围 124
4.3 C51语句 125
4.3.1 说明语句与空语句 125
4.3.2 表达式语句 127
4.3.3 条件语句 128
4.3.4 开关、跳转语句 129
4.3.5 循环语句 130
4.3.6 复合语句 133
4.3.7 函数调用语句 133
4.3.8 预处理 134
本章小结 138
习题与思考 138
第5章 C51数据结构 139
5.1 数组 139
5.1.1 数组的定义和引用 139
5.1.2 字符数组 139
5.1.3 数组元素赋初值 140
5.1.4 数组作为函数的参数 140
5.2 指针 141
5.2.1 指针与地址 141
5.2.2 指针变量 141
5.3 结构 142
5.3.1 结构说明和结构变量定义 142
5.3.2 结构变量的使用 143
5.3.3 结构数组和结构指针 143
5.4 联合 144
5.5 枚举 145
本章小结 146
习题与思考 146
第6章 C51编译器及简介 147
6.1 KEIL C51编译器简介 147
6.1.1 KEIL C51开发套件 147
6.1.2 KEIL C51的安装 147
6.1.3 KEIL C51开发实例 148
6.2 C51库函数概述 150
6.2.1 本征库函数和非本征库函数 150
6.2.2 几类重要库函数 151
6.2.3 C51库函数原型列表 151
本章小结 153
习题与思考 153
第7章 51单片机人机交互 154
7.1 外部显示元件设计 154
7.1.1 LED数码管 154
7.1.2 16×2字符型液晶显示器编程 161
7.2 键盘输入设计 168
7.2.1 键盘接口类型 169
7.2.2 键盘的防抖技术 171
7.2.3 键盘扫描方式编程 172
7.2.4 键盘中断方式编程 174
7.3 外接打印机接口设计 177
7.3.1 打印机接口信号 177
7.3.2 字符和汉字编码 178
7.3.3 打印命令 178
7.3.4 外接打印机接口电路设计 180
7.3.5 外接打印机驱动程序设计 182
本章小结 184
习题与思考 184
第8章 51单片机数据采集 185
8.1 传感器技术概述 185
8.1.1 传感器的组成 185
8.1.2 传感器的基本特性 186
8.2 常用的A/D转换元件 187
8.2.1 A/D转换元件的结构和工作原理 187
8.2.2 A/D转换元件的接口电路 192
8.2.3 单片机A/D转换软件编程 192
8.3 温度数据采集元件设计 194
8.3.1 温度数据采集元件的结构和工作原理 194
8.3.2 温度数据采集元件的接口电路 198
8.3.3 单片机温度数据采集软件编程 199
8.4 压力数据采集元件设计 205
8.4.1 压力数据采集元件的结构和工作原理 205
8.4.2 压力数据采集元件接口电路 210
8.4.3 单片机压力数据采集软件编程 211
本章小结 212
习题与思考 212
第9章 51单片机串行通信 214
9.1 单片机串行通信设计 214
9.1.1 常用接口芯片结构和工作原理 214
9.1.2 单片机串行通信电路设计 220
9.1.3 单片机串行通信软件编程 221
9.2 Windows.NET环境下计算机与单片机串行通信程序设计 230
9.2.1 Windows.NET串行类介绍 230
9.2.2 计算机与下位机通信协议 232
9.2.3 计算机的串行通信程序的设计 239
9.2.4 单片机串行通信程序的设计 241
本章小结 249
习题与思考 249
第10章 51单片机外部存储器扩展 251
10.1 外部I/O的扩展 251
10.1.1 I/O口扩展概述 251
10.1.2 I/O地址译码技术 252
10.2 存储器概述 253
10.2.1 存储器的类型 254
10.2.2 常用的存储器 255
10.2.3 存储器扩展电路的工作方式 258
10.3 外部存储器扩展 259
10.3.1 扩展程序存储器 259
10.3.2 扩展数据存储器及编程 261
10.3.3 程序存储器与数据存储器同时扩展 266
本章小结 267
习题与思考 268
第11章 51单片机输出控制 269
11.1 常用输出接口电路 269
11.1.1 单片机与光电隔离元件的接口电路 269
11.1.2 单片机与模拟开关元件的接口电路 271
11.1.3 单片机与继电器的接口电路 273
11.2 常用D/A转换器设计 279
11.2.1 D/A转换器的结构和工作原理 280
11.2.2 D/A转换器的接口电路 281
11.2.3 D/A转换器的单片机编程 282
11.3 直流电动机的控制设计 284
11.3.1 直流电动机驱动电路的基本工作原理 284
11.3.2 采用单片机的直流电动机控制电路设计 291
11.3.3 直流电动机驱动的编程 292
本章小结 293
习题与思考 293
第12章 51单片机智能车设计实例 295
12.1 智能车总体方案设计 295
12.1.1 系统总体设计思路 295
12.1.2 系统总体方案的选定 296
12.1.3 系统总体方案设计 299
12.2 智能车硬件电路设计 301
12.2.1 电源模块 301
12.2.2 视频图像采集及处理模块 302
12.2.3 速度检测模块 308
12.2.4 舵机驱动模块 310
12.2.5 直流电机驱动模块 310
12.2.6 无线数据传输模块 312
12.2.7 无线视频发射模块 314
12.2.8 上位机接口部分 314
12.3 智能车软件系统设计 316
12.3.1 系统软件总体架构 317
12.3.2 视频图像采集及处理算法 317
12.3.3 图像信息处理 323
12.3.4 速度控制和舵机控制算法 326
12.3.5 主驱动电机的PD控制 329
12.3.6 速度检测算法 334
12.3.7 无线数据传输 337
12.3.8 人机交互界面 343
本章小结 345
附录A 51单片机指令系统表 346
附录B C51语言的库函数 350
参考文献 355