基于Proteus的AVR单片机C语言程序设计与仿真
2011-1
电子工业出版社
陈忠平
542
无
单片机又称单片微控制器,其实质是将一个计算机系统集成到一个芯片上。它具有体积小、质量轻、价格便宜、控制功能强等特点,在工业控制、智能仪表、家用电器及军事装置等方面都得到了广泛的应用。 国内高等院校的单片机教学与研究已经有了近30年的历程,但目前大部分院校开设的单片机课程还是以20世纪80年代开始流行的MCS-51系列(包括增强型51系列)单片机为蓝本,以汇编语言或C语言为编程工具,以并行扩展为核心来讲述单片机的相关知识的。尽管MCS-51系列单片机在实际应用中还占据一定的市场,但由于该系列的单片机采用普林斯顿体系结构,使得指令周期长、执行速度慢、功能单一、访问外部数据有瓶颈。随着微电子技术的迅猛发展,在20世纪90年代末,市场上已经开始出现了AVR系列单片机。AVR系列单片机采用的是哈佛结构。与MCS-51系列单片机相比,它在运行速度、内存容量、内部功能模块的集成化等方面均有很大的改善。AVR单片机于1997年推出后,很快得到了市场的认可,并迅速推广开来,成为MCS-51系列单片机的强力竞争者。 许多单片机初学者都是首先学习单片机的相关基础知识,然后使用计算机在一些编译软件上编写程序,最后通过分析寄存器的内容以检验程序设计是否符合要求,或者自己焊接硬件电路将源程序代码下载到单片机中来观察运行效果。这种学习方法很好,但是如果所设计系统较复杂,则难以分析相关寄存器的内容,或者由于硬件成本过高,难以制作硬件电路,此时这种学习方法就有所欠缺,尤其是对于在校学生而言。 Proteus软件强势推出后,改变了单片机的传统学习方法,对于单片机学习或者系统开发都能提供有力的帮助。Proteus是多功能的EDA软件,真正实现了虚拟物理原型功能,在目标板还没投产前,它就可以对所设计的硬件系统的功能、合理性和性能指标进行充分调整,并可以在没有硬件电路的情况下,进行相应的程序设计与调试,可由仿真原理图直接导出绘制成印制电路板(PCB)。对于单片机初学者而言,虚拟物理原型可节约学习成本,提高学习积极性;对于单片机系统开发人员而言,它可缩短开发时间,提高设计效率,降低开发成本。 为使初学者能迅速入门,提高对AVR单片机的兴趣与爱好,并能在短期内掌握AVR单片机的应用开发要领,编者特编写了此书。在编写过程中,编者十分注重题材的取舍,使得本书具有以下四个特点。 1. 由浅入深,循序渐进 本书在内容编排上采用由浅入深、由易到难的原则,从最初的AVR单片机开发环境、Proteus软件的使用,讲到单片机内部单元的实现,再到单片机外围扩展,直至单片机的电动机控制应用,这样的编排可让读者根据自己的情况选择阅读起点。 2. 软硬结合,虚拟仿真 沿用传统单片机学习与开发经验,先通过相关编译软件(如CodeVisionAVR)编写程序并生成.HEX(或.COFF)文件,然后在Proteus中画好硬件电路图(这一过程相当于硬件电路的焊接),最后调用HEX文件进行虚拟仿真(这一过程相当于硬件调试)。这样可节约学习成本,提高读者的学习积极性。 3. C语言编程,增强可读性 C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。用C语言来编写程序会大大缩短开发周期,并且明显地增加程序的可读性,便于改进和扩充。采用C语言进行单片机程序设计是单片机开发与应用的必然趋势。许多人员在学习MCS-51单片机时,均先学习了汇编语言,然后再学习用C语言编写MCS-51程序代码,通过这种历程使他们深深地感悟到:汇编指令太枯燥,学习起来费时费力,而且用汇编语言编写一个程序或读懂程序不是一件容易的事情;而使用C语言进行编程时,不必对单片机的硬件结构有很深入的了解,编写程序相对简单,且程序的可读性和可移植性均很强。对于以前学过了MCS-51单片机的人员或从未学过单片机的人员来说,学习AVR单片机时是否也要先从汇编入手呢?答案是否定的。 考虑有些单片机初学者以前从未使用C语言编写单片机程序,因此本书在第3章介绍了C语言的相关知识,这样可使他们在很短时间内掌握C语言的相关语法。全书所有实例均采用C语言编写,这样对已学过MCS-51单片机或从未学过单片机的读者来说,可以使他们很容易看懂程序或进行程序的移植,也就是快速进入AVR的学习之门。 4. 兼顾原理,注重实用 基本原理、基本实例一直是学习和掌握单片机应用技术的基本要求,由于许多AVR单片机初学者在学习AVR单片机时对相关原理不是很清楚,所以本书从第4章至第12章在讲解AVR单片机的部分功能应用时,首先讲解了相关原理,然后通过一些实例讲解其应用。在讲讲解实例时,先进行设计分析,然后给出源程序代码。这样的编写安排,使初学者可以不借助其他的AVR单片机原理方面的书籍,直接通过本书的学习就掌握AVR单片机的应用。 由于Proteus软件的操作方式与一般的应用软件不同,菜单栏与工具条也不完全对应,所以本书只列出了与菜单栏相对应的一些工具条,对于与菜单栏不对应的工具条,请读者参考相关资料。为了便于读者学习和使用实际的Proteus软件,本书对软件电路图中不符合国家标准的图形及符号等未做改动(如在Proteus软件中,电容单位F使用uF进行标记)。 为便于读者阅读、学习,特提供本书所讲实例下载资源。 参加本书编写的有湖南工程职业技术学院陈忠平、湖南航天局7801研究所刘琼、湖南涉外经济学院侯玉宝、湖南科技职业技术学院高见芳、湖南工程职业技术学院龙晓庆、李锐敏、湖南三一重工集团王汉其等。全书由湖南工程职业技术学院陈建忠教授主审。在编写过程中还得到了湖南工程职业技术学院龚亮、彭芳等众位高工、老师的大力支持及帮助,在此向他们表示衷心的感谢。同时对在编写过程中参考的多部AVR单片机原理及相关著作的作者表示深深的谢意! 由于编著者知识水平和经验的局限性,书中难免存在缺点和错误,敬请广大读者给予批评指正。 编著者
《基于proteus的avr单片机c语言程序设计与仿真》以目前流行的软、硬件仿真软件proteus为核心,采用现代教学方法,从实验、实践、实用的角度,通过丰富的实例详细叙述了该软件在avr atmega16单片机课程教学和单片机应用产品开发过程中的应用。 《基于proteus的avr单片机c语言程序设计与仿真》以夯实基础,面向应用、理论与实践紧密结合的原则,根据avr单片机的运行速度快、资源丰富、功能强大、以串行扩展为主等特点,采用c语言作为系统软件开发平台。本书知识系统全面,阐述深入浅出,主要包括单片机系统的设计及相关软件的使用、自制avr单片机下载电缆、proteus中原理图的绘制与仿真及电子线路印制电路板(pcb)的制作、codevisionavr的c语言基础知识、proteus在avr atmega16单片机系统设计中的应用。书中选择的实例具有很强的实用性和指导性。通过阅读这些实例,读者可以在不花费硬件成本的前提下,学习和开发avr单片机应用系统。 《基于proteus的avr单片机c语言程序设计与仿真》既可作为高等院校信息工程、计算机应用、自动化、电气工程等相关专业的avr单片机教材或培训教材,也可作为avr单片机爱好者的自学实践教材,还可作为从事avr单片机应用研发科技人员的实用参考书。
第1章 avr单片机系统的设计与开发环境 1.1 atmel单片机简介 1.2 avr单片机与c语言的关系 1.3 codevisionavr的c语言编译器的使用 1.4 avr studio集成开发软件的使用 1.5 ponyprog2000下载软件的使用 1.6 自制isp下载线 第2章 proteus7.5入门 2.1 proteus isis的操作及电路原理图的设计 2.2 proteus vsm虚拟系统模型 2.3 proteus ares的pcb设计 第3章 codevisionavr的c语言基础知识 3.1 数据运算 3.2 流程控制 3.3 数组 3.4 指针 3.5 结构体 3.6 共用体 3.7 函数 3.8 编译预处理 第4章 atmega16通用i/o控制 4.1 atmega16的基本结构 4.2 atmega16通用数字i/o端口的介绍 4.3 pa端口的应用 4.4 pb端口的应用 4.5 闪烁灯 4.6 流水灯 4.7 带按键选择的花样灯 4.8 控制16个发光二极管的花样灯 第5章 atmega16中断控制与led数码管显示 5.1 atmega16中断系统 5.2 led数码管的基础知识 5.3 int0的应用 5.4 int1的应用 5.5 int2的应用 5.6 int0和int1中断嵌套的应用 5.7 int0和int1控制的加减计数 第6章 atmega16的定时/计数控制 6.1 atmega16定时/计数系统 6.2 定时/计数器0用于定时的应用 6.3 定时/计数器0用于计数的应用 6.4 定时/计数器0的ctc模式应用 6.5 定时/计数器0的快速pwm模式应用 6.6 定时/计数器0的相位修正pwm模式应用 6.7 定时/计数器1用于定时的应用 6.8 定时/计数器1用于计数的应用 6.9 定时/计数器1的ctc模式应用 6.10 定时/计数器1的快速pwm模式应用 6.11 定时/计数器1的相位修正pwm模式应用 6.12 定时/计数器1的输入捕捉模式应用 6.13 定时/计数器2用于定时的应用 6.14 定时/计数器2用于异步计数的应用 6.15 定时/计数器2的ctc模式应用 第7章 通用串行接口 7.1 atmega16通用串行接口usart 7.2 单片机自发自收数据 7.3 两个单片机通信(一) 7.4 两个单片机通信(二) 第8章 键盘的应用 8.1 键盘的工作原理 8.2 查询式键盘的设计 8.3 矩阵式键盘的设计(一) 8.4 矩阵式键盘的设计(二) 8.5 简单拨号键盘的设计 第9章 atmega16的模拟比较器和模/数转换器 9.1 atmega16的模拟比较器 9.2 atmega16的模/数转换器 9.3 模拟比较器的应用 9.4 模/数转换器的应用 9.5 电源电压指示灯的设计 第10章 显示器的应用 10.1 led点阵显示器的应用 10.2 lcd液晶显示器的应用 第11章 串行总线的应用 11.1 spi总线的应用 11.2 twi总线的应用 第12章 电动机控制 12.1 步进电动机控制 12.2 直流电动机控制 12.3 伺服电动机控制 附录a proteus常用快捷键 附录b codevisionavr编译器常用库函数简介 参考文献
版权页:插图:(4)具有多种独立的时钟分频器。AVR.单片机片内具备多种独立的时钟分频器,分别供URAT。12C、SPI使用。其中与8/16位定时器配合的单片机具有多达10位的预分频器,可通过软件设定分频系数以提供多种挡次的定时时间。AVR单片机中的定时器/计数器(单)可双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变的方波,该设计方法(即脉宽调制输出PWM)令人耳目一新。(5)定位于工业级产品。AVR单片机具有大电流10~20mA(输出电流)或40mA(吸收电流),可直接驱动LED、SSR或继电器;具有看门狗定时器(WDT)安全保护功能,可防止程序跑飞,以提高产品的抗干扰能力。(6)具有超功能精简指令。AVR单片机具有32个通用工作寄存器,相当于8051单片机中的32个累加器,克服了由单一累加器数据处理造成的瓶颈现象;片内含有128B~8KB个SRAM,可灵活使用指令运算,适合用c语言进行程序开发,易学、易写、易移植,并且具有很高的代码效率。(7)通信方便、快捷、可靠,支持多机通信。其增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验帧错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便了程序的编写,更便于组成分布式网络和实现多机通信系统的复杂应用。其串口功能大大超过MCS.51/96单片机的串口功能,加上AVR单片机能高速运行,中断服务时间短,因此可实现高波特率通信。具有面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发的全部4种组合的多机通信。SPI支持主/从机的4种组合的多机通信。(8)增强了嵌入式系统的可靠性。AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,从而增强了嵌入式系统的可靠性。
《基于Proteus的AVR单片机C语言程序设计与仿真》是由电子工业出版社出版的。
无
基于Proteus的AVR单片机C语言程序设计与仿真 PDF格式下载
AVR单片机中很少有通过proteus讲授的,这是其中一本,要读!!!
学AVR必备的,和马潮哪本差不多,挺好的,适合仿真学
这本书物美价廉,详细介绍了单片机的知识,是一本很好的书
一本很不错的书,对学习单片机很有帮助。相信的当当网的商品,继续支持。
这本书写得很详实,还是基于proteus的,值得拥有!
本书正对性强,很专业,通过大量的实例,通俗易懂
书厚写得详细非常好
老师推荐的,正在使用中
帮别人买的,据说使用的挺好的
好书,三合一
说句中肯的话,这本书还是一本值得一读地。本书的总体结构清晰明了,安排妥当,先是详实的硬件控制位的介绍,再是后来的软件仿真。书中知识点的介绍很简单易懂。书中给出的例程的风格还可以。内容介绍的很好,很有层次感。但是美中不足的是在第四章介绍总体资源的时候没有将汇编加以介绍,所以在陈述中有些许混淆概念的感觉,让人觉得不明就里,但是对于有单片机基础的来说,稍一想想便会融通,这个缺点给人的感觉获得知识知识一鳞半爪。从总体上来讲,不以一眚掩大德,本书着实是一本好书。个人观点……
在avr类中也算是不错的了
代码什么的挺全的,讲解的内容很详细,就是太过于基础了,刚开始学的看看还行。有基础的就不要买了。这么厚的书就讲了数码管,串口,PWM,AD等自带的功能,深入的东西没有
我是初学者,看来还是有些用。
内容倒是不错,就是书上全是灰,封皮都烂了。
里面讲的不是很通俗易懂
这么多东西来自AVR的PDF,而这些读者都有呀!
购买过N次当当的书,这次怎么会这么不认真,就发货。有点失望。
书很好,对我学AVR有很大帮助!但是美中不足的是书上说能在电子工业出版社下载本书所讲实例资源,好像是骗人的哦!不知道是怎么回事呀?
这本书很实用,对学习单片机很有帮助
书的内容到位,讲解较详细,适合有一定基础的人用
朋友很喜欢。粗略多了一点。还是很不错的。
相比较其他的书籍而言还是可以的,讲的比较详细。。
讲解AVR单片机很详细,选择的编译器是codevisionAVR 不太常用的一种,但是却与51单片机很相似,从51转AVR的朋友,选择这本书,很不错,很容易上手!我就是初学AVR(51用了8年了,想改改口味),一天就学了一半.哈哈,感觉AVR很简单!-- 书上有一些错误,不过影响不大
还行,有点像旧书,不喜欢数的纸张
对每个功能讲解详细,特别是写出每个功能所对应寄存器的设置,例程也非常实用!!
例题很不错,就是调试内容重复的太多,拓展知识不够多。卓越的服务还是挺好的。