本教材是根据“工程教育专业认证”和“卓越工程师培养计划”等需求而编写,旨在提高大学生单片机控制系统设计和C语言程序设计方面的能力,进而培养学生解决复杂工程问题的能力。
本教材以ATmega16单片机为蓝本,共分3篇,由15章组成。第1~3章为开发基础篇,主要介绍AVR单片机的特点、开发编译环境以及C语言开发基础。第4~11章为实战演练篇,针对ATmega16单片机的数字I/O端口、中断系统、定时器/计数器、A/D转换、SPI总线、异步通信、TWI总线等功能模块设计典型应用实例,并对相应外围器件进行详细介绍,将知识讲解与实际应用充分结合。第12~15章为综合实践篇,从设计思路、硬件设计、软件设计三方面详细介绍单片机音乐播放器、ZLG7290的键盘显示系统、基于DS1302的电子时钟和基于超声波检测的智能避障小车四个综合项目,旨在锻炼学生综合运用所学知识完成小型应用系统设计和调试的能力。
样章试读
目录
- 目录
前言
第一篇 开发基础篇
第1章 AVR单片机概述 1
1.1 认识单片机 1
1.1.1 单片机的定义及特点 1
1.1.2 单片机的发展历史 1
1.1.3 单片机的系列 2
1.1.4 单片机的开发技术 2
1.2 单片机的应用领域及前景 3
1.2.1 单片机的应用领域 3
1.2.2 单片机的发展趋势 3
1.3 AVR系列单片机概述 5
1.3.1 AVR系列单片机的主要特征 5
1.3.2 AVR系列单片机的选型 6
1.4 ATmega16单片机概述 6
1.4.1 ATmega16单片机的性能 7
1.4.2 ATmega16单片机的封装与引脚 9
1.4.3 ATmega16单片机的存储器结构 11
第2章 ATmega16 的开发环境与开发技巧 13
2.1 AVR单片机开发工具概述 13
2.2 ICCAVR开发编译环境 13
2.2.1 ICC AVR简介 14
2.2.2 ICCV8安装方法 15
2.2.3 ICCV8快速入门 16
2.2.4 ICC AVR的扩展关键字及库函数 22
2.3 ISP编程器控制平台 23
2.3.1 下载器 23
2.3.2 编程平台 26
2.4 ATmega16单片机学习板的设计与制作 28
2.4.1 时钟电路设计 29
2.4.2 复位电路设计 29
2.4.3 I/O端口输出电路设计 30
2.4.4 A/D转换滤波电路设计 30
2.4.5 ISP下载接口电路设计 31
2.4.6 电源电路设计 31
2.5 ATmega16单片机系统开发技巧及开发流程 32
2.5.1 AVR单片机的仿真调试 32
2.5.2 基于ISP的AVR单片机调试技巧 33
2.5.3单片机应用系统开发流程 34
第3章 AVR单片机C语言基础 36
3.1 C语言的发展与特点 36
3.1.1 C语言的产生及发展 36
3.1.2 C语言的特点 36
3.2 C语言程序组成 37
3.2.1 C语言程序结构 37
3.2.2 标识符与关键字 37
3.3 C语言基本数据类型 39
3.4 C语言常量、变量 39
3.4.1 常量 40
3.4.2 变量 40
3.5 运算符与表达式 41
3.5.1 算术运算符与算术表达式 41
3.5.2 赋值运算符和赋值表达式 42
3.5.3 关系运算符与关系表达式 44
3.5.4 逻辑运算符与逻辑表达式 45
3.5.5 位运算符与位运算表达式 46
3.5.6 条件运算符与条件表达式 48
3.5.7 逗号运算符与逗号表达式 48
3.5.8 运算符的优先级和结合性 48
3.6 程序基本结构及流程图 49
3.6.1 顺序结构及其流程图 49
3.6.2 选择结构及其流程图 50
3.6.3 循环结构及其流程图 52
3.7 C语言中的数组 56
3.7.1 一维数组的定义和引用 56
3.7.2 二维数组的定义和引用 58
3.7.3 字符数组与字符串 59
3.8 函数 60
3.8.1 函数的定义 61
3.8.2 函数的参数传递与返回值 61
3.8.3 函数的调用 62
3.8.4 函数的嵌套 63
3.9 编译预处理 65
3.9.1 宏定义 65
3.9.2 文件包含 67
3.9.3 条件编译 67
第二篇 实战演练篇
第4章 通用数字I/O端口及其应用 71
4.1 通用数字I/O端口简介 71
4.2 通用数字I/O端口的基本特性 71
4.3 通用数字I/O端口相关寄存器 72
4.3.1 数据方向寄存器DDRx 73
4.3.2 数据寄存器PORTx 73
4.3.3 端口输入引脚寄存器PINx 73
4.4 通用数字I/O口的设置与编程 73
4.5 8 位LED灯显示系统 75
4.5.1 硬件电路设计 75
4.5.2 软件设计 75
4.6 独立按键键值解读系统 76
4.6.1 机械触点按键常识 76
4.6.2 硬件电路设计 76
4.6.3 软件设计 77
4.7 多功能8位LED流水灯 78
4.7.1 硬件电路设计 78
4.7.2 软件设计 78
4.7.3 系统调试 82
4.8 多功能数码管显示器 82
4.8.1 LED数码管介绍 82
4.8.2 多位LED数码管动态显示 83
4.8.3 硬件电路设计 84
4.8.4 多功能数码管显示器软件设计 84
4.8.5 下载调试 86
第5章 中断系统及其应用 88
5.1 中断和中断系统 88
5.2 ATmega16单片机的中断系统 89
5.2.1 ATmega16中断源和中断向量 89
5.2.2 ATmega16中断响应过程 90
5.2.3 ATmega16中断优先级 90
5.2.4 ATmega16中断响应时间 91
5.3 ATmega16单片机外部中断相关寄存器 91
5.3.1 MCU控制寄存器MCUCR 92
5.3.2 MCU控制与状态寄存器MCUCSR 92
5.3.3 通用中断控制寄存器GICR 93
5.3.4 通用中断标志寄存器GIFR 93
5.4 利用外部中断方式实现多功能8位流水灯 94
5.4.1 硬件电路设计 94
5.4.2 软件设计 95
5.4.3 下载调试 99
第6章 SPI总线模块及其应用 100
6.1 SPI总线简介 100
6.1.1 SPI总线的构成及信号类型 100
6.1.2 SPI总线的操作时序 101
6.1.3 硬件SPI与软件SPI 102
6.2 ATmega16单片机的SPI总线模块 102
6.2.1 SPI总线接口及特点 102
6.2.2 SPI总线的主从接口 102
6.2.3 SS引脚的功能 103
6.3 SPI总线模块相关寄存器 104
6.3.1 SPI控制寄存器SPCR 104
6.3.2 SPI状态寄存器SPSR 105
6.3.3 SPI数据寄存器SPDR 105
6.4 SPI总线模块时序 106
6.5 基于SPI总线实现74HC595驱动多位数码管动态显示 107
6.5.1 移位寄存器74HC595介绍 107
6.5.2 硬件电路设计 109
6.5.3 软件设计 110
6.5.4 下载调试 113
第7章 定时器/计数器及其应用 114
7.1 ATmega16单片机定时器/计数器概述 114
7.2 定时器/计数器0(T/C0) 117
7.2.1 T/C0概述 117
7.2.2 T/C0的工作模式 118
7.2.3 T/C0的相关寄存器 119
7.3 定时器/计数器1(T/C1) 122
7.3.1 T/C1概述 122
7.3.2 T/C1的工作模式 123
7.3.3 T/C1的相关寄存器 127
7.3.4 访问16位寄存器 131
7.4 定时器/计数器2(T/C2) 133
7.4.1 T/C2概述 133
7.4.2 T/C2的工作模式 134
7.4.3 T/C2的相关寄存器 134
7.5 用T/C0实现流水灯的控制 138
7.6 用T/C0产生占空比为15%的PWM波 140
7.7 用T/C1实现LED滚动闪烁显示 141
7.8 简易电子门铃 144
7.8.1 蜂鸣器介绍 144
7.8.2 硬件电路设计 145
7.8.3 软件设计 146
7.8.4 下载调试 148
第8章 A/D转换模块及其应用 150
8.1 A/D转换基础知识 150
8.1.1 A/D转换基本原理 150
8.1.2单片机内部A/D转换的原理 151
8.2 内置A/D转换模块的结构及特点 151
8.2.1 A/D转换模块的结构 151
8.2.2 A/D转换模块的特点 153
8.3 ADC模块相关寄存器 153
8.3.1 ADC多工选择寄存器ADMUX 153
8.3.2 ADC控制和状态寄存器A(ADCSRA) 155
8.3.3 ADC数据寄存器(ADCL和ADCH) 156
8.3.4 ADC特殊功能I/O寄存器SFIOR 157
8.4 ADC模块的使用 157
8.4.1 启动一次转换 157
8.4.2 ADC转换时序 158
8.4.3 ADC输入通道和参考电源选择 159
8.4.4 A/D转换结果 160
8.5 简易数字电压表 160
8.5.1 硬件电路设计 161
8.5.2 软件设计 161
8.5.3 系统调试 165
第9章 异步通信模块及其应用 166
9.1单片机串行通信原理 166
9.1.1 串行通信 166
9.1.2 常用硬件通信协议 168
9.2 USART模块概述 169
9.2.1 USART模块特点 169
9.2.2 USART模块的组成 169
9.2.3 时钟发生器 169
9.2.4 帧格式及校验位的计算 171
9.3 USART模块相关寄存器 172
9.3.1 USART数据寄存器UDR 172
9.3.2 USART控制和状态寄存器A(UCSRA) 172
9.3.3 USART控制和状态寄存器B(UCSRB) 173
9.3.4 USART控制和状态寄存器C(UCSRC) 174
9.3.5 USART波特率寄存器(UBRRL和UBRRLH) 175
9.4 USART模块的使用 175
9.4.1 USART的初始化 175
9.4.2 数据发送 176
9.4.3 数据接收 178
9.4.4 异步数据接收 180
9.5 基于USB的PC机与单片机通信设计 181
9.5.1 USB简介 181
9.5.2 硬件电路设计 181
9.5.3 软件设计 183
9.5.4 系统调试 186
第10章 TWI总线模块及其应用 188
10.1 TWI总线概述 188
10.1.1 I2C总线概述 188
10.1.2 TWI总线连接及特点 190
10.1.3 TWI模块的组成 191
10.1.4 TWI数据传输和帧格式 193
10.1.5 多主机总线仲裁和同步 195
10.2 TWI总线模块相关寄存器 195
10.2.1 TWI比特率寄存器TWBR(TWI Bit Rate Register) 195
10.2.2 TWI控制寄存器TWCR 196
10.2.3 TWI状态寄存器TWSR 197
10.2.4 TWI数据寄存器TWDR 197
10.2.5 TWI(从机)地址寄存器TWAR 197
10.3 TWI总线模块工作时序及传输模式 198
10.3.1 TWI总线工作时序 198
10.3.2 TWI总线数据传输模式 199
10.4 TWI总线读取AT24C02 206
10.4.1 AT24C02介绍 206
10.4.2 硬件电路设计 207
10.4.3 软件设计 207
第11章 复位系统及休眠模式 212
11.1 ATmega16单片机的系统时钟 212
11.1.1 时钟源的选择 213
11.1.2 晶体振荡器 213
11.1.3 低频晶体振荡器 214
11.1.4 外部RC振荡器 215
11.1.5 标定的片内RC振荡器 215
11.1.6 外部时钟 216
11.2 ATmega16单片机休眠模式与电源管理 217
11.2.1 空闲模式 217
11.2.2 ADC噪声抑制模式 217
11.2.3 掉电模式 217
11.2.4 省电模式 217
11.2.5 Standby模式及扩展Standby模式 218
11.2.6 休眠模式设置 218
11.2.7 最小化功耗 218
11.3 ATmega16单片机复位系统 219
11.3.1 复位源 219
11.3.2 MCU控制和状态寄存器MCUCSR 222
11.3.3 看门狗定时器 222
11.4 复位系统及休眠模式的应用实例 224
第三篇 综合实践篇
第12章 单片机音乐播放器 226
12.1 单片机音乐播放器功能介绍 226
12.2 单片机音乐播放器设计思路 226
12.2.1 PWM原理 226
12.2.2 单片机音乐播放器原理 228
12.2.3 系统工作流程 228
12.3 单片机音乐播放器硬件电路设计 229
12.4 单片机音乐播放器软件设计 229
12.4.1 软件工作流程 229
12.4.2 软件应用代码 230
12.5 下载调试 237
第13章 基于ZLG7290B的键盘显示系统设计 238
13.1 键盘显示系统介绍 238
13.2 ZLG7290B芯片介绍 238
13.2.1 引脚说明及典型应用电路 239
13.2.2 寄存器介绍 241
13.2.3 控制命令 243
13.3 键盘显示系统硬件电路设计 244
13.4 键盘显示系统软件设计 245
13.4.1 ZLG7290驱动软件设计 245
13.4.2 综合软件设计 252
13.5 下载调试 253
第14章 基于DS1302的电子时钟设计 255
14.1 电子时钟系统介绍 255
14.2 电子时钟系统设计思路 255
14.3 DS1302时钟芯片介绍 255
14.3.1 DS1302的结构和性能 255
14.3.2 DS1302的控制字和数据读写时序 256
14.3.3 DS1302的内部寄存器 257
14.4 LCD1602液晶显示模块 259
14.4.1 LCD1602基本参数及引脚说明 259
14.4.2 LCD1602操作指令 260
14.4.3 LCD1602操作时序 261
14.4.4 LCD1602的标准字库表 262
14.5 电子时钟硬件电路设计 263
14.6 电子时钟软件设计 264
14.6.1 软件流程 264
14.6.2 DS1302驱动软件设计 264
14.6.3 LCD1602驱动软件设计 267
14.6.4 电子时钟综合软件设计 270
14.7 下载调试 272
第15章 基于超声波检测的智能避障小车设计 273
15.1 智能避障小车介绍 273
15.2 智能避障小车总体设计 273
15.3 智能避障小车硬件电路设计 274
15.3.1 超声波测距模块电路设计 274
15.3.2 舵机及其控制系统设计 275
15.3.3 电机及其驱动系统设计 275
15.3.4 电源电路设计 278
15.3.5 智能避障小车硬件电路原理图 278
15.4 智能避障小车软件设计 279
15.4.1 软件流程图 279
15.4.2 超声波测距程序设计 279
15.4.3 避障算法设计 280
15.4.4 电机驱动程序设计 280
15.4.5 软件应用代码 280
15.5 下载调试 284
参考文献 286