第1章 8051单片机的基本组成 1
1.1 8051单片机的特点与基本结构 1
1.2 8051单片机的存储器结构 5
1.3 CPU时序 7
1.4 复位信号与复位电路 9
1.5 并行I/O端口结构 10
复习思考题1 12
第2章 指令系统与汇编语言程序设计 13
2.1 指令助记符和字节数 13
2.2 寻址方式 14
2.2.1 寄存器寻址 14
2.2.2 直接寻址 15
2.2.3 立即寻址 15
2.2.4 寄存器间接寻址 16
2.2.5 变址寻址 16
2.2.6 相对寻址 17
2.2.7 位寻址 17
2.3 指令分类详解 18
2.3.1 算术运算指令 18
2.3.2 逻辑运算指令 20
2.3.3 数据传送指令 21
2.3.4 控制转移指令 22
2.3.5 位操作指令 25
2.4 汇编语言程序格式与伪指令 25
2.5 应用程序设计 27
2.6 定点数运算子程序 29
复习思考题2 39
第3章 8051单片机的中断系统 41
3.1 中断的概念 41
3.2 中断系统结构与中断控制 42
3.3 中断响应 45
3.4 中断系统应用举例 47
3.4.1 中断源扩展 47
3.4.2 中断嵌套 48
复习思考题3 51
第4章 定时器/计数器及其应用 52
4.1 定时器,计数器的工作方式与控制 52
4.2 定时器,计数器应用举例 55
4.2.1 初值和最大定时时间计算 55
4.2.2 定时器方式应用 56
4.2.3 计数器方式应用 60
4.3 利用定时器产生音乐 63
复习思考题4 67
第5章 串行口及其应用 68
5.1 串行通信方式 68
5.2 串行口的工作方式与控制 69
5.3 串行口应用举例 73
5.3.1 串口/并口转换 73
5.3.2 单片机之间的通信 75
5.3.3 单片机与PC之间的通信 83
复习思考题5 88
第6章 8051单片机系统扩展 89
6.1 程序存储器扩展 89
6.2 数据存储器扩展 90
6.3 并行I/O端口扩展 92
6.4 利用I2C总线进行系统扩展 103
6.5 新型Flash单片机简介 113
6.5.1 Atmel公司的AT89x51 113
6.5.2 SST公司的89E564RD 117
6.6 8051单片机的节电工作方式 121
6.6.1 空闲和掉电工作方式 122
6.6.2 节电方式的应用 123
复习思考题6 124
第7章 DAC及ADC接口技术 125
7.1 A/D及D/A转换器的主要技术指标 125
7.2 DAC接口技术 126
7.2.1 无内部锁存器的DAC接口方法 127
7.2.2 DAC0832与8051单片机的接口方法 128
7.2.3 DAC1208与8051单片机的接口方法 131
7.2.4 串行DAC与8051单片机的接口方法 133
7.2.5 利用DAC接口实现波形、发生器 138
7.3 ADC接口技术 143
7.3.1 比较式ADC 0809与8051单片机的接口方法 144
7.3.2 积分式ADC 7135与8051单片机的接口方法 148
7.3.3 串行ADC与8051单片机的接口方法 154
复习思考题7 158
第8章 键盘与显示器接口技术 159
8.1 LED显示器接口技术 159
8.1.1 七段LED数码显示器 159
8.1.2 串行接口8位共阴极LED驱动器MAX7219 163
8.2 键盘接口技术 168
8.2.1 编码键盘接口技术 170
8.2.2 非编码键盘接口技术 172
8.2.3 键值分析 176
8.3 8279可编程键盘,显示器芯片接口技术 187
8.3.1 8279的工作原理 187
8.3.2 8279的数据输入、显示输出及命令格式 189
8.3.3 8279的接口方法 194
8.4 液晶显示器LCD接口技术 198
8.4.1 LCD显示器的工作原理和驱动方式 198
8.4.2 点阵字符液晶显示模块接口技术 199
8.4.3 点阵图形液晶显示模块接口技术 210
复习思考题8 217
第9章 单片机高级语言Keil C51应用程序设计 218
9.1 Keil C51程序设计的基本语法 218
9.1.1 Keil C51程序的一般结构 218
9.1.2 数据类型 219
9.1.3 常量、变量及其存储模式 220
9.1.4 运算符与表达式 221
9.2 C51程序的基本语句 225
9.2.1 表达式语句 225
9.2.2 复合语句 225
9.2.3 条件语句 225
9.2.4 开关语句 226
9.2.5 循环语句 226
9.2.6 goto、break、continue语句 227
9.2.7 返回语句 227
9.3 函数 228
9.3.1 函数的定义与调用 228
9.3.2 中断服务函数与寄存器组定义 229
9.4 KeilC51编译器对ANSIC的扩展 230
9.4.1 存储器类型与编译模式 230
9.4.2 关于bit,sbit,sfr和sfr16数据类型 231
9.4.3 一般指针与基于存储器的指针及其之间转换 234
9.4.4 C51编译器对ANSIC函数定义的扩展 235
9.5 C51编译器的数据调用协议 238
9.5.1 数据在内存中的存储格式 238
9.5.2 目标代码的段管理 240
9.6 与汇编语言程序的接口 242
9.7 绝对地址访问 246
9.7.1 采用扩展关键字_at_或指针定义变量的绝对地址 246
9.7.2 采用预定义宏指定变量的绝对地址 247
9.8 KeilC51库函数 247
9.8.1 本征库函数 247
9.8.2 字符判断转换库函数 248
9.8.3 输入/输出库函数 249
9.8.4 字符串处理库函数 249
9.8.5 类型转换及内存分配库函数 250
9.8.6 数学计算库函数 251
复习思考题9 252
第10章 Proteus虚拟仿真设计实例 253
10.1 集成环境ISIS 253
10.2 绘制原理图 255
10.3 创建源代码仿真文件 257
10.4 在原理图中进行源代码仿真调试 259
10.5 原理图与Keil环境联机仿真调试 260
10.6 数字多用表设计 265
10.6.1 功能要求 265
10.6.2 硬件电路设计 265
10.6.3 软件程序设计 267
10.7 数字温度计设计 276
10.7.1 功能要求 276
10.7.2 硬件电路设计 276
10.7.3 软件程序设计 279
10.8 红外遥控系统设计 293
10.8.1 功能要求 293
10.8.2 硬件电路设计 293
10.8.3 软件程序设计 294
10.9 简易电子琴设计 300
10.9.1 功能要求 300
10.9.2 硬件电路设计 300
10.9.3 软件程序设计 300
10.10 电子万年历设计 305
10.10.1 功能要求 305
10.10.2 硬件电路设计 305
10.10.3 软件程序设计 308
复习思考题10 319
附录A 8051指令表 320