第1章 MCS-51系列单片机结构 1
1.1 单片微型计算机概述 1
1.1.1 单片机的发展历史 1
1.1.2 单片机的发展趋势 2
1.1.3 单片机的应用 3
1.4.4 51系列单片机 4
1.2 MCS-51单片机内部结构 5
1.3 中央处理器 6
1.4 存储器 9
1.4.1 存储器地址分配 9
1.4.2 程序存储器 10
1.4.3 片内数据存储器 11
1.4.4 片外数据存储器 14
1.5 MCS-51系列单片机的引脚功能 15
1.6 MCS-51时钟和CPU时序 17
1.6.1 时钟电路 17
1.6.2 CPU时序 18
1.7 MCS-51单片机的工作方式 21
1.7.1 复位方式 21
1.7.2 程序执行方式 23
1.7.3 节电工作方式 24
1.7.4 编程和校验方式 27
1.8 思考与练习 28
第2章 MCS-51汇编语言程序设计 29
2.1 程序设计语言概述 29
2.2 指令格式和寻址方式 29
2.2.1 汇编语言指令格式 30
2.2.2 寻址方式 30
2.3 MCS-51单片机的指令系统 35
2.3.1 数据传送指令 35
2.3.2 算术运算类指令 43
2.3.3 逻辑运算类指令 51
2.3.4 控制转移指令 55
2.3.5 位操作指令 62
2.4 伪指令 66
2.5 汇编语言程序设计 68
2.5.1 顺序程序设计 68
2.5.2 查表程序设计 71
2.5.3 分支程序设计 74
2.5.4 循环程序设计 80
2.5.5 子程序设计 83
2.6 应用举例 86
2.6.1 巡回检测报警装置 86
2.6.2 单片机测温系统 87
2.6.3 码制转换 87
2.6.4 排序问题 93
2.7 思考与练习 97
第3章 C51程序设计 99
3.1 C51的标识符和关键字 99
3.2 变量和常量 100
3.2.1 常量 100
3.2.2 变量 101
3.3 C51的运算符与表达式 107
3.3.1 算术运算符与表达式 107
3.3.2 逻辑运算符与表达式 108
3.3.3 关系运算符与表达式 109
3.3.4 位运算符与表达式 110
3.3.5 “,”运算符与表达式 111
3.3.6 “?”运算符 111
3.3.7 “sizeof”运算符 111
3.3.8 指针运算符 111
3.3.9 联合操作运算符 112
3.3.10 类型转换运算符 112
3.3.11 运算符优先级和结合性 113
3.4 C51构造数据类型 114
3.4.1 数组 114
3.4.2 指针 116
3.4.3 结构与联合 119
3.4.4 枚举 122
3.5 C51基本语句 123
3.5.1 赋值语句 123
3.5.2 变量声明语句 123
3.5.3 表达式语句 124
3.5.4 复合语句 124
3.5.5 条件语句 124
3.5.6 循环语句 126
3.5.7 程序跳转语句 127
3.5.8 开关语句 129
3.5.9 空语句 131
3.6 C51的流程控制基本结构 131
3.6.1 顺序结构 132
3.6.2 选择结构 132
3.6.3 循环结构 134
3.7 C51函数 135
3.7.1 函数的定义 135
3.7.2 函数的参数和函数的值 137
3.7.3 函数的调用 139
3.8 应用举例——用C51实现快速傅里叶变换 141
3.9 思考与练习 144
第4章 单片机并行I/O端口 145
4.1 P0口 145
4.2 P1口 147
4.3 P2口 147
4.4 P3口 148
4.5 应用实例 150
4.6 思考与练习 151
第5章 单片机定时器/计数器 152
5.1 定时器/计数器的结构和原理 152
5.2 定时器/计数器的控制寄存器 153
5.3 定时器/计数器的工作方式 155
5.4 定时器/计数器初始化 157
5.5 应用举例 160
5.6 思考与练习 161
第6章 MCS-51单片机串行接口 163
6.1 串行通信概述 163
6.2 串行口功能结构 165
6.2.1 串行口控制寄存器SCON 165
6.2.2 特殊功能寄存器PCON 166
6.3 串行口工作方式 167
6.3.1 方式0 167
6.3.2 方式1 168
6.3.3 方式2 168
6.3.4 方式3 169
6.4 串行口应用实例 169
6.4.1 扩展矩阵键盘接口电路 169
6.4.2 串行RS232协议与以太网通讯协议的转换 171
6.4.3 主从结构的单片机通信系统收发程序的设计 174
6.5 思考与练习 175
第7章 单片机中断系统 177
7.1 中断系统概述 177
7.2 中断控制 179
7.2.1 中断允许寄存器IE 179
7.2.2 中断优先级寄存器IP 180
7.3 中断响应过程 182
7.4 中断响应时间 183
7.5 中断请求的撤销 184
7.6 应用举例 186
7.6.1 主程序初始化 186
7.6.2 中断服务程序设计 187
7.7 MCS-51对外部中断源的扩展 189
7.7.1 定时器/计数器扩展为外部中断源 189
7.7.2 中断和查询结合扩展中断源 189
7.7.3 中断芯片8259扩展外部中断源 190
7.8 思考与练习 193
第8章 存储器的扩展 194
8.1 MCS-51单片机外部总线结构 194
8.1.1 地址译码方法 195
8.1.2 外部地址锁存器 198
8.2 程序存储器扩展 199
8.2.1 EPROM芯片介绍 200
8.2.2 程序存储器的操作时序 201
8.2.3 典型的EPROM接口电路 202
8.3 数据存储器扩展 204
8.3.1 常用的静态RAM(SRAM)芯片 204
8.3.2 外扩数据存储器的读写操作时序 205
8.3.3 典型的外扩数据存储器的接口电路 207
8.4 EPROM和RAM的综合扩展 209
8.4.1 接口电路设计 209
8.4.2 工作原理 210
8.5 思考与练习 212
第9章 并行I/O接口的扩展 213
9.1 I/O扩展概述 213
9.1.1 I/O接口的功能 214
9.1.2 I/O端口的编址 215
9.1.3 I/O数据的几种传送方式 216
9.2 8255接口芯片 216
9.2.1 8255A芯片介绍 217
9.2.2 单片机和8255A的接口及程序设计 220
9.3 8155接口芯片 222
9.3.1 8155H芯片介绍 222
9.3.2 MCS-51与8155H的接口及程序设计 227
9.4 应用举例 228
9.5 思考与练习 232
第10章 输入设备 234
10.1 键盘概述 234
10.1.1 按键去抖动 235
10.1.2 键盘的分类 236
10.2 键盘与单片机的接口 239
10.2.1 独立式键盘与单片机的接口 239
10.2.2 矩阵式键盘与单片机的接口 243
10.2.3 串行口扩展键盘接口 246
10.3 思考与练习 249
第11章 输出设备 250
11.1 发光二极管 250
11.2 LED显示器接口 251
11.2.1 LED显示器的结构与工作原理 252
11.2.2 LED显示器的工作方式 253
11.2.3 LED数码管的选择和驱动 255
11.2.4 数码管的软件译码和硬件译码 256
11.2.5 数码管应用设计 256
11.3 LCD显示器接口 259
11.3.1 LCD显示器工作原理 260
11.3.2 OCM12864液晶显示模块 262
11.3.3 LCD应用举例 265
11.4 8279可编程键盘/显示器接口芯片 273
11.4.1 8279可编程芯片简介 273
11.4.2 8279与单片机接口应用举例 280
11.5 打印输出设备 282
11.5.1 微型打印机概述 282
11.5.2 微型打印机的应用 287
11.6 思考与练习 290
第12章 A/D和D/A转换器 291
12.1 A/D转换器 291
12.1.1 A/D转换器分类 291
12.1.2 A/D转换器的指标 291
12.1.3 并行AD转换器ADC0809 292
12.1.4 串行AD转换器TLC2543 297
12.2 DA转换器 301
12.2.1 DA转换器分类 301
12.2.2 DA转换器的重要指标 302
12.2.3 并行DA转换器DAC0832 302
12.2.4 串行DA转换器MAX517 307
12.3 思考与练习 309
第13章 应用实战案例 310
13.1 仿真软件 310
13.1.1 新建文件和项目 310
13.1.2 程序的下载 311
13.2 直流电动机控制 312
13.2.1 直流电动机工作原理及调速方法 312
13.2.2 PWM调速原理 312
13.2.3 应用电路设计 313
13.2.4 软件程序设计 314
13.3 步进电动机控制 319
13.3.1 步进电动机原理 319
13.3.2 静态指标 320
13.3.3 应用电路设计 320
13.3.4 软件设计 320
13.4 舵机控制 322
13.4.1 工作原理 322
13.4.2 舵机重要指标 322
13.4.3 软件设计 323
13.5 RS232与VB串行通讯 324
13.5.1 VB串行通讯简介 325
13.5.2 应用电路设计 325
13.5.3 软件设计 326
13.6 语音录放控制 328
13.6.1 ISD2560引脚功能 329
13.6.2 应用电路设计 330
13.6.3 软件程序设计 331
13.7 短距离无线传输 332
13.7.1 模块管脚说明 333
13.7.2 工作模式 334
13.7.3 RF905数据的收发过程 334
13.7.4 软件设计 335
13.8 思考与练习 339
附录A ASCll码字符表 342
附录B MCS-51系列单片机指令一览表 343
附录C C51库函数 348
参考文献 356