您的位置:首页 > 其它

第二课学习

2011-09-13 08:36 85 查看
开始学习第二课,课程是点亮LED灯,呵呵,就是如何通过程序如何控制LED灯。不过开始还是要学习一下单片机的一些基础知识,这个无论如何要记住的,我记性不太好,所以也把它记下来。

单片机内部资源的三大指标:

FLASH(程序存储空间<ROM>)

RAM(内存)

SFR(特殊功能寄存器)

我个人的理解,如果将一块单片机比做电脑的话,FLASH就相当于电脑的硬盘,RAM就相当于电脑的内存。而我们的电脑是由若干部件组成的,而一块单片机就把电脑的主要部件都包括了。SFR目前还不知道是什么意思,根据小宋老师的说法,在后面再继续学习,这里先挖个坑,后面再来补上。

单片机最小系统,即单片机能够独立运行的系统的组成,包含三个要素:

电源电路(提供能量)

复位电路(相当于用来重启这个最小系统的)

晶振电路(类似于人的心脏,提供执行频率,和我们平时所了解的比如CPU的频率是多少类似)。

单片机的电源一般是5V,要连到VCC这个针脚,VCC表示为高电平,即电源提供处,GND则表示接地,也可以表示为低电平,比如一节5V的电池,则VCC接电池的正极,GND则接电池的负极即可。从原理图上看的话,单片机的第40引脚用于接高电平,20脚接低电平,当然针对不同的单片机,其引脚的定义是不一样的,使用时注意VCC与GND的标识就行了。这个电路主要用于提供能量的,即电源电路。这个电源电路见下图:



至于电源电路的C21表示什么意思,以及有什么作用,这里先埋个坑,后面再来填。

晶振电路如下:



其连接的是单片机的第18,19两个引脚,这个电路怎么连,目前不得知,后面再来看。从上面的图上看得出来,其工作频率是11.0592MHZ,从这个数据上来看,即表示其一秒钟能够执行11.0592M的指令,这个估计与我们平常所见的CPU的频率一样的道理。

复位电路如下:



其电路连接目前不得知为什么这样连,不过有一点需要明确,一是下面的红色的那个部分表示接地,而右边的RST这个标识表示连接至单片机的RST对应的连接线上,从单片机的电路图上看的话,其实际接的是第9引脚。从单片机的标识上来看的话,其标识为RST,也表现其表示的是复位引脚。

从上面的介绍可以看出来,所谓的最小系统是指除单片机以外的且必须包含的与单片机相连的外围电路。

另外,恐怕需要将一些简写记住,比如在单片机上标识的VCC表示高电平,GND表示低电平,或者接地,RST表示复位。同时从RST的电路还需要明白一个东西,那就是一旦如果电路在某个地方划不下时,可以考虑对引脚命名,然后在其他地方画电路,并按同样的命名方式标识即可,比如这里的复位电路就是一例。

如何通过编程的方式控制LED灯的亮灭?

在开发板原理图中,USB接口电路里面有个LED的电路图,从该图上我们需要明白如下的一些知识点,首先是USB接口电路这块目前无法得知应该如何去连接,以及实际的器件应该怎么识别和判定引脚,这个恐怕要留到后面再看了。最小的LED电路中在本处接了一个R34表示第34个电阻,其值为1K,根据小宋老师的讲解,这里的值是有一个计算过程的,需要考虑LED的工作电压和电流,比如此处的工作电压是1.6V-2.4V之间,工作电流是2ma-20mA之间(mA为毫安的意思),通过计算能够得出需要的电阻值范围是150殴至1.5K殴之间,此处用1K的电阻,自然是满足的,这里面的这个R34电阻起的作用自然是保护LED了,因为加在整个LED上的电压是5V,而LED不能够承受这么大的电压,自然用一个电阻来分压了,这里的电阻通过自身的特性,再根据额定的电流,然后就可以减少LED的压力,所以要记住此处的电阻叫限流电阻,即其可以限制电流的大小,其越大,则其渡过的电流就越小,因为整个电压是一定的。而我们用单片机来控制LED的亮灭,从刚才的USB电路图来看是无法控制的,因为其外接的高电平和低电平都固定了的,但我们可以控制与单片机相连的LED灯,如果我们将LED的正电平接到VCC上,通过控制单片机的引脚的高低电平,就可以使LED进行亮灭的控制了。当然如果我们将LED的负极接到GND上,通过单片机引脚进行高低电平的控制,也是可以实现的,道理都一样。同时在这里就需要明白另外一个道理了,就是单片机的IO口,我们的单片机有32个IO口,也就是说一共可以有32个高低电平的输入输出(目前是这么理解的),其输入输出只能有两个值就是高电平和低电平,如果我们通过程序将某个口设置为1则表示其为高电平,如果其为0则表示为低电平。

程序代码的一些理解。

SFR到底是什么?前面提及到了,但无法理解,现在先解释一下我个人的理解,从代码的角度上来说,其就是单片机C语言的关键字,表示其定义的变量为SFR类型的变量,为什么说是单片机C语言,是因为其和标准和C语言还是有区别的,因为标准C语言是没有SFR这样的关键字的。这个SFR在被编译后,就会指向单片机内部的一个特殊的器件,就是寄存器这个地方,目前我对这个不了解,只有先略过。通过查看一器件手机能够找到对对应的寄存器的一些变量定义和描述。从其定义上来看,其主要是通过16进制来定义一些单片机的IO口的位置。#include指令的作用是包含一些常用的变量的集合,因为在实际工作中,一些通用的变量是可以被大家共同使用的,所以可以单独写成一个文件供大家使用,这个涉及到C语言的一些语法,有时间可以细细看看。

关键字sbit表于表示某一个IO口。

按教程的学习,今天成功的实现了LED2的亮灭控制。关于38译码器以及三极管控制方面的得等第三课的学习才得知。

在第一个程序中,我稍微改变了一下

LED=0;

while(1)

{

}

把LED的付值放在了上面,我主要是想,免得while循环老是在给LED赋值,感觉不爽。

当然留下来的问题是很多的,比如实际电路的连线是怎么连起来的,如何走线,这个恐怕要涉及到板子的设计生产上来,而这个只有随着继续的深入学习才能够掌握的,现在这里只是记一下。如何进行电路的设计这些也需要继续学习。

不过今天总体来说还是有收获的,至少明白了单片机上开发是怎么个回事,并且进行了实际的操作,这种感觉远比书上来得快,这更加坚信了我后面继续学习的信心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: