单片机学习: (1)如何学习单片机?

一直都想做一个能及时测量大气压,气温,以及时钟显示的便携设备。

虽然网上有许多这样的测量仪器,也有便携的设备,不过价格上都比较贵。

最近我都在混技术宅吧,那里许多大神都在使用单片机,而我以前对单片机也有所了解,最终我决定:学习单片机!

好吧,进入正题

要学习单片机,我们要首先知道单片机的内部资源是什么。

一、单片机内部的三大资源

1.FLASH 程序储存空间 <ROM> 2.内存<RAM> 3.SFR特殊功能寄存器

二、单片机的选择

我们这里选择的是51单片机,那什么是51单片机呢?

兼容intel的MCS-51体系架构的一系列单片机。

STC89C52:8k FLASH、512字节RAM、32个I/O口、3个定时器、1个UART、8个中断源。

 三、51单片机的最小系统

对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统.但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。1-1

 

 电源

这个很好理解,电子设备都需要供电,就连我们的家用电器(手电筒^_^)也不例外。目前主流单片机的电源分为 5V和 3.3V这两个标准,当然现在还有对电压要求更低的单片机系统,一般多用在一些特定场合,在学习中我们不做过多的关注。

我们所选用的 STC89C52,它需要 5V的供电系统,我们的开发板是使用 USB口输出的5V直流直接供电的。从图 2-1可以看到,供电电路在 40脚和 20脚的位置上,40脚接的是+5V,通常也称为 VCC或 VDD,代表的是电源正极,20脚接的是 GND,代表的是电源的负极。+5V和 GND之间还有个电容,作用我们下节课介绍。

这个地方我们还要普及一个看原理图的知识。电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候更多考虑的是方便原理分析,而不是表达各个器件实际位置。比如原理图中的单片机引脚图,引脚的位置我们是可以随意放的,但是每个引脚上有一个数字标号,这个数字标号代表的才是单片机真正的引脚位置。一般情况下,这种双列直插封装的芯片,左上角是 1脚,逆时针旋转引脚号依次增加,一直到右上角是最大脚位,我们现在选用的单片机一共是 40个引脚,因此右上角就是 40(在表示芯片的方框的内部),如图 2-2所示,大家要分清原理图引脚标号和实际引脚位置的区别。

晶振

晶振,又叫晶体振荡器,从这个名字我们就可以看出来,它注定一生都要不停振荡的。他起到的作用是为单片机系统提供基准时钟信号,类似于我们部队训练时喊口令的人,单片机内部所有的工作都是以这个时钟信号为步调基准来进行工作的。

STC89C52单片机的 18脚和 19脚是晶振引脚,我们接了一个 11.0592M的晶振(它每秒钟振荡 11,059,200次),外加两个 20pF的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定。

复位电路

在图 2-1左侧是一个复位电路,接到了单片机的 9脚 RST(Reset)复位引脚上,这个复位电路如何起作用我们后边再讲,现在着重讲一下复位对单片机的作用。单片机复位一般是 3种情况:上电复位、手动复位、程序自动复位。

假如我们的单片机程序有 100行,当某一次运行到第 50行的时候,突然停电了,这个时候单片机内部有的区域数据会丢失掉,有的区域数据可能还没丢失。那么下次打开设备的时候,我们希望单片机能正常运行,所以上电后,单片机要进行一个内部的初始化过程,这个过程就可以理解为上电复位,上电复位保证单片机每次都从一个固定的相同的状态开始工作。这个过程跟我们打开电脑电源开电脑的过程是一致的。

当我们的程序运行时,如果遭受到意外干扰而导致程序死机,或者程序跑飞的时候,我们就可以按下一个复位按键,让程序重新初始化重新运行,这个过程就叫做手动复位,最典型的就是我们电脑的重启按钮。

当程序死机或者跑飞的时候,我们的单片机往往有一套自动复位机制,比如看门狗,具体应用以后再了解。在这种情况下,如果程序长时间失去响应,单片机看门狗模块会自动复位重启单片机。还有一些情况是我们程序故意重启复位单片机。

电源、晶振、复位构成了单片机最小系统的三要素,也就是说,一个单片机具备了这三个条件,就可以运行我们下载的程序了,其他的比如 LED小灯、数码管、液晶等设备都是属于单片机的外部设备,即外设。最终完成我们想要的功能就是通过对单片机编程来控制各种各样的外设实现的。


 

吐槽一下,这应该属于第二节,一不小心搞多了。

LED小灯

LED(light-emitting diode),即发光二极管,俗称 LED小灯,它的种类很多,参数也不尽相同,我们板子上用的是普通的贴片发光二极管。这种二极管通常的正向导通电压是 1.8V到 2.2V之间,工作电流一般在 1mA~20mA之间。其中,当电流在 1mA~5mA之间变化时,随着通过 LED的电流越来越大,我们的肉眼会明显感觉到这个小灯越来越亮,而当电流从5mA~20mA之间变化时,我们看到的发光二极管的亮度变化就不是太明显了。当电流超过20mA时,LED就会有烧坏的危险了,电流越大,烧坏的也就越快。所以我们在使用过程中应该特别注意它在电流参数上的设计要求。

