第1章 嵌入式系统概述 1
1.1 嵌入式系统简介 2
1.2 嵌入式处理器 2
1.2.1 嵌入式处理器简介 2
1.2.2 ARM处理器简介 4
第2章 Proteus 6.9软件设计入门 5
2.1 ISIS智能原理图输入系统 6
2.2 Proteus VSM虚拟系统模型 7
2.3 Proteus电路设计快速入门 7
第3章 MCS-51汇编语言程序设计 17
3.1.1 程序设计 18
3.1.2 程序调试 18
3.1 存储块清零 18
3.2 二进制BCD码转换 24
3.2.1 程序设计 24
3.2.2 程序调试 25
3.3 二进制ASCII码转换 29
3.3.1 程序设计 29
3.3.2 程序调试 30
3.4 程序跳转表 32
3.4.1 程序设计 32
3.4.2 程序调试 33
3.5 内存块移动 35
3.5.1 程序设计 35
3.5.2 程序调试 36
3.6.1 程序设计 38
3.6 数据排序 38
3.6.2 程序调试 40
3.7 多字节BCD码取补 42
3.7.1 程序设计 42
3.7.2 程序调试 43
3.8 多字节BCD码加法 45
3.8.1 程序设计 45
3.8.2 程序调试 46
3.9 多字节BCD码减法 49
3.9.1 程序设计 49
3.9.2 程序调试 51
3.10.1 程序设计 53
3.10 多字节BCD码十进制移位 53
3.10.2 程序调试 54
第4章 MCS-51通用I/O控制 57
4.1 P1口输入/输出应用(一) 58
4.1.1 硬件设计 58
4.1.2 程序设计 59
4.1.3 调试与仿真 60
4.2 P1口输入/输出应用(二) 62
4.2.1 硬件设计 63
4.2.2 程序设计 64
4.2.3 调试与仿真 64
4.3 闪烁灯 65
4.3.2 程序设计 66
4.3.1 硬件设计 66
4.3.3 调试与仿真 67
4.4 模拟开关灯 68
4.4.1 硬件设计 68
4.4.2 程序设计 69
4.4.3 调试与仿真 70
4.5 广告灯左移/右移设计 71
4.5.1 硬件设计 71
4.5.2 程序设计 72
4.5.3 调试与仿真 74
4.6 广告灯设计(利用取表方式) 75
4.6.1 硬件设计 75
4.6.2 程序设计 76
4.6.3 调试与仿真 77
4.7 多路开关状态指示 78
4.7.1 硬件设计 78
4.7.2 程序设计 80
4.7.3 调试与仿真 80
4.8 使用74LS245读取数据 82
4.8.1 硬件设计 82
4.8.2 程序设计 83
4.8.3 调试与仿真 83
4.9 使用74LS273输出数据 84
4.9.1 硬件设计 84
4.9.3 调试与仿真 86
4.9.2 程序设计 86
4.10 8255输入/输出应用(一) 87
4.10.1 硬件设计 87
4.10.2 程序设计 90
4.10.3 调试与仿真 91
4.11 8255输入/输出应用(二) 91
4.11.1 硬件设计 92
4.11.2 程序设计 93
4.11.3 调试与仿真 94
4.12 并行口直接驱动LED显示 95
4.12.1 硬件设计 95
4.12.2 程序设计 96
4.12.3 调试与仿真 97
4.13 动态扫描显示 98
4.13.1 硬件设计 98
4.13.2 程序设计 100
4.13.3 调试与仿真 101
4.14 动态数码显示技术 102
4.14.1 硬件设计 103
4.14.2 程序设计 104
4.14.3 调试与仿真 105
4.15 8×8点阵LED显示 106
4.15.1 硬件设计 106
4.15.2 程序设计 107
4.15.3 调试与仿真 110
4.16.2 程序设计 111
4.16 静态串行显示技术 111
4.16.1 硬件设计 111
4.16.3 调试与仿真 114
4.17 音频输出 114
4.17.1 硬件设计 114
4.17.2 程序设计 115
4.17.3 调试与仿真 116
4.18 按键识别(一) 117
4.18.1 硬件设计 117
4.18.2 程序设计 117
4.18.3 调试与仿真 119
4.19.1 硬件设计 120
4.19 按键识别(二) 120
4.19.2 程序设计 121
4.19.3 调试与仿真 122
4.20 查询式键盘设计 123
4.20.1 硬件设计 123
4.20.2 程序设计 124
4.20.3 调试与仿真 127
4.21 4×4矩阵式键盘识别技术(一) 127
4.21.1 硬件设计 128
4.21.2 程序设计 129
4.21.3 调试与仿真 131
4.22 4×4矩阵式键盘识别技术(二) 132
4.22.1 硬件设计 132
4.22.2 程序设计 133
4.22.3 调试与仿真 135
4.23 0~59s计时器(利用软件延时) 136
4.23.1 硬件设计 137
4.23.2 程序设计 137
4.23.3 调试与仿真 139
4.24 可预置可逆4位计数器 139
4.24.1 硬件设计 140
4.24.2 程序设计 141
4.24.3 调试与仿真 142
4.25 0~99计数器 143
4.25.1 硬件设计 143
4.25.2 程序设计 144
4.25.3 调试与仿真 146
第5章 MCS-51的定时器中断应用设计 147
5.1 定时器实验 148
5.1.1 硬件设计 148
5.1.2 程序设计 149
5.1.3 调试与仿真 150
5.2 定时/计数器T0作定时应用技术(一) 151
5.2.1 硬件设计 151
5.2.2 程序设计 152
5.2.3 调试与仿真 154
5.3 定时/计数器T0作定时应用技术(二) 155
5.3.1 硬件设计 155
5.3.2 程序设计 156
5.3.3 调试与仿真 158
5.4 秒表设计 159
5.4.1 硬件设计 159
5.4.2 程序设计 160
5.4.3 调试与仿真 163
5.5 “滴、滴”报警声 163
5.5.1 硬件设计 164
5.5.2 程序设计 164
5.5.3 调试与仿真 166
5.6 “叮咚”门铃声 167
5.6.1 硬件设计 167
5.6.2 程序设计 168
5.6.3 调试与仿真 170
5.7 报警产生器 171
5.7.1 硬件设计 171
5.7.2 程序设计 172
5.7.3 调试与仿真 173
5.8 计数器设计 174
5.8.1 硬件设计 174
5.8.2 程序设计 175
5.8.3 调试与仿真 175
5.9 外部中断 176
5.9.1 硬件设计 176
5.9.2 程序设计 177
5.9.3 调试与仿真 178
5.10.1 硬件设计 179
5.10 点阵式LED数字显示技术 179
5.10.2 程序设计 180
5.10.3 调试与仿真 183
5.11 点阵式LED图形显示技术 183
5.11.1 硬件设计 183
5.11.2 程序设计 185
5.11.3 调试与仿真 187
5.12 拉幕式数码显示 187
5.12.1 硬件设计 188
5.12.2 程序设计 189
5.12.3 调试与仿真 190
5.13.1 硬件设计 191
5.13 数字频率计 191
5.13.2 程序设计 193
5.13.3 调试与仿真 197
第6章 MCS-51串行口应用 199
6.1 串/并行数据转换 200
6.1.1 硬件设计 200
6.1.2 程序设计 201
6.1.3 调试与仿真 202
6.2 并/串行数据转换 203
6.2.1 硬件设计 203
6.2.2 程序设计 204
6.3 AT89C51与PC机串行通信 205
6.2.3 调试与仿真 205
6.3.1 硬件设计 206
6.3.2 程序设计 206
6.3.3 调试与仿真 208
6.4 点阵式LED显示技术 209
6.4.1 硬件设计 209
6.4.2 程序设计 209
6.4.3 调试与仿真 213
第7章 MCS-51与A/D转换器接口设计与应用 215
7.1 ADC0808转换器基本应用 216
7.1.1 硬件设计 216
7.1.2 程序设计 218
7.1.3 调试与仿真 220
7.2 数字电压表 221
7.2.1 硬件设计 222
7.2.2 程序设计 223
7.2.3 调试与仿真 225
7.3 温度检测 225
7.3.1 硬件设计 226
7.3.2 程序设计 227
7.3.3 调试与仿真 231
7.4 ADC0808 A/D转换设计 232
7.4.1 硬件设计 232
7.4.2 程序设计 234
7.4.3 调试与仿真 236
第8章 MCS-51综合应用设计 239
8.1 电子琴 240
8.1.1 硬件设计 240
8.1.2 程序设计 241
8.1.3 调试与仿真 244
8.2 汽车转弯信号灯模拟设计 245
8.2.1 硬件设计 245
8.2.2 程序设计 246
8.2.3 调试与仿真 250
8.3 模拟交通灯设计 250
8.3.1 硬件设计 251
8.3.2 程序设计 252
8.3.3 调试与仿真 258
8.4 PWM输出控制 259
8.4.1 硬件设计 259
8.4.2 程序设计 260
8.4.3 调试与仿真 261
8.5 数字钟设计(一) 262
8.5.1 硬件设计 262
8.5.2 程序设计 263
8.5.3 调试与仿真 267
8.6 数字钟设计(二) 268
8.6.1 硬件设计 268
8.6.2 程序设计 270
8.7 模拟计算器数字输入显示 274
8.6.3 调试与仿真 274
8.7.1 硬件设计 275
8.7.2 程序设计 276
8.7.3 调试与仿真 281
8.8 简单计算器设计 282
8.8.1 硬件设计 282
8.8.2 程序设计 284
8.8.3 调试与仿真 290
8.9 电子密码锁设计(一) 291
8.9.1 硬件设计 291
8.9.2 程序设计 292
8.10.1 硬件设计 298
8.10 电子密码锁设计(二) 298
8.9.3 调试与仿真 298
8.10.2 程序设计 300
8.10.3 调试与仿真 307
8.11 E2P ROM外部程序存储器应用 308
8.11.1 硬件设计 309
8.11.2 程序设计 310
8.11.3 调试与仿真 310
8.12 I2C总线实验 311
8.12.1 硬件设计 311
8.12.2 程序设计 312
8.12.3 调试与仿真 318
8.13 直流电动机驱动 319
8.13.1 硬件设计 320
8.13.2 程序设计 321
8.13.3 调试与仿真 322
8.14 步进电动机驱动 323
8.14.1 硬件设计 324
8.14.2 程序设计 325
8.14.3 调试与仿真 327
第9章 ARM Developer Suite v1.2嵌入式开发工具简介 329
9.1 ARM Developer Suite v1.2的主要特性 330
9.2 建立ADS的工程 333
9.2.1 调入模板 333
9.2.2 添加源文件 335
9.2.3 进行编译和链接 336
9.2.4 建立模板 337
9.3 编程注意事项 342
第10章 IAR Embedded Workbench for ARM嵌入式开发工具简介 343
10.1 IAR Embedded Workbench for ARM的主要特性 344
10.2 建立IAR EWARM的工程 345
10.2.1 创建工程 346
10.2.2 添加源文件 347
10.2.3 编译工程 348
10.2.4 链接工程 352
10.3 使用C-SPY调试程序 353
10.3.1 检查源语句 353
10.3.2 检查变量 355
10.3.3 设置并监视断点 356
10.3.4 监视寄存器和存储器 358
10.3.5 观察Terminal I/O 360
10.4 IAR J-Link仿真器简介 360
10.5 IAR EWARM与Proteus整合后的电路仿真 362
10.5.1 单机上整合IAR EWARM与Proteus 363
10.5.2 网络上整合IAR EWARM与Proteus 367
10.6 ADS工程转换为IAR EWARM工程 367
10.6.1 转换汇编源文件 367
10.6.2 高级转换 370
第11章 LPC2000 Flash Utility简介 371
11.1 Boot Loader版本更新 372
11.2 下载程序到开发板 374
第2章 LPC2106应用系统 377
12.1 LPC2106简介 378
12.2 存储器结构 379
12.3 中断控制器 380
12.4 引脚功能配置 381
12.4.1 引脚功能选择寄存器0 382
12.4.2 引脚功能选择寄存器1 383
第13章 LPC106程序设计与电路仿真 387
13.1 通用输入/输出端口GPIO编程 388
13.1.1 寄存器描述 388
13.1.2 单个LED闪烁控制 389
13.1.3 单键输入控制LED闪烁 397
13.1.4 一位数码管静态显示 401
13.1.5 数值指示 405
13.1.6 计数器 411
13.1.7 LCD显示字符 415
13.2 中断控制编程 420
13.2.1 寄存器描述 420
13.2.2 外部中断1 425
13.2.3 向量IRQ中断 429
13.2.4 计数器 434
13.3 UART 439
13.3.1 寄存器描述 439
13.3.2 向串口发送字符串 452
13.3.3 串口的接收与发送 457
13.4.1 寄存器描述 463
13.4 定时器 463
13.4.2 定时控制LED闪烁(查询方式) 468
13.4.3 定时器控制LED闪烁(中断方式) 473
13.4.4 定时器中断 479
13.5 实时时钟(RTC) 486
13.5.1 寄存器描述 486
13.5.2 1s定时控制 491
13.5.3 向串口输出时钟值 496
13.6 SPI接口 502
13.6.1 寄存器描述 502
13.6.2 SPI控制LED显示 505
13.7 I2C接口 510
13.7.1 寄存器描述 510
13.7.2 I2C中断方式操作E2PROM 513
13.8 脉宽调制(PWM) 522
13.8.1 寄存器描述 522
13.8.2 可调整的PWM输出 527
13.9 “看门狗”定时器(WDT) 532
13.9.1 寄存器描述 532
13.9.2 WDT演示 534
13.10 功率控制 538
13.10.1 寄存器描述 538
13.10.2 空闲模式 539
13.10.3 掉电模式 544
第14章 LPC2106的μC/OS-Ⅱ程序设计与电路仿真 549
14.1 μC/OS-Ⅱ简介 550
14.2 通用I/O 551
14.2.1 代码 551
14.2.2 ADS工程 556
14.2.3 IAR工程 557
14.2.4 Proteus仿真 558
14.3 SPI 559
14.3.1 代码 559
14.3.2 ADS工程 564
14.3.3 IAR工程 566
14.3.4 Proteus仿真 567
14.4 计数器 568
14.4.1 代码 568
14.4.2 ADS工程 571
14.4.3 IAR工程 572
14.4.4 Proteus仿真 573
14.5 LCD显示字符 574
14.5.1 代码 574
14.5.2 ADS工程 577
14.5.3 IAR工程 579
14.5.4 Proteus仿真 580
14.6 可调整的PWM输出 581
14.6.1 代码 581
14.6.2 ADS工程 583
14.6.3 IAR工程 585
14.6.4 Proteus仿真 586
第15章 LPC2124程序设计 587
15.1 A/D转换程序设计 588
15.1.1 代码 588
15.1.2 ADS工程 591
15.1.3 IAR工程 595
15.1.4 Proteus仿真 598
15.2 基于LPC2124的温度模糊控制系统的设计 599
15.2.1 设计任务及要求 599
15.2.2 设计背景简介 599
15.2.3 电路设计 600
15.2.4 软件设计 605
15.2.5 系统仿真 615
附录A LPC2106引脚图 618