AVR单片机原理与GCC编程实践

出版时间:2012-9  出版社:杭和平、邵明刚、 杨芳 中国电力出版社 (2012-09出版)  作者:杭和平,邵明刚,杨芳 著  页数:334  
Tag标签:无  

前言

单片机技术是一种应用性技术,一般电子产品的设计过程包括:首先考虑如何应用单片机的硬件资源、内部功能模块实现产品的需求,或者设计外围电路实现需求;其次要仔细阅读单片机的技术手册、相关资料,了解如何实现这些需求,具体涉及单片机的哪些模块和寄存器、是否满足需求;然后编写代码(软件)完成这些功能,许多代码语句是对单片机寄存器的读写。正确理解单片机的功能模块和寄存器是编写软件的关键之一。AVR单片机内部集成了许多实用的功能模块,适合C语言编程,价格低廉,性价比高,目前在电子产品市场中占有重要地位,广泛应用于各种电子产品中。    无论是从掌握单片机原理,还是从提高学习兴趣、提高学习效率上,将学习的内容具体到一个综合的实际对象上都是十分有益的。为此,我们开发了基于ATmega16单片机的Sunny2.0智能小车,作为学习ATmega16单片机的综合载体。Sunny2.0智能小车集成了多种检测和控制器件,几乎涉及ATmega16单片机的所有内部资源,是AVR单片机学习和开发的理想对象。AVR单片机中目前常用的有ATmega系列和ATtiny系列。ATtiny内部资源和I/O引脚较少,在家用电器等行业用途广泛。ATmega系列单片机内部集成了常用的功能模块,内部ROM、RAM、EEPROM选择空间大,价格低廉,是具有很好性价比的8位单片机产品系列。ATmega8和ATmega16是AVR ATmega系列的早期的产品,也是其经典产品。但是,ATmega16有更多的I/O引脚,适用于较多输入/输出的系统。另一方面,它具有JTAG调试接口,并有价格低廉的调试工具,适合开发需要。    开发工具的选择往往是学习AVR单片机面临的第一个问题。本书介绍了AVR Studio 4.18和WinAVR(AVR GCC编译器)。AVR Studio是ATMEL公司官方的开发工具,完全免费,支持众多的调试下载工具,对AVR新器件的支持也是最及时的。AVR GCC是AVR单片机的C/C++语言编译器,GCC(GNU Compiler Collection),即开源的GNU 编译器集合。在开源免费的软件中,GCC的编译器优化程度可以说是做得最好的,同时它的bug数量也是最少的。WinAVR是基于Windows平台的免费GCC编译器。它可以与AVR Stdio无缝集成。AVR Studio配合WinAVR,集编辑、下载、仿真调试于一身,功能强大,没有代码量的限制,没有时间的限制,没有版权问题,是节约开发成本的首要选择。    2011年,ATMEL公司推出新型全集成开发平台AVR Studio 5,采用Microsoft Visual Studio Shell构架,集成AVR Software Framework源代码库、GNU C/C++编译器和功能强大的模拟器,支持所有8位和32位AVR单片机。目前AVR Studio 5还在发展完善中,考虑到普及性以及开发者使用习惯等因素,本书只对AVR Studio 5的使用做了简要说明。    本书基于Sunny2.0智能小车控制系统,对ATmega16单片机各个功能部件的原理和应用结合各种实例进行了叙述,所涉及内容涵盖了ATmega16单片机的所有功能。特别针对ATmega16单片机中的定时/计数器1、时钟和低功耗设计等内容作了专门的讲解。本书第1章由杭和平、杨芳共同编写,第2章、第5章、第7章由杭和平编写,第3章、第4章、第8章、第9章由邵明刚编写,第6章、第10章、第11章、第12章由杨芳编写。    在编写过程中,参考了有关书籍、资料,在此对有关作者一并表示感谢。    本书配套光盘包含了Sunny2.0智能小车的电路图、程序代码、演示视频,程序代码均在AVR Studio 4+WinAVR上调试通过。作者已开通博客,将会定期解答读者的问题,不断添加智能小车的扩展电路图及程序代码,更好地和读者交流。限于作者水平,书中难免存在错误和疏漏之处,敬请读者批评指正。编  者

