第1章 单片机C语言开发基础 1
1.1 MCS-51单片机硬件基础 1
1.1.1 8051引脚 1
1.1.2 51单片机功能结构 3
1.1.3 中央处理器(CPU) 4
1.1.4 存储器结构 8
1.1.5 定时/计数器 10
1.1.6 并行端口 10
1.1.7 串行端口 13
1.1.8 中断系统 13
1.1.9 总线 13
1.2 Keil μ Vision2 14
1.2.1 Keil μ Vision2集成开发环境介绍 14
1.2.2 使用Keil μ Vision2进行开发 15
1.2.3 dScope for Windows的使用 19
1.3 C51基础知识 24
1.3.1 C51控制语句 24
1.3.2 C51函数 27
1.3.3 C51数组和指针 30
1.4 【实例19】P1口控制直流电动机实例 31
第2章单 片机接口的扩展 34
2.1 基本器件实现端口扩展实例 34
2.1.1 【实例20】用74LS165实现串口扩展并行输入口 34
2.1.2 【实例21】用74LS164实现串口扩展并行输出口 38
2.1.3 【实例22】P0 I/O扩展并行输入口 42
2.1.4 【实例23】P0 I/O扩展并行输出口 43
2.2 扩展芯片实现端口扩展 43
2.2.1 【实例24】用8243扩展I/O端口 44
2.2.2 【实例25】用8255A扩展I/O 47
2.2.3 【实例26】用8155扩展I/O 56
2.3 CPLD实现端口扩展 67
第3章 存储器的扩展 69
3.1 外部程序存储器的扩展 69
3.1.1 【实例27】EPROM27xxx程序存储器的扩展 69
3.1.2 【实例28】EEPROM28xxx程序存储器的扩展 72
3.2 外部数据存储器的扩展 74
3.2.1 【实例29】与AT24系列EEPROM接口及驱动程序 74
3.2.2 【实例30】EEPROM(X5045)接口及驱动程序 81
3.2.3 【实例31】铁电存储器接口及驱动程序 86
3.2.4 【实例32】与双口RAM存储器接口及应用实例 91
3.3 FLASH驱动程序 95
【实例33】 NANDFLASH(K9F5608)接口及驱动程序 95
第4章 输入/输出及显示技术 107
4.1 【实例34】独立键盘控制 107
4.1.1 实例功能 107
4.1.2 典型器件介绍 107
4.1.3 硬件设计 107
4.1.4 程序设计 108
4.1.5 经验总结 109
4.2 【实例35】矩阵式键盘控制 109
4.2.1 实例功能 109
4.2.2 典型器件介绍 109
4.2.3 硬件设计 110
4.2.4 程序设计 110
4.2.5 经验总结 111
4.3 【实例36】改进型I/O端口键盘 112
4.3.1 实例功能 112
4.3.2 硬件设计 112
4.3.3 程序设计 112
4.4 【实例37】PS/2键盘的控制 116
4.4.1 实例功能 116
4.4.2 典型器件介绍 116
4.4.3 硬件设计 116
4.4.4 程序设计 117
4.4.5 经验总结 121
4.5 【实例38】LED显示 121
4.5.1 实例功能 121
4.5.2 硬件设计 121
4.5.3 程序设计 121
4.5.4 经验总结 122
4.6 【实例39】段数码管(HD7929)显示实例 123
4.6.1 实例功能 123
4.6.2 硬件设计 123
4.6.3 程序设计 123
4.6.4 经验总结 125
4.7 【实例40】16×2字符型液晶显示实例 125
4.7.1 实例功能 125
4.7.2 典型器件介绍 125
4.7.3 硬件设计 125
4.7.4 程序设计 126
4.7.5 经验总结 131
4.8 【实例41】点阵型液晶显示实例 131
4.8.1 实例功能 131
4.8.2 典型器件介绍 131
4.8.3 硬件设计 133
4.8.4 程序设计 133
4.8.5 经验总结 136
4.9 【实例42】LCD显示图片实例 136
4.9.1 实例功能 136
4.9.2 典型器件介绍 136
4.9.3 硬件设计 138
4.9.4 程序设计 138
4.9.5 经验总结 144
第5章 实用电子制作 145
5.1 【实例43】简易电子琴的设计 145
5.1.1 实例功能 145
5.1.2 典型器件介绍 145
5.1.3 硬件设计 145
5.1.4 程序设计 147
5.1.5 经验总结 149
5.2 【实例44】基于MCS-51单片机的四路抢答器 149
5.2.1 实例功能 149
5.2.2 典型器件介绍 150
5.2.3 硬件设计 151
5.2.4 程序设计 153
5.2.5 经验总结 158
5.3 【实例45】电子调光灯的制作 159
5.3.1 实例功能 159
5.3.2 典型器件介绍 159
5.3.3 硬件设计 160
5.3.4 程序设计 160
5.3.5 经验总结 166
5.4 【实例46】数码管时钟的制作 166
5.4.1 实例功能 166
5.4.2 典型器件介绍 166
5.4.3 硬件设计 167
5.4.4 程序设计 168
5.4.5 经验总结 183
5.5 【实例47】LCD时钟的制作 183
5.5.1 实例功能 183
5.5.2 典型器件介绍 183
5.5.3 硬件设计 185
5.5.4 程序设计 186
5.5.5 经验总结 193
5.6 【实例48】数字化语音存储与回放 193
5.6.1 实例功能 193
5.6.2 典型器件介绍 193
5.6.3 硬件设计 194
5.6.4 程序设计 195
5.6.5 经验总结 204
5.7 【实例49】电子标签设计 205
5.7.1 实例功能 205
5.7.2 典型器件介绍 205
5.7.3 硬件设计 206
5.7.4 程序设计 207
5.7.5 经验总结 216
第6章 传感控制技术 217
6.1 【实例50】指纹识别模块 217
6.1.1 指纹识别传感器原理 217
6.1.2 硬件设计 219
6.1.3 程序设计 220
6.1.4 实例实现过程 222
6.1.5 经验总结 222
6.2 【实例51】数字温度传感器 223
6.2.1 数字温度传感器原理 223
6.2.2 硬件设计 226
6.2.3 程序设计 226
6.2.4 实例实现过程 231
6.2.5 经验总结 231
6.3 【实例52】宽带数控放大器 231
6.3.1 宽带数控放大器设计原理 232
6.3.2 硬件设计 235
6.3.3 程序设计 235
6.3.4 实例实现过程 235
6.3.5 经验总结 236
第7章 智能仪表与测试技术 237
7.1 【实例53】超声波测距 237
7.1.1 实例功能 237
7.1.2 典型器件介绍 237
7.1.3 硬件设计 237
7.1.4 程序设计 240
7.1.5 经验总结 242
7.2 【实例54】数字气压计 242
7.2.1 实例功能 242
7.2.2 典型器件介绍 242
7.2.3 硬件设计 242
7.2.4 程序设计 245
7.2.5 经验总结 250
7.3 【实例55】基于单片机的电压表设计 250
7.3.1 实例功能 250
7.3.2 电压表设计原理 250
7.3.3 硬件设计 251
7.3.4 程序设计 252
7.3.5 经验总结 254
7.4 【实例56】基于单片机的称重显示仪表设计 254
7.4.1 实例功能 254
7.4.2 典型器件介绍 254
7.4.3 硬件设计 255
7.4.4 程序设计 256
7.4.5 经验总结 259
7.5 【实例57】基于单片机的车轮测速系统 259
7.5.1 实例功能 259
7.5.2 典型器件介绍 259
7.5.3 硬件设计 260
7.5.4 程序设计 260
7.5.5 经验总结 262
第8章 电气传动及控制技术 263
8.1 【实例58】电源切换控制 263
8.1.1 实例功能 263
8.1.2 典型器件介绍 264
8.1.3 硬件设计 265
8.1.4 程序设计 268
8.1.5 经验总结 269
8.2 【实例59】步进电机控制 270
8.2.1 实例功能 270
8.2.2 典型器件介绍 270
8.2.3 硬件设计 271
8.2.4 程序设计 272
8.2.5 经验总结 275
8.3 【实例60】单片机控制自动门系统 275
8.3.1 实例功能 275
8.3.2 典型器件介绍 275
8.3.3 硬件设计 277
8.3.4 程序设计 278
8.3.5 经验总结 282
8.4 【实例61】控制微型打印机 282
8.4.1 实例功能 282
8.4.2 典型器件介绍 283
8.4.3 硬件设计 285
8.4.4 程序设计 286
8.4.5 经验总结 286
8.5 【实例62】单片机控制的EPSON微型打印头 287
8.5.1 实例功能 287
8.5.2 典型器件介绍 287
8.5.3 硬件设计 288
8.5.4 程序设计 289
8.5.5 经验总结 290
8.6 【实例63】简易智能电动车 290
8.6.1 实例功能 290
8.6.2 典型器件介绍 291
8.6.3 硬件设计 292
8.6.4 程序设计 293
8.6.5 经验总结 298
8.7 【实例64】洗衣机控制器 298
8.7.1 实例功能 298
8.7.2 典型器件介绍 299
8.7.3 硬件设计 300
8.7.4 程序设计 300
8.7.5 经验总结 304
第9章 单片机数据处理 305
9.1 【实例65】串行A/D转换 305
9.1.1 实例功能 305
9.1.2 典型器件介绍 305
9.1.3 硬件设计 306
9.1.4 程序设计 306
9.1.5 经验总结 308
9.2 【实例66】并行A/D转换 308
9.2.1 实例功能 308
9.2.2 典型器件介绍 308
9.2.3 硬件设计 309
9.2.4 程序设计 310
9.2.5 经验总结 311
9.3 【实例67】模拟比较器实现A/D转换 311
9.3.1 实例功能 311
9.3.2 典型器件介绍 311
9.3.3 硬件设计 312
9.3.4 程序设计 312
9.3.5 经验总结 314
9.4 【实例68】串行D/A转换 314
9.4.1 实例功能 314
9.4.2 典型器件介绍 314
9.4.3 硬件设计 315
9.4.4 程序设计 315
9.4.5 经验总结 317
9.5 【实例69】并行电压型D/A转换 317
9.5.1 实例功能 317
9.5.2 典型器件介绍 317
9.5.3 硬件设计 317
9.5.4 程序设计 318
9.5.5 经验总结 318
9.6 【实例70】并行电流型D/A转换 319
9.6.1 实例功能 319
9.6.2 典型器件介绍 319
9.6.3 硬件设计 320
9.6.4 程序设计 320
9.6.5 经验总结 321
9.7 【实例71】I2C接口的A/D转换 321
9.7.1 实例功能 321
9.7.2 典型器件介绍 321
9.7.3 硬件设计 322
9.7.4 程序设计 322
9.7.5 经验总结 327
9.8 【实例72】I2C接口的D/A转换 327
9.8.1 实例功能 327
9.8.2 典型器件介绍 327
9.8.3 硬件设计 328
9.8.4 程序设计 328
9.8.5 经验总结 331
第10章 单片机通信技术 332
10.1 【实例73】单片机间通信 332
10.1.1 实例功能 332
10.1.2 典型器件介绍 332
10.1.3 硬件设计 333
10.1.4 程序设计 334
10.1.5 经验总结 337
10.2 【实例74】单片机间多机通信方法之一 337
10.2.1 实例功能 338
10.2.2 典型器件介绍 338
10.2.3 硬件设计 339
10.2.4 程序设计 340
10.2.5 经验总结 347
10.3 【实例75】单片机间多机通信方法之二 347
10.3.1 实例功能 347
10.3.2 程序设计 348
10.3.3 经验总结 355
10.4 【实例76】PC与单片机通信 355
10.4.1 实例功能 355
10.4.2 典型器件介绍 355
10.4.3 硬件设计 357
10.4.4 程序设计 357
10.4.5 经验总结 362
10.5 【实例77】红外通信接口 362
10.5.1 实例功能 363
10.5.2 典型器件介绍 363
10.5.3 硬件设计 365
10.5.4 程序设计 366
10.5.5 经验总结 368
10.6 【实例78】无线数据传输模块 369
10.6.1 实例功能 369
10.6.2 典型器件介绍 369
10.6.3 硬件设计 371
10.6.4 程序设计 371
10.6.5 经验总结 372
第11章 单片机实现信号与算法 373
11.1 【实例79】单片机实现PWM信号输出 373
11.1.1 实例功能 373
11.1.2 典型器件介绍 373
11.1.3 硬件设计 373
11.1.4 程序设计 374
11.1.5 经验总结 376
11.2 【实例80】实现基于单片机的低频信号发生器 376
11.2.1 实例功能 376
11.2.2 典型器件介绍 376
11.2.3 硬件设计 376
11.2.4 程序代码 377
11.2.5 经验总结 379
11.3 【实例81】软件滤波方法 379
11.3.1 实例功能 379
11.3.2 软件滤波方法介绍 379
11.3.3 程序设计 380
11.3.4 经验总结 383
11.4 【实例82】FSK信号解码接收 383
11.4.1 实例功能 383
11.4.2 FSK原理 383
11.4.3 程序设计 384
11.4.4 经验总结 385
11.5 【实例83】单片机浮点数运算实现 385
11.5.1 实例功能 385
11.5.2 单片机浮点数运算实现原理 386
11.5.3 程序设计 386
11.5.4 经验总结 391
11.6 【实例84】神经网络在单片机中的实现 392
11.6.1 实例功能 392
11.6.2 神经网络简介 392
11.6.3 程序设计 392
11.6.4 经验总结 395
11.7 【实例85】信号数据的FFT变换 395
11.7.1 实例功能 395
11.7.2 FFT变换介绍 395
11.7.3 程序设计 396
11.7.4 经验总结 401
第12章 单片机的总线与网络技术 402
12.1 【实例86】I2C总线接口的软件实现 402
12.1.1 实例功能 402
12.1.2 典型器件介绍 402
12.1.3 程序设计 402
12.1.4 经验总结 405
12.2 【实例87】SPI总线接口的软件实现 405
12.2.1 实例功能 405
12.2.2 典型器件介绍 405
12.2.3 硬件设计 407
12.2.4 经验总结 412
12.3 【实例88】1-WIRE总线接口的软件实现 413
12.3.1 1-WIRE总线通信原理 413
12.3.2 硬件设计 413
12.3.3 程序设计 414
12.3.4 经验总结 417
12.4 【实例89】单片机外挂CAN总线接口 417
12.4.1 CAN总线介绍 417
12.4.2 CAN总线接口 418
12.4.3 程序设计 420
12.4.4 经验总结 424
12.5 【实例90】单片机外挂USB总线接口 424
12.5.1 USB总线原理 425
12.5.2 与单片机的硬件接口 427
12.5.3 程序设计 427
12.5.4 经验总结 432
12.6 【实例91】单片机实现以太网接口 432
12.6.1 以太网接口芯片 433
12.6.2 程序设计 434
12.6.3 经验总结 446
12.7 【实例92】单片机控制GPRS传输 446
12.7.1 典型器件介绍 447
12.7.2 硬件设计 447
12.7.3 程序设计 448
12.7.4 经验总结 455
12.8 【实例93】单片机实现TCP/IP协议 455
12.8.1 TCP/IP原理 455
12.8.2 程序设计 457
12.8.3 经验总结 474
第13章 典型器件及应用技术 475
13.1 【实例94】读写U盘 475
13.1.1 实例功能 475
13.1.2 典型器件介绍 475
13.1.3 硬件设计 476
13.1.4 程序设计 476
13.1.5 经验总结 483
13.2 【实例95】非接触IC卡读写 484
13.2.1 实例功能 484
13.2.2 典型器件介绍 484
13.2.3 硬件设计 484
13.2.4 程序设计 486
13.2.5 经验总结 492
13.3 【实例96】SD卡读写 492
13.3.1 实例功能 492
13.3.2 典型器件介绍 492
13.3.3 硬件设计 493
13.3.4 程序设计 494
13.3.5 经验总结 501
13.4 【实例97】高精度实时时钟芯片的应用 501
13.4.1 实例功能 501
13.4.2 典型器件介绍 501
13.4.3 硬件电路设计 502
13.4.4 程序设计 502
13.4.5 经验总结 508
第14章 综合应用实例 509
14.1 【实例98】智能手机充电器设计 509
14.1.1 智能手机电池充电器的结构组成 509
14.1.2 智能手机电池充电器的硬件电路设计 510
14.1.3 智能手机电池充电器的软件设计 512
14.1.4 经验总结 514
14.2 【实例99】单片机控制门禁系统 514
14.2.1 门禁系统的结构组成 514
14.2.2 门禁系统的硬件电路设计 515
14.2.3 门禁系统的软件设计 519
14.2.4 经验总结 524
14.3 【实例100】电机保护器的设计 524
14.3.1 电机保护器的结构组成 524
14.3.2 电机保护器的硬件电路设计 525
14.3.3 电机保护器的软件设计 530
14.3.4 设计中的几个关键问题 532
14.3.5 经验总结 533
附录1 8051的指令列表 534
附录2 PS/2键盘键值和符号对照表 538