第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 并行端口 11
1.1.7 串行端口 13
1.1.8 中断系统 13
1.1.9 总线 14
1.2 Keil μVision2 14
1.2.1 Keil μVision2集成开发环境介绍 14
1.2.2 使用Keil μVision2进行开发 15
1.2.3 dScope forWindows的使用 20
1.3 C51基础知识 24
1.3.1 C51控制语句 24
1.3.2 C51函数 28
1.3.3 C51数组和指针 30
1.4 【实例19】P1口控制直流电动机实例 32
第2章 单片机接口的扩展 35
2.1 基本器件实现端口扩展实例 35
2.1.1 【实例20】用74LS165实现串口扩展并行输入口 35
2.1.2 【实例21】用74LS164实现串口扩展并行输出口 39
2.1.3 【实例22】P0 I/O扩展并行输入口 43
2.1.4 【实例23】P0 I/O扩展并行输出口 44
2.2 扩展芯片实现端口扩展 44
2.2.1 【实例24】用8243扩展I/O端口 45
2.2.2 【实例25】用8255A扩展I/O口 48
2.2.3 【实例26】用8155扩展I/O口 57
2.3 CPLD实现端口扩展 68
第3章 存储器的扩展 70
3.1 外部程序存储器的扩展 70
3.1.1 【实例27】EPROM27xxx程序存储器的扩展 70
3.1.2 【实例28】EEPROM28xxx程序存储器的扩展 73
3.2 外部数据存储器的扩展 75
3.2.1 【实例29】与AT24系列EEPROM接口及驱动程序 75
3.2.2 【实例30】EEPROM(X5045)接口及驱动程序 82
3.2.3 【实例31】铁电存储器接口及驱动程序 88
3.2.4 【实例32】与双口RAM存储器接口及应用实例 92
3.3 FLASH驱动程序 96
第4章 输入/输出及显示技术 108
4.1 【实例34】独立键盘控制 108
4.1.1 实例功能 108
4.1.2 典型器件介绍 108
4.1.3 硬件设计 108
4.1.4 程序设计 109
4.1.5 经验总结 110
4.2 【实例35】矩阵式键盘控制 110
4.2.1 实例功能 110
4.2.2 典型器件介绍 110
4.2.3 硬件设计 111
4.2.4 程序设计 111
4.2.5 经验总结 112
4.3 【实例36】改进型I/O端口键盘 113
4.3.1 实例功能 113
4.3.2 硬件设计 113
4.3.3 程序设计 113
4.4 【实例37】PS/2键盘的控制 117
4.4.1 实例功能 117
4.4.2 典型器件介绍 117
4.4.3 硬件设计 117
4.4.4 程序设计 118
4.4.5 经验总结 122
4.5 【实例38】LED显示 122
4.5.1 实例功能 122
4.5.2 硬件设计 122
4.5.3 程序设计 122
4.5.4 经验总结 123
4.6 【实例39】数码管(HD7929)显示实例 124
4.6.1 实例功能 124
4.6.2 硬件设计 124
4.6.3 程序设计 124
4.6.4 经验总结 126
4.7 【实例40】16×2字符型液晶显示实例 126
4.7.1 实例功能 126
4.7.2 典型器件介绍 126
4.7.3 硬件设计 126
4.7.4 程序设计 127
4.7.5 经验总结 132
4.8 【实例41】点阵型液晶显示实例 132
4.8.1 实例功能 132
4.8.2 典型器件介绍 132
4.8.3 硬件设计 134
4.8.4 程序设计 134
4.8.5 经验总结 137
4.9 【实例42】LCD显示图片实例 137
4.9.1 实例功能 137
4.9.2 典型器件介绍 137
4.9.3 硬件设计 139
4.9.4 程序设计 139
4.9.5 经验总结 145
第5章 实用电子制作 146
5.1 【实例43】简易电子琴的设计 146
5.1.1 实例功能 146
5.1.2 典型器件介绍 146
5.1.3 硬件设计 146
5.1.4 程序设计 148
5.1.5 经验总结 150
5.2 【实例44】基于MCS-51单片机的四路抢答器 150
5.2.1 实例功能 150
5.2.2 典型器件介绍 151
5.2.3 硬件设计 152
5.2.4 程序设计 154
5.2.5 经验总结 159
5.3 【实例45】电子调光灯的制作 160
5.3.1 实例功能 160
5.3.2 典型器件介绍 160
5.3.3 硬件设计 161
5.3.4 程序设计 161
5.3.5 经验总结 167
5.4 【实例46】数码管时钟的制作 167
5.4.1 实例功能 167
5.4.2 典型器件介绍 167
5.4.3 硬件设计 168
5.4.4 程序设计 169
5.4.5 经验总结 184
5.5 【实例47】LCD时钟的制作 184
5.5.1 实例功能 184
5.5.2 典型器件介绍 184
5.5.3 硬件设计 186
5.5.4 程序设计 187
5.5.5 经验总结 194
5.6 【实例48】数字化语音存储与回放 194
5.6.1 实例功能 194
5.6.2 典型器件介绍 194
5.6.3 硬件设计 195
5.6.4 程序设计 196
5.6.5 经验总结 205
5.7 【实例49】电子标签设计 206
5.7.1 实例功能 206
5.7.2 典型器件介绍 206
5.7.3 硬件设计 207
5.7.4 程序设计 208
5.7.5 经验总结 217
第6章 传感控制技术 218
6.1 【实例50】指纹识别模块 218
6.1.1 指纹识别传感器原理 218
6.1.2 硬件设计 220
6.1.3 程序设计 221
6.1.4 实例实现过程 223
6.1.5 经验总结 223
6.2 【实例51】数字温度传感器 224
6.2.1 基础知识 224
6.2.2 使用器件 225
6.2.3 硬件电路图 228
6.2.4 软件程序设计 229
6.2.5 经验总结 237
6.3 【实例52】宽带数控放大器 237
6.3.1 宽带数控放大器设计原理 238
6.3.2 硬件设计 241
6.3.3 程序设计 241
6.3.4 实例实现过程 241
6.3.5 经验总结 242
第7章 智能仪表与测试技术 243
7.1 【实例53】超声波测距 243
7.1.1 实例功能 243
7.1.2 典型器件介绍 243
7.1.3 硬件设计 243
7.1.4 程序设计 246
7.1.5 经验总结 248
7.2 【实例54】简易数字频率计 248
7.2.1 实例功能 248
7.2.2 简易频率计的电路结构 248
7.2.3 简易频率计的应用代码 249
7.2.4 经验总结 252
7.3 【实例55】基于单片机的电压表设计 252
7.3.1 实例功能 252
7.3.2 电压表设计原理 252
7.3.3 硬件设计 253
7.3.4 程序设计 254
7.3.5 经验总结 256
7.4 【实例56】基于单片机的称重显示仪表设计 256
7.4.1 实例功能 256
7.4.2 典型器件介绍 256
7.4.3 硬件设计 256
7.4.4 程序设计 258
7.4.5 经验总结 261
7.5 【实例57】基于单片机的车轮测速系统 261
7.5.1 实例功能 261
7.5.2 典型器件介绍 261
7.5.3 硬件设计 262
7.5.4 程序设计 262
7.5.5 经验总结 264
第8章 电气传动及控制技术 265
8.1 【实例58】电源切换控制 265
8.1.1 实例功能 265
8.1.2 典型器件介绍 266
8.1.3 硬件设计 267
8.1.4 程序设计 270
8.1.5 经验总结 271
8.2 【实例59】步进电机的控制 272
8.2.1 步进电机的原理 272
8.2.2 典型器件介绍 273
8.2.3 硬件设计 274
8.2.4 程序设计 275
8.2.5 经验总结 278
8.3 【实例60】单片机控制自动门系统 278
8.3.1 实例功能 278
8.3.2 典型器件介绍 278
8.3.3 硬件设计 280
8.3.4 程序设计 281
8.3.5 经验总结 285
8.4 【实例61】控制微型打印机 285
8.4.1 实例功能 285
8.4.2 典型器件介绍 286
8.4.3 硬件设计 288
8.4.4 程序设计 289
8.4.5 经验总结 289
8.5 【实例62】单片机控制的EPSON微型打印头 290
8.5.1 实例功能 290
8.5.2 典型器件介绍 290
8.5.3 硬件设计 291
8.5.4 程序设计 292
8.5.5 经验总结 293
8.6 【实例63】简易智能电动车 293
8.6.1 实例功能 293
8.6.2 典型器件介绍 294
8.6.3 硬件设计 295
8.6.4 程序设计 296
8.6.5 经验总结 301
8.7 【实例64】洗衣机控制器 301
8.7.1 实例功能 301
8.7.2 典型器件介绍 302
8.7.3 硬件设计 303
8.7.4 程序设计 303
8.7.5 经验总结 307
第9章 单片机数据处理 308
9.1 【实例65】串行A/D转换 308
9.1.1 实例功能 308
9.1.2 典型器件介绍 308
9.1.3 硬件设计 309
9.1.4 程序设计 309
9.1.5 经验总结 311
9.2 【实例66】并行A/D转换 311
9.2.1 实例功能 311
9.2.2 典型器件介绍 311
9.2.3 硬件设计 312
9.2.4 程序设计 313
9.2.5 经验总结 314
9.3 【实例67】模拟比较器实现A/D转换 314
9.3.1 实例功能 314
9.3.2 典型器件介绍 314
9.3.3 硬件设计 315
9.3.4 程序设计 315
9.3.5 经验总结 317
9.4 【实例68】串行D/A转换 317
9.4.1 实例功能 317
9.4.2 典型器件介绍 317
9.4.3 硬件设计 318
9.4.4 程序设计 318
9.4.5 经验总结 320
9.5 【实例69】并行电压型D/A转换 320
9.5.1 实例功能 320
9.5.2 典型器件介绍 320
9.5.3 硬件设计 320
9.5.4 程序设计 321
9.5.5 经验总结 321
9.6 【实例70】并行电流型D/A转换 322
9.6.1 实例功能 322
9.6.2 典型器件介绍 322
9.6.3 硬件设计 323
9.6.4 程序设计 324
9.6.5 经验总结 324
9.7 【实例71】I2C接口的A/D转换 324
9.7.1 实例功能 324
9.7.2 典型器件介绍 324
9.7.3 硬件设计 325
9.7.4 程序设计 325
9.7.5 经验总结 330
9.8 【实例72】I2C接口的D/A转换 330
9.8.1 实例功能 330
9.8.2 典型器件介绍 330
9.8.3 硬件设计 331
9.8.4 程序设计 332
9.8.5 经验总结 334
第10章 单片机通信技术 335
10.1 【实例73】单片机间通信 335
10.1.1 实例功能 335
10.1.2 典型器件介绍 335
10.1.3 硬件设计 336
10.1.4 程序设计 337
10.1.5 经验总结 340
10.2 【实例74】单片机间多机通信方法之一 340
10.2.1 实例功能 341
10.2.2 典型器件介绍 341
10.2.3 硬件设计 342
10.2.4 程序设计 343
10.2.5 经验总结 350
10.3 【实例75】单片机间多机通信方法之二 350
10.3.1 实例功能 350
10.3.2 程序设计 351
10.3.3 经验总结 358
10.4 【实例76】PC与单片机通信 358
10.4.1 实例功能 358
10.4.2 典型器件介绍 358
10.4.3 硬件设计 360
10.4.4 程序设计 360
10.4.5 经验总结 365
10.5 【实例77】红外遥控器的通信 366
10.5.1 基础知识 366
10.5.2 器件和原理 366
10.5.3 硬件电路图 368
10.5.4 软件程序设计 369
10.5.5 经验总结 374
10.6 【实例78】无线数据传输模块 374
10.6.1 实例功能 374
10.6.2 典型器件介绍 374
10.6.3 硬件设计 376
10.6.4 程序设计 377
10.6.5 经验总结 377
第11章 单片机实现信号与算法 378
11.1 【实例79】单片机实现PWM信号输出 378
11.1.1 实例功能 378
11.1.2 典型器件介绍 378
11.1.3 硬件设计 378
11.1.4 程序设计 379
11.1.5 经验总结 381
11.2 【实例80】实现基于单片机的低频信号发生器 381
11.2.1 实例功能 381
11.2.2 典型器件介绍 381
11.2.3 硬件设计 381
11.2.4 程序代码 382
11.2.5 经验总结 384
11.3 【实例81】软件滤波方法 384
11.3.1 实例功能 384
11.3.2 软件滤波方法介绍 384
11.3.3 程序设计 385
11.3.4 经验总结 388
11.4 【实例82】FSK信号解码接收 388
11.4.1 实例功能 388
11.4.2 FSK原理 388
11.4.3 程序设计 389
11.4.4 经验总结 390
11.5 【实例83】单片机浮点数运算实现 390
11.5.1 实例功能 390
11.5.2 单片机浮点数运算实现原理 391
11.5.3 程序设计 391
11.5.4 经验总结 396
11.6 【实例84】神经网络在单片机中的实现 397
11.6.1 实例功能 397
11.6.2 神经网络简介 397
11.6.3 程序设计 397
11.6.4 经验总结 400
11.7 【实例85】信号数据的FFT变换 400
11.7.1 实例功能 400
11.7.2 FFT变换介绍 400
11.7.3 程序设计 401
11.7.4 经验总结 406
第12章 单片机的总线与网络技术 407
12.1 【实例86】I2C总线接口的软件实现 407
12.1.1 实例功能 407
12.1.2 典型器件介绍 407
12.1.3 程序设计 407
12.1.4 经验总结 410
12.2 【实例87】SPI总线接口的软件实现 410
12.2.1 实例功能 410
12.2.2 典型器件介绍 410
12.2.3 硬件设计 412
12.2.4 经验总结 417
12.3 【实例88】1-WIRE总线接口的软件实现 418
12.3.1 1-WIRE总线通信原理 418
12.3.2 硬件设计 418
12.3.3 程序设计 419
12.3.4 经验总结 422
12.4 【实例89】单片机外挂CAN总线接口 422
12.4.1 CAN总线介绍 422
12.4.2 CAN总线接口 423
12.4.3 程序设计 425
12.4.4 经验总结 429
12.5 【实例90】单片机外挂USB总线接口 429
12.5.1 USB总线原理 430
12.5.2 与单片机的硬件接口 432
12.5.3 程序设计 432
12.5.4 经验总结 437
12.6 【实例91】单片机实现以太网接口 437
12.6.1 以太网接口芯片 438
12.6.2 程序设计 439
12.6.3 经验总结 451
12.7 【实例92】单片机控制GPRS传输 451
12.7.1 典型器件介绍 452
12.7.2 硬件设计 452
12.7.3 程序设计 453
12.7.4 经验总结 460
12.8 【实例93】单片机实现TCP/IP协议 460
12.8.1 TCP/IP原理 460
12.8.2 程序设计 462
12.8.3 经验总结 479
第13章 典型器件及应用技术 480
13.1 【实例94】读写U盘 480
13.1.1 实例功能 480
13.1.2 典型器件介绍 480
13.1.3 硬件设计 481
13.1.4 程序设计 481
13.1.5 经验总结 488
13.2 【实例95】非接触IC卡读写 489
13.2.1 实例功能 489
13.2.2 典型器件介绍 489
13.2.3 硬件设计 489
13.2.4 程序设计 491
13.2.5 经验总结 497
13.3 【实例96】SD卡读写 497
13.3.1 实例功能 497
13.3.2 典型器件介绍 497
13.3.3 硬件设计 498
13.3.4 程序设计 499
13.3.5 经验总结 506
第14章 综合应用实例 507
14.1 【实例97】智能手机充电器设计 507
14.1.1 智能手机电池充电器的结构组成 507
14.1.2 智能手机电池充电器的硬件电路设计 508
14.1.3 智能手机电池充电器的软件设计 510
14.1.4 经验总结 512
14.2 【实例98】单片机控制门禁系统 512
14.2.1 门禁系统的结构组成 512
14.2.2 门禁系统的硬件电路设计 513
14.2.3 门禁系统的软件设计 517
14.2.4 经验总结 522
14.3 【实例99】GPS接收设备的设计 522
14.3.1 定位系统的基础知识 522
14.3.2 器件介绍 523
14.3.3 硬件电路图 527
14.3.4 软件程序设计 528
14.3.5 经验总结 538
附录1 8051的指令列表 539
附录2 PS/2键盘键值和符号对照表 543