第1章 单片机技术基础 1
1.1 单片机概述 1
1.1.1 单片机定义 1
1.1.2 单片机特点和应用 1
1.1.3 单片机技术的发展 2
1.1.4 MCS-51单片机系列 3
1.1.5 单片机选型 4
1.2 单片机内部结构 5
1.2.1 CPU 6
1.2.2 存储器结构 7
1.2.3 I/O接口 12
1.3 8051引脚及其功能 12
1.3.1 电源与时钟引脚 12
1.3.2 控制引脚 13
1.3.3 I/O接口引脚 13
1.4 并行口内部结构和工作原理 14
1.4.1 P0口 14
1.4.2 P1口 15
1.4.3 P2口 15
1.4.4 P3口 16
1.4.5 并行端口负载能力 17
1.5 时钟电路与时序 17
1.5.1 时钟电路 18
1.5.2 周期与指令时序 18
1.6 单片机工作方式 20
1.6.1 单片机复位方式 20
1.6.2 程序运行方式 21
1.6.3 掉电保护方式 21
1.6.4 低功耗方式 21
1.7 单片机应用系统开发简介 22
1.7.1 单片机应用系统设计步骤 22
1.7.2 单片机开发工具简介 23
1.8 知识与拓展 24
1.8.1 计算机数制及其转换 24
1.8.2 有符号数的表示方法 25
1.8.3 BCD码与ASCII码 27
1.9 思考题 28
第2章 指令系统和汇编语言 31
2.1 概述 31
2.1.1 指令格式 31
2.1.2 指令描述符号说明 32
2.2 寻址方式 32
2.2.1 寄存器寻址 32
2.2.2 直接寻址 33
2.2.3 立即寻址 33
2.2.4 寄存器间接寻址 33
2.2.5 基址加变址寻址 33
2.2.6 相对寻址 34
2.2.7 位寻址 34
2.3 指令分类介绍 35
2.3.1 数据传送指令 35
2.3.2 算术运算指令 39
2.3.3 逻辑操作指令 44
2.3.4 控制转移指令 46
2.3.5 位操作指令 51
2.4 指令执行过程 54
2.5 常用伪指令 55
2.6 汇编语言程序基本结构 57
2.7 知识与拓展 60
2.7.1 单片机的简单控制应用 60
2.7.2 汇编语言实用子程序 62
2.8 思考题 65
第3章 单片机C51程序设计 68
3.1 单片机C语言程序设计概述 68
3.1.1 C51程序设计语言简介 68
3.1.2 Keil C51开发环境简介 68
3.2 C51程序设计基础 72
3.2.1 C51中的数据类型 72
3.2.2 C51中的常量和变量 74
3.2.3 C51中的运算符 76
3.2.4 C51程序基本结构 77
3.3 单片机硬件资源的C51访问 80
3.4 C51和汇编语言混合编程 82
3.4.1 C51和汇编语言编程比较和说明 82
3.4.2 C51和汇编语言混合编程方法 82
3.5 知识与拓展 83
3.5.1 C51延时时间计算方法 83
3.5.2 C51访问连续外部RAM区域的方法 85
3.6 思考题 86
第4章 单片机与Proteus虚拟仿真 88
4.1 Proteus概述与工程创建 88
4.1.1 Proteus介绍 88
4.1.2 创建新工程 89
4.2 ISIS编辑环境 90
4.2.1 ISIS集成环境 91
4.2.2 ISIS元器件库 93
4.2.3 ISIS中的原理图绘制 94
4.2.4 虚拟仿真工具 96
4.3 代码编辑环境 99
4.3.1 代码编辑环境应用简介 99
4.3.2 代码工程创建与删除 100
4.3.3 代码工程构建与设置 101
4.3.4 代码调试与观察 102
4.4 Proteus中的电子设计与仿真 103
4.4.1 直流稳压电源设计 104
4.4.2 光控LED小夜灯设计 106
4.4.3 数字钟设计 108
4.5 Proteus中的单片机系统设计与仿真 110
4.5.1 硬件设计及说明 110
4.5.2 程序设计及仿真 112
4.6 知识与拓展 114
4.6.1 ISIS中元器件的创建 114
4.6.2 ARES中元器件封装的创建 118
4.7 思考题 120
第5章 单片机中断系统 121
5.1 中断技术概述 121
5.2 8051中断系统结构及其控制 121
5.2.1 中断系统结构 122
5.2.2 中断源及中断标志 122
5.2.3 中断控制和中断处理 124
5.3 外部中断的实现 128
5.3.1 外部中断触发方式 128
5.3.2 多中断源系统硬件扩展 129
5.4 中断系统程序设计 129
5.4.1 中断程序基本结构 130
5.4.2 中断初始化程序设计 132
5.4.3 中断服务子程序设计 133
5.5 单片机LED显示模式控制设计实例 134
5.6 知识与拓展 136
5.6.1 利用外部中断实现脉冲计数 136
5.6.2 多中断源时中断优先级配置 138
5.7 思考题 139
第6章 定时/计数器 141
6.1 定时/计数器工作原理及其控制 141
6.1.1 内部结构和工作原理 141
6.1.2 功能及其控制 142
6.2 定时/计数器工作方式及其设置 144
6.2.1 工作方式及其特点 144
6.2.2 定时/计数器配置及初始化 146
6.2.3 扩大定时时间方法 152
6.3 单片机LED亮度控制系统设计实例 154
6.4 知识与拓展 158
6.4.1 简易方波频率测量原理 158
6.4.2 定时/计数器实现软件“看门狗”原理 160
6.5 思考题 162
第7章 单片机串行口 164
7.1 串行通信概述 164
7.2 8051单片机串行口结构 166
7.2.1 串行口通信接口结构 166
7.2.2 串行通信控制寄存器 166
7.3 串行口的工作方式及波特率设定 167
7.3.1 工作方式0 168
7.3.2 工作方式1 169
7.3.3 工作方式2 170
7.3.4 工作方式3 172
7.3.5 波特率计算 172
7.4 多机通信原理 174
7.5 单片机的双机通信应用实例 175
7.5.1 串行通信接口电路 175
7.5.2 双机通信系统软件设计 176
7.6 知识与拓展 180
7.6.1 串、并转换扩展与实现 180
7.6.2 基于串口蓝牙模块的无线通信实例 184
7.7 思考题 188
第8章 单片机存储器扩展 190
8.1 存储器概述 190
8.1.1 半导体存储器简介 190
8.1.2 典型存储器芯片介绍 191
8.2 并行存储器扩展 194
8.2.1 存储器的扩展和地址译码 194
8.2.2 并行存储器扩展实例 198
8.3 串行存储器扩展 200
8.3.1 I2C接口存储器扩展 200
8.3.2 SPI接口存储器扩展 207
8.4 思考题 212
第9章 单片机系统接口扩展及应用 214
9.1 键盘接口扩展 214
9.1.1 按键识别与处理 214
9.1.2 独立式键盘原理与接口 215
9.1.3 行列式键盘原理与接口 216
9.1.4 利用独立式按键实现4路抢答器 220
9.2 显示接口扩展 222
9.2.1 LED数码管工作原理 222
9.2.2 LED数码管显示接口 223
9.2.3 利用74LS164实现2位静态显示电路 224
9.2.4 利用MAX7219实现4位动态显示电路 226
9.2.5 LCD模块概述 230
9.2.6 利用LCD1602实现字符显示 233
9.2.7 利用LCM1264ZK实现汉字显示 236
9.3 模拟量输入/输出接口扩展 240
9.3.1 模拟量输入/输出接口概述 240
9.3.2 D-A转换器概述 240
9.3.3 利用DAC0832实现锯齿波信号发生器 242
9.3.4 A-D转换器概述 244
9.3.5 利用ADC0808实现模拟量采集 244
9.4 思考题 247
第10章 串行扩展和功率接口技术 249
10.1 单片机串行扩展技术 249
10.1.1 单总线技术概述 249
10.1.2 DS18B20单总线测温应用实例 250
10.1.3 三线SPI总线概述 256
10.1.4 DS1302实时时钟应用实例 257
10.2 单片机功率接口技术 261
10.2.1 开关型功率接口概述 261
10.2.2 单片机功率晶体管接口应用实例 263
10.2.3 单片机继电器接口应用实例 264
10.2.4 单片机晶闸管接口应用实例 266
10.3 思考题 267
第11章 虚拟仿真综合设计实例 268
11.1 单片机多功能秒表设计与仿真 268
11.1.1 多功能秒表电路设计 268
11.1.2 多功能秒表程序设计 269
11.1.3 多功能秒表调试与仿真 273
11.2 单片机直流电动机调速系统设计与仿真 274
11.2.1 直流电动机调速系统电路设计 274
11.2.2 直流电动机调速系统程序设计 275
11.2.3 直流电动机调速系统调试与仿真 279
11.3 单片机多功能电子日历设计与仿真 279
11.3.1 多功能电子日历电路设计 279
11.3.2 多功能电子日历程序设计 280
11.3.3 多功能电子日历调试与仿真 284
11.4 单片机自动抽油烟机设计与仿真 285
11.4.1 自动抽油烟机电路设计 285
11.4.2 自动抽油烟机程序设计 286
11.4.3 自动抽油烟机调试与仿真 291
附录 293
附录A 常用字符与ASCII码对照表 293
附录B MCS-51系列单片机指令表 294
参考文献 298