工具篇 1
第1章 基PROTEUS的单片机系统仿真1.1 PROTEUS ISIS编辑环境 1
1.1.1 操作界面 1
1.1.2 菜单栏和主工具栏 5
1.1.3 编辑环境设置 6
1.1.4 系统参数设置 10
1.2 电路图绘制 15
1.2.1 绘图工具 15
1.2.2 导线操作 20
1.2.3 对象操作 20
1.2.4 PROTEUS电路绘制实例 22
1.2.5 电路图绘制进阶 26
1.3 电路分析与仿真 30
1.3.1 激励源 30
1.3.2 虚拟仪器 31
1.3.3 探针 32
1.3.4 图表 32
1.3.5 基于图表的仿真 35
1.3.6 交互式电路仿真 38
1.4 基于PROTEUS的AVR单片机仿真——源代码控制系统 44
1.4.1 在PROTEUS VSM中创建源代码文件 44
1.4.2 编辑源代码程序 45
1.4.3 生成目标代码文件 46
1.4.4 代码生成工具 47
1.4.5 定义第三方源代码编辑器 47
1.4.6 使用第三方IDE 48
1.5 基于PROTEUS的AVR单片机仿真——源代码调试 49
1.5.1 单步调试 49
1.5.2 使用断点调试 49
1.5.3 Multi-CPU调试 49
1.6 基于PROTEUS的AVR单片机仿真——弹出式窗口 49
1.6.1 显示弹出式窗口 50
1.6.2 源代码调试窗口 50
1.6.3 变量窗口 52
1.6.4 观测窗口 52
1.7 基于PROTEUS的AVR单片机仿真——实现过程 55
1.7.1 原理图输入 55
1.7.2 编辑源代码 55
1.7.3 生成目标代码 57
1.7.4 调试 58
第2章 基于IAR Embedded Workbench IDE的AVR单片机C语言程序开发 58
2.1 IAR Embedded Workbench编辑环境 59
2.1.1 IAR Embedded Workbench启动 59
2.1.2 项目管理 61
2.1.3 源代码控制 61
2.1.4 窗口管理 62
2.1.5 文本编辑器 62
2.1.6 IAR C-SPY调试器 62
2.1.7 C-SPY仿真器驱动 63
2.1.8 AVR IAR C/C++编译器 63
2.1.9 IAR汇编器 64
2.1.10 IAR XLINK链接器 64
2.2 创建一个应用工程 65
2.2.1 创建一个新的工程 65
2.2.2 应用程序的编译和链接 70
2.3 使用IAR C-SPY Debugger进行调试 76
2.3.1 启动调试器 76
2.3.2 窗口管理 77
2.3.3 查看源文件语句 78
2.3.4 查看变量 79
2.3.5 设置并监控断点 81
2.3.6 在反汇编模式中调试 82
2.3.7 监控寄存器 83
2.3.8 监控存储器 84
2.3.9 查看终端I/O 85
2.4 程序运行完毕 86
2.5 编写一个中断处理函数 86
2.6 基于IAR的AVR单片机C程序的调试与仿真 86
2.6.1 在IAR中创建一个新的工程 86
2.6.2 编译应用程序 87
2.6.3 IAR C-SPY程序调试 89
2.6.4 C程序的调试与仿真 89
应用篇 93
第3章 AVR系列单片机概述3.1 AVR系列单片机的特点 93
3.2 AT90S8535单片机的总体结构 94
3.2.1 AT90S8535的特点 94
3.2.2 AT90S8535的结构图 95
3.2.3 AT90S8535的引脚配置 96
3.2.4 AT90S8535的引脚定义 97
3.3 AT90S8535单片机的中央处理器CPU 98
3.3.1 结构概述 98
3.3.2 通用工作寄存器堆 99
3.3.3 X、Y、Z寄存器 100
3.3.4 ALU运算逻辑单元 100
3.4 AT90S8535单片机存储器组织 100
3.4.1 在线可编程Flash 100
3.4.2 内部SRAM数据存储器 100
3.4.3 EEPROM数据存储器 103
3.4.4 I/O寄存器 104
3.5 AVR系列单片机系统复位与中断处理 106
3.5.1 复位源 106
3.5.2 上电复位 107
3.5.3 外部复位 108
3.5.4 看门狗复位 108
3.5.5 MCU状态寄存器 109
3.5.6 中断处理 109
第4章 AT90S8535单片机EERPOM读/写访问 109
4.1 EEPROM读/写访问说明 111
4.1.1 概述 111
4.1.2 相关I/O寄存器 111
4.2 片内EEPROM读/写访问示例 113
4.2.1 硬件电路 113
4.2.2 软件编程 113
4.2.3 系统调试与仿真 116
第5章 AT90S8535单片机I/O端口5.1 各I/O端口概述 119
5.1.1 端口A 119
5.1.2 端口B 120
5.1.3 端口C 121
5.1.4 端口D 122
5.2 各I/O端口第二功能 124
5.2.1 端口A第二功能 124
5.2.2 端口B第二功能 124
5.2.3 端口C第二功能 125
5.2.4 端口D第二功能 125
第6章 AT90S8535单片机中断系统6.1 AT90S8535单片机中断源 126
6.2 中断处理 127
6.3 相关I/O寄存器 128
6.3.1 通用中断屏蔽寄存器——GIMSK 128
6.3.2 通用中断标志寄存器——GIFR 128
6.3.3 T/C中断屏蔽寄存器——TIMSK 128
6.3.4 T/C中断标志寄存器——TIFR 129
6.4 外部中断 130
6.5 中断响应时间 130
6.6 MCU控制寄存器——MCUCR 130
第7章 AT90S8535单片机定时器/计数器及其应用7.1 T/C0、T/C1的预定比例器 132
7.2 定时器/计数器0(T/C0) 133
7.2.1 T/C0的结构、特点及作用 133
7.2.2 T/C0相关的I/O寄存器 133
7.3 T/C0应用1——作计数器 134
7.3.1 硬件电路 134
7.3.2 软件编程 135
7.3.3 系统调试与仿真 137
7.4 T/C0应用2——作定时器 139
7.4.1 硬件电路 139
7.4.2 软件编程 140
7.4.3 系统调试与仿真 142
7.5 T/C0应用3——溢出中断动态扫描5位数码管显示 144
7.5.1 硬件电路 144
7.5.2 软件编程 145
7.5.3 系统调试与仿真 148
7.6 定时器/计数器1(T/C1) 151
7.6.1 T/C1的结构、特点及作用 151
7.6.2 T/C1相关的I/O寄存器 152
7.6.3 PWM模式下的T/C1 155
7.7 T/C1应用1——测量脉冲频率 156
7.7.1 硬件电路 156
7.7.2 软件编程 156
7.7.3 系统调试与仿真 161
7.8 T/C1应用2——比较匹配中断 165
7.8.1 硬件电路 165
7.8.2 软件编程 166
7.8.3 系统调试与仿真 167
7.9 T/C1应用3——比较匹配产生任意占空比方波 168
7.9.1 硬件电路 169
7.9.2 软件编程 169
7.9.3 系统调试与仿真 171
7.10 T/C1应用4——PWM输出作D/A转换器 174
7.10.1 硬件电路 174
7.10.2 软件编程 175
7.10.3 系统调试及仿真 176
7.11 定时器/计数器2(T/C2) 178
7.11.1 T/C2的预分频器 178
7.11.2 T/C2的结构、特点及作用 179
7.11.3 T/C2相关的I/O寄存器 179
7.11.4 PWM模式下的T/C2 180
7.11.5 异步时钟信号的驱动 181
7.12 T/C2应用1——作实时时钟 183
7.12.1 硬件电路 183
7.12.2 软件编程 184
7.12.3 系统调试与仿真 187
7.13 T/C2应用2——OC2引脚产生PWM脉宽调制输出 190
7.13.1 硬件电路 190
7.13.2 软件编程 191
7.13.3 系统调试与仿真 191
7.14 看门狗定时器 193
7.14.1 看门狗定时器的结构、特点及作用 193
7.14.2 与看门狗定时器有关的寄存器 194
7.14.3 看门狗定时器应用编程 195
第8章 AT90S8535单片机模拟量输入接口8.1 模/数转换器ADC 196
8.1.1 ADC的特点 196
8.1.2 ADC的工作方式 197
8.1.3 ADC预分频器 197
8.1.4 ADC的噪声抑制功能 199
8.1.5 与ADC有关的I/O寄存器 199
8.1.6 扫描多个通道 200
8.1.7 ADC噪声消除技术 200
8.1.8 ADC特性 201
8.2 A/D转换应用 201
8.2.1 硬件电路 201
8.2.2 软件编程 202
8.2.3 系统调试与仿真 206
8.3 模拟比较器 208
8.3.1 模拟比较器概述 208
8.3.2 模拟比较器控制和状态寄存器——ACSR 209
8.4 模拟比较器应用 209
8.4.1 硬件电路 210
8.4.2 软件编程 210
8.4.3 系统调试与仿真 214
第9章 AT90S8535单片机串行接口及其应用9.1 通用串行接口UART 218
9.1.1 数据传送 218
9.1.2 数据接收 219
9.1.3 UART控制 220
9.2 通用串行接口UART应用1——单片机间数据通信 224
9.2.1 串行口编程需注意的问题 224
9.2.2 硬件电路 225
9.2.3 软件编程 227
9.2.4 系统调试与仿真 232
9.3 通用串行接口UART应用2——单片机自发自收数据 236
9.3.1 硬件电路 236
9.3.2 软件编程 238
9.3.3 系统调试与仿真 240
9.4 同步串行接口SPI 243
9.4.1 SPI的特性 243
9.4.2 SPI的工作模式 243
9.4.3 SPI的数据模式 245
9.4.4 与SPI有关的寄存器 245
9.5 同步串行接口SPI的应用 247
9.5.1 硬件电路 247
9.5.2 软件编程 247
第10章 AT90S8535单片机综合应用10.1 电子琴模拟设计 256
10.1.1 硬件电路 256
10.1.2 软件编程 257
10.1.3 系统调试与仿真 262
10.2 汽车转弯信号灯模拟设计 266
10.2.1 硬件电路 266
10.2.2 软件编程 267
10.2.3 系统调试与仿真 271
10.3 交通灯模拟设计 275
10.3.1 硬件电路 275
10.3.2 软件编程 275
10.3.3 系统调试与仿真 283
10.4 数字钟模拟设计 289
10.4.1 硬件电路 289
10.4.2 软件编程 290
10.4.3 系统调试与仿真 296
10.5 计算器数字输入显示模拟设计 300
10.5.1 硬件电路 300
10.5.2 软件编程 301
10.5.3 系统调试与仿真 307
10.6 电子密码锁设计1 311
10.6.1 硬件电路 311
10.6.2 软件编程 312
10.6.3 系统调试与仿真 318
10.7 电子密码锁设计2 322
10.7.1 硬件电路 322
10.7.2 软件编程 322
10.7.3 系统调试与仿真 331
10.8 直流电机驱动设计 334
10.8.1 硬件电路 334
10.8.2 软件电路 334
10.8.3 系统调试与仿真 337
10.9 步进电机驱动设计 339
10.9.1 硬件电路 340
10.9.2 软件编程 340
10.9.3 系统调试与仿真 343
10.10 数据采集系统设计 345
10.10.1 硬件电路 345
10.10.2 软件编程 346
10.10.3 系统调试与仿真 359
第11章 AVR与嵌入式C语言编程11.1 中断与复位 365
11.1.1 硬件电路 365
11.1.2 软件编程 365
11.1.3 系统调试与仿真 366
11.2 定时器/计数器0 370
11.2.1 硬件电路 370
11.2.2 软件编程 370
11.2.3 系统调试与仿真 371
11.3 定时器/计数器1应用1——产生20 kHz的方波信号 375
11.3.1 硬件电路 375
11.3.2 软件编程 376
11.3.3 系统调试与仿真 377
11.4 定时器/计数器1应用2——脉宽调制器模式 381
11.4.1 硬件电路 383
11.4.2 软件编程 383
11.4.3 系统调试与仿真 384
11.5 模拟接口——A/D转换 387
11.5.1 硬件电路 387
11.5.2 软件编程 387
11.5.3 系统调试与仿真 388
11.6 模拟接口——模拟比较器 393
11.6.1 硬件电路 394
11.6.2 软件编程 394
11.6.3 系统调试与仿真 395
第12章 新型AVR单片机及其应用 395
12.1 Atmega8单片机概述 400
12.1.1 结构与主要性能 400
12.1.2 MCU内核 403
12.1.3 复位与中断处理 403
12.1.4 存储器 404
12.1.5 系统时钟和时钟选择 405
12.1.6 系统复位 410
12.1.7 中断向量 410
12.1.8 外部中断 412
12.2 ATmega8定时器/计数器0应用1 415
12.2.1 硬件电路 415
12.2.2 软件编程 415
12.2.3 系统调试与仿真 419
12.2.4 关于定时器/计数器0 422
12.3 ATmega8定时器/计数器0应用2 424
12.3.1 硬件电路 425
12.3.2 软件编程 426
12.3.3 系统调试与仿真 430
12.4 ATmega8 I/O端口应用 433
12.4.1 硬件电路 433
12.4.2 软件编程 434
12.4.3 系统调试与仿真 436
12.4.4 关于ATmega8 I/O端口 439
12.5 ATmega8 A/D-D/A转换及串行数据传输应用 444
12.5.1 硬件电路 444
12.5.2 软件编程 446
12.5.3 系统调试与仿真 457
12.5.4 关于ATmega8定时器/计数器1 461
12.5.5 关于ATmega8 A/D转换 463
12.5.6 关于ATmega8串行通信 469
12.6 ATmega8应用1——计数及显示系统 480
12.6.1 硬件电路 480
12.6.2 软件编程 480
12.6.3 系统调试与仿真 485
12.7 ATmega8应用2——键盘显示系统 489
12.7.1 硬件电路 489
12.7.2 软件编程 489
12.7.3 系统调试与仿真 500
12.8 ATmega8应用3——PWM 502
12.8.1 硬件电路 502
12.8.2 软件编程 502
12.8.3 系统调试与仿真 513
附录 523
附录A IAR系统目录 523
附录B IAR文件类型 525
附录C 8位RISC指令结构AVR单片机选型表 527
附录D AVR器件118条指令速查表 528
附录E AT90S8535 I/O空间 530
附录F Atmega8 I/O地址空间分配表 533
附录G 通用延时子程序 535
附录H 从MCS-51到AVR的快速转换H.1 AVR和MCS-51存储器配置的对比 537
H.2 AVR输入/输出端口的使用 539
H.3 AVR和MCS-51定时器的对比 540
H.4 AVR和MCS-51中断系统的对比 542
H.5 AVR和MCS-51位操作功能的对比 543
H.6 AVR单片机内置EEPROM的使用 543
H.7 AVR单片机内置看门狗电路的使用 543
H.8 AVR和MCS-51中串口通信UART功能的对比 544
H.9 C51的源代码向PROTEUS中AVR的快速转换 544
附录I intrinsic函数 549
附录J IAR中断向量定义 550
附录K 单片机C程序优化 552
K.1 程序结构的优化 552
K.2 代码的优化 553
附录L DS18B20简介 557
L.1 总体特点 557
L.2 内部结构 557
L.3 硬件配置 558
L.4 命令序列 559
L.5 DS18B20的信号方式 560
参考文献 563