内容概要

  《AVR单片机原理与GCC编程实践——智能小车的系统开发》以ATmega16单片机为蓝本,AVRstudio4和WinAvR为软件开发平台,针对AVR单片机各个功能部件的原理和应用,并结合sunny2.0智能小车控制系统实例进行全面地讲解。全书的主要内容有:AVR单片机概述、ATmega16单片机结构、AVR单片机开发环境、AvR单片机的Gcc程序设计、A11megal6单片机系统的时钟与电源管理、ATmega16单片机中断系统、AIlmegal6单片机系统定时器及应用、AVR单片机的串行接口与应用、AVR单片机的ADc接口与应用、AVR单片机I/O接口应用、AVR单片机应用实践、AVR单片机智能小车应用。每章节附有思考题,以供读者练习。  本书配套光盘中附有所有章节的源程序,智能小车的电路原理图,以及相关视频等内容。  《AVR单片机原理与GCC编程实践——智能小车的系统开发》适合作为普通高等学校的计算机、电气信息类专业的培训用书,也可以作为相关专业工程技术人员的技术参考书。

书籍目录

前言 第1章AVR单片机概述1 1.1单片机概述1 1.1.1单片机的结构与组成1 1.1.2单片机的分类和指标3 1.1.3AVR单片机4 1.1.4其他常用单片机系列6 1.2单片机的数制与编码7 1.2.1进位计数制8 1.2.2进位计数制的相互转换9 1.2.3二进制和十六进制数的运算10 1.2.4数码和字符的代码表示13 1.3ATmega16单片机的简单应用系统17 1.3.1单片机的I/O电平17 1.3.2单片机电路中三极管的应用19 1.3.3单片机的一个简单应用系统19 1.4基于AVR单片机的智能小车20 1.4.1概述20 1.4.2机械构造20 1.4.3设计原理21 思考题21 第2章ATmega16单片机结构23 2.1ATmega16单片机内核结构23 2.2ATmega16单片机特点24 2.3ATmega16单片机引脚与封装25 2.3.1ATmega16单片机的封装25 2.3.2AVR单片机I/O端口的基本结构29 2.3.3ATmega16单片机的I/O端口寄存器30 2.3.4Sunny2.0智能小车I/O端口使用举例33 2.4ATmega16单片机存储器结构与编程36 2.4.1ATmega16单片机的程序存储空间36 2.4.2ATmega16单片机的数据存储空间37 2.4.3ATmega16单片机的EEPROM存储空间38 2.5ATmega16单片机的熔丝位41 思考题43 第3章AVR单片机开发环境45 3.1AVR单片机软件开发工具45 3.2WinAVR简介46 3.3ATmega16JTAG与ISP接口47 3.3.1JTAG接口使用说明48 3.3.2ISP接口使用说明52 3.4AVRStudio4使用简介54 3.5AVRStudio5使用简介59 3.5.1创建项目60 3.5.2调试项目63 3.5.3创建ASF示例项目69 3.6AVRGCC的编译过程71 思考题73 第4章AVR单片机的GCC程序设计74 4.1AVRGCC基本语法介绍74 4.1.1AVRGCC程序设计语言概述74 4.1.2AVRC程序的基本结构75 4.1.3标识符和关键字76 4.1.4变量与数据类型78 4.1.5运算符和表达式85 4.1.6程序结构91 4.1.7数组、指针和结构体96 4.1.8函数100 4.1.9中断服务程序102 4.1.10预处理104 4.1.11在C代码中嵌入汇编语言108 4.2AVRLibc库函数介绍109 4.2.1AVRLibc中对位操作的支持109 4.2.2AVRLibc对Flash访问的支持111 4.2.3AVRLibc对EEPROM访问的支持112 4.2.4AVRLibc对看门狗的支持114 4.2.5AVRLibc的数学库115 4.3AVRGCC段定义和使用117 4.4嵌入式C语言程序设计的注意事项119 4.4.1数据运算的溢出问题119 4.4.2数据类型转换问题120 思考题121 第5章ATmega16单片机系统的时钟与电源管理123 5.1ATmega16单片机的时钟123 5.1.1ATmega16单片机的时钟结构123 5.1.2ATmega16单片机的时钟源125 5.2ATmega16单片机的复位130 5.2.1ATmega16单片机复位概述130 5.2.2ATmega16单片机的复位源与相关寄存器131 5.3ATmega16单片机的低功耗设计——时钟与电源管理135 思考题140 第6章ATmega16单片机的中断系统141 6.1中断的基本概念141 6.1.1中断的作用141 6.1.2中断系统的响应过程142 6.1.3中断系统的优先级143 6.2ATmega16单片机的中断143 6.2.1ATmega16中断源和中断向量143 6.2.2中断服务程序的编写145 6.3ATmega16单片机的外部中断145 6.4ATmega16外部中断应用148 思考题150 第7章ATmega16单片机系统定时器及应用151 7.1ATmega16单片机的定时/计数器概述151 7.1.1ATmega16定时/计数器的相关引脚151 7.1.2定时/计数器概念及小车应用152 7.2ATmega16单片机的定时/计数器1原理及应用153 7.2.1ATmega16单片机定时/计数器1(T/C1)原理153 7.2.2ATmega16单片机定时/计数器1的PWM输出157 7.2.3ATmega16单片机定时/计数器1相关寄存器159 7.2.4ATmega16单片机定时/计数器1的工作模式163 7.2.5ATmega16单片机定时/计数器1的时序图167 7.3ATmega16单片机的定时/计数器1的应用168 7.3.1T/C1作为外部事件计数器的应用168 7.3.2T/C1作为普通定时器的应用170 7.3.3T/C1作为输入捕捉的应用173 7.3.4T/C1作为PWM输出的应用176 7.3.5T/C1应用小结178 7.4ATmega16单片机的定时/计数器0和2原理179 7.4.18位定时/计数器的特性与结构179 7.4.28位定时/计数器T/C0相关的寄存器181 7.4.38位定时/计数器T/C0的工作模式184 7.4.48位定时/计数器T/C0的应用186 7.4.58位定时/计数器T/C2简介190 思考题193 第8章AVR单片机串行接口与应用195 8.1串行通信基础知识195 8.1.1并行通信和串行通信195 8.1.2异步通信和同步通信196 8.1.3单片机串行通信传输方式197 8.1.4串行数据通信的传输速率198 8.2ATmega16的USART接口及应用198 8.2.1USART接口概述199 8.2.2异步传输模式200 8.2.3USART寄存器说明204 8.2.4异步USART应用实例209 8.2.5单片机和PC机通信212 8.3ATmega16的SPI接口及应用217 8.3.1SPI串行总线介绍217 8.3.2ATmega16的SPI接口概述217 8.3.3SPI寄存器说明219 8.3.4SPI的工作模式221 8.3.5SPI应用实例223 8.4ATmega16的TWI接口及应用226 8.4.1I2C总线概述226 8.4.2TWI概述及寄存器说明229 8.4.3TWI的使用方法232 8.4.4TWI应用实例235 思考题240 第9章AVR单片机ADC接口与应用241 9.1ATmega16的ADC概述241 9.2ATmega16与ADC相关的寄存器243 9.3ADC应用要点247 9.4ADC应用举例249 思考题253 第10章ATmega16的I/O接口应用255 10.1人机接口255 10.1.1LED接口255 10.1.2LCD接口259 10.1.3按键接口267 10.2数字I/O接口272 10.2.1光电隔离接口272 10.2.2蜂鸣器及其接口273 10.2.3功率输出(继电器)接口274 思考题276 第11章AVR单片机应用实践277 11.1位置检测元件与应用277 11.2直流电动机的控制280 11.3光敏电阻的应用285 11.4热敏电阻的应用288 思考题293 第12章AVR单片机智能小车应用294 12.1单片机系统设计的步骤294 12.2Sunny2.0智能小车简介295 12.2.1Sunny2.0智能小车实物图295 12.2.2功能说明296 12.2.3系统结构框图297 12.3智能小车硬件设计297 12.3.1车体介绍297 12.3.2单片机控制板297 12.3.3系统扩展板298 12.3.4Sunny2.0小车ATmega16硬件资源分配298 12.4智能小车控制板功能模块说明299 12.4.1电源299 12.4.2单片机电路及JTAG接口电路301 12.4.3小车电动机驱动电路及控制编程302 12.4.4多路模拟开关接口电路及编程305 12.4.5智能小车测距309 12.4.6智能小车障碍检测317 12.4.7LED数码管显示318 12.4.8电池电压检测318 12.5智能小车扩展板功能模块说明319 12.6利用超声波传感器模块实现倒车功能例程322 思考题329 附录智能小车的电路原理图330 参考文献334

