第1章 单片机概述 1
1.1 单片机基础 1
1.1.1 电子计算机及其发展历史 1
1.1.2 微型计算机简介 1
1.1.3 什么是单片机 2
1.2 单片机的发展历史及发展趋势 2
1.2.1 单片机的发展历史 2
1.2.2 单片机的发展趋势 3
1.3 单片机的应用 4
1.4 MCS-51系列与AT89C5x系列单片机 6
1.4.1 MCS-51系列单片机 6
1.4.2 AT89C5x系列单片机 7
本章小结 9
思考题及习题1 9
第2章 89C51单片机的硬件结构 10
2.1 89C51单片机的片内结构 10
2.2 89C51的引脚 11
2.2.1 电源及时钟引脚 12
2.2.2 控制引脚 12
2.2.3 I/O口引脚 13
2.3 89C51的CPU 14
2.3.1 运算器 14
2.3.2 控制器 15
2.4 89C51存储器的结构 16
2.4.1 程序存储器 16
2.4.2 内部数据存储器 17
2.4.3 特殊功能寄存器(SFR) 17
2.4.4 位地址空间 19
2.4.5 外部数据存储器 20
2.5 89C51的并行I/O端口 21
2.5.1 P0口 21
2.5.2 P1口 23
2.5.3 P2口 23
2.5.4 P3口 24
2.6 时钟电路与时序 25
2.6.1 时钟电路 26
2.6.2 机器周期、指令周期与指令时序 26
2.7 复位操作和复位电路 27
2.7.1 复位操作 27
2.7.2 复位电路 28
本章小结 29
思考题及习题2 30
第3章 89C51的指令系统 32
3.1 指令系统概述 32
3.2 指令格式 32
3.3 指令系统的寻址方式 32
3.4 89C51指令系统分类介绍 35
3.4.1 数据传送类指令 36
3.4.2 算术运算类指令 39
3.4.3 逻辑操作类指令 43
3.4.4 控制转移类指令 45
3.4.5 位操作类指令 48
本章小结 52
思考题及习题3 53
第4章 89C51汇编语言程序的设计与调试 55
4.1 汇编语言程序设计概述 55
4.1.1 机器语言、汇编语言和高级语言 55
4.1.2 汇编语言语句的种类和格式 56
4.1.3 伪指令 57
4.1.4 汇编语言程序设计步骤 59
4.2 汇编语言源程序的汇编 60
4.2.1 手工汇编 60
4.2.2 机器汇编 60
4.3 汇编语言实用程序设计 61
4.3.1 汇编语言程序的基本结构 61
4.3.2 子程序的设计 61
4.3.3 查表程序设计 63
4.3.4 关键字查找程序设计 66
4.3.5 数据极值查找程序设计 67
4.3.6 数据排序程序设计 68
4.3.7 分支转移程序设计 70
4.3.8 循环程序设计 73
4.4 汇编语言应用程序的开发与调试 76
4.4.1 仿真开发系统简介 77
4.4.2 程序的开发调试过程 78
本章小结 79
思考题及习题4 79
第5章 89C51的中断系统 82
5.1 中断的概念 82
5.2 89C51中断系统的结构 82
5.3 中断请求源 83
5.4 中断控制 84
5.4.1 中断允许寄存器IE 84
5.4.2 中断优先级寄存器IP 86
5.5 响应中断请求的条件 88
5.6 外部中断的响应时间 89
5.7 外部中断的触发方式选择 89
5.7.1 电平触发方式 89
5.7.2 跳沿触发方式 89
5.8 中断请求的撤销 90
5.9 中断服务子程序的设计 91
5.10 多外部中断源系统设计 93
本章小结 95
思考题及习题5 95
第6章 89C51的定时器/计数器 97
6.1 定时器/计数器的结构 97
6.1.1 工作方式控制寄存器TMOD 97
6.1.2 定时器/计数器控制寄存器TCON 98
6.2 定时器/计数器的4种工作方式 99
6.2.1 方式0 99
6.2.2 方式1 99
6.2.3 方式2 100
6.2.4 方式3 101
6.3 计数器模式对输入信号的要求 102
6.4 定时器/计数器的编程和应用 103
6.4.1 方式1的应用 103
6.4.2 方式2的应用 105
6.4.3 方式3的应用 108
6.4.4 门控制位GATE的应用——测量脉冲宽度 109
6.4.5 实时时钟的设计 110
6.4.6 定时器/计数器作为外部中断源的使用方法 112
6.4.7 读运行中的定时器/计数器的计数值 113
本章小结 113
思考题及习题6 113
第7章 89C51的串行口 115
7.1 串行口的结构 115
7.1.1 串行口控制寄存器SCON 115
7.1.2 特殊功能寄存器PCON 117
7.2 串行口的4种工作方式 117
7.2.1 方式0 117
7.2.2 方式1 118
7.2.3 方式2 120
7.2.4 方式3 122
7.3 多机通信 122
7.4 波特率的制定方法 123
7.4.1 波特率的定义 123
7.4.2 定时器T1产生波特率的计算 123
7.5 串行口的编程和应用 125
7.5.1 双机串行通信硬件接口 125
7.5.2 双机串行通信软件编程 127
本章小结 133
思考题及习题7 133
第8章 89C51单片机扩展存储器的设计 135
8.1 系统扩展结构 135
8.1.1 系统总线及总线构造 135
8.1.2 构造系统总线 136
8.2 地址空间分配和外部地址锁存器 137
8.2.1 存储器地址空间分配 137
8.2.2 外部地址锁存器 140
8.3 程序存储器EPROM的扩展 141
8.3.1 常用EPROM芯片介绍 142
8.3.2 程序存储器的操作时序 144
8.3.3 89C51与EPROM的接口电路设计 146
8.4 静态数据存储器RAM的扩展 147
8.4.1 常用的静态RAM(SRAM)芯片 147
8.4.2 外扩数据存储器的读写操作时序 148
8.4.3 89C51与RAM的接口电路设计 150
8.5 EPROM和RAM的综合扩展 151
8.5.1 综合扩展的硬件接口电路 152
8.5.2 外扩存储器电路的工作原理及软件设计 154
8.6 ATMEL89C51/89C55单片机的片内闪烁存储器 155
8.6.1 89C51的性能及片内闪烁存储器 155
8.6.2 片内闪烁存储器编程 156
本章小结 156
思考题及习题8 157
第9章 89C51扩展I/O接口的设计 159
9.1 I/O接口扩展概述 159
9.1.1 I/O接口的功能 159
9.1.2 I/O端口的编址 159
9.1.3 I/O数据的几种传送方式 160
9.1.4 I/O接口电路 160
9.2 89C51与可编程并行I/O芯片82C55的接口设计 161
9.2.1 82C55芯片介绍 161
9.2.2 工作方式选择控制字及端PC置位/复位控制字 162
9.2.3 82C55的三种工作方式 163
9.2.4 89C51单片机和82C55的接口 168
9.3 89C51与可编程RAM/IO芯片81C55的接口 169
9.3.1 81C55芯片介绍 170
9.3.2 81C55的工作方式 172
9.3.3 89C51与81C55的接口及软件编程 175
9.4 利用74LSTTL电路扩展并行I/O口 177
9.5 用89C51的串行口扩展并行口 179
9.5.1 用74LS165扩展并行输入口 179
9.5.2 用74LS164扩展并行输出口 180
本章小结 181
思考题及习题9 181
第10章 89C51与键盘、显示器、拨盘、打印机的接口设计 182
10.1 LED显示器接口原理 182
10.1.1 LED显示器的结构 182
10.1.2 LED显示器工作原理 183
10.2 键盘接口原理 185
10.2.1 键盘输入应解决的问题 185
10.2.2 键盘接口的工作原理 186
10.2.3 键盘的工作方式 188
10.3 键盘/显示器接口设计实例 189
10.3.1 利用并行I/O芯片81C55实现键盘/显示器接口 189
10.3.2 键盘/显示器专用芯片8279实现的键盘/显示器接口 193
10.3.3 键盘/显示器专用芯片HD7279A实现的键盘/显示器接口 201
10.4 89C51与液晶显示器(LCD)的接口 211
10.4.1 LCD显示器的分类 211
10.4.2 点阵字符型液晶显示模块介绍 211
10.4.3 89C51与LCD的接口及软件编程 215
10.5 89C51与微型打印机TPμP-40A/16A的接口 219
10.6 89C51单片机与BCD码拨盘的接口设计 223
本章小结 225
思考题及习题10 225
第11章 89C51单片机与D/A、A/D转换器的接口 227
11.1 89C51与DAC的接口 227
11.1.1 D/A转换器概述 227
11.1.2 89C51与8位DAC0832的接口 228
11.1.3 89C51与12位电压输出型D/A转换器AD667的接口 234
11.2 89C51与ADC的接口 239
11.2.1 A/D转换器概述 239
11.2.2 89C51与逐次比较型A/D转换器ADC0809的接口 240
11.2.3 89C51与逐次比较型A/D转换器AD574A的接口 243
11.2.4 89C51与双积分型A/D转换器MC14433的接口 247
本章小结 250
思考题及习题11 251
第12章 单片机的串行扩展技术 252
12.1 单总线接口简介 252
12.2 SPI总线接口简介 253
12.3 I2C串行总线的组成及工作原理 254
12.3.1 I2C串行总线概述 254
12.3.2 I2C总线的数据传送 255
12.4 89C51单片机扩展I2C总线器件的接口设计 259
12.4.1 I2C总线器件的扩展接口电路 260
12.4.2 I2C总线数据传送的模拟 260
12.4.3 I2C总线模拟通用子程序 263
本章小结 265
思考题及习题12 266
第13章 89C51单片机应用系统的设计与开发 267
13.1 89C51单片机应用系统的设计步骤 267
13.2 应用系统的硬件设计 267
13.3 应用系统的软件总体框架设计 268
13.4 89C51单片机系统设计举例 270
13.4.1 应用系统设计中的地址空间分配与总线驱动 270
13.4.2 89C51的最小系统 273
13.4.3 应用设计举例——水温控制系统的设计 274
13.5 软件抗干扰设计 277
13.5.1 软件滤波 277
13.5.2 指令冗余及软件陷阱 281
13.5.3 开关量输入/输出软件抗干扰设计 284
13.6 用户样机的硬件调试 284
13.7 AT89系列单片机各种型号产品介绍 287
13.7.1 低档型AT89系列单片机 288
13.7.2 标准型AT89系列单片机 289
13.7.3 高档型AT89系列单片机 290
本章小结 292
附录A 基础实验 293
实验1 单片机实验开发系统操作实验 293
实验2 单片机数据区传送程序设计 294
实验3 数据排序实验 295
实验4 查找相同数个数 296
实验5 P1口转弯灯实验 297
实验6 工业顺序控制 298
实验7 82C55控制交通灯 300
实验8 A/D转换实验 301
实验9 D/A转换实验 302
实验10 电子时钟(定时器、中断综合实验) 303
附录B 课程设计 305
题目1 LED电子钟的制作 305
题目2 单片机控制的LCD时钟 305
题目3 秒表系统设计 306
题目4 带有LCD显示的定时闹钟 306
题目5 带有LCD显示的音乐倒数计数器 307
题目6 数字温度计设计1 307
题目7 数字温度计设计2 308
题目8 十字路口交通灯控制1 308
题目9 十字路口交通灯控制2 309
题目10 设计一个产生各种波形的波形发生器 309
题目11 电容、电阻参数单片机测试系统的设计 309
题目12 用单片机控制直流电动机并测量转速 309
题目13 步进电机单片机控制系统的设计 310
题目14 小直流电机调速控制系统 310
题目15 单片机控制步进电机 310
题目16 单片机为核心的频率计 310
题目17 可编程作息时间控制器程序设计 311
题目18 单词记忆测试器程序设计 311
题目19 抢答器控制模拟程序设计 311
题目20 用单片机设计节日彩灯控制器 312
题目21 单片机数字电压表设计 312
题目22 两个单片机之间的串行通信接口设计 312
题目23 简易电子琴设计 313
附录C 思考题及习题部分参考答案 314
参考文献 331