0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于51單片機(jī)點(diǎn)亮一個(gè)LED燈(一)

CHANBAEK ? 來(lái)源:無(wú)限琢磨 ? 作者: 工具人 ? 2023-11-01 11:44 ? 次閱讀

不論學(xué)習(xí)什么單片機(jī),最簡(jiǎn)單的外設(shè)莫過(guò)于IO口的高低電平控制。而對(duì)于一個(gè)IO口的高低電平控制入門(mén)階段將是從點(diǎn)亮一個(gè)LED開(kāi)始的。

本章將介紹在如何創(chuàng)建號(hào)的工程模板上,通過(guò)控制51單片機(jī)的GPIO口,點(diǎn)亮一個(gè)LED燈。

發(fā)光二極管

發(fā)光二極管(Light Emitting Diode)簡(jiǎn)稱LED,是一種會(huì)發(fā)光的半導(dǎo)體組件且具備二極管的電子特性,具有正向?qū)ǖ奶匦?/p>

發(fā)光二極管的參數(shù)

正向?qū)妷海?/p>

發(fā)光二極管通常的正向?qū)妷菏?.8V到2.2V之間

工作電流

工作電流一般在1mA~20mA之間

其中,當(dāng)電流在1mA ~ 5mA之間變化時(shí),隨之通過(guò)LED的電流越來(lái) 越大,肉眼可以感覺(jué)到這個(gè)小燈越來(lái)越亮,而當(dāng)電流從5mA~20mA之間變化時(shí),肉眼看到發(fā)光二極管的亮度變化不是很明顯。當(dāng)電流超過(guò)20mA時(shí),LED就會(huì)有燒壞的危險(xiǎn)。通常在led管腳上串聯(lián)一個(gè)電阻,目的是為了限制通過(guò)LED的電流不要太大,起到了限流的作用。

如何識(shí)別原理圖

拿到一塊開(kāi)發(fā)板的同時(shí),我們還需要查閱它的原理圖,讀懂它的電路連接方式。

如下圖:

圖片

從上圖可以看出,圖中的P5.5表示兩處是連接在一起的。表示連接在單片機(jī)的第19引腳,對(duì)應(yīng)為STC15W的5.5串口。

在例如圖中的LED流水燈,LED控制管腳連接在單片機(jī)的IO口上。LED采用共陽(yáng)接法,及所有的LED陽(yáng)極(既正極,陰極為負(fù)極)管腳接在電源VCC,同時(shí)LED還串聯(lián)著一個(gè)電阻接到單片機(jī)的P2口上。根據(jù)電路常識(shí),要LED發(fā)光,既對(duì)應(yīng)的單片機(jī)IO口需要的電平為低電平。反之,高電平則熄滅。

圖片其他也是在原理圖上的都可以以此類推。

軟件設(shè)計(jì)

對(duì)單片機(jī)原理圖有所理解之后,接下來(lái)就是對(duì)單片機(jī)進(jìn)行程序的編寫(xiě)以及燒錄。

問(wèn)題一:如何點(diǎn)亮LED。

圖片

第一次要實(shí)現(xiàn)的功能就是點(diǎn)亮D1位置的LED,如圖所示,D1位置的發(fā)光二極管連接在單片機(jī)的P2.0 IO口,即讓P2.0輸出低電平

圖片

圖片

#include < reg51.h >//引入包51單片機(jī)的一個(gè)頭文件


sbit   LED_D1=P2^0;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D1


int main()
{
  while(1)
  {
      LED_D1=0;  // “0”即為低電平,“1”即為高電平,

  }


}

當(dāng)編譯器編譯成功沒(méi)有報(bào)錯(cuò)的時(shí)候,在軟件界面下方會(huì)顯示以上的編譯結(jié)果信息,表示沒(méi)有任何問(wèn)題。

當(dāng)代碼編寫(xiě)沒(méi)有任何問(wèn)題的時(shí)候,接下里就需要對(duì)單片機(jī)進(jìn)行燒錄。

首先,在狀態(tài)欄點(diǎn)擊魔術(shù)棒-->Output-->打勾“Create HEX File”-->生成目標(biāo)文件 ”.hex“ 文件。

在程序目錄下可以查看目標(biāo)文件——“.hex”文件。

圖片

也可以通過(guò)點(diǎn)擊下圖所示位置,更改文件位置或者查看文件目錄。

圖片

打開(kāi)燒錄軟件

第一步:選擇對(duì)應(yīng)的單片機(jī)芯片

第二部:查看COM口(也就是單片機(jī)連接電腦,所查的USB口)

