第1章 单片机I/O接口的扩展 111
1.1 单片机应用系统 2
1.1.1 单片机系统概述 2
1.1.2 单片机系统中的功能模块 3
1.2 单片机I/O接口 4
1.2.1 I/O接口功能 5
1.2.2 接口的控制方式 5
1.2.3 I/O接口芯片 6
1.3 用单片机串口扩展I/O接口 6
1.3.1 子程序1——用串口扩展并行输入口 6
1.3.2 子程序2——用串口扩展并行输出口 11
1.4 用并行数据端口扩展I/O接口 14
1.4.1 子程序3——用8243扩展I/O接口 14
1.4.2 子程序4——用8255A扩展I/O接口 18
1.4.3 子程序5——用8155扩展I/O接口 27
第2章 总线接口的扩展 41
2.1 子程序6——异步通信的软件模拟 42
2.1.1 异步通信简要介绍 42
2.1.2 软件模拟异步通信 43
2.2 子程序7——基于RS-232-C的串口通信 51
2.2.1 RS-232-C接口标准 52
2.2.2 RS-232-C传输接口电路的设计 53
2.2.3 单片机与PC机通信程序设计 55
2.2.4 PC机通信软件的开发 58
2.3 子程序8——基于RS-485的多机通信 65
2.3.1 RS-485接口标准 66
2.3.2 通信系统及接口电路设计 67
2.3.3 多机通信程序设计 68
2.4 子程序9——I2C总线协议的软件实现 75
2.4.1 I2C总线简要介绍 76
2.4.2 I/O端口模拟I2C总线接口的软件设计 78
2.5 子程序10——SPI总线在单片机系统中的实现 83
2.5.1 SPI总线简要介绍 83
2.5.2 SPI总线时序的软件实现 85
2.6 子程序11——1-Wire总线协议的软件实现 88
2.6.1 1-Wire总线简要介绍 88
2.6.2 1-Wire总线时序的软件实现 91
第3章 CAN总线接口 95
3.1 CAN总线接口简要介绍 96
3.3.1 CAN总线的特征 96
3.1.2 CAN总线接口的结构 97
3.1.3 CAN总线的设计方案选择 97
3.2 SJA1000总线控制器简要介绍 97
3.2.1 SJAl000结构和主要特点 98
3.2.2 SJA1000的内部结构 98
3.2.3 SJA1000的引脚说明 100
3.3 接口电路设计 100
3.3.1 SJA1000与单片机接口电路设计 100
3.3.2 前端物理接口电路的设计 101
3.3.3 设计电路需要注意的问题 102
3.4 控制程序总体设计 103
3.4.1 BasicCAN方式下的寄存器 103
3.4.2 设计流程 104
3.5 子程序12——硬件驱动程序的设计 105
3.6 子程序13——基本操作程序设计 106
3.7 子程序14——初始化操作 118
3.8 子程序15——通信程序设计 120
3.8.1 写发送缓冲器 120
3.8.2 读接收缓冲区 121
3.9 CAN总线的数据格式 122
3.9.1 数据帧 122
3.9.2 远程帧 125
3.9.3 出错帧 125
3.9.4 过载帧 126
第4章 存储器的扩展 127
4.1 存储器综述 128
4.1.1 半导体存储器 128
4.1.2 半导体存储器的应用 130
4.1.3 各种存储器性能比较 132
4.1.4 智能卡 133
4.2 子程序16——典型外部程序存储器的使用 134
4.2.1 器件选择和接口电路的设计 135
4.2.2 外部存储器的访问 136
4.3 子程序17——典型外部数据存储器的使用 136
4.3.1 器件选择和接口电路的设计 137
4.3.2 外部数据存储器的读写 138
4.4 子程序18——用铁电存储器扩展外部数据存储器 140
4.4.1 铁电存储器FM1808接口电路的设计 140
4.4.2 FM1808读写程序设计 141
4.5 子程序19——I2C接口EEPROM的控制 142
4.5.1 AT24C512简要介绍 143
4.5.2 AT24C512工作时序 144
4.5.3 读写程序 146
4.6 子程序20——SPI接口EEPROM的控制 155
4.6.1 AT93CXX简要介绍 155
4.6.2 AT93CXX的控制时序 157
4.6.3 读写程序 160
4.7 子程序21——FLASH存储器K9F6408U0A的控制 165
4.7.1 K9F6408U0A简要介绍 165
4.7.2 专用的命令功能和状态寄存器 167
4.7.3 K9F6408U0A的程序设计 168
4.8 子程序22——SLE4442逻辑加密IC卡的控制 174
4.8.1 SLE4442简要介绍 175
4.8.2 SLE4442内部结构 176
4.8.3 程序设计 177
第5章 键盘接口与控制 185
5.1 键盘设计指南 186
5.1.1 键盘的物理结构 186
5.1.2 键盘的组成形式 187
5.1.3 单片机输入接口解决方案 191
5.2 独立式键盘的控制 193
5.2.1 子程序23——独立式中断键盘的设计 193
5.2.2 子程序24——独立式查询键盘的设计 196
5.2.3 子程序25——独立式中断查询键盘的设计 202
5.3 矩阵式键盘的控制 206
5.3.1 子程序26——矩阵式扫描按键的设计 206
5.3.2 子程序27——矩阵式中断扫描键盘的设计 213
5.3.3 子程序28——矩阵式线反转法键盘的设计 215
5.4 子程序29——矩阵式键盘的锁定 217
5.4.1 键盘密码原理及单片机密码设置方法 217
5.4.2 程序设计 218
5.5 子程序30——改进型I/O端口复用键盘的控制 221
5.5.1 I/O端口复用的原理和接口电路的设计 221
5.5.2 程序设计 222
5.6 子程序31——利用ZLG7279A实现键盘显示 224
5.6.1 ZLG7289A简要介绍 225
5.6.2 接口电路设计 229
5.6.3 程序设计 230
5.7 子程序32——PS/2键盘的设计 233
5.7.1 PS/2接口标准 234
5.7.2 硬件设计 238
5.7.3 软件设计 239
第6章 显示和打印机的接口与控制 245
6.1 显示和打印接口设计指南 246
6.1.1 LED显示接口 246
6.1.2 LCD显示接口 247
6.1.3 CRT显示器 253
6.1.4 打印机 255
6.2 子程序33——LED显示器在单片机系统中的应用 257
6.2.1 PS7219简要介绍 258
6.2.2 PS7219与单片机接口电路的设计 260
6.2.3 控制程序设计 260
6.3 子程序34——利用HT16XX实现段式液晶显示 264
6.3.1 HT1621简要介绍 264
6.3.2 接口电路设计 267
6.3.3 控制程序设计 268
6.4 子程序35——利用HD44780实现字符显示 271
6.4.1 HD44780简单介绍 271
6.4.2 HD44780接口电路的设计 273
6.4.3 控制程序 274
6.5 子程序36——利用SED1520实现点阵显示 278
6.5.1 SED1520简要介绍 279
6.5.2 液晶模块的内部结构及其与单片机接口电路 283
6.5.3 控制程序编写 285
6.6 子程序37——利用HD66421实现灰度字符显示 297
6.6.1 HD66421简要介绍 297
6.6.2 接口电路 300
6.6.3 控制程序编写 300
6.7 子程序38——CRT显示器在单片机系统中的应用 303
6.7.1 OCA-93显示适配器简要介绍 304
6.7.2 适配器的接口设计 306
6.7.3 驱动程序设计 307
6.8 子程序39——微型打印机在单片机系统中的应用 308
6.8.1 CENTRONICS标准 308
6.8.2 SP-M系列微型打印机介绍 309
6.8.3 接口电路设计 311
6.8.4 程序设计 312
第7章 数据采集与控制 317
7.1 数据采集技术概述 318
7.1.1 模拟信号采集技术 318
7.1.2 A/D转换技术 321
7.1.3 A/D转换器件选型指南 323
7.1.4 数字逻辑信号的采集 324
7.2 子程序40——模拟量输入选择接口 324
7.2.1 模拟开关的主要技术指标 325
7.2.2 模拟开关的的选型 326
7.2.3 模拟开关接口电路的设计 327
7.2.4 用CD4051实现多路模拟信号的输入 329
7.3 子程序41——用模拟比较器实现A/D转换 332
7.3.1 测量原理 333
7.3.2 电路设计 334
7.3.3 测量过程 334
7.3.4 控制程序设计 335
7.4 子程序42——8位并行接口ADC080X的接口与驱动 338
7.4.1 ADC0808/ADC0809简要介绍 339
7.4.2 ADC0808/0809 与单片机的接口设计 340
7.4.3 编写程序 342
7.5 子程序43——SPI接口A/D转换器TLC2543的应用 345
7.5.1 TLC2543简要介绍 346
7.5.2 LC2543与单片机的接口电路 347
7.5.3 控制程序 347
7.6 子程序44——I2C接口A/D转换器ADS11XX的应用 350
7.6.1 ADS11XX简要介绍 351
7.6.2 ADS1100与单片机的接口电路 353
7.6.3 ADS1100的控制方法 353
7.6.4 ADS1100控制程序 355
7.7 子程序45——16位A/D转换器AD7715的应用 360
7.7.1 AD7715简要介绍 360
7.7.2 AD7715与单片机的接口电路 361
7.7.3 AD7715的寄存器 362
7.7.4 AD7715控制程序设计 364
7.8 子程序46——等精度数字频率计的实现 367
7.8.1 等精度频率测量原理 367
7.8.2 设计CPLD的逻辑功能 368
7.8.3 频率信号预处理 370
7.8.4 主控制器程序设计 371
7.9 子程序47——1-wire测温芯片DS18XX的应用 375
7.9.1 DS18XX简要介绍 375
7.9.2 DS18B20简要介绍 376
7.9.3 DS18B20的接口电路 378
7.9.4 控制程序的设计 379
7.10 子程序48——时钟日历芯片PCF8563的应用 382
7.10.1 PCF8563简要介绍 383
7.10.2 PCF8563硬件电路 384
7.10.3 PCF8583的控制程序设计 385
第8章 单片机后向通道接口与控制 393
8.1 单片机后向通道概述 394
8.1.1 模拟量的输出技术概述 394
8.1.2 频率合成技术概述 396
8.1.3 机电控制技术概述 398
8.2 子程序49——并行接口电压输出型D/A转换器的控制 399
8.2.1 MAX530简要介绍 399
8.2.2 MAX530接口电路的设计 401
8.2.3 控制程序的设计 403
8.3 子程序50——并行接口电流输出型D/A转换器的控制 405
8.3.1 DAC083X简要介绍 406
8.3.2 DAC083X系列D/A转换器与单片机的接口电路 407
8.3.3 控制程序的设计 409
8.4 子程序51——串行接口电压输出型D/A转换器的控制 412
8.4.1 MAX532简要介绍 412
8.4.2 MAX532与单片机接口电路的设计 413
8.4.3 控制程序 414
8.5 子程序52——I2C接口的A/D及D/A转换器的应用 417
8.5.1 PCF859l简要介绍 418
8.5.2 PCF8591与单片机接口电路的设计 420
8.5.3 控制程序的设计 420
8.6 子程序53——基于AD9850的数字信号发生器 426
8.6.1 AD9850简要介绍 426
8.6.2 AD9850接口电路的设计 430
8.6.3 控制程序设计 433
8.7 子程序54——直流电机的开环控制 437
8.7.1 直流电机驱动电路的基本原理 437
8.7.2 直流电动机驱动芯片LMD18200简要介绍 438
8.7.3 接口电路的设计 441
8.7.4 直流电机的驱动 442
8.8 子程序55——直流电机的闭环控制 444
8.8.1 闭环控制系统工作原理 444
8.8.2 光电编码器简要介绍 445
8.8.3 接口电路的设计 446
8.8.4 控制程序设计 446