嵌入式开发-AVR单片机课件-第5章 实战练习一.docVIP

嵌入式开发-AVR单片机课件-第5章 实战练习一.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 实战练习一 本章的实战练习将以一个最简单的设计为例,指导读者完成以下的实践: 如何使用AVR汇编语言进行系统程序设计与系统实现。 初步掌握使用AVR免费开发平台AVR Studio。在该开发平台的支持下,完成汇编源程序的编写,以及程序的软件模拟调试等开发的过程。 掌握AVR-51多功能实验板使用方法。完成实现硬件系统电路的连接,如何使用ISP下载线配置AVR的熔丝位,以及运行代码下载。 初步掌握CVAVR高级C语言开发软件的使用。 作为动手实践的一个起步,学习者通过该示例的完成和实现,可以对使用汇编程序语言开发以及C语言开发单片机嵌入式系统的过程与特点,以及相关的硬件和软件工具有一个基本的了解。 5.1秒节拍显示器系统的设计 5.1.1 秒节拍显示器硬件设计 在第2章的2.6.6中,给出了一个使用ATmega16构成的AVR简单的系统。这个系统就是一个简易的“秒节拍显示器”。这个秒节拍显示器的功能非常简单,就是用AVR单片机控制一个LED发光二极管,让它亮一秒钟,暗一秒种,不间断的闪烁,构成一个简单的秒节拍显示器。图5-1是它的电原理图。 图5-1 简单的秒节拍显示器电原理图 秒节拍显示器的硬件电路组成非常简单,图中使用一个AVR芯片和LED发光二极管作为秒信号的显示。当ATmega16的I/O引脚PC0口输出为“0”时,LED导通发光;输出为“1”时,LED截止熄灭。560欧姆电阻起保护限流作用,控制LED的导通电流在5~10mA。适当调整R3的阻值,可以调节LED的亮度,并限制流过LED和PC0口的电流,保护其不被大电流烧毁。 在虚线框中,是最小系统的构成。其中R1为RESET脚的上拉电阻,保证了RESET脚可靠的高电平。系统采用外接4M晶体和芯片内部的振荡电路组成时钟电路,产生4M频率的脉冲作为系统的时钟信号,此时单条指令的执行时间为0.25us。电容C1和C2应同具体使用的石英晶体配合(参考具体生产厂的说明),一般在20p-30p之间,改变C1、C2的值,可以对4M频率进行微调。R2与晶体并连,其作用是稳定晶体的阻抗,提高振荡电路的稳定性。 图中的ISP编程下载口的2、3、4、5脚同芯片SPI接口的MOSI(PB5)、MISO(PB6)、SCK(PB7)和RESET引脚连接。当需要改动AVR的熔丝位配置,或将编译好的运行代码烧入的AVR的FlashROM中时,就不需要将芯片从PCB板上取下了。只要将一根简单的编程线插在该编程下载口上,利用PC机就可以方便的实现上面的操作了。 如2.6.5中所介绍,当PC机对AVR编程时,需要先将SCK和RESET引脚拉低,使AVR芯片进入SPI编程状态,然后通过SPI口进行下载操作。所以,在设计AVR系统硬件时,如考虑使用SPI口实现ISP的功能,图中的R1电阻不可省略。此时R1起到了隔离作用,正是有了R1,才能使用户在外部能够对RESET脚施加低电平(0伏)。当编程下载完成后,外部一旦释放掉RESET,该引脚通过R1又被拉成高电平,AVR就直接进入了正常运行工作状态。R1的阻值在5k-10k之间,太大和太小都不合适。 由于ATmega16内部集成了1/2/4/8M四种频率的RC振荡源,因此图5-1还可以简化。我们可以使用片内4M的RC振荡电路作为系统时钟源。这样就可以省掉C1、C1、R2和晶体四个元件,使AVR的最小系统更加简单,只需要一个R1就可以了。 5.1.2 秒节拍显示器软件设计思路 图5-2为秒节拍显示器的系统软件流程图。可以看出,秒节拍显示器的软件设计重点是一个一秒钟的延时子程序。系统程序每隔一秒(调用一秒延时子程序)将PC0口的输出电平取反,同时也控制LED的亮与暗。 作为一个简单的入门例子,在这里我们给出一个采用汇编语言设计编写的通用软件延时子程序,每调用一次该子程序,其运行的时间为1秒钟,每隔1秒钟,控制PC0口的输出逻辑取反。这样LED就会亮1s,灭1s,实现了秒节拍的显示。 实际上,在实际应用中尽量不要使用软件的方式进行延时,因为CPU执行大量的无具体工作的指令,这样会减低CPU的效率。正确的方法是使用AVR的定时器来产生延时,这些将在后续的章节中介绍。 5.1.3 秒节拍显示器汇编源程序代码 下面是秒节拍发生器的汇编源程序。程序中先初始设置堆栈指针寄存器SP的值,然后将PC口定义为输出。其主程序部分为一个LOOP无限(死)循环:先设置PC0口输出“0”,点亮LED;调用延时子程序delay延时一秒;再设置PC0口输出“1”,使LED熄灭;然后又一次调用延时子程序delay延时一秒;最后转入下一次的循环。因此,程序的运行效果是每隔一秒钟后,控制PC口的第0位输出“1”或“0”,使LED亮一秒钟,暗一秒钟,形成秒节拍显示指示。 ;AVR汇编程序实例;包括器

文档评论(0)

kolr + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档