第三步:打開(kāi)程序文件,也就是剛剛上一步所生成的目標(biāo)文件——.hex文件。

第四步:在下圖“4”位置會(huì)顯示經(jīng)過(guò)解碼的程序文件。

第五步:點(diǎn)擊“下載/編程”按鈕

第六步:在下圖,位置“6”會(huì)顯示操作成功的文字。既燒錄成功。

注意:在每一次燒錄時(shí),應(yīng)該對(duì)單片機(jī)進(jìn)行一次斷電上電,該步驟稱為單片機(jī)的冷啟動(dòng),才能繼續(xù)燒錄程序。

圖片

此時(shí)單片機(jī)上的LED燈為發(fā)光。

圖片

問(wèn)題二:如果要點(diǎn)亮所有的LED,需要怎么做呢?

圖片

源碼復(fù)制

#include < reg51.h >//引入包51單片機(jī)的一個(gè)頭文件


sbit   LED_D1=P2^0;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D1
sbit   LED_D2=P2^1;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D2
sbit   LED_D3=P2^2;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D3
sbit   LED_D4=P2^3;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D4
sbit   LED_D5=P2^4;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D5
sbit   LED_D6=P2^5;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D6
sbit   LED_D7=P2^6;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D7
sbit   LED_D8=P2^7;// 將單片機(jī)的P2.0IO口定義為L(zhǎng)ED_D8、


int main()
{
  while(1)
  {
      LED_D1=0;  // “0”即為低電平,“1”即為高電平,
      LED_D2=0;
      LED_D3=0;
      LED_D4=0;
      LED_D5=0;
      LED_D6=0;
      LED_D7=0;
      LED_D8=0;
  }  
}

進(jìn)行同樣的燒錄下載后,效果如下

圖片

經(jīng)手機(jī)調(diào)整曝光度后的效果。

問(wèn)題三:如何簡(jiǎn)化程序。

顯然這種寫(xiě)法會(huì)顯得很累贅,假如有100個(gè)LED燈,那么不就是需要寫(xiě)100次的“sbit LED_D1=P2^0”,顯然是不可能的。這種叫位操作。在某一些方面這一寫(xiě)法很方便,但是在如上面的情況就顯得很麻煩。

圖片

源碼復(fù)制

#include < reg51.h >int main(){  while (1)  {    P2=0;//或者P2=0X00  }}

其中“P2”就等同于

圖片

而“P2=0;”則等同于

圖片

或者可以將程序中的“P2=0;”寫(xiě)成“P2=0x00;”,“0x”表示的是16進(jìn)制,轉(zhuǎn)成二進(jìn)制則為“0000 0000”,現(xiàn)在的手機(jī)計(jì)算機(jī)都可以實(shí)現(xiàn)進(jìn)制的轉(zhuǎn)換。

那如果用以上的寫(xiě)法,單獨(dú)的控制某一個(gè)LED的亮滅需要怎么做呢?則需要我們需要點(diǎn)亮(熄滅)的LED,在對(duì)位的位置置“0”(“1”)。

例如:我們要D4LED熄滅,采用以上寫(xiě)法,則值需要在D4 LED置“1”即可,轉(zhuǎn)換成十六進(jìn)制則為“0x10”。

圖片

注意:進(jìn)制的轉(zhuǎn)換,應(yīng)從最低位開(kāi)始算起。

程序編寫(xiě)以及燒錄結(jié)果

圖片

源碼復(fù)制

#include < reg51.h >
int main()
{
  while (1)
  {
    P2=0x08;
  }
}

圖片

其他的以此類推。

問(wèn)題四:如何讓LED閃爍起來(lái)。

程序編寫(xiě)以及燒錄結(jié)果。

圖片

源碼復(fù)制

