通识教育教材 > 办公自动化

AVR单片机项目开发教程(C语言) —基于CDIO项目教学

书号:9787113272364 套系名称:普通高等教育“十四五”规划教材

作者:郑贵省 王剑宇 出版日期:2020-09-01

定价:49.80 页码 / 开本:288 /16

策划编辑:魏娜 责任编辑:贾星

适用专业:计算机教材 适用层次:本科

最新印刷时间:2022-02-20

资源下载
教学课件(暂无) 教学素材(暂无)
习题答案(暂无) 教学案例(暂无)
教学设计(暂无) 教学视频(暂无)
内容简介 前言 目录 作者介绍 图书特色
  • 本书以项目为载体,通过丰富的实例详细介绍ATmega16单片机C语言程序设计和单片机控制系统的应用。本书共9章,包含25个项目,主要内容包括单片机基础、单片机I/O 及C 语言编程、单片机外部中断应用、单片机定时器应用设计、单片机的串行通信、单片机总线应用、单片机I/O 扩展设计、A/D 转换器的应用设计、开源硬件平台和嵌入式实时操作系统等。
    本书可作为普通高等院校相关专业的教材,也可作为军事院校相关专业的教材,还可供AVR单片机项目开发人员参考。
    
  • 中华人民共和国教育部相继出台了《教育部关于加快建设高水平本科教育全面提高人才培养能力的意见》(教高〔2018〕2号)和《教育部关于狠抓新时代全国高等教育本科教育工作会议精神落实的通知》(教高函〔2018〕8号),明确指出:各高校要全面梳理各门课程的教学内容,淘汰“水课”、打造“金课”,合理提升学业挑战度、增加课程难度、拓展课程深度,切实提高课程教学质量。
    课程是人才培养的核心要素。学生从大学里受益的最直接、最核心、最显效的是课程。课程是教育最微观、最普通的问题,但它要解决的却是教育中最根本的问题——培养人。课程虽然属微观问题,却是个根本问题,是关乎宏观的战略大问题;课程是中国大学普遍存在的短板、瓶颈、软肋,是一个关键问题;课程是体现“以学生发展为中心”理念的“最后一公里”;课程正是落实“立德树人”根本任务的具体化、操作化和目标化。
    CDIO(构思—设计—实现—运行)注重学科知识体系构建探究式“做中学”,以实际问题的“构思、设计、实现、运行”过程为载体,探究式“做中学”是主要的教学方法,进行一体化课程设计及实践。让学生在“想明白、做明白、说明白”中培养思维能力与品质,创造性地应用知识去提升解决实际问题能力、知识迁移能力、交流协调能力和团队合作工作能力,能够使学生以探索、主动、实践的方式有效地学习。
    CDIO项目式教学,将学生变成学习的主体,改变灌输式课堂和填鸭式教育,教师由“主播”转变为“主持”,学生由“观众”变为“演员”,将学生能力的培养由记忆、理解向应用、分析、评价和创造的高阶能力转变。
    本书以项目为载体,为了在学习后能熟练进行开源硬件平台Arduino的创意设计与开发,采用了AVR的ATmega16单片机,借助CCAVR、Proteus虚拟软件,通过丰富的实例详细介绍ATmega16单片机C语言程序设计和单片机控制系统的应用技术。本书主要内容包括单片机基础、单片机I/O及C语言编程、单片机外部中断应用、单片机定时器应用设计、单片机的串行通信、单片机总线应用、单片机I/O扩展设计、A/D转换器的应用设计、开源硬件平台以及嵌入式实时操作系统9章25个项目。
    本书主要特色如下:
    (1)项目驱动教学。本书以项目为载体,强调“教、学、做”一体,坚持理论知识够用的原则,并将知识点分散到多个项目中,使学生能够边学边做,轻松进行AVR单片机项目开发。
    (2)软硬结合,虚实结合。沿用传统单片机学习与开发经验,通过相关编译软件(如ICCAVR)编写程序并生成*.cof(或*.hex)文件,然后在Proteus中绘制好硬件电路图,调用*.cof(或*.hex)文件进行虚拟仿真。把实验室搬到个人计算机上,强化了实践,同时又可以在实体实验室进行实践。同时,通过AVR单片机的学习,读者能熟练进行开源硬件平台Arduino的创意设计与开发。
    (3)采用C语言编程,降低入门难度。C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。用C语言来编写程序会大大缩短开发周期,且程序的可读性好,易于扩展和维护。
    (4)培养学生计算思维。注重程序设计的根本思想及计算思维的培养。程序只是人类思想的具体实现,人类把计算机擅长做的事情让机器来实现,编程实现只是形式,人的思维才是编程最根本的因素,具有决定性作用。
    (5)知行合一。CDIO项目式教学创建“做中学”课堂体验,百闻不如一见,百见不如一干,CDIO实现学科理论和实践有机融合,强调学生“知识、能力和素质”协调发展,又区别于传统的“从做中学”。其一体化教学模式既有别于传统的学科式教学,亦不同于传统的项目式教学,本质差异在于CDIO试图使学科理论教学与项目实践训练达到融合,使系统化的学科理论与项目实践融于一体,不仅没有弱化学科,反而强调在已有的学科体系框架下进一步构建相对完善的学科知识群。
    本书由郑贵省、王剑宇任主编,卢爱臣、魏建宇、马文彬任副主编,郭强、阎文建主审。贾蓓、阚媛、吴茜、任芳、张国庆、潘妍妍、刘旭、刘占敏、田家远、王鹏、张婷燕、韩芳芳、于波参与了编写。
    教学改革永远在路上,受编者学识水平所限,疏漏之处在所难免,热切期望广大读者批评指正。
    
    
    编  者    
    2020年2月
    
    
  • 第1 章 单片机基础 ································ 1
    1.1 项目1:认识ATmega16 单片机 ······· 1
    1.1.1 ATmega16 的封装 ················· 1
    1.1.2 ATmega16 的内部结构 ··········· 2
    1.2 项目2:点亮LED 的硬件设计 ········· 5
    1.2.1 单片机系统的开发过程——自顶向下,自底向上 ······· 5
    1.2.2 Proteus 的使用 ····················· 7
    1.2.3 Proteus 的库 ······················ 17
    1.2.4 Proteus 8 输入原理图——点亮LED ·························· 18
    1.2.5 项目硬件电路设计 ·············· 23
    1.3 项目3:点亮LED 的软件设计 ······· 23
    1.3.1 WinAVR 编写程序及Proteus联合仿真 ·························· 23
    1.3.2 C 语言的基本结构 ·············· 23
    1.3.3 C 语言的main 函数 ············· 25
    1.3.4 C 语言的优势 ···················· 25
    1.3.5 ATmega16 I/O 端口的硬件设计 ································ 26
    1.3.6 ATmega16 的I/O 寄存器——软件设计接口 ·············· 27
    1.3.7 ATmega16 的寄存器及存储结构 ································ 29
    1.3.8 单片机最小系统 ················· 32
    1.3.9 学生项目1:闪烁的LED ····· 33
    1.3.10 学生项目2:循环点亮8 只LED ························ 35
    1.4 项目4:ATmega16 熔丝位设定 ······ 37
    第2 章 单片机I/O 及C 语言编程 ············ 44
    2.1 项目5:单片机控制8 只LED依次点亮 ·································· 44
    2.1.1 项目背景 ························· 44
    2.1.2 基础知识 ························· 44
    2.1.3 项目硬件电路设计 ············· 57
    2.1.4 项目驱动软件设计 ············· 59
    2.1.5 学生项目:花样流水灯 ········ 61
    2.2 项目6:Proteus 仿真数码管显示数字0~9 ································ 61
    2.2.1 项目背景 ························· 61
    2.2.2 基础知识 ························· 61
    2.2.3 项目硬件电路设计 ············· 65
    2.2.4 项目驱动软件设计 ············· 66
    2.2.5 学生项目:数码管循环显示数字0~9 ························· 67
    2.3 项目7:按键控制LED 亮灭 ········· 68
    2.3.1 项目背景 ························· 68
    2.3.2 基础知识 ························· 68
    2.3.3 项目硬件电路设计 ············· 72
    2.3.4 项目驱动软件设计 ············· 75
    2.3.5 学生项目:转向灯 ············· 76
    2.4 项目8:键盘按键显示在数码管上 ···· 76
    2.4.1 项目背景 ························· 76
    2.4.2 基础知识 ························· 77
    2.4.3 项目硬件电路设计 ············· 79
    2.4.4 项目驱动软件设计 ············· 80
    2.4.5 学生项目:数码管显示4×4 矩阵键盘 ···················· 82
    第3 章 单片机外部中断应用 ·················· 84
    3.1 中断的基本概念 ························· 84
    3.1.1 什么是中断 ······················· 84
    3.1.2 中断的意义 ······················· 84
    3.1.3 中断优先级和中断嵌套 ········ 85
    3.2 中断源和中断向量 ······················ 85
    3.2.1 中断源 ····························· 85
    3.2.2 中断向量 ·························· 85
    3.3 ATmega16 的中断系统 ················· 86
    3.3.1 ATmega16 的中断源和中断向量 ································ 86
    3.3.2 ATmega16 的中断控制 ········· 87
    3.3.3 ATmega16 的外部中断 ········· 88
    3.3.4 外部中断相关寄存器 ··········· 89
    3.3.5 中断服务程序 ···················· 91
    3.4 项目9:中断报警控制 ················· 92
    3.4.1 项目硬件电路设计 ·············· 92
    3.4.2 项目驱动软件设计 ·············· 93
    3.4.3 学生项目1:中断计数器 ······ 94
    3.4.4 学生项目2:中断控制发光二极管 ····························· 95
    3.4.5 实验板项目 ······················· 96
    第4 章 单片机定时器应用设计 ··············· 98
    4.1 项目10:定时器制作计数器 ········· 98
    4.1.1 项目背景 ·························· 98
    4.1.2 基础知识 ·························· 98
    4.1.3 项目硬件电路设计 ············· 111
    4.1.4 项目驱动软件设计 ············· 112
    4.1.5 学生项目:电子跑表 ·········· 113
    4.2 项目11:PWM模式控制调光灯 ······ 117
    4.2.1 项目背景 ························· 117
    4.2.2 基础知识 ························· 117
    4.2.3 项目硬件电路设计 ············· 118
    4.2.4 项目驱动软件设计 ············· 119
    4.2.5 学生项目:PWM 模式生成锯齿波 ···························· 121
    4.3 项目12:音符发生器 ················· 123
    4.3.1 项目背景 ························ 123
    4.3.2 基础知识 ························ 123
    4.3.3 项目硬件电路设计 ············ 132
    4.3.4 项目驱动软件设计 ············ 133
    4.3.5 学生项目:脉冲频率测量 ····· 134
    第5 章 单片机的串行通信 ··················· 138
    5.1 项目13:双机通信 ···················· 138
    5.1.1 项目背景 ························ 138
    5.1.2 基础知识:通信 ··············· 138
    5.1.3 项目硬件电路设计 ············ 144
    5.1.4 项目驱动软件设计 ············ 144
    5.1.5 系统集成与调试 ··············· 148
    5.2 项目14:可通信的专家评价系统 ···· 149
    5.2.1 项目背景 ························ 149
    5.2.2 项目硬件电路设计 ············ 149
    5.2.3 项目驱动软件设计 ············ 150
    5.2.4 项目系统集成与调试·········· 157
    5.3 项目15:车载导航中的北斗定位数据获取 ································· 160
    5.3.1 项目背景 ························ 160
    5.3.2 项目方案设计 ·················· 160
    5.3.3 北斗定位模块数据包解析 ······························· 161
    5.3.4 项目硬件电路设计 ············ 163
    5.3.5 项目驱动软件设计 ············ 165
    5.3.6 项目系统集成与调试·········· 168
    第6 章 单片机总线应用 ······················· 171
    6.1 项目16:MPU-6050 的货物运输姿态检测器······························· 171
    6.1.1 项目背景 ························ 171
    6.1.2 项目方案设计 ·················· 171
    6.1.3 基础知识 ························ 171
    6.1.4 项目硬件电路设计 ············ 179
    6.1.5 项目驱动软件设计 ············ 180
    6.2 项目17:SPI 总线Flash 存储行车记录信息 ································· 185
    6.2.1 项目背景 ························ 185
    6.2.2 项目方案设计 ··················· 185
    6.2.3 基础知识 ························· 186
    6.2.4 项目硬件电路设计 ············· 189
    6.2.5 项目驱动软件设计 ············· 190
    6.2.6 项目系统集成与调试 ·········· 193
    第7 章 单片机I/O 扩展设计 ················· 195
    7.1 项目18:装备开关电源指示控制系统 ········································ 195
    7.1.1 项目背景 ························· 195
    7.1.2 项目方案设计 ··················· 195
    7.1.3 基础知识 ························· 196
    7.1.4 项目硬件电路设计 ············· 197
    7.1.5 项目驱动软件设计 ············· 199
    7.1.6 项目系统集成与调试 ·········· 202
    7.2 项目19:电子音乐播放 ·············· 205
    7.2.1 项目背景 ························· 205
    7.2.2 项目方案设计 ··················· 205
    7.2.3 基础知识 ························· 206
    7.2.4 项目硬件电路设计 ············· 207
    7.2.5 项目驱动软件设计 ············· 208
    7.2.6 项目系统集成与调试 ·········· 213
    7.3 项目20:双足机器人关节控制 ········································ 214
    7.3.1 项目背景 ························· 214
    7.3.2 项目方案设计 ··················· 214
    7.3.3 基础知识 ························· 215
    7.3.4 项目硬件电路设计 ············· 218
    7.3.5 项目驱动软件设计 ············· 220
    7.3.6 项目系统集成与调试 ·········· 221
    7.4 项目21:LCD ·························· 222
    7.4.1 项目背景 ························· 222
    7.4.2 项目方案设计 ··················· 223
    7.4.3 基础知识 ························· 223
    7.4.4 项目硬件电路设计 ············· 228
    7.4.5 项目驱动软件设计 ············· 229
    7.4.6 项目系统集成与调试 ·········· 231
    第8 章 A/D 转换器的应用设计 ············· 233
    8.1 项目22:基于灰度检测的巡线机器人设计 ······························ 233
    8.1.1 项目背景 ························ 233
    8.1.2 项目方案设计 ·················· 233
    8.1.3 基础知识 ························ 234
    8.1.4 项目硬件电路设计 ············ 241
    8.1.5 项目驱动软件设计 ············ 243
    8.1.6 项目系统集成与调试·········· 246
    第9 章 开源硬件平台和嵌入式实时操作系统 ································ 249
    9.1 项目23:开源硬件平台Arduino ····· 249
    9.1.1 Arduino 的优势 ················· 249
    9.1.2 Arduino 和单片机的关系 ····· 250
    9.1.3 Arduino 硬件概述 ·············· 250
    9.1.4 Arduino 软件平台 ·············· 252
    9.2 项目24:开源平台树莓派 ··········· 261
    9.2.1 Raspberry Pi Zero ··············· 261
    9.2.2 树莓派的系统部署 ············ 262
    9.2.3 使用树莓派编写Python程序 ······························· 268
    9.3 项目25:μC/OS-Ⅱ嵌入式实时操作系统简介 ···························· 269
    9.3.1 嵌入式实时操作系统·········· 269
    9.3.2 μC/OS-Ⅱ嵌入式实时操作系统基础 ··················· 271
    9.3.3 μC/OS-Ⅱ嵌入式实时操作系统的内核 ················ 272
    9.3.4 μC/OS-Ⅱ嵌入式实时操作系统的任务管理 ·········· 273
    9.3.5 μC/OS-Ⅱ嵌入式实时操作系统的时间管理 ·········· 274
    9.3.6 μC/OS-Ⅱ嵌入式实时操作系统任务间的同步与通信 ···· 275
    9.3.7 μC/OS-Ⅱ嵌入式实时操作系统的内存管理 ················ 276
    附录A 图形符号对照表 ······················· 278
  • 郑贵省,王剑宇,陆军军事交通学院