第1章 ATmega128单片机基础 1
1.1 ATmega128单片机介绍 1
1.2 ATmega128单片机的结构 3
1.2.1 ATmega128单片机的内核 4
1.2.2 ATmega128单片机的存储器体系 8
1.2.3 ATmega128单片机的系统时钟 9
1.2.4 ATmega128单片机的电源管理 14
1.2.5 ATmega128单片机的复位 16
1.2.6 ATmega128单片机的中断系统 20
1.3 ATmega128单片机的指令系统和寻址 22
第2章 ATmega128单片机的软件开发环境 26
2.1 ICCAVR软件开发环境 26
2.1.1 ICCAVR软件安装 26
2.1.2 ICCAVR菜单 29
2.1.3 ICCAVR的常用文件类型 32
2.1.4 ICCAVR的扩展关键字 33
2.1.5 ICCAVR的启动文件 33
2.1.6 ICCAVR的库函数 34
2.2 ICCAVR IDE的使用 39
应用实例1——使用ICCAVR IDE 39
第3章 ATmega128单片机的开发环境 43
3.1 ATmega128单片机开发常用的工具 43
3.1.1 ISP编程器 43
3.1.2 数字万用表 44
3.1.3 数字示波器 44
3.2 Proteus仿真软件的使用 44
应用实例2——使用Proteus仿真ATmega128单片机 44
3.3 Proteus仿真软件的应用说明 46
3.3.1 运行、单步运行、暂停和停止运行 46
3.3.2 打开对应的观察窗口 47
第4章 ATmega128单片机应用系统开发基础 48
4.1 ATmega128单片机应用系统的构成 48
4.2 ATmega128单片机应用系统开发流程 49
4.3 ATmega128单片机应用系统的硬件设计 50
4.4 3个微型ATmega128单片机应用系统 50
应用实例3——点亮8位LED 51
应用实例4——驱动7位数码管 52
应用实例5——串口数据发送和接收 55
第5章 ATmega128单片机C语言基础 59
5.1 ATmega128单片机C语言的数据类型、运算符和表达式 59
5.1.1 ATmega128单片机C语言的数据类型 60
5.1 2 ATmega128单片机C语言的常量和变量 60
应用实例6——使用常量 61
应用实例7——使用变量 61
5.1.3 ATmega128单片机C语言的算术运算、赋值运算、逻辑运算和关系运算 62
应用实例8——使用算术表达式 62
应用实例9——使用强制类型转换 63
应用实例10——逻辑运算应用 64
应用实例11——关系运算应用 65
5.1.4 ATmega128单片机C语言的位操作 65
应用实例12——位逻辑运算:位与和位或 66
应用实例13——位逻辑运算:位异或和位取反 66
应用实例14——移位运算应用 66
应用实例15——自增减运算应用 68
应用实例16——复合运算应用 69
应用实例17——逗号运算应用 69
5.1.5 运算符的优先级 69
5.2 ATmega128单片机C语言的结构语句 70
5.2.1 顺序结构 70
应用实例18——顺序结构语句应用 71
5.2.2 选择结构 71
应用实例19——if语句的基本结构应用 73
应用实例20——switch语句的应用 75
5.2.3 循环结构 75
应用实例21——while语句的应用 76
应用实例22——do while语句应用 77
应用实例23——for语句的应用 78
应用实例24——循环语句的进阶用法 79
5.2.4 break语句、continue语句和goto语句 79
应用实例25——break语句的应用 80
应用实例26——continue语句的应用 81
应用实例27——goto语句的应用 83
第6章 ATmega128单片机高阶C语言 84
6.1 ATmega128单片机C语言的函数 85
6.1.1 函数的分类 85
6.1.2 函数的定义 85
应用实例28——无参函数的应用 87
应用实例29——有参函数的应用 88
6.1.3 函数的调用 88
应用实例30——函数的预先定义 89
应用实例31——函数的后定义 89
应用实例32——函数的递归调用 91
应用实例33——函数的嵌套调用 92
6.1.4 内部函数和外部函数 92
6.1.5 变量类型 93
应用实例34——静态局部变量应用 94
应用实例35——全局变量应用 95
6.2 ATmega128单片机C语言的数组和指针 96
6.2.1 数组 96
应用实例36——一维数组的应用 97
应用实例37——二维数组的应用 98
应用实例38——字符数组的应用 99
6.2.2 指针 101
应用实例39——指针的应用 102
6.2.3 数组和指针 103
应用实例40——数组下标引用输出 103
应用实例41——数组名作为地址输出 104
应用实例42——指针引用数组输出 105
应用实例43——使用指针运算引用数组输出 105
应用实例44——数组下标引用二维数组的输出 106
应用实例45——指针引用二维数组的输出 107
6.2.4 字符串和指针 108
应用实例46——字符指针的字符数组输出 109
6.2.5 数组、指针和函数的联系 110
应用实例47——数组作为函数参数的应用 110
应用实例48——指针作为函数参数 111
应用实例49——返回指针的函数 112
6.2.6 指针数组和指向指针的指针 113
应用实例50——指向指针的指针应用 114
6.3 ATmega128单片机C语言中的自定义数据类型 115
6.3.1 结构体 115
应用实例51——结构体的应用 117
应用实例52——结构体数组应用 117
应用实例53——结构体变量指针 118
应用实例54——结构体指针变量作为函数参数 119
6.3.2 联合体(共用体) 120
应用实例55——结构体的应用 121
6.3.3 枚举 122
应用实例56——枚举变量的应用 122
6.4 ATmega128单片机C语言程序设计技巧 123
6.4.1 养成好的编程习惯 123
6.4.2 宏定义 125
应用实例57——宏定义的应用 125
应用实例58——参数宏定义的应用 126
6.4.3 条件编译 127
应用实例59——条件编译 128
6.4.4 一些关键字的使用 129
第7章 ATmega128单片机的I/O引脚应用实例 131
7.1 ATmega128单片机的I/O引脚基础 131
7.1.1 ATmega128单片机的I/O引脚配置 132
7.1.2 ATmega128单片机读取引脚电平 134
7.1.3 ATmega128单片机的I/O引脚低功耗处理 135
7.1.4 ATmega128单片机的I/O引脚的第二功能 135
7.2 ATmega128单片机扩展发光二极管(LED) 141
7.2.1 发光二极管(LED)基础 141
7.2.2 ATmega128单片机扩展发光二极管(LED)应用实例 142
应用实例60——使用I/O引脚驱动LED闪烁 142
应用实例61——使用I/O引脚驱动流水灯 144
7.3 ATmega128单片机扩展数码管 146
7.3.1 一位数码管基础 146
7.3.2 ATmega128扩展一位数码管应用实例 148
应用实例62——使用I/O引脚驱动数码管显示 148
7.3.3 多位数码管基础 150
7.3.4 ATmega128单片机扩展多位数码管应用实例 151
应用实例63——使用I/O引脚驱动多位数码管动态显示 151
7.4 ATmega128单片机扩展按键、键盘和拨码开关 154
7.4.1 独立按键基础 154
7.4.2 ATmega128单片机扩展独立按键应用实例 155
应用实例64——使用I/O引脚扩展独立按键 155
7.4.3 行列扫描键盘基础 158
7.4.4 ATmega128单片机扩展行列扫描键盘应用实例 159
应用实例65——使用I/O引脚扩展行列扫描键盘 159
7.4.5 拨码开关基础 161
7.4.6 ATmega128单片机扩展拨码开关应用实例 162
应用实例66——使用I/O引脚扩展拨码开关 162
7.5 ATmega128单片机扩展继电器 164
7.5.1 继电器基础 164
7.5.2 功率驱动器件基础 165
7.5.3 ATmega128单片机扩展继电器应用实例 168
应用实例67——使用I/O引脚扩展继电器 168
7.6 ATmega128单片机扩展蜂鸣器 170
7.6.1 蜂鸣器基础 170
7.6.2 ATmega128单片机扩展蜂鸣器应用实例 171
应用实例68——使用I/O引脚扩展蜂鸣器 171
7.7 ATmega128单片机扩展电动机 174
7.7.1 直流电动机基础 174
7.7.2 ATmega128单片机扩展直流电动机的应用实例 175
应用实例69——使用I/O引脚扩展直流电动机 175
7.7.3 步进电动机基础 177
7.7.4 ATmega128单片机扩展步进电动机的应用实例 178
应用实例70——使用I/O引脚扩展步进电动机 178
第8章 ATmega128单片机的外部中断应用实例 182
8.1 ATmega128单片机的外部中断基础 182
8.1.1 外部中断控制寄存器A(EICRA) 182
8.1.2 外部中断控制寄存器B(EICRB) 183
8.1.3 外部中断屏蔽寄存器(EIMSK) 183
8.1.4 外部中断标志寄存器(EIFR) 184
8.2 ATmega128单片机的外部中断应用实例 184
应用实例71——外部中断7脉冲计数 184
应用实例72——外部中断控制LED 186
应用实例73——多个外部中断联合计数 188
第9章 ATmega128单片机的内部E2PROM应用实例 192
9.1 E2PROM基础 192
9.1.1 地址寄存器EEARH和EEARL 192
9.1.2 数据寄存器EEDR 192
9.1.3 控制寄存器EECR 193
9.1.4 E2PROM的操作时间 193
9.1.5 E2PROM的写操作 194
9.1.6 E2PROM的读操作 195
9.1.7 E2PROM的掉电处理 195
9.2 ATmega128单片机的E2PROM应用实例 195
应用实例74——用E2PROM保存用户数据 195
应用实例75——E2PROM的数据写入和读出 198
第10章 ATmega128单片机的USART模块应用实例 203
10.1 USART模块应用基础 203
10.1.1 USART的相关寄存器 205
10.1.2 USART的时钟发生器 208
10.1.3 USART的数据帧格式 210
10.1.4 USART的使用方法 211
10.2 ATmega128单片机的USART应用实例 216
应用实例76——USART0的数据发送 216
应用实例77——USART1的数据发送 219
应用实例78——Proteus中的虚拟串口调试 222
应用实例79——使用USART0和计算机进行双向数据通信 224
应用实例80——综合使用USART0和USART1 228
应用实例81——使用单片机A控制单片机B 231
第11章 ATmega128单片机的定时/计数器模块应用实例 236
11.1 定时/计数器T/C0基础 236
11.1.1 定时/计数器T/C0的工作模式 236
11.1.2 T/C0的相关寄存器 240
11.2 定时/计数器T/C1和T/C3基础 243
11.2.1 T/C1和T/C3的工作模式 243
11.2.2 T/C1和T/C3的相关寄存器 247
11.3 定时/计数器T/C2基础 253
11.3.1 T/C2的工作模式 253
11.3.2 T/C2的相关寄存器 254
11.4 定时/计数器模块应用实例 256
应用实例82——T/C0控制LED闪烁 256
应用实例83——T/C1控制LED闪烁 259
应用实例84——T/C2脉冲计数 261
应用实例85——T/C1实现频率计 265
应用实例86——T/C1实现占空比可调PWM输出 268
应用实例87——T/C0的秒定时 271
应用实例88——频率可调的PWM信号输出 274
第12章 ATmega128单片机的TWI(I2C)接口总线模块应用实例 279
12.1 TWI(I2C)总线基础 279
12.1.1 TWI(I2C)接口总线的一些术语 280
12.1.2 TWI(I2C)接口总线的数据传输过程和帧格式 280
12.1.3 TWI(I2C)总线器件的地址 282
12.2 ATmega128单片机的TWI(I2C)接口总线模块应用基础 282
12.2.1 ATmega128单片机的TWI(I2C)接口总线模块构成 283
12.2.2 ATmega128单片机的TWI(I2C)接口总线模块寄存器 284
12.2.3 ATmega128单片机的TWI(I2C)接口总线模块的工作模式 287
12.2.4 ATmega128单片机的TWI(I2C)接口总线模块的使用 294
12.3 ATmega128单片机的TWI(I2C)接口总线模块应用实例 296
应用实例89——使用TWI(I2C)总线进行双机通信 296
第13章 ATmega128单片机的SPI接口总线模块应用实例 303
13.1 SPI总线基础 303
13.1.1 SPI总线的结构 303
13.1.2 SPI总线的时序 304
13.2 ATmega128单片机的SPI接口总线模块应用基础 305
13.2.1 ATmega128单片机的SPI接口总线模块的寄存器 305
13.2.2 ATmega128单片机的SPI接口总线模块的工作模式 307
13.3 ATmega128单片机的SPI接口总线模块应用实例 309
应用实例90——使用SPI总线接口进行双机通信 309
第14章 ATmega128单片机的模拟比较器模块应用实例 316
14.1 ATmega128单片机的模拟比较器模块应用基础 316
14.1.1 ATmega128单片机模拟比较器模块的寄存器 316
14.1.2 ATmega128单片机模拟比较器模块输入通道 318
14.2 ATmega128单片机的模拟比较器模块应用实例 318
应用实例91——使用比较器模块比较两个模拟信号 318
应用实例92——使用比较器模块将正弦波信号转换为方波信号 321
应用实例93——多通道模拟信号电压比较 324
第15章 ATmega128单片机的ADC模块应用实例 328
15.1 ADC基础知识 328
15.2 ATmega128单片机的ADC模块应用基础 330
15.2.1 ATmega128单片机的ADC模块的相关寄存器 330
15.2.2 ATmega128单片机的ADC模块的使用 334
15.3 ATmega128单片机的ADC模块应用实例 339
应用实例94——单通道A/D采样 339
应用实例95——多通道A/D采样 342
应用实例96——差分输入A/D采样 345
应用实例97——增益放大A/D采样 349
应用实例98——定时器控制A/D采样 352
应用实例99——多通道电压比较和A/D采样 356
第16章 ATmega128单片机的看门狗模块应用实例 360
16.1 ATmega128单片机看门狗模块应用基础 360
16.2 ATmega128单片机看门狗模块应用实例 361
应用实例100——ATmega128单片机看门狗模块工作状态测试 361