第1章 单片机概述 1
1.1 单片机的概念 1
1.2 单片机的体系结构和特点 1
1.2.1 单片机的体系结构 1
1.2.2 单片机的特点 3
1.3 单片机的发展 4
1.3.1 单片机的发展历史 4
1.3.2 单片机的发展趋势 5
1.4 单片机的应用及学习方法 8
1.4.1 单片机的应用领域 8
1.4.2 单片机应用系统的组成 9
1.4.3 单片机的学习方法 9
1.5 单片机与嵌入式系统 10
1.5.1 嵌入式系统 10
1.5.2 常见51单片机介绍 11
1.5.3 其他的单片机 15
1.5.4 各类嵌入式处理器简介 18
思考题与习题1 19
第2章 AT89S51单片机的硬件结构 21
2.1 AT89S51单片机的内部结构 21
2.2 AT89S51单片机的引脚功能 25
2.2.1 芯片封装 25
2.2.2 芯片引脚及功能 26
2.3 AT89S51单片机的存储器系统 28
2.3.1 程序存储器 29
2.3.2 片内数据存储器 30
2.3.3 特殊功能寄存器 31
2.3.4 位地址空间 37
2.3.5 片外数据存储器 38
2.4 并行I/O口 39
2.4.1 P0口 39
2.4.2 P1口 41
2.4.3 P2口 42
2.4.4 P3口 44
2.5 AT89S51单片机的工作时序 45
2.5.1 时钟电路 45
2.5.2 机器周期及指令周期 46
2.5.3 指令的执行时序 47
2.6 单片机的工作方式 48
2.6.1 复位方式 48
2.6.2 程序执行方式 50
2.6.3 低功耗方式 50
2.6.4 编程和校验方式 52
2.7 单片机的最小系统 57
思考题与习题2 58
第3章 AT89S51单片机指令系统及汇编语言程序设计 61
3.1 单片机指令系统概述 61
3.1.1 指令格式 62
3.1.2 符号说明 64
3.2 单片机的寻址方式 65
3.3 指令分类及说明 70
3.3.1 数据传送类指令 70
3.3.2 算术运算类指令 74
3.3.3 逻辑操作类指令 79
3.3.4 控制转移类指令 81
3.3.5 位操作类指令 84
3.4 汇编语言程序设计 86
3.4.1 汇编语言程序设计步骤 86
3.4.2 汇编语言程序设计技巧 86
3.4.3 汇编 87
3.4.4 伪指令 87
3.5 汇编程序设计实例 89
3.5.1 顺序结构程序设计 89
3.5.2 分支结构程序设计 91
3.5.3 循环结构程序设计 94
3.5.4 子程序设计 100
思考题与习题3 105
第4章 C51语言程序设计基础 109
4.1 C51程序的基础知识 109
4.1.1 C51的特点 109
4.1.2 标识符和关键字 111
4.1.3 运算符与表达式 113
4.2 C51的数据类型 117
4.2.1 C51的基本数据类型 117
4.2.2 存储器类型 119
4.2.3 存储模式 120
4.2.4 常量和变量 121
4.2.5 特殊功能寄存器及位变量的定义 125
4.2.6 数组和指针 127
4.2.7 绝对地址访问 132
4.3 C51的函数 134
4.3.1 函数的定义 134
4.3.2 函数的声明 135
4.3.3 函数的调用 136
4.3.4 函数参数传递及返回值传递 136
4.3.5 中断函数 137
4.3.6 可重入函数 138
4.3.7 常用库函数 139
4.3.8 常用编译预处理命令 140
4.4 C51程序设计 143
4.4.1 C51的程序结构 143
4.4.2 C51程序基本结构与相关语句 144
4.4.3 启动程序STARTUP.A51 148
4.4.4 C51与汇编语言混合编程 149
4.4.5 C51程序设计实例 157
思考题与习题4 160
第5章 AT89S51单片机的中断系统 164
5.1 单片机与外设的数据传输方式 164
5.2 中断系统概述 166
5.2.1 中断的概念 166
5.2.2 中断系统的结构 166
5.3 中断处理过程 171
5.4 中断请求的撤销 173
5.5 外部中断源扩展 174
5.6 中断服务程序的设计及应用 176
5.6.1 设计思想和方法 176
5.6.2 中断程序设计实例 178
思考题与习题5 181
第6章 AT89S51单片机的定时/计数器 182
6.1 定时/计数器的结构及工作原理 182
6.1.1 定时/计数器的结构 182
6.1.2 定时/计数器的控制 183
6.2 定时/计数器的工作模式及其应用 184
6.2.1 模式0和模式1 184
6.2.2 模式2 188
6.2.3 模式3 190
思考题与习题6 193
第7章 AT89S51单片机的串行口 194
7.1 串行通信的概念 194
7.1.1 串行通信的传输方式 194
7.1.2 串行通信的异步通信方式 195
7.2 串行口的结构 196
7.2.1 串行口控制寄存器SCON 197
7.2.2 电源控制寄存器PCON 198
7.3 串行口的通信工作方式 198
7.3.1 工作方式0 198
7.3.2 工作方式1 201
7.3.3 工作方式2 208
7.3.4 工作方式3 211
7.3.5 多机通信 217
7.4 串行通信接口标准 221
思考题与习题7 223
第8章 单片机系统的并行口扩展 224
8.1 单片机的三总线结构 224
8.2 外部存储器的扩展 225
8.2.1 程序存储器扩展 225
8.2.2 静态数据存储器扩展 228
8.2.3 多个存储芯片的综合扩展 230
8.3 并行I/O口扩展 231
8.3.1 并行扩展芯片8255 231
8.3.2 74LS系列芯片扩展并行口 236
思考题与习题8 237
第9章 AT89S51单片机串行口扩展技术 238
9.1 RS-232C串行通信标准及应用 238
9.2 SPI串行总线 240
9.3 单总线串行扩展技术 245
9.4 Microwire总线 247
9.5 I2C总线 247
9.5.1 I2C总线概述 247
9.5.2 I2C总线的工作原理 249
9.6 AT89S51单片机的I2C总线扩展系统 252
思考题与习题9 260
第10章 AT89S51单片机的人机接口 262
10.1 键盘输入接口 262
1O.1.1 键盘输入应解决的问题 262
10.1.2 键盘的工作原理 263
10.1.3 键盘接口电路 266
10.1.4 键盘的工作方式 266
10.2 发光二极管显示 270
10.3 LED数码管显示器 272
10.4 单片机与LCD的接口 276
10.4.1 LCD的分类 276
1O.4.2 点阵字符型液晶显示模块介绍 276
10.4.3 点阵字符型液晶显示SMC1602介绍 277
思考题与习题10 281
第11章 AT89S51单片机的A/D和D/A转换器接口 283
11.1 D/A转换器接口技术 283
11.1.1 D/A转换器简介 283
11.1.2 AT89S51单片机与DAC0832接口技术 284
11.1.3 AT89S51单片机与TLC5615的接口技术 289
11.2 A/D转换器接口技术 294
11.2.1 A/D转换器简介 294
11.2.2 AT89S51单片机与ADC0809的接口技术 295
11.2.3 AT89S51单片机与TLC1549的接口设计 299
思考题与习题11 303
第12章 AT89S51单片机应用系统设计与调试 304
12.1 单片机应用系统的设计步骤 304
12.2 典型的单片机应用系统 306
12.3 KeilμVision4软件开发环境 307
12.3.1 KeilμVision4的基本操作 308
12.3.2 添加用户源程序文件 310
12.3.3 工程的设置 312
12.3.4 程序的调试 313
12.4 Proteus电子仿真软件 313
12.4.1 电子产品的设计流程 314
12.4.2 Proteus ISIS的工作环境 315
12.4.3 Proteus的操作与仿真 316
12.4.4 Proteus与Keil C的联合调试设置 321
12.5 单片机课程教学“示教板” 322
12.5.1 实例1:中断技术应用 322
12.5.2 实例2:D/A转换接口应用 330
12.5.3 实例3:基于AD590的温度显示系统 332
12.5.4 实例4:科学计算器 336
12.5.5 实例5:AT89S51单片机的下载器 343
12.5.6 实例6:单片机控制继电器(220V交流) 343
思考题与习题12 345
附录1 指令系统速查表 346
附录2 指令矩阵 351
参考文献 352