动手学AVR单片机七、流水灯实验详解-----基于ATmega64
前一讲的学习中,我们主要了解了如何使用GCC编写、编译AVR单片机的C语言程序,最后通过一个流水灯的实例进行了实战演练。
但是对于AVR单片机的初学者来说,这个流水灯的程序具体是怎么工作的还不大清楚,今天我们就从流水灯的电路实现开始,讲解一下这个程序的原理,同时也对AVR单片机的C语言编程做一个入门描述。
一、电路实现
在前面我们已经了解了AVR单片机的最小系统,我们以后所做的所有试验都是基于这个最小系统来实现的,所不同的是每个不同的实验都在最小系统的基础上增加了基于本实例的实现电路,下图是流水灯的电路图
1、发光二极管简称为LED,发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,发光二极管导通,同时发光,加上反向电压后发光二极管截止,熄灭。常用的是发红光、绿光或黄光的二极管。
2、图中8个LED(D3-D10)分别连接到单片机PB端口的8个位上(AVR单片机的端口都是8位的端口,每一位都对应一个具体的I/O输入输出端口,限于单片机设计的限制,有些端口可能占不满8位)。
3、RP2是一个排阻,所谓排阻就是若干个参数(最重要的参数就是阻值了)完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚。其余引脚正常引出。所以如果一个排阻是由n个电阻构成的,那么它就有n+1只引脚,一般来说,最左边的那个是公共引脚。它在排阻上一般用一个色点标出来。排阻一般应用在数字电路上,比如:作为某个并行口的上拉或者下拉电阻用。使用排阻比用若干只固定电阻更方便.。在本实验中我们使用的是有8个电阻的排阻,所以它有9个引脚,这个排阻在电路中的作用是限制流过发光二极管的电流。
4、发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流(这也就是图中为什么加了一个排阻的原因)。限流电阻R可用下式计算:
R=(E-U)/I
式中E为电源电压,U为LED的正向压降,I为LED的一般工作电流。根据这个公式我们就可以计算出在本电路中的限流电阻的阻值大小:电路板的工作电压是5V,也即电源电压E=5V,发光二极管的压降一般为0.7V左右,电流为10mA左右,即U=1.7,I=10,则R=(5-0.7)/0.001=430欧姆。实际使用时我们一般取大于430欧姆的电阻。发光二极管的两根引线中较长的一根为正极,应按电源正极。有的发光二极管的两根引线一样长,但管壳上有一凸起的小舌,靠近小舌的引线是正极。
发光二极管的特点是:工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光,一般发光二极管的工作电流是10mA左右)。
5、整个电路的原理:5V电源电压经过470欧姆的9脚排阻(实际是8个电阻)分别连接8个发光二极管的正极,8个发光二极管的负极分别连接单片机PB口的8位。这样当单片机的I/O口输出高电平时,发光二极管两端都是高电平,发光二极管不会导通,当I/O口输出低电平时,发光二极管正向导通,同时也就发出光亮了。 |