#include < reg51.h >//引入包51單片機(jī)的一個(gè)頭文件
sbit LED_D1=P2^0;
int main()
{
  int i;
  while(1)
  {
    i=10000;
     LED_D1=0;
    while(i--);
     LED_D1=1;
    while(i--);

  }
}
LED_D1=0;
    while(i--);
    //兩句代碼的含義為 LED_D1保持低電平一段時(shí)間,該時(shí)間為 while(i--);
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631971
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107749
  • 發(fā)光二極管
    +關(guān)注

    關(guān)注

    13

    文章

    1192

    瀏覽量

    66142
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    273

    文章

    5697

    瀏覽量

    122991
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1188

    瀏覽量

    51832
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何入門(mén)51單片機(jī)?如何利用51單片機(jī)點(diǎn)亮一個(gè)led?

    如何入門(mén)51單片機(jī)?如何利用51單片機(jī)點(diǎn)亮一個(gè)led
    發(fā)表于 10-20 07:28

    如何去實(shí)現(xiàn)種基于51單片機(jī)點(diǎn)亮個(gè)LED的設(shè)計(jì)

    STM32單片機(jī)51單片機(jī)一個(gè)更好用呢?如何去實(shí)現(xiàn)種基于51
    發(fā)表于 11-02 06:52

    51單片機(jī)點(diǎn)亮個(gè)LED

    當(dāng)我們學(xué)過(guò)51單片機(jī)之后就知道在51單片機(jī)點(diǎn)亮個(gè)
    發(fā)表于 12-07 06:39

    如何利用51單片機(jī)點(diǎn)亮個(gè)LED

    如何利用51單片機(jī)點(diǎn)亮個(gè)LED?
    發(fā)表于 01-24 07:27

    使用51單片機(jī)點(diǎn)亮個(gè)LED的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)點(diǎn)亮個(gè)LED的程序免費(fèi)下載。
    發(fā)表于 08-28 17:29 ?30次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>LED</b>的程序免費(fèi)下載

    如何使用單片機(jī)點(diǎn)亮LED

    我們學(xué)單片機(jī),第一個(gè)程序就是點(diǎn)亮LED,那么我單片機(jī)
    發(fā)表于 07-16 17:39 ?4次下載
    如何使用<b class='flag-5'>單片機(jī)</b><b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>

    51單片機(jī)——LED點(diǎn)亮

    點(diǎn)亮LED原理單片機(jī)點(diǎn)亮LED 利用LED陽(yáng)極為正陰極為負(fù)才會(huì)導(dǎo)通
    發(fā)表于 11-11 19:21 ?19次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>LED</b><b class='flag-5'>燈</b>的<b class='flag-5'>點(diǎn)亮</b>

    51單片機(jī)如何跳出wile循環(huán)_51單片機(jī)閃爍LED

    閃爍LED 51單片機(jī)是較為簡(jiǎn)單的8位單片機(jī),意思是次能處理8位2進(jìn)制數(shù)據(jù)。這
    發(fā)表于 11-23 10:06 ?21次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>如何跳出wile循環(huán)_<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>閃爍<b class='flag-5'>LED</b><b class='flag-5'>燈</b>

    51單片機(jī)點(diǎn)亮個(gè)

    本文只是為了記錄本人大學(xué)學(xué)習(xí)51單片機(jī)些記錄過(guò)程主要是純干貨接下來(lái)會(huì)出系列的單片機(jī)的教程本文教大家
    發(fā)表于 11-23 16:20 ?9次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>燈</b>

    51單片機(jī)實(shí)驗(yàn)8:led點(diǎn)陣(2):點(diǎn)亮個(gè)數(shù)字圖案

    51單片機(jī)實(shí)驗(yàn)8:led點(diǎn)陣(2):點(diǎn)亮個(gè)數(shù)字圖案
    發(fā)表于 11-23 16:36 ?7次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)驗(yàn)8:<b class='flag-5'>led</b>點(diǎn)陣(2):<b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>數(shù)字圖案

    51單片機(jī) 點(diǎn)亮個(gè)LED LED閃爍

    ) //循環(huán) { }}使用51單片機(jī)點(diǎn)亮個(gè)LED#include <
    發(fā)表于 11-23 17:06 ?5次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b> <b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>LED</b> <b class='flag-5'>LED</b>閃爍

    51單片機(jī)——點(diǎn)亮個(gè)LED

    51單片機(jī)——點(diǎn)亮個(gè)LED文章目錄
    發(fā)表于 11-23 18:06 ?16次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>

    基于89C51單片機(jī)的IO輸出點(diǎn)亮1個(gè)LED方法1源程序

    基于89C51單片機(jī)的IO輸出-點(diǎn)亮1個(gè)LED方法1源程序
    發(fā)表于 05-16 10:03 ?10次下載

    基于51單片機(jī)點(diǎn)亮LED

    入門(mén)51單片機(jī)步,就是學(xué)會(huì)點(diǎn)亮個(gè)LED
    發(fā)表于 07-11 11:38 ?1639次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>

    基于51單片機(jī)點(diǎn)亮個(gè)LED(二)

    前面學(xué)習(xí)完怎么對(duì)單片機(jī)個(gè)IO口的高低電平的控制,并且成功點(diǎn)亮LED,接下來(lái)學(xué)習(xí)下流水燈的
    的頭像 發(fā)表于 11-01 11:47 ?810次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>點(diǎn)亮</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>(二)