第1章 单片机概述 1
1.1 什么是单片机? 1
1.2 单片机的发展历史 2
1.3 单片机的发展趋势 2
1.4 单片机的特点 3
1.5 单片机的应用 4
1.6 MCS-51系列与AT89C5x系列单片机 5
1.6.1 MCS-51系列单片机 5
1.6.2 AT89C5x系列单片机 6
本章小结 8
思考题及习题 8
第2章 AT89C51单片机片内硬件结构 9
2.1 AT89C51单片机的硬件组成 9
2.2 AT89C51单片机的引脚介绍 10
2.2.1 电源及时钟引脚 11
2.2.2 控制引脚 11
2.2.3 并行I/O口引脚 12
2.3 AT89C51单片机的CPU 13
2.3.1 运算器 13
2.3.2 控制器 14
2.4 AT89C51单片机存储器的结构 15
2.4.1 程序存储器空间 15
2.4.2 数据存储器空间 16
2.4.3 特殊功能寄存器 17
2.4.4 位地址空间 18
2.5 AT89C51单片机的并行1/O端口 20
2.5.1 P0口 20
2.5.2 P1口 22
2.5.3 P2口 22
2.5.4 P3口 23
2.6 时钟电路与时序 24
2.6.1 时钟电路 24
2.6.2 机器周期、指令周期与指令时序 25
2.7 复位操作和复位电路 26
2.7.1 复位操作 26
2.7.2 复位电路 27
本章小结 28
思考题及习题 28
第3章 AT89C51单片机的指令系统 30
3.1 指令系统概述 30
3.2 指令格式 30
3.3 指令系统的寻址方式 31
3.4 AT89C51单片机指令系统分类介绍 33
3.4.1 数据传送类指令 34
3.4.2 算术运算类指令 37
3.4.3 逻辑操作类指令 41
3.4.4 控制转移类指令 43
3.4.5 位操作类指令 45
本章小结 50
思考题及习题 51
第4章 AT89C51单片机汇编语言程序设计 53
4.1 汇编语言程序设计概述 53
4.1.1 机器语言、汇编语言和高级语言 53
4.1.2 汇编语言语句和格式 54
4.1.3 伪指令 55
4.2 汇编语言源程序的汇编 57
4.2.1 手工汇编 57
4.2.2 机器汇编 57
4.3 AT89C51单片机汇编语言程序设计举例 58
4.3.1 子程序的设计 58
4.3.2 查表程序设计 59
4.3.3 关键字查找程序设计 61
4.3.4 数据极值查找程序设计 62
4.3.5 数据排序程序设计 62
4.3.6 分支转移程序设计 64
4.3.7 循环程序设计 67
本章小结 69
思考题及习题 70
第5章 AT89C51单片机的中断系统 71
5.1 AT89C51单片机中断技术概述 71
5.2 AT89C51单片机中断系统结构 71
5.2.1 中断请求源 72
5.2.2 中断请求标志寄存器 72
5.3 中断控制 73
5.3.1 中断允许寄存器IE 73
5.3.2 中断优先级寄存器IP 75
5.4 响应中断请求的条件 76
5.5 外部中断的响应时间 77
5.6 外部中断的触发方式选择 78
5.6.1 电平触发方式 78
5.6.2 跳沿触发方式 78
5.7 中断请求的撤销 78
5.8 中断服务子程序的设计 79
5.9 多外部中断源系统设计 82
本章小结 83
思考题及习题 83
第6章 AT89C51单片机的定时器/计数器 85
6.1 定时器/计数器的结构 85
6.1.1 工作方式控制寄存器TMOD 85
6.1.2 定时器/计数器控制寄存器TCON 86
6.2 定时器/数器的4种工作方式 87
6.2.1 方式0 87
6.2.2 方式1 87
6.2.3 方式2 88
6.2.4 方式3 88
6.3 计数器模式下对输人信号的要求 90
6.4 定时器☆数器的编程和应用 90
6.4.1 方式1的应用 90
6.4.2 方式2的应用 92
6.4.3 方式3的应用 94
6.4.4 门控制位GATEx的应用—测量脉冲宽度 96
6.4.5 实时时钟的设计 97
6.4.6定时器/数器作为外部中断源的使用方法 98
本章小结 99
思考题及习题 99
第7章 AT89C51单片机的串行口 101
7.1 串行口的结构 101
7.1.1 串行口控制寄存器SCON 101
7.1.2 特殊功能寄存器PCON 103
7.2 串行口的4种工作方式 103
7.2.1 方式0 103
7.2.2 方式1 104
7.2.3 方式2 106
7.2.4 方式3 108
7.3 多机通信的工作原理 108
7.4 波特率的制定方法 109
7.4.1 波特率的定义 109
7.4.2 定时器T1产生波特率的计算 109
7.5 串行口的编程和应用 111
7.5.1 双机串行通信硬件接口 111
7.5.2 双机串行通信软件编程 113
本章小结 117
思考题及习题 118
第8章 AT89C51单片机扩展存储器的接口设计 119
8.1 系统扩展结构 119
8.2 地址空间分配和外部地址锁存器 120
8.2.1 存储器地址空间分配 120
8.2.2 外部地址锁存器 123
8.3 程序存储器EPROM的扩展 124
8.3.1 常用的EPROM芯片 125
8.3.2 程序存储器的操作时序 127
8.3.3 AT89C51单片机与EPROM的接口电路设计 129
8.4 静态数据存储器RAM的扩展 130
8.4.1 常用的静态RAM(SRAM)芯片 130
8.4.2 外扩数据存储器的读写操作时序 131
8.4.3 AT89C51单片机与RAM的接口电路设计 132
8.5 EPROM和RAM的综合扩展 134
8.5.1 综合扩展的硬件接口电路 134
8.5.2 外扩存储器电路的工作原理及软件设计 136
8.6 AT89C51/89C52/89C55单片机的片内闪烁存储器 138
本章小结 139
思考题及习题 139
第9章 AT89C51单片机扩展I/O接口的设计 141
9.1 I/O接口扩展概述 141
9.1.1 I/O接口的功能 141
9.1.2 I/O端口的编址 141
9.1.3 1/O数据的传送方式 142
9.1.4 I/O接口电路 142
9.2 AT89C51单片机与可编程并行☆O芯片82C55的接口设计 143
9.2.1 82C55芯片简介 143
9.2.2 工作方式选择控制字及端口PC置位/复位控制字 144
9.2.3 82C55的3种工作方式 145
9.2.4 AT89C51单片机和82C55的接口设计 150
9.3 AT89C51单片机与可编程RAM/1O芯片81C55的接口设计 151
9.3.1 81C55芯片介绍 151
9.3.2 81C55的工作方式 154
9.3.3 AT89C51单片机与81C55的接口设计及软件编程 156
9.4 利用74LSTTL电路扩展并行☆O口 158
9.5 用AT89C51单片机的串行口扩展并行口 159
9.5.1 用74LS165扩展并行输人口 159
9.5.2 用74LS164扩展并行输出口 160
本章小结 161
思考题及习题 161
第10章 AT89C51单片机与输入外设和输出外设的接口设计 163
10.1 LED显示器的显示原理 163
10.1.1 LED显示器的结构 163
10.1.2 LED显示器工作原理 164
10.2 键盘接口原理 166
10.2.1 键盘输人应解决的问题 166
10.2.2 键盘接口的工作原理 167
10.2.3 键盘的工作方式 169
10.3 键盘/显示器接口设计实例 170
10.3.1 利用AT89C51单片机串行口实现的键盘/显示器接口 170
10.3.2 专用芯片HD7279A实现的键盘/显示器接口 172
10.4 AT89C51单片机与液晶显示器(LCD)的接口 182
10.4.1 LCD显示器的分类 182
10.4.2 点阵字符型液晶显示模块介绍 182
10.4.3 AT89C51单片机与LCD的接口及软件编程 187
10.5 AT89C51单片机与微型打印机TPμP-40A/16A的接口 189
10.6 AT89C51单片机与BCD码拨盘的接口设计 193
本章小结 195
思考题及习题 195
第11章 AT89C51单片机与D/A、A/D转换器的接口 196
11.1 AT89C51单片机与DAC的接口 196
11.1.1 D/A转换器概述 196
11.1.2 AT89C51单片机与8位DAC0832的接口设计 197
11.1.3 AT89C51单片机与12位D/A转换器AD667的接口设计 202
11.2 AT89C51单片机与ADC的接口 208
11.2.1 A/D转换器概述 208
11.2.2 AT89C51单片机与逐次比较型A/D转换器ADC0809的接口 209
11.2.3 AT89C51单片机与逐次比较型A/D转换器AD 1674的接口设计 211
11.2.4 AT89C51单片机与双积分型A/D转换器MC 14433的接口 215
本章小结 218
思考题及习题 219
第12章 单片机的串行扩展技术 220
12.1 单总线接口简介 220
12.2 SPI总线接口简介 221
12.3 I2C串行总线的组成及工作原理 222
12.3.1 I2C串行总线概述 222
12.3.2 I2C总线的数据传送 223
12.4 AT89C51单片机扩展I2C总线器件的接口设计 225
12.4.1 I2C总线器件的扩展接口电路 225
12.4.2 I2C总线数据传送的模拟 225
12.4.3 I2C总线模拟通用子程序 228
本章小结 230
思考题及习题 230
第13章 AT89C51单片机应用系统的设计与调试 231
13.1 AT89C51单片机应用系统的设计步骤 231
13.2 应用系统的硬件设计 231
13.3 AT89C51单片机应用系统硬件设计 32
13.3.1 应用系统设计中的地址空间分配与总线驱动 232
13.3.2 AT89C51单片机的最小系统 235
13.3.3 应用设计举例—水温测控系统的硬件设计 236
13.4 应用系统的软件设计 239
13.4.1 软件设计考虑的问题 239
13.4.2 系统软件的总体框架设计 239
13.5 软件的抗干扰设计 240
13.5.1 软件滤波 241
13.5.2 指令冗余及软件陷阱 244
13.5.3 开关量输人/输出软件抗干扰设计 246
13.6 单片机应用系统的仿真开发与调试 247
13.6.1 仿真开发系统简介 247
13.6.2 用户样机的开发调试 249
本章小结 252
思考题及习题 253
附录A 基础实验指导 254
实验1 熟悉单片机实验开发系统的使用 254
实验2 单片机数据区传送程序设计 255
实验3 数据排序实验 256
实验4 查找相同数个数 257
实验5 P1口转弯灯实验 257
实验6 工业顺序控制 258
实验7 82C55控制交通灯 260
实验8 A转换实验 261
实验9 D/A转换实验 262
实验10 电子时钟(定时器、中断综合实验) 263
附录B 课程设计 265
题目1 LED显示的电子钟 265
题目2 LCD显示的电子钟 266
题目3 秒表设计 266
题目4 带有LCD显示的定时闹钟 267
题目5 带有LCD显示的音乐倒数计数器 267
题目6 数字温度计设计1 268
题目7 数字温度计设计2 269
题目8 十字路口交通灯控制1 269
题目9 十字路口交通灯控制2 270
题目10 波形发生器的设计 270
题目11 电容、电阻参数单片机测试系统的设计 270
题目12 用单片机控制直流电动机并测量转速 270
题目13 单片机控制步进电机 271
题目14 步进电机单片机控制系统的设计 271
题目15 小直流电机调速控制系统 272
题目16 以单片机为核心的频率计 272
题目17 可编程作息时间控制器程序设计 272
题目18 单词记忆测试器程序设计 273
题目19 8位竞赛抢答器的设计 273
题目20 节日彩灯控制器的设计 274
题目21 单片机数字电压表设计 274
题目22 两个单片机之间的串行通信接口设计 275
题目23 简易电子琴设计 275
题目24 数字音乐盒的设计 275
题目25 出租车计价器 276
参考文献 277