第1章 8051单片机基本结构 1
1.1 8051单片机的特点与基本结构 1
1.2 8051单片机的存储器结构 5
1.3 CPU时序 8
1.4 复位信号与复位电路 9
1.5 并行I/O端口结构 10
复习思考题 13
第2章 Proteus虚拟仿真 14
2.1 集成环境ISIS 14
2.2 绘制原理图 17
2.3 创建汇编语言源代码仿真文件 19
2.4 在原理图中进行源代码仿真调试 21
2.5 原理图与Keil环境联机仿真调试 24
复习思考题 30
第3章 指令系统与汇编语言程序设计 31
3.1 指令助记符和字节数 31
3.2 寻址方式 32
3.2.1 寄存器寻址 33
3.2.2 直接寻址 33
3.2.3 立即寻址 33
3.2.4 寄存器间接寻址 34
3.2.5 变址寻址 34
3.2.6 相对寻址 35
3.2.7 位寻址 35
3.3 指令分类详解 36
3.3.1 算术运算指令 36
3.3.2 逻辑运算指令 38
3.3.3 数据传送指令 39
3.3.4 控制转移指令 41
3.3.5 位操作指令 43
3.4 汇编语言程序设计 44
复习思考题 51
第4章 Keil C51应用程序设计 54
4.1 Keil C51程序设计的基本语法 54
4.1.1 Keil C51程序的一般结构 54
4.1.2 数据类型 55
4.1.3 常量、变量及其存储模式 56
4.1.4 运算符与表达式 57
4.2 C51程序的基本语句 61
4.2.1 表达式语句 61
4.2.2 复合语句 61
4.2.3 条件语句 61
4.2.4 开关语句 62
4.2.5 循环语句 62
4.2.6 goto、break、continue语句 63
4.2.7 返回语句 63
4.3 函数 64
4.3.1 函数的定义与调用 64
4.3.2 中断服务函数与寄存器组定义 65
4.4 Keil C51编译器对ANSI C的扩展 66
4.4.1 存储器类型与编译模式 66
4.4.2 关于bit,sbit,sfr,sfr16数据类型 67
4.4.3 一般指针与基于存储器的指针及其转换 70
4.4.4 C51编译器对ANSI C函数定义的扩展 71
4.5 C51编译器的数据调用协议 74
4.5.1 数据在内存中的存储格式 74
4.5.2 目标代码的段管理 76
4.6 与汇编语言程序的接口 78
4.6.1 参数传递规则 78
4.6.2 C51与汇编语言混合编程举例 82
4.7 绝对地址访问 85
4.7.1 采用扩展关键字“_at_”或指针定义变量的绝对地址 85
4.7.2 采用预定义宏指定变量的绝对地址 86
4.8 Keil C51库函数 86
4.8.1 本征库函数 87
4.8.2 字符判断转换库函数 87
4.8.3 输入输出库函数 88
4.8.4 字符串处理库函数 89
4.8.5 类型转换及内存分配库函数 91
4.8.6 数学计算库函数 92
复习思考题 92
第5章 键盘与显示器接口技术 94
5.1 LED显示器接口技术 94
5.1.1 7段LED数码显示器 94
5.1.2 单个74HC595驱动多位LED数码管 98
5.1.3 串行接口8位共阴极LED驱动器MAX7219 102
5.2 键盘接口技术 107
5.2.1 编码键盘接口技术 108
5.2.2 非编码键盘接口技术 110
5.3 8279可编程键盘/显示器芯片接口技术 113
5.3.1 8279的引脚排列 113
5.3.2 8279的数据输入、显示输出及命令格式 114
5.3.3 8279的接口方法 119
5.4 LCD液晶显示器接口技术 122
5.4.1 LCD显示器的工作原理 122
5.4.2 点阵字符型LCD显示模块 122
5.4.3 直接方式接口 128
5.4.4 间接方式接口 131
5.4.5 4位数据总线接口 134
5.4.6 12864点阵图形LCD显示模块 136
5.4.7 12864 LCD与单片机的接口 139
5.4.8 T6963C点阵图形LCD显示模块 143
5.4.9 T6963C LCD与单片机的接口 145
复习思考题 151
第6章 中断系统 153
6.1 中断的概念 153
6.2 中断系统结构与中断控制 154
6.3 中断响应 157
6.4 中断系统应用举例 160
6.4.1 中断源扩展 160
6.4.2 中断嵌套 161
复习思考题 163
第7章 定时器/计数器 164
7.1 定时器/计数器的工作方式与控制 164
7.2 定时器/计数器应用举例 167
7.2.1 初值和最大定时时间计算 167
7.2.2 定时器方式应用 168
7.2.3 计数器方式应用 173
7.3 利用定时器产生音乐 175
复习思考题 178
第8章 串行口 179
8.1 串行通信 179
8.2 串行口的工作方式与控制 180
8.3 串行口应用举例 184
8.3.1 串口/并口转换 184
8.3.2 单片机之间的通信 186
8.3.3 单片机与PC之间的通信 193
8.3.4 修改底层函数实现printf()重新定向 196
复习思考题 199
第9章 数模与模数转换接口技术 200
9.1 转换器的主要技术指标 200
9.2 数模转换器DAC接口技术 201
9.2.1 无内部锁存器的DAC接口方法 202
9.2.2 DAC0832与8051单片机的接口方法 203
9.2.3 DAC1208与8051单片机的接口方法 207
9.2.4 串行DAC与8051单片机的接口方法 208
9.2.5 利用DAC接口实现波形发生器 211
9.3 模数转换器ADC接口技术 215
9.3.1 比较式ADC0809与8051单片机的接口方法 216
9.3.2 积分式ADC7135与8051单片机的接口方法 221
9.3.3 串行ADC与8051单片机的接口方法 227
复习思考题 230
第10章 单片机系统扩展 232
10.1 程序存储器扩展 232
10.2 数据存储器扩展 233
10.3 并行I/O端口扩展 235
10.4 利用I2C总线进行系统扩展 245
10.4.1 I2C总线主要特性 245
10.4.2 I2C总线通用驱动程序 248
10.4.3 I2C接口存储器芯片24C04扩展 250
10.4.4 I2C接口A/D-D/A芯片PCF8591扩展 254
10.4.5 I2C接口时钟芯片PCF8563扩展 264
复习思考题 274
第11章 Proteus仿真设计实例 275
11.1 红外遥控系统设计 275
11.1.1 功能要求 275
11.1.2 硬件电路设计 275
11.1.3 软件程序设计 275
11.2 点阵LED显示屏设计 282
11.2.1 功能要求 282
11.2.2 硬件电路设计 282
11.2.3 软件程序设计 282
11.3 带农历的电子万年历设计 285
11.3.1 功能要求 285
11.3.2 硬件电路设计 285
11.3.3 软件程序设计 288
11.4 电子密码锁设计 298
11.4.1 功能要求 298
11.4.2 硬件电路设计 298
11.4.3 软件程序设计 298
11.5 DS18B20多点温度监测系统设计 312
11.5.1 功能要求 312
11.5.2 硬件电路设计 312
11.5.3 软件程序设计 317
11.6 带输入和存储功能的音乐播放器设计 324
11.6.1 功能要求 324
11.6.2 硬件电路设计 324
11.6.3 软件程序设计 324
复习思考题 332
附录A 8051指令表 333
附录B Proteus中的常用元器件 338
参考文献 340