绪论 1
第0章 计算机的基础知识 6
0.1 微型计算机的基本结构和工作原理 6
0.1.1 微型计算机的系统结构 6
0.1.2 微型计算机的基本工作原理 7
0.1.3 微型计算机的主要技术指标 7
0.2 计算机中的数制与码制 8
0.2.1 计算机中的数 8
0.2.2 计算机中的有符号数的表示 9
0.2.3 进位和溢出 11
0.2.4 BCD码 11
0.2.5 BCD码的运算 12
0.2.6 ASCII码 13
0.3 小结 13
思考题与习题0 13
第1章 51单片机结构 14
1.1 51单片机内部结构 14
1.1.1 概述 14
1.1.2 CPU 14
1.2 存储器 15
1.2.1 程序存储器 16
1.2.2 外部数据存储器 17
1.2.3 内部数据存储器 17
1.3 特殊功能寄存器 18
1.4 时钟电路与复位电路 20
1.4.1 时钟电路 20
1.4.2 单片机的时序单位 21
1.4.3 复位电路 21
1.5 引脚功能 22
1.5.1 可总线扩展的单片机引脚 22
1.5.2 不可总线扩展的单片机引脚 23
1.6 小结 24
思考题与习题1 25
第2章 51单片机的指令系统 26
2.1 寻址方式 27
2.1.1 立即寻址 27
2.1.2 直接寻址 27
2.1.3 寄存器寻址 27
2.1.4 寄存器间接寻址 28
2.1.5 变址寻址 28
2.1.6 相对寻址 29
2.1.7 位寻址 29
2.2 数据传送与交换指令 29
2.2.1 传送类指令 29
2.2.2 交换指令 32
2.3 算术运算和逻辑运算指令 32
2.3.1 算术运算和逻辑运算指令对标志位的影响 33
2.3.2 以A为目的操作数的算术运算和逻辑运算指令 33
2.3.3 以dir为目的操作数的逻辑运算指令 34
2.3.4 加1、减1指令 34
2.3.5 十进制调整指令 34
2.3.6 专对A的指令 35
2.3.7 乘、除法指令 35
2.3.8 指令综合应用举例 35
2.4 控制转移指令 36
2.4.1 调用程序和返回类指令 37
2.4.2 转移指令 37
2.4.3 空操作指令 40
2.4.4 指令应用举例 40
2.5 位操作指令 41
2.6 小结 42
思考题与习题2 42
第3章 51单片机汇编语言程序设计 45
3.1 概述 45
3.2 伪指令 46
3.3 顺序程序设计 47
3.4 分支程序设计 49
3.5 循环程序设计 52
3.6 位操作程序设计 56
3.7 子程序 57
3.8 小结 59
思考题与习题3 59
第4章 单片机的C语言编程——C51 61
4.1 C51程序结构 61
4.2 C51的数据类型 62
4.3 数据的存储器类型和存储器模式 63
4.3.1 数据的存储器类型 63
4.3.2 存储器模式 64
4.3.3 变量说明举例 64
4.4 指针 64
4.4.1 指针和指针变量 64
4.4.2 指针变量的数据类型和存储类型 65
4.4.3 指针变量的说明 65
4.4.4 指向数组的指针变量 66
4.5 C51对SFR、可寻址位、存储器和I/O口的定义 67
4.5.1 特殊功能寄存器SFR定义 67
4.5.2 对位变量的定义 67
4.5.3 C51对存储器和外接I/O口的绝对地址访问 68
4.6 C51的运算符 68
4.7 函数 69
4.7.1 函数的分类 69
4.7.2 函数的定义 69
4.7.3 函数的调用 70
4.7.4 对被调函数的说明 70
4.8 C语言编程实例 71
4.8.1 C语言程序的反汇编程序(源代码) 71
4.8.2 顺序程序的设计 72
4.8.3 循环程序的设计 73
4.8.4 分支程序的设计 74
4.9 汇编语言和C语言的混合编程 76
4.9.1 C语言程序和汇编语言程序参数的传递 76
4.9.2 C语言程序调用汇编语言程序举例 77
4.9.3 C语言和汇编语言混合编程传递的参数多于3个的编程方法 79
4.10 小结 83
思考题与习题4 84
第5章 输入、输出接口P0~P3 85
5.1 P0~P3并行接口的功能和内部结构 86
5.1.1 端口功能 86
5.1.2 端口的内部结构 86
5.2 编程举例 88
5.3 用并行口设计LED数码显示器和键盘电路 91
5.3.1 用并行口设计LED显示电路 91
5.3.2 用并行口设计键盘电路 94
5.4 小结 97
思考题与习题5 98
第6章 51单片机的中断系统 99
6.1 8XX51中断系统结构 99
6.1.1 中断源 100
6.1.2 中断控制的有关寄存器 100
6.2 中断响应过程 102
6.2.1 中断处理过程 102
6.2.2 中断请求的撤除 103
6.3 中断的程序设计 103
6.3.1 汇编语言中断程序的设计 103
6.3.2 C51中断程序的设计 105
6.4 外部设备中断的接入 107
6.5 小结 108
思考题与习题6 108
第7章 单片机的定时/计数器 109
7.1 定时/计数器的结构和工作原理 109
7.2 定时/计数器的寄存器 110
7.2.1 定时/计数器方式寄存器TMOD 110
7.2.2 定时/计数器控制寄存器TCON 111
7.3 定时/计数器的工作方式 111
7.4 定时/计数器的应用程序设计 112
7.4.1 定时/计数器的计数初值C的计算和装入 112
7.4.2 定时/计数器的初始化编程 113
7.4.3 应用编程举例 113
7.4.4 门控位的应用 117
7.5 小结 119
思考题与习题7 120
第8章 单片机的串行接口 121
8.1 概述 121
8.1.1 同步和异步方式 121
8.1.2 通信方向 122
8.1.3 串行通信接口的任务 122
8.1.4 串行通信接口 123
8.1.5 波特率和发送接收时钟 123
8.1.6 通信线的连接 124
8.1.7 关于RS-232 124
8.1.8 单片机串行通信电路 126
8.2 单片机串行口的结构与工作原理 127
8.2.1 串行口结构 127
8.2.2 工作原理 127
8.2.3 波特率的设定 128
8.3 串行口的控制寄存器 128
8.3.1 串行口的控制寄存器SCON 128
8.3.2 电源控制寄存器PCON 129
8.4 串行口的工作方式 130
8.5 串行口的应用编程 130
8.5.1 查询方式 131
8.5.2 中断法 131
8.5.3 串行通信编程实例 132
8.6 利用串行口方式0扩展I/O口 137
8.7 单片机和PC的串行通信 138
8.8 USB接口 143
8.8.1 USB协议简介 144
8.8.2 USB协议的实现 145
8.8.3 用USB连接PC和单片机 145
8.9 小结 146
思考题与习题8 147
第9章 单片机总线与系统扩展 148
9.1 单片机系统总线和系统扩展方法 148
9.1.1 单片机系统总线信号 148
9.1.2 外围芯片的引脚规律 148
9.1.3 系统扩展的方法 150
9.1.4 地址译码器 151
9.2 存储器的扩展 153
9.2.1 存储器的基本知识 153
9.2.2 程序存储器的扩展 155
9.3 数据存储器的扩展 158
9.4 同时扩展SRAM和大于64KB Flash的例子 160
9.5 并行I/O接口的扩展 162
9.5.1 通用锁存器、缓冲器的扩展 162
9.5.2 可编程并行接口芯片的扩展 163
9.6 存储器和I/O口综合扩展电路 167
9.7 扩展多功能接口芯片8155 168
9.8 小结 172
思考题与习题9 173
第10章 单片机应用接口技术 174
10.1 并行D/A接口技术 174
10.1.1 D/A概述 174
10.1.2 DAC0832的扩展接口 175
10.1.3 DAC1210的扩展接口 177
10.2 A/D接口技术 178
10.2.1 A/D概述 178
10.2.2 ADC0809的扩展接口 179
10.2.3 AD574的扩展接口 181
10.3 V/F(电压/频率)转换接口 184
10.4 F/V(频率/电压)转换接口 185
10.5 人机接口技术 186
10.5.1 键盘接口扩展 186
10.5.2 LED显示器扩展 187
10.5.3 用8279扩展键盘与LED显示器 188
10.5.4 LCD显示器扩展 188
10.6 隔离与驱动接口 192
10.7 触摸屏 194
10.7.1 电阻式触摸屏的工作原理 194
10.7.2 电容式触摸屏的工作原理 195
10.7.3 红外线式触摸屏的工作原理及特点 196
10.7.4 表面声波触摸屏的工作原理 196
10.7.5 电阻式触摸屏与单片机的接口 197
10.8 条形码 197
10.8.1 条形码的类型 197
10.8.2 条形码的格式 198
10.8.3 条形码的生成 199
10.8.4 条形码的识别 199
10.8.5 条形码示例 199
10.9 小结 201
思考题与习题10 201
第11章 串行总线技术 202
11.1 I2C总线扩展技术 202
11.1.1 I2C总线简介 202
11.1.2 I2C总线的通信规程 203
11.1.3 串行I2C E2PROM AT24CXX 203
11.1.4 I2C总线的编程实现 207
11.1.5 串行E2PROM和8XX51接口实例 210
11.1.6 串行铁电FRAM的扩展 211
11.2 SPI总线扩展接口及应用 212
11.2.1 SPI的原理 212
11.2.2 SPI总线的软件模拟及扩展技术 213
11.2.3 串行D/A转换器TLC5615的扩展 215
11.2.4 8位串行A/D转换器TLC549的扩展 217
11.3 现场总线CAN 219
11.3.1 CAN总线特点 219
11.3.2 CAN总线协议 220
11.3.3 CAN总线接口 223
11.4 小结 225
思考题与习题11 226
第12章 以MCU为核心的嵌入式系统的设计与调试 227
12.1 嵌入式系统开发与开发工具 227
12.1.1 MCU为核心的嵌入式系统的构成 227
12.1.2 嵌入式应用系统的设计原则 228
12.1.3 嵌入式系统的开发工具 228
12.1.4 嵌入式系统的调试 229
12.2 嵌入式系统的抗干扰技术 230
12.2.1 软件抗干扰 230
12.2.2 硬件抗干扰 231
12.2.3 “看门狗”技术 232
12.3 单片机应用系统举例——电子显示屏 234
12.4 小结 237
思考题与习题12 237
第13章 实践训练 238
13.1 概述 238
13.2 可在线编程(ISP)多功能实验板 238
13.3 仿真调试技术 241
13.3.1 Proteus概述 241
13.3.2 Proteus 中51单片机应用系统的开发 243
13.3.3 单片机仿真调试集成软件包KeilμVision2介绍 247
13.3.4 Keil和Proteus的联合使用仿真C51程序 251
13.4 单片机编程(下载)方法 253
13.5 实验指导 257
实验1 程序设计 257
实验2 并行接口输入、输出实验 260
实验3 中断实验 263
实验4 定时/计数器实验 266
实验5 串行通信实验 270
实验6 矩阵键盘和显示程序设计 274
实验7 串行E2PROM实验 276
实验8 串行D/A实验 277
实验9 串行A/D实验 279
实验10 电子广告显示屏控制实验 283
实验11液晶显示器显示控制实验 287
13.6 课程设计选题 292
附录A 51单片机指令表 293
附录B C51的库函数 297
思考题与习题解答 300
参考文献 322