本书主要基于当前广为应用的单片机开发软件Keil C51集成开发环境和单片机仿真软件Proteus,在介绍51单片机基本结构的基础上,进一步详细介绍了单片机仿真软件Proteus的使用方法、单片机开发软件Keil C51集成开发环境及Keil C51的使用方法、源代码级调试和Keil C与Proteus联合调试方法,用大量实例说明了单片机和外围芯片的连接方法,同时提供电子资料包,详细展示Proteus仿真原理图、程序代码和仿真调试方法,便于读者学习、实践。
第1章 51单片机基础
1.1 51单片机基本结构 1
1.1.1 51单片机的基本组成 1
1.1.2 51单片机的引脚与功能 2
1.1.3 51单片机的内部存储器 3
1.1.4 专用寄存器 5
1.2 51单片机的汇编语言 6
1.2.1 一个极简单的汇编语言程序 6
1.2.2 汇编语言特点 6
1.2.3 汇编语言语句的种类和格式 6
1.2.4 汇编语言的基本语法规则 7
1.2.5 伪指令 8
1.2.6 51单片机的指令 9
1.3 51系列单片机 11
第2章 单片机仿真软件Proteus的使用
2.1 进入Proteus ISIS 15
2.2 工作界面 16
2.3 Proteus ISIS原理图设计 22
2.4 Proteus ISIS原理图设计中若干注意事项 32
2.5 Proteus 软件的仿真调试方法 34
2.5.1 直接用扩展名为HEX的十六进制文件调试 34
2.5.2 源代码级调试 37
2.5.3 Keil C与Proteus联合调试 45
2.6 Proteus VSM仿真工具简介 49
第3章 单片机开发软件Keil C51的使用
3.1 Keil C51简介 54
3.2 安装Keil C51 54
3.3 如何建立一个工程 56
3.4 单片机选型 57
3.5 创建源程序 58
3.6 把新创建源程序加入到工程文件中 60
3.7 工程的设置 61
3.8 编译 66
3.9 调试 66
3.10 调试窗口(DEBUG Window) 68
第4章 LED显示器
4.1 和单片机直接连接的LED显示器 71
4.1.1 两位LED显示器 71
4.1.2 四位LED显示器 72
4.2 通过显示译码器和单片机连接的LED显示器 76
4.2.1 74LS48七段显示译码器的应用 76
4.2.2 CD4543共阳极七段显示译码器的应用 79
4.3 通过触发器寄存器芯片和单片机连接的显示器 81
4.3.1 单片机AT89C51通过触发器74LS273连接的显示器 81
4.3.2 单片机AT89C51通过移位寄存器74LS164连接的显示器 83
4.4 通过专用显示器驱动芯片和单片机连接的显示器 84
4.4.1 MAX7219/7221新型高集成度七段共阴极LED驱动芯片简介 85
4.4.2 MAX7219/7221与单片机的连接 86
4.4.3 显示8位LED的汇编语言程序 88
4.4.4 显示16位LED的汇编语言程序 89
4.4.5 程序设计与调试 96
第5章 内存的扩展
5.1 关于存储器 98
5.2 程序存储器的扩展 101
5.2.1 2K-EPROM芯片2716 101
5.2.2 64K-EPROM芯片27512 103
5.3 数据存储器的扩展 105
5.3.1 2K-RAM芯片6116 105
5.3.2 32K-RAM芯片62256 106
5.4 程序存储器和数据存储器一同扩展 108
5.5 串行存储器的扩展 111
5.5.1 PCF8570简介 111
5.5.2 PCF8570 与单片机的连接 111
5.5.3 程序设计和调试 113
5.5.4 汇编语言程序 113
5.5.5 使用PCF8570的注意事项 118
第6章 A/D转换器
6.1 通用并行输出8位单路A/D转换器ADC0804 119
6.1.1 ADC0804简介 119
6.1.2 ADC0804与单片机AT89C52的连接 121
6.1.3 程序设计说明及调试 122
6.1.4 ADC0804的汇编语言程序1 123
6.1.5 ADC0804的汇编语言程序2 124
6.1.6 ADC0804的汇编语言程序3 125
6.1.7 使用ADC0804的注意事项 126
6.2 通用串行输出8位A/D转换器TLC549 127
6.2.1 TLC549简介 127
6.2.2 TLC549与单片机AT89C52的连接 128
6.2.3 程序设计说明及调试 128
6.2.4 TLC549的汇编语言程序1 130
6.2.5 TLC549的汇编语言程序2 131
6.2.6 使用TLC549的注意事项 132
6.3 串行输出8位A/D转换器ADC0832 132
6.3.1 ADC0832简介 132
6.3.2 ADC0832与单片机AT89C52的连接 134
6.3.3 程序设计说明及调试 134
6.3.4 ADC0832的汇编语言程序 136
6.3.5 使用ADC0832的注意事项 138
6.4 串行输出8通道12位A/D转换器MAX128 138
6.4.1 MAX128简介 138
6.4.2 MAX128与单片机AT89C52的连接 142
6.4.3 程序设计说明及调试 142
6.4.4 MAX128的汇编语言程序 145
6.4.5 使用MAX128的注意事项 149
第7章 D/A转换器
7.1 单路串行10位D/A转换器MAX504 151
7.1.1 MAX504简介 151
7.1.2 MAX504和单片机AT89C52的连接 154
7.1.3 程序设计说明及调试 155
7.1.4 MAX504汇编语言程序1 157
7.1.5 MAX504汇编语言程序2 159
7.1.6 使用MAX504的注意事项 161
7.2 通用串行输出10位D/A转换器TLC5615 161
7.2.1 TLC5615 D/A转换器简介 161
7.2.2 TLC5615 D/A转换器与单片机AT89C52的连接 164
7.2.3 程序设计说明及调试 164
7.2.4 汇编语言程序 166
7.2.5 使用TLC5615的注意事项 166
第8章 时钟芯片
8.1 不用时钟芯片构成的时钟 168
8.1.1 关于日历时钟的说明 168
8.1.2 不用时钟芯片构成时钟的单片机硬件电路 169
8.1.3 程序设计 169
8.1.4 仿真和调试 174
8.2 低功耗带RAM实时时钟芯片DS1302 175
8.2.1 DS1302芯片简介 175
8.2.2 DS1302与单片机AT89C52的连接 176
8.2.3 读写DS1302时钟区特定单元汇编语言程序 177
8.2.4 读写DS1302 RAM的汇编语言程序 180
8.2.5 程序设计说明及调试 183
8.2.6 使用DS1302的注意事项 184
8.3 低功耗、多功能时钟日历芯片PCF8563 184
8.3.1 PCF8563简介 184
8.3.2 PCF8563与单片机的连接 187
8.3.3 汇编语言程序 188
8.3.4 程序设计说明及调试 193
8.3.5 使用PCF8563的注意事项 194
第9章 模拟开关
9.1 四双向电子模拟开关74HC4066 195
9.1.1 单片机和74HC4066模拟电子开关的连接 195
9.1.2 程序设计 196
9.1.3 仿真和调试 197
9.2 16选1电子模拟开关CD4067 197
9.2.1 单片机AT89C52和CD4067模拟电子开关的连接 197
9.2.2 程序设计 198
9.2.3 仿真和调试 199
9.3 串行控制的8通道单刀单掷开关MAX335 200
9.3.1 MAX335简介 200
9.3.2 MAX335与单片机AT89C52的连接 202
9.3.3 程序设计说明及调试 204
9.3.4 汇编语言程序 205
9.3.5 使用MAX335的注意事项 207
9.4 串行控制的低电压8通道多路开关MAX349 208
9.4.1 MAX349简介 208
9.4.2 MAX349与单片机的连接 209
9.4.3 程序设计说明及调试 211
9.4.4 汇编语言程序 211
9.4.5 使用MAX349的注意事项 212
第10章 单总线器件
10.1 序列号或信息按钮(iButton)DS1990A 213
10.1.1 DS1990A简介 213
10.1.2 DS1990A与单片机AT89C52的连接 216
10.1.3 程序设计说明及调试 217
10.1.4 汇编语言程序 217
10.1.5 使用DS1990A的注意事项 219
10.2 1024位1-Wire EEPROMDS2431 220
10.2.1 DS2431简介 220
10.2.2 DS2431与单片机AT89C52的连接 225
10.2.3 程序设计说明及调试 226
10.2.4 汇编语言程序1 227
10.2.5 汇编语言程序2 229
10.2.6 使用DS2431的注意事项 233
第11章 传感器
11.1 2-Wire式数字温度传感器DS1621 234
11.1.1 DS1621简介 234
11.1.2 DS1621与单片机AT89C52的连接 236
11.1.3 程序设计说明及调试 236
11.1.4 DS1621的汇编语言程序 238
11.1.5 使用DS1621的注意事项 242
11.2 1-Wire数字温度传感器DS18B20 242
11.2.1 DS18B20简介 242
11.2.2 DS18B20与单片机AT89C52的连接 248
11.2.3 程序设计说明及调试 249
11.2.4 DS18B20的汇编语言程序 250
11.2.5 使用DS18B20的注意事项 252
第12章 数字电位器
12.1 256抽头低漂移双数字电位器MAX5413 254
12.1.1 MAX5413简介 254
12.1.2 MAX5413和单片机AT89C52的连接 256
12.1.3 程序设计说明及调试 256
12.1.4 汇编语言程序MAX5413.ASM 258
12.1.5 使用MAX5413的注意事项 259
12.2 线性32抽头数字电位器MAX5435 260
12.2.1 MAX5432-MAX5435简介 260
12.2.2 MAX5434/MAX5435和单片机AT89C52的连接 262
12.2.3 程序设计说明及调试 263
12.2.4 汇编语言程序 263
12.2.5 使用MAX5435的注意事项 268
第13章 I/O扩展器件
13.1 8255A可编程并行I/O芯片 269
13.1.1 8255A简介 269
13.1.2 8255A和单片机AT89C52的连接 272
13.1.3 程序设计 272
13.1.4 仿真和调试 274
13.2 8位并行输入、串行输出的同步移位寄存器74LS166 274
13.2.1 74LS166简介 274
13.2.2 74LS166与单片机AT89C52的连接 275
13.2.3 程序设计说明及调试 276
13.2.4 汇编语言程序 276
13.2.5 使用74LS166的注意事项 277
13.3 具有三态输出的8缓冲器和线驱动器74LS244 277
13.3.1 单片机AT89C52和74LS244 的连接 277
13.3.2 程序设计 278
13.3.3 仿真和调试 279
13.4 I2C总线16位远程I/O扩展口芯片PCF8575 279
13.4.1 PCF8575简介 280
13.4.2 PCF8575 与单片机的连接 282
13.4.3 程序设计说明及调试 282
13.4.4 PCF8575作为输入口的汇编语言程序 284
13.4.5 PCF8575作为输出口的汇编语言程序 287
13.4.6 使用PCF8575的注意事项 288
附录 51单片机指令集
参考文献