1-2
图2-3

 

图 2-3是我们开发板上的 USB接口电路,通过 USB线,电脑给我们的开发板供电和下载程序以及实现电脑和开发板之间的通信。从图上可以看出,USB座共有 6个接口,其中 2脚和 3脚是数据通信引脚,1脚和 4脚是电源引脚,1脚是 VCC正电源,4脚是 GND即地线。5脚和 6脚是外壳,我们直接接到了 GND上,大家可以观察一下开发板上的这个 USB座的 6个引脚。

我们现在主要来看 1脚 VCC和 4脚 GND。1脚通过 F1(自恢复保险丝)接到右侧,在正常工作的情况下,保险丝可以直接看成导线,因此左右两边都是 USB电源+5V,自恢复保险丝的作用是,当你后级电路哪个地方有发生短路的时候,保险丝会自动切断电路,保护开发板以及电脑的 USB口,当电路正常后,保险丝会恢复畅通,正常工作。右侧有 2条支路,第一条是在+5V和 GND接了一个 470uF的电容,电容是隔离直流的,所以这条支路是没有电流的,电容的作用,我们下节课再介绍,这节课我们主要看第二条支路。我们把第二条支路摘取出来就是如图 2-4这个样子。

1-4
图2-4

发光二极管是二极管中的一种,因此和普通二极管一样,这个二极管也有阴极和阳极,习惯上也称之为负极和正极。原理图里的 LED画成这样方便在电路上观察,方向必须接对了才会有电流通过让 LED小灯发光。刚才提到了我们接入的 VCC电压是 5V,发光二极管自身压降大概是 2V,那么在右边 R34这个电阻上承受的电压就是 3V。

那么现在我们要求电流范围是 1~20mA的话,就可以根据欧姆定律 R=U/I,把这个电阻的上限和下限值求出来。U=3V,当电流是 1mA的时候,电阻值是 3K;当电流是 20mA的时候,电阻值是 150欧,也就是 R34的取值范围是 150~3K欧姆。这个电阻值大小的变化,直接可以限制整条通路的电流的大小,因此这个电阻我们通常称之为“限流电阻”。在图 2-3中,我们用的电阻是1K,这条支路电流的大小,我想大家可以轻松计算出来了,而这个发光二极管在这里的作用,是作为电源指示灯的,使用 USB线将开发板和电脑连起来,这个灯就会亮了。

同理,我们在板子后级开关控制的地方,又添加了一个 LED10发光二极管,作用就是当我们打开开关时,这个二极管才会亮起,如图 2-5所示。

 

1-3
图2-5

大家注意,这里的开关虽然只有一个,但是是 2路的,2路开关并联能更好的确保给后级提供更大的电流。电容 C19和 C10,都是隔离断开直流的,作用我们下节课介绍,这里大家可以忽略。那么下面呢,我们把图 2-4进行一下变化,把右侧的 GND去掉,改成一个单片机的 IO口,如图 2-6所示。

1-5
图2-6

图 2-4由于电源从正极到负极有电压差,并且电路是导通的,所以就会有电流通过,LED小灯因为有了电流通过,所以就会直接发光。我们把右侧的原 GND处接到单片机 P0.0引脚上,那么如果我们单片机输出一个低电平,也就是跟 GND一样的 0V电压,就可以让 LED小灯和图 2-4一样发光了。

因为我们的单片机是可以编程控制的,我们可以让 P0.0这个引脚输出一个高电平,就是跟 VCC一样的 5V电压,那么这个时候,左侧 VCC电压和右侧的 P0.0的电压是一致的,那就没有电压差,没有电压差就不会产生电流,没有电流 LED小灯就不会亮,也就是会处于熄灭状态。下面,我们就用我们的编程软件来实现控制小灯的亮和灭。

 

16 条评论

  1. J.Zhou

    加油……….我的同学正在玩….

  2. 极雪

    单片机。。。。木条件

  3. 黑柚·生活

    我是到了大学才学单片机的,博主才上高二就开始搞了,我果然是输在了起跑线的人……

  4. 灰常记忆

    看着有点复杂

  5. xiaoxa

    🙁 买不起单片机

  6. 窃窃私语

    你可以做一个这个。。。能卖不少钱。。1000打底。。看图片。。http://gkroot.qiniudn.com/jixieshou.jpg

  7. FROYO
    1. 尘埃哥

      @FROYO 为嘛是空的

  8. maillot saxo bank

    加油阿~

  9. FROYO

    怎么研究起这个来了,大学里面才学这些

    1. 露水晨曦

      @FROYO 你看第一自然段,不过现在还没钱买开发板,暂时学着点。。。

    2. FROYO

      @露水晨曦 好吧,加油,预祝开发顺利

    3. 露水晨曦

      @FROYO 淡定。

    4. FROYO

      @露水晨曦 搞个成品上淘宝开卖

    5. 露水晨曦

      @FROYO 好想法,不过最终目的想把这些功能集成在眼镜上,做个智能眼镜 😀

    6. FROYO

      @露水晨曦 这个想法好