第1章 单片机及AT89C51单片机硬件结构 1
1.1 嵌入式系统、单片机、AT89C51/S51单片机 1
1.1.1 嵌入式系统、单片机 1
1.1.2 单片机发展概况 2
1.1.3 AT89C51/S51、STC单片机 3
1.2 单片机应用系统及其应用领域 3
1.2.1 单片机最小系统和单片机应用系统 3
1.2.2 单片机应用领域 4
1.3 单片机应用系统研发工具简介 6
1.3.1 单片机软件调试仿真器 6
1.3.2 单片机仿真器 6
1.3.3 编程器和ISP在系统编程 6
1.3.4 PROTEUS EDA(电子设计自动化) 7
1.4 AT89C51内部结构和引脚功能 7
1.4.1 内部结构框图和主要部件 7
1.4.2 引脚功能 8
1.5 AT89C51时钟电路与复位电路 10
1.5.1 时钟电路 10
1.5.2 复位电路 11
1.6 存储器结构 13
1.6.1 存储器组成 13
1.6.2 程序存储器ROM 13
1.6.3 数据存储器RAM 14
1.6.4 两种省电工作方式 18
1.7 I/O(输入/输出)口结构、功能及负载能力 19
1.7.1 I/O口结构 19
1.7.2 I/O口功能 20
1.7.3 I/O口的负载能力 22
1.8 PROTEUS电路设计基础 23
1.8.1 PROTEUS ISIS窗口 23
1.8.2 PROTEUS可视化助手 25
1.8.3 PROTEUS电路设计文件操作 26
1.8.4 PROTEUS元件操作 26
1.8.5 PROTEUS电气连线操作 28
1.8.6 PROTEUS总线、标签操作 29
1.8.7 PROTEUS终端操作 30
1.8.8 PROTEUS对象属性设置(Edit Properties) 31
1.8.9 PROTEUS ISIS的文件操作与元件操作实例 32
实验1:“AT89C51最小系统”的PROTEUS设计与制作 33
习题与思考1 34
第2章 AT89C51汇编语言及汇编语言程序设计 36
2.1 基本概念 36
2.1.1 指令、机器代码、程序、机器语言 36
2.1.2 汇编语言、汇编语言指令格式、常用符号 36
2.1.3 汇编和编程(固化) 40
2.2 指令寻址方式 41
2.2.1 寻址、寻址方式、寻址存储器范围 41
2.2.2 直接寻址 41
2.2.3 立即寻址 42
2.2.4 寄存器寻址 42
2.2.5 寄存器间接寻址 42
2.2.6 变址寻址 43
2.2.7 相对寻址 43
2.2.8 位寻址“bit” 44
2.3 汇编语言的指令系统 45
2.3.1 数据传送指令 45
2.3.2 算术运算类指令 49
2.3.3 逻辑运算指令 54
2.3.4 控制转移指令 57
2.3.5 位操作指令 61
2.4 汇编语言程序设计流程图及程序结构 62
2.4.1 程序设计流程图 62
2.4.2 程序结构 63
2.5 汇编语言程序设计举例 68
2.5.1 延时程序 68
2.5.2 查表程序 68
2.5.3 码制转换程序 70
2.5.4 数据排序程序 71
2.5.5 算术计算程序 72
2.6 PROTEUS源程序设计、仿真和仿真调试基础 74
2.6.1 PROTEUS汇编语言程序设计、汇编、仿真 74
2.6.2 PROTEUS调试窗口、调试按钮和仿真调试 78
2.6.3 汇编语言程序设计实例的PROTEUS仿真求解 82
实验2:“跑马灯”的PROTEUS设计、仿真与实际制作 83
习题与思考2 84
第3章 C51程序设计基础 88
3.1 初识C51程序设计 88
3.1.1 C51语言特点 88
3.1.2 C51程序基本结构 88
3.1.3 C51的标识符与关键字 89
3.2 C51数据的类型及其存储 90
3.2.1 C51的数据类型 90
3.2.2 C51的数据存储 91
3.2.3 数据的存储器类型——明确存储位置 92
3.2.4 C51变量的存储模式(编译模式) 93
3.2.5 数据类型的重新定义-typedef 93
3.2.6 编译预处理命令 94
3.3 硬件资源访问 95
3.3.1 C51对特殊功能寄存器的定义sfr、sfr16 95
3.3.2 C51对位变量的定义bit、sbit 95
3.3.3 C51对存储器和外设的绝对地址访问 97
3.4 C51的运算符 98
3.4.1 运算符的优先级及结合规则 98
3.4.2 混合运算时的数据类型转换 100
3.5 C51的数组与指针 100
3.5.1 C51的数组 100
3.5.2 C51的指针 101
3.6 C51的函数 102
3.7 C程序基本结构与流程控制 105
3.7.1 分支语句 106
3.7.2 循环语句 107
3.8 模块化程序设计 109
3.9 编程技巧 109
3.10 Keil C51应用入门(C51汇编) 110
习题与思考3 116
第4章 AT89C51中断系统 117
4.1 中断系统 117
4.1.1 中断基本概念 117
4.1.2 中断系统结构 117
4.1.3 与中断有关的特殊寄存器 119
4.1.4 中断过程 121
4.1.5 有中断的单片机应用程序的编程要点 124
4.2 中断应用实例及其PROTEUS设计与仿真 124
4.2.1 外中断(INTO)实验装置 124
4.2.2 中断优先级实验装置 128
实验4:“扩展中断源装置”的PROTEUS设计、仿真与制作 132
习题与思考4 135
第5章 定时器/计数器 137
5.1 定时器/计数器基础 137
5.1.1 定时器/计数器概述 137
5.1.2 定时器/计数器的控制 138
5.1.3 定时器/计数器的工作方式 139
5.1.4 定时器/计数器的计数容量及初值 140
5.2 定时器/计数器应用 142
5.2.1 定时器/计数器应用的基本步骤 142
5.2.2 定时器/计数器应用举例 142
5.3 定时器/计数器应用实例及其PROTEUS设计、仿真 147
5.3.1 基于AT89C51的60s倒计时装置 147
5.3.2 基于AT89C51的按键发声装置 150
实验5:“简易跑表”的PROTEUS设计、仿真与制作 154
习题与思考5 157
第6章 AT89C51的存储器扩展技术 158
6.1 用SRAM扩展单片机数据存储器(RAM) 158
6.1.1 基础知识 158
6.1.2 电路设计和程序设计 160
6.1.3 PROTEUS仿真、调试 162
实验6-1:“用SRAM扩展单片机存储器”的实际制作、运行、思考 162
6.2 用串行E2PROM扩展单片机存储器(I2C) 163
6.2.1 基础知识 163
6.2.2 电路设计和程序设计 166
6.2.3 PROTEUS仿真、调试 172
实验6-2:“用串行E2PROM扩展单片机存储器”的实际制作、运行、思考 172
6.3 PROTEUS高级图表仿真(ASF)简介及其应用 173
6.3.1 高级图表仿真(ASF)简介 173
6.3.2 高级图表仿真(ASF)实例 176
6.3.3 AT89C51扩展外RAM的操作时序 178
6.3.4 AT89C51扩展外串行E2PROM存储器操作时序 179
第7章 AT89C51人机交互通道接口技术 180
7.1 单片机与数码管动态显示的接口技术 180
7.1.1 基础知识 180
7.1.2 “数码管动态显示装置”电路设计和程序设计 181
7.1.3 “数码管动态显示装置”PROTEUS仿真、调试 183
实验7-1:“数码管动态显示装置”的实际制作、运行、思考 184
7.2 单片机与LCD液晶显示器的接口技术 184
7.2.1 基础知识 184
7.2.2 “字符型液晶显示装置”电路设计和程序设计 188
7.2.3 “字符型液晶显示装置”PROTEUS仿真、调试 191
实验7-2:“字符型液晶显示装置”的实际制作、运行、思考 191
7.3 单片机与矩阵式键盘的接口技术 192
7.3.1 基础知识 192
7.3.2 “矩阵式键盘接口装置”电路设计和程序设计 194
7.3.3 “矩阵式键盘接口装置”仿真、调试 197
实验7-3:“矩阵式键盘接口装置”实际制作、运行、思考 197
第8章 AT89C51后向通道接口技术 198
8.1 “简易信号发生器”的接口技术 198
8.1.1 基础知识 198
8.1.2 “简易信号发生器”电路设计和程序设计 203
8.1.3 “简易信号发生器”PROTEUS仿真、调试 206
实验8-1:“简易信号发生器”实际制作、运行、思考 206
8.2 AT89C51控制步进电动机的接口技术 207
8.2.1 基础知识 207
8.2.2 “控制步进电动机装置”电路设计和程序设计 209
8.2.3 “控制步进电动机装置”PROTEUS仿真、调试 211
实验8-2:“控制步进电动机装置”的实际制作、运行、思考 212
第9章 AT8C51单片机前向通道接口技术 213
9.1 “简易数字电压表”的设计与制作 213
9.1.1 基础知识 213
9.1.2 电路设计和程序设计 215
9.1.3 PROTEUS仿真、调试 217
实验9-1:“简易数字电压表”的实际制作、运行、思考 218
9.2 “控制直流电动机装置”的设计与制作 219
9.2.1 基础知识 219
9.2.2 电路设计和程序设计 220
9.2.3 PROTEUS仿真、调试 224
实验9-2:“控制直流电动机装置”的实际制作、运行、思考 225
第10章 AT89C51串行通信通道接口技术 226
10.1 “单片机间串行通信装置”的设计与制作 226
10.1.1 基础知识 226
10.1.2 电路设计与程序设计 229
10.1.3 PROTEUS仿真、调试 233
实验10-1:“单片机间串行通信装置”的实际制作、运行、思考 234
10.2 “AT89C51与PC间通信装置”的设计与制作 235
10.2.1 基础知识 235
10.2.2 电路设计和程序设计 237
10.2.3 PROTEUS仿真、调试 240
实验10-2:“AT89C51与PC间通信装置”的实际制作、运行、思考 241
第11章 AT89C51单片机的实际应用 243
11.1 带存储功能的简易电子琴 243
11.1.1 功能与操作 243
11.1.2 技术要点 243
11.1.3 电路设计和程序设计 244
11.1.4 PROTEUS仿真、调试 251
实验11-1:“简易电子琴”的实际制作、运行、思考 252
11.2 单片机控制的DS18B20的数字温度计 252
11.2.1 功能与操作 253
11.2.2 技术要点 253
11.2.3 电路设计和程序设计 254
11.2.4 PROTEUS仿真、调试 261
实验11-2:“数字温度计”的实际制作、运行、思考 261
第12章 C51、汇编多模块、混合编程 263
12.1 多模块、混合编程基础 263
12.1.1 基本概念 263
12.1.2 PROTEUS与Keil的联合仿真 264
12.1.3 多模块、混合编程接口 265
12.1.4 多模块、混合编程的原则方法及Keil格式汇编模块 267
12.2 C51多模块编程实例 273
12.2.1 将被调C51模块作为“工程”中的模块 273
12.2.2 将被调C51模块作为模块包含文件 274
12.2.3 将被调C51文件构造为头(.h)文件 275
12.3 C51、汇编混合编程实例 276
12.3.1 在C51模块中使用编译控制命令嵌入汇编语言程序段 276
12.3.2 使用编译控制命令“SRC” 278
12.3.3 将汇编模块构造为Keil格式汇编模块 280
12.4 汇编、C51混合编程实例 282
12.4.1 使用编译控制命令“SRC” 282
12.4.2 将汇编模块构造为Keil格式汇编模块 283
12.5 汇编多模块编程及带中断混合编程实例 284
12.5.1 汇编多模块编程实例 284
12.5.2 带中断混合编程实例 286
附录 288
参考文献 293