第一部分 基础篇 1
第1章 单片机基础 1
1.1 单片机的发展 1
1.2 单片机的分类 2
1.3 常用单片机简介 3
1.4 单片机的应用领域 4
1.5 8051单片机的组成结构 4
1.5.1 8051单片机的引脚结构 5
1.5.2 8051单片机的内部结构 5
1.6 本章小结 6
1.7 课后习题 7
第2章 开发环境与程序流程图 8
2.1 单片机的开发语言 8
2.1.1 两种开发语言的比较 8
2.1.2 汇编语言指令格式 9
2.1.3 汇编指令中的常用表示符号 9
2.1.4 C51语言与标准C语言的差异 10
2.2 单片机的开发环境 10
2.2.1 软件环境 11
2.2.2 硬件环境 11
2.3 程序流程图 12
2.4 实例——简单的程序 13
2.4.1 新建工程 13
2.4.2 添加汇编代码 14
2.4.3 编译代码 15
2.4.4 调试程序 16
2.4.5 添加C51代码 17
2.4.6 将程序下载到单片机 18
2.5 本章小结 19
2.6 课后习题 20
第3章 信息存储与数据操作 21
3.1 信息的存储方式 21
3.1.1 片内数据存储器 21
3.1.2 片内程序存储器 23
3.2 寻址方式说明 23
3.3 数据传送指令 24
3.3.1 片内RAM的访问指令 24
3.3.2 片外RAM的访问指令 25
3.3.3 程序存储的访问指令 25
3.4 实例——片内数据的传送 26
3.4.1 流程图、代码与讲解 26
3.4.2 调试说明 27
3.5 实例——寄存器间接寻址的深入研究 28
3.5.1 汇编设计思路 28
3.5.2 流程图、代码与讲解 28
3.5.3 调试说明 28
3.6 片内数据交换与堆栈操作指令 29
3.6.1 片内数据交换指令 29
3.6.2 堆栈操作指令 29
3.7 实例——数据交换的3种方法 30
3.8 本章小结 32
3.9 课后习题 33
第4章 算术运算与逻辑运算 34
4.1 算术运算指令 34
4.1.1 运算状态标记 34
4.1.2 加法指令 34
4.1.3 减法指令 36
4.1.4 乘法指令 37
4.1.5 除法指令 37
4.2 实例——多字节加法运算 37
4.2.1 程序设计思路 37
4.2.2 代码与讲解 37
4.3 有符号数的编码 38
4.4 实例——有符号数的多字节减法 39
4.4.1 程序设计思路 39
4.4.2 代码与讲解 40
4.5 逻辑运算指令 41
4.5.1 基本逻辑运算 41
4.5.2 其他逻辑操作 42
4.6 位循环指令 43
4.7 实例——逻辑处理 44
4.7.1 程序设计思路 44
4.7.2 代码与讲解 45
4.8 本章小结 46
4.9 课后习题 47
第5章 转移控制与位操作 48
5.1 转移控制指令 48
5.1.1 无条件转移指令 48
5.1.2 条件转移指令 49
5.1.3 调用与返回指令 50
5.1.4 空操作指令 50
5.1.5 关于转移控制指令中的地址 50
5.2 实例——延时子程序 51
5.2.1 相关知识 51
5.2.2 程序设计思路 52
5.2.3 代码与讲解 53
5.3 位操作指令 54
5.3.1 位变量传送指令 54
5.3.2 位清0和位置1指令 55
5.3.3 位逻辑运算指令 55
5.3.4 位条件转移指令 55
5.4 实例——简单的加密 56
5.4.1 设计思路 56
5.4.2 代码与讲解 57
5.5 本章小结 58
5.6 课后习题 58
第6章 汇编语言程序设计 60
6.1 汇编程序的编写技巧 60
6.1.1 编写汇编程序的的步骤 60
6.1.2 汇编程序的编写技巧 61
6.2 汇编语言基础知识 61
6.2.1 汇编程序的编辑和汇编 61
6.2.2 汇编语言的定义 61
6.2.3 汇编指令中的常数 62
6.2.4 伪指令 62
6.3 常见汇编程序结构 64
6.3.1 顺序程序结构 64
6.3.2 分支程序结构 65
6.3.3 循环程序结构 67
6.3.4 查表程序结构 68
6.3.5 子程序结构 68
6 4 实例——顺序查表程序 69
6.4.1 程序设计思路 69
6.4.2 代码与讲解 69
6.5 实例——分支程序 70
6.5.1 程序设计思路 70
6.5.2 代码与讲解 70
6.6 实例——循环程序 71
6.6.1 程序设计思路 71
6.6.2 代码与讲解 72
6.7 实例——子程序 73
6.7.1 程序设计思路 73
6.7.2 代码与讲解 73
6.7.3 调试说明 74
6.8 常见错误分析 74
6.8.1 常见的汇编错误 74
6.8.2 常见逻辑错误 75
6.8.3 编写汇编程序的忠告 75
6.9 本章小结 75
6.10 课后习题 76
第二部分 提高篇 77
第7章 输入/输出控制 77
7.1 P0端口的结构及工作原理 77
7.1.1 P0端口的内部结构 77
7.1.2 P0口作为I/O端口的工作原理 78
7.1.3 I/O端口的编程注意事项 80
7.1.4 P0口作为“地址/数据”总线的工作原理 80
7.2 P1端口的结构及工作原理 82
7.3 P2端口的结构及工作原理 83
7.4 P3端口的结构及工作原理 84
7.4.1 P3口的结构 84
7.4.2 P3口的第二功能 84
7.5 Proteus仿真软件简介 85
7.5.1 Proteus软件特点 85
7.5.2 Proteus软件的界面 85
7.6 实例——跑马灯 86
7.6.1 实例说明 86
7.6.2 程序设计思路 86
7.6.3 代码与讲解 87
7.6.4 电路图的绘制 88
7.6.5 系统仿真 90
7.7 实例——交通指示灯 91
7.7.1 代码与讲解 92
7.7.2 搭建电路图 94
7.8 本章小结 94
7.9 课后习题 95
第8章 中断系统与定时/计数器 96
8.1 中断系统基础 96
8.1.1 中断的基本概念 96
8.1.2 MCS-51单片机的中断系统 97
8.2 外部中断的处理过程 98
8.2.1 外部中断的响应条件 98
8.2.2 外部中断的处理过程 99
8.3 实例——开关控制的跑马灯 99
8.3.1 实例说明 99
8.3.2 相关知识 100
8.3.3 代码与讲解 101
8.3.4 调试说明 103
8.4 多中断源的处理 104
8.5 定时/计数器的处理过程 104
8.5.1 定时/计数器的基本功能 104
8.5.2 定时/计数器的控制 105
8.5.3 定时/计数器的工作方式 105
8.6 实例——彩灯变换 107
8.6.1 实例说明 107
8.6.2 程序设计思路 107
8.6.3 代码与讲解 108
8.7 本章小结 110
8.8 课后习题 111
第9章 串行接口控制 112
9.1 串行通信的基础知识 112
9.1.1 数据通信的传输方式 112
9.1.2 串行通信与并行通信 112
9.1.3 串行数据通信的两种形式 113
9.1.4 串行数据通信的传输速率 114
9.2 MCS-51单片机的串行接口 114
9.2.1 串行通信的控制 114
9.2.2 串行口的工作方式 115
9.2.3 波特率的计算 117
9.3 实例——单片机之间的串行通信 117
9.3.1 实例说明 117
9.3.2 代码与讲解 118
9.3.3 调试说明 121
9.4 串行通信的标准接口 121
9.5 实例——PC机串口通信的仿真 122
9.5.1 实例介绍 122
9.5.2 相关知识 123
9.5.3 代码与讲解 125
9.5.4 调试说明 126
9.6 本章小结 126
9.7 课后习题 127
第10章 存储器的外部扩展 128
10.1 MCS-51单片机的儿个引脚说明 128
10.2 程序存储器的扩展 128
10.2.1 EPROM的扩展 129
10.2.2 E2PROM的扩展 130
10.3 实例——程序存储器的扩展 130
10.3.1 实例说明 130
10.3.2 相关知识 131
10.3.3 代码与讲解 132
10.4 数据存储器的扩展 133
10.4.1 静态RAM 133
10.4.2 数据存储器的扩展电路 134
10.5 实例——数据存储器的扩展 135
10.5.1 实例说明 135
10.5.2 相关知识 136
10.5.3 代码与讲解 136
10.5.4 调试说明 138
10.6 本章小结 138
10.7 课后习题 138
第11章 七段LED数码管 140
11.1 七段LED数码管简介 140
11.1.1 七段LED数码管的结构 140
11.1.2 七段LED数码管的字型码 141
11.1.3 七段LED数码管的控制方法 141
11.2 实例——数字的显示 142
11.2.1 实例说明 142
11.2.2 程序设计思路 142
11.2.3 代码与讲解 143
11.3 实例——实用秒表 145
11.3.1 实例说明 145
11.3.2 程序设计思路 145
11.3.3 代码与讲解 146
11.4 本章小结 149
11.5 课后习题 149
第12章 液晶显示器的控制 150
12.1 字符型LCD的控制 150
12.1.1 1602的引脚 150
12.1.2 1602的内置字符 151
12.1.3 1602的操作指令 151
12.2 实例——字符的显示 154
12.2.1 实例说明 154
12.2.2 程序设计思路 155
12.2.3 代码与讲解 155
12.3 绘图型LCD的控制 158
12.3.1 KS0108的引脚 158
12.3.2 KS0108的指令系统 158
12.4 实例——图形的显示 160
12.4.1 实例说明 160
12.4.2 程序设计思路 160
12.4.3 代码与讲解 162
12.5 实例——汉字的显示 166
12.5.1 相关知识 166
12.5.2 代码与讲解 167
12.6 实例——动画的显示 169
12.6.1 程序设计思路 169
12.6.2 代码与讲解 170
12.7 本章小结 172
12.8 课后习题 173
第13章 键盘接口 174
13.1 键盘的控制接口 174
13.1.1 按键开关的抖动问题 174
13.1.2 键盘与单片机的连接 175
13.2 实例——程序扫描方式的键盘控制 176
13.2.1 实例说明 176
13.2.2 代码与讲解 176
13.3 中断响应方式的键盘控制 179
13.3.1 实例说明 179
13.3.2 代码与讲解 179
13.4 本章小结 182
13.5 课后习题 182
第14章 数字模拟转换器接口 183
14.1 D/A转换器接口 183
14.1.1 DAC接口电路 183
14.1.2 DAC0832的应用 184
1 4.2 实例——锯齿波发生器 185
14.2.1 实例说明 185
14.2.2 代码与讲解 185
14.3 A/D转换接口 187
14.3.1 ADC接口电路 187
14.3.2 ADC0809的应用 188
14.4 实例——数字电压表 189
14.4.1 实例说明 189
14.4.2 代码与讲解 189
14.5 本章小结 192
14.6 课后习题 192
第三部分 高级篇 193
第15章 音效设计 193
15.1 音乐控制原理 193
15.1.1 蜂鸣器简介 193
15.1.2 音效电路 193
15.1.3 音效播放原理 194
1 5.2 实例——蜂鸣器的控制 195
15.2.1 实例说明 195
15.2.2 代码与讲解 196
15.3 实例——音乐盒 198
15.3.1 实例说明 198
15.3.2 代码与讲解 198
15.4 本章小结 202
15.5 课后习题 203
第16章 步进式电动机的控制 204
16.1 步进式电动机的控制原理 204
16.1.1 步进式电动机简介 204
16.1.2 步进电机的控制原理 204
16.2 实例——电动机控制实例 207
16.2.1 实例说明 207
16.2.2 代码与讲解 208
16.3 本章小结 210
16.4 课后习题 211
附录A ASCII码表 235
附录B MCS—51系列单片机指令表 237
附录C 常用汇编子程序 241
第17章 传感器的控制 212
17.1 传感器简介 212
17.1.1 传感器的组成 212
17.1.2 传感器的分类 212
17.1.3 传感器的发展趋势 213
17.2 传感器接口 213
17.2.1 DS18B20简介 214
17.2.2 DS18B20的控制方法 216
17.3 实例——数字温度计 218
17.3.1 实例说明 218
17.3.2 代码与讲解 218
17.4 本章小结 226
17.5 课后习题 227
第18章 红外线遥控接口 228
18.1 红外线遥控接口 228
18.1.1 红外线遥控的系统结构 228
18.1.2 红外遥控的发射部分 228
18.1.3 红外遥控的接收部分 230
18.2 实例——简单的红外线遥控 231
18.2.1 实例说明 231
18.2.2 代码与讲解 231
18.3 本章小结 233
18.4 课后习题 234