章节摘录

版权页:   插图:   3.AVR Studio 早期的AVR Studio(4.18及以前版本)支持AVR汇编程序的编辑、编译、连接,以及生成目标代码,并提供了与AVRGCC高级语言的接口,免除繁琐的makefile编写工作。免费的AVR Studio配合免费的AVR GCC,功能强大,集编辑、下载、仿真调试于一身,是节约开发成本的首要选择。早期版本的AVR Stuido和AVR GCC需要分别安装。 Atmel公司新推出的重量级产品AVR Studio 5.0,直接集成AVR GCC,无需分别安装。开发环境采用了Microsoft Visual Studio Shell构架,配合Visual Studio的各种插件,使得开发单片机程序变得更加快捷。 AVR Studio 5还在发展完善中,考虑到普及性以及开发者的使用习惯等原因,本书采用AVR Studio 4.18 SP3和WinAVR—20100110作为ATmega16单片机的开发工具。 3.2 WinAVR简介 1.WinAVR工具包 WinAVR是在Windows平台上的一组包含AVR C/C++编译程序的工具包,是一组开放源代码的程序集,用于Atmel公司AVR单片机的开发,主要包含: (1)GNU程序包Binutils:GNU Binutils非常庞大,WinAVR仅包含与AVR相关的部分,有AVR汇编器、连接器以及与机器指令相关的一些工具。 (2)GNU GCC:C和C++编译器。 (3)AVR Libc:AVR单片机C运行函数库。 (4)软件调试器、器件编程软件、文件格式转换工具等多个有用工具。 由于AVR GCC源于UNIX,对于不习惯UNIX编程人员,AVR GCC早期版本的安装和使用都会感到十分的不便。但是,随着版本的不断升级优化,特别是后来将有用的工具集合打包成WinAVR后,为大多数习惯Window编程的技术人员提供了极大的便利。 WinAVR的安装已经十分简单。运行WinAVR—20100110—install.exe程序,按程序的提示直接安装即可。早期的安装是需要用命令行运行的方式,在DOS下逐个安装、设置编译参数、配置环境参数等。 2.Programmers Notepad(文本编辑调试器) WinAVR的程序集中包含了一个Programmers Notepad(文本编辑器),是一个短小精悍的编辑软件,界面清晰明快,使用方便。与AVR GCC等工具的挂接也十分方便,可以直接使用安装后默认的编译、连接设置。但不能在Programmers Notepad中对软件进行在线调试,如果需要在线软件跟踪调试,还是需要AVR Studio。

编辑推荐

《AVR单片机原理与GCC编程实践:智能小车的系统开发》介绍了AVRstudio4.18和WinAVR(AVRGCC编译器)。AVRStudio是ATMEL公司官方的开发工具,完全免费,支持众多的调试下载工具,对AVR新器件的支持也是最及时的。 AVRGCC是AVR单片机的C/C++语言编译器,GCC(GNU Compiler Collection),即开源的GNU编译器集合。在开源免费的软件中,GCC的编译器优化程度可以说是做得最好的,同时它的bug数量也是最少的。WinAVR是基于windows平台的免费GCC编译器。它可以与AVRStdio无缝集成。

图书封面

图书标签Tags

评论、评分、阅读与下载


    AVR单片机原理与GCC编程实践 PDF格式下载


用户评论 (总计1条)

 
 

  •   内容充实,容易理解,编写合理,值得一看,建议购买!!!
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7