51單片機入門之一:點亮一個發光二極體

2021-01-15 單片機與嵌入式

下面我們就使用C語言編寫一個程序點亮實驗板上的一個發光二極體。首先我們來講一下發光二極體的發光原理。

1、發光二極體發光原理

發光二極體簡稱LED,採用砷化鎵、鎵鋁砷、和磷化鎵等材料製成,其內部結構為一個PN結,具有單向導電性。 當在LED發光二極體PN結上加正向電壓時, P區的空穴注入到N區,N區的電子注入到P區,這空穴與電子相複合時產生的能量大部分以光的形式出現,因此而發光,並且根據釋放能量的不同能發出不同波長的光,在電路或儀器中可用作指示燈,也可以組成文字或顯示器件。

發光二極體按封裝(這裡可以暫理解為外形)可分為直插式和貼片式的兩種,按發光顏色可分為紅色、藍色、綠色等,如圖1所,上面為帖片發光二極體,下邊為直插式的發光二極體。

 

圖1 發光二極體

    LED工作時,應該串接一個限流電阻,該電阻的阻值大小應根據不同的使用電壓和LED所需工作電流來選擇。LED發光二極體的壓降一般為1.5~3.0 V(紅色和黃色一般為2V。其它顏色一般為3V),其工作電流一般取10~20 mA為宜。其限流電阻的計算公式為R=(U-UL)/I,U為電源電壓,UL為發光二極體正常發光時端電壓,I為發光二極體的電流。

以上是發光二極體的基礎知識,但這裡只說了一些重要的性質和參數,實際在做電路時還要考慮到其它的因素,如各種種樣的封裝尺寸以及價格等,下面說一下如何通過編程讓實驗板上的一個發光二極體發光。

學過電子技術的人應該知道,要讓一個發光二極體發光我們可能採用如下電路實現,如圖2,這裡只要限流電阻選擇恰當,就可以讓發光二極體發光。

圖2 全硬體電路實現發光二極體發光

下面我們把電路稍作變化,如圖3,把圖2中接地的一端直接接到單片機的P1口的第1個引腳上,大家想想現在怎麼才能讓發光二極體發光呢?可能大家馬上會說出,讓單片機第1腳輸出低電壓,而單片機的引腳可以輸出0和1兩種電平,0代表低電平也就是低電壓,1代表高電平也就高電壓這個我們在前面的課程中講過,也就是說我們現在只要能通過程序讓每1腳輸出0就可以了。

圖3 單片機實現發光二極體發光的原理圖

為了便於演示結果,我們先給出實驗板上的原理圖,如圖4所示,8個發光二極體通過一個排阻,再通過一個跳線帽接電源的正極5V,而所有管的負極則分別接到單片機的P1口的8個引腳上。關於跳線帽這裡就不解釋了,下面先說下排阻吧。

所謂排阻,其實就是一排若干個參數完全相同的電阻,主要有有直插和貼片兩種形式,如圖5所示。它們的一個引腳都連到一起,作為公共引腳,其餘引腳正常引出,通常最左邊的那個是公共引腳,它在排阻上一般用一個色點標出來。如圖4所示,8個發光二極體陰極接單片機P1口的8個引腳,陽極分別接8個電阻的一端,然後電阻的另一端全部接在一起由1腳引出,然後通過跳線帽直接接電源的正極5V。採用排阻直接代替8個電阻,這樣不僅可以縮小電路板尺寸,而且也提高的焊點的可靠性。

 

圖4 實驗板上的8個發光二極體

 

 

圖5 直插排阻和貼片的排阻

2、發光二極體及流水燈程序

2.1 點亮第一個發光二極體

上面我們介紹了發光二極體的發光原理,同時對實驗板上的原理圖作了相應的分析,下面給出點亮第一個發光管具體程序。關於工程文件的建立,前面已經詳細的講過,這裡不在敘述,這裡我們點擊keil軟體,建立工程LED1,然後建立文件LED1,最後輸入程序如下。

例1 點亮第一個發光二極體程序

(2)輸入源程序(又稱為程序編輯)

#include<reg52.h>//52系列單片機頭文件

sbit D1=P1^0;//位定義單片機P1口的第1位

 

void main()//主函數

{

       D1=0;//點亮第一個發光二極體

}

輸入上面程序時,keil軟體會自動識別C51的關鍵字,如本程序中的include、sbit、void,並會以不同的顏色加以提示,如果輸入有誤,則不會變顏色,這樣就可以使得程序編寫者減少輸入錯誤,提高編程質量,當然這一系列的前提是,建立文件時必須先保存才會出現這種效果,這個也是我們上一節講的為什麼文件建好後最好先進行保存的原因。

(2)程序的編譯與錯誤檢查

程序輸入完畢後,下一步的工作就是對文件進行編譯和錯誤檢查與排除。

圖6 輸入代碼後的界面

如圖6所示,為程序輸入後的界面。點擊全部編譯快捷按鈕,此時會進入編譯後的界面如圖7.

圖7 編譯後的界面

在圖7中我們會下到最下邊的編譯對話框裡會多出幾行字,具體的含義如下:

 

創建目標「Target1」

編譯文件led1.c…

連結…

程序大小:內部RAM= 9.0個字節 外部RAM =0個字節,ROM空間=18位元組

工程「led1」0錯誤,0警告。

 

這就表示程序語法上沒有錯誤,當然如果有錯誤,剛編譯不能通過,現在我們更改程序,如我們把「sbit D1=P1^0; 」後面的「; 」,再次編譯,此時會出現錯誤提示界面如圖8所示。

 

圖8編譯錯誤的界面

此時雙擊錯誤提示行(圖8藍色行),會有在程序中出現一個箭頭,錯誤信息就出現在箭頭附近,這裡相當於一個提示,此時根據該提示信息,就可以快速的找到程序錯誤的地方。

(3)程序下載

在下載程序到單片機之前,我們還需做一步工作就是生成「HEX」文件生成的設置,因為單片機只能認識0和1之類的二進位數字代碼,也就是說再複雜的程序最終下載到單片機內部都只能是一連串的二進數。單片機允許下載HEX文件和BIN文件,BIN是二進位文件,是binary的簡稱,可直接下載到單片機內部,HEX是十六進位文件,是hexadecimax的簡稱,下載時經過下載軟體,又被翻譯成二進位文件,最終下載到單片機裡。

Keil軟體可以直接輸出HEX文件,但需要設置。此時回到編輯界面,然後點擊Project Opitions for Targtet 『Target 1』選項,或直接點擊界面左上角快捷方式按鈕,出現設置界面如圖9。選擇Output選項,然後在Creat Hex file選項前打鉤,然後點擊確定即可。

圖9 hex文件輸出設置窗口

HEX文件設置後,會重新回到編輯界面,此時再次點擊全部編譯按鍵,此時會在最後面的編譯信息窗口看到多出了creating hex file from 「led1」…,如圖10所示此時表明在工程文件中生成了hex文件,這個

圖10 生成hex文件後的窗口

此時我們用ISP軟體將來此HEX文件下載到實驗板中,看到的實驗現象如圖11所示。

圖11 第一個發光二極體發光的實驗現象

本文轉自網絡,版權歸原作者,如果您覺得不好,請留言聯繫我們刪除!

相關焦點

  • 單片機點亮一個發光二極體LED1,用仿真軟體Proteus展示
    編程實現用P0.1口控制發光二極體LED1發光步驟:(1)用單片機編程軟體Keil 編寫程序,並保存到「單片機練習一」文件夾中,命名為「P0.1控制LED」;(2)用單片機仿真軟體Proteus畫出原理圖;(3)在Proteus中雙擊單片機
  • 如何用單片機點亮LED
    每個入門單片機的朋友,我想第一個程序幾乎都是點亮一顆LED燈了,這同軟體工程的「hello world」一樣經典,是很簡單,但卻有著很多回憶,依然記得學習單片機
  • 51單片機驅動能力(拉電流_灌電流)及上拉電阻
    灌電流(sink current) ,對一個埠而言,如果電流方向是向其內部流動的則是「灌電流」,比如一個IO通過一個電阻和一個LED連接至VCC,當該IO輸出為邏輯0時能不能點亮LED,去查該器件手冊中sink current參數。名詞解釋——拉:流出、排空,由內向外,由實而虛。
  • 單片機一個IO口如何控制兩顆發光二極體(LED)
    單片機一個IO口如何控制兩顆發光二極體LED單片機工程師在面試的過程中,經常會碰到一些相同的問題,筆者總結了十個提問率較高的問題,供大家參考。現在我們來分析單片機工程師常遇面試問題之一:一個單片機IO口如何控制兩顆LED?
  • 基於單片機的角度測量儀的設計
    角度測量儀利用光電編碼器讀取角度值,採用AT89S51 單片機實現角度值數碼顯示、角度值偏差範圍的發光二極體指示功能(有三個指示燈,分別指示:偏高、偏低、適中)。不論在操作的複雜程度上還是在測量的精度上,都是傳統的眼瞄方法、刻度測量及標識方法無法比擬的。
  • 51單片機精確控制步進電機(有TB6600驅動)
    作為一個小白,我想記錄一下自己的學習過程,也和大家交流學習一下。設備:51單片機開發板、TB6600驅動器、57BYG250B步進電機(二相)、直流開關電源。直流電源給驅動器供電,單片機給驅動器輸入脈衝,驅動器驅動步進電機。程序使用定時器中斷精確控制電機轉動(不考慮失步)。
  • 單片機驅動LED中上拉電阻的問題
    P口為高電位或高阻狀態發光管暗的時候電流是從電源正——上拉電阻——P口,這時LED無電流流過,P口為低電位,限流電阻上流過電流全部從P口流入。要從單片機的輸出驅動能力開始講起。下面是本人做過的LED上拉電阻試驗測試條件:VCC=4.96V,φ3綠色發光二極體。二極體正極接VCC,負極通過RL接地。
  • 用1.5伏電池點亮3伏發光二極體
    用1.5伏乾電池是點不亮3伏發光二極體的。設計一種裝置,使它變為可能。一個3伏發光二極體,一個1KΩ電阻,一個9014三極體。一個小磁環,兩段不同顏色(紅藍、帶絕緣膠皮)的細電線,細導線,電子鐘驅動器外殼。工具:熱熔膠槍、電烙鐵、剪刀、鑷子。
  • 51單片機的無線供電模塊設計
    打開APP 51單片機的無線供電模塊設計 發表於 2019-04-22 15:01:04 本文主要闡述近距離無線供電,具有低功耗、安全等特點,通過單片機檢測[1]更好的增加了它的可靠性。 2系統方案設計 無線供電演示裝置的設計製作。該電路由電源發射電路、接收電路、檢測顯示電路三部分組成[2]。
  • 萬用表如果使用二極體檔位,可以點亮二極體嗎?
    萬用表上有一個二極體檔位,可以用來檢測二極體,並且能把二極體點亮。但是點亮並不是絕對的,主要有兩個方面的原因:1)萬用表的二極體檔位電壓較低;2)發光二極體工作電壓較高。
  • 彩燈——光立方入門
    一、製作8*8*8光立方材料清單:   1、 發光二極體(單一顏色或七彩變幻)   2、 主控電路(含單片機及其周邊電路)   3、 ULN2803達林頓電晶體   4、 74HC573鎖存器
  • 發光二極體的識別與檢測
    在我們製作電子產品的時候,使用最頻率比較高的元件之一有發光二極體,發光二極體簡稱為LED,由含鎵(Ga)、砷(As)、磷(P)、氮(N)等的化合物製成
  • 基於51單片機的TFT液晶顯示設計
    , 處理速度等都無法與新型高速單片機相提並論, 但其低廉的價格, 極低的入門難度以及適用於簡單場合應用等特點, 依然是開發者的常用選擇之一。  用51單片機驅動液晶模塊通常都使用1602和12864等極為簡單的液晶模塊, 這裡介紹用51單片機驅動QVGA解析度的TFT液晶模塊, 以實現彩色和更為複雜的內容顯示的方法。同時, 本文還將使用DS1302晶片和DS18B20晶片來實現在液晶屏上顯示實時時鐘和溫度。
  • 《電子發燒友網51單片機設計方案TOP10》
    (1)紅外線光感電路傳感器通過發光二極體發出紅外線,若有障礙物在前方,紅外線會被反射回來,被感光三極體接收,單片機程序對信號進行比較處理,按設定的動作要求向後輪的兩個電機發出控制命令,控制小車行進。   (2)電機驅動電路採用89S51單片機,通過L293D晶片來控制兩個驅動電機動作。
  • 51單片機總結——上拉電阻
    (2)提高高電平電位:  單片機P1口外接4×4矩陣鍵盤。另外復用P1.0~P1.3外接ULN2003控制驅動步進電機。  實驗中遇到的問題:當接入ULN2003時鍵盤無法工作,去掉ULN2003後鍵盤工作正常。ULN2003工作正常。(注,兩個部分不同時工作)  問題分析:由於鍵盤的結構,無非就是兩個金屬片的接通或斷開。
  • 齊納二極體在LED發光二極體方面的應用
    1、什麼是齊納二極體?齊納二極體,我們經常稱為穩壓二極體, 這是一種在反向特性擊穿前具有高組態的半導體器件,但是在擊穿後會呈現低阻態 ,到達低阻態時候隨著電流的增加電壓卻維持在一個恆定值。我們稱此時的這個電壓齊納電壓或雪崩電壓 。
  • 通俗易懂講PIC單片機:從一竅不通到入門進步
    單片機入門不難------談PIC系列(轉自礦石收音機論壇---嶗山)十年前的老帖子,講得通俗易懂,分享之。現在剩下了 6 條腿  第2、3條腿 使用時外接一個晶振的東西 我們接一個 4 MHz的。  第4條腿是復位腳,是一個信號輸入腳。單片機正常運行時接高電平。當有一個低電平脈衝輸入到這個腳時單片機就復位。所謂復位就是單片機內部所有的工作部件統統回到規定的狀態,程序也復位到頭一句上開始逐條運行。
  • 發光二極體不亮是否由電壓不足引起的?
    打開APP 發光二極體不亮是否由電壓不足引起的?本文就由小編為大家講解電路中發光二極體不亮的現象,看發光二極體之所以不亮是否是由電壓不足引起的,還是由驅動電流過小引起的?   本例中電路的總電壓為3V,電阻580歐,在串聯一個3V的發光二極體時,發光二極體並為點亮。電壓、電阻保持不變,是什麼情況導致了發光二極體不亮呢?
  • 關於STC單片機的幾點建議
    STC最大的優勢,就是超低的學習成本,就像一架高性能的教練機一樣,非常適合作為單片機愛好者學習的入門機型。51系列中,STC用的是最多的。但問題是:1、51的最大好處無非就是學習資料眾多,學習條件比較好,但51單片機性能偏弱且價格高,因此性價比其實並不好。
  • 光敏二極體與發光二極體有什麼區別
    光敏二極體工作原理我們繼續來看光敏二極體的工作原理。在電子電路採用的光敏器件中光敏二極體、光敏三極體得到了廣泛的運用。具有一個PN結是光敏二極體和普通二極體一樣的地方,在光敏二極體的外殼上有一個透明的窗口用來接收光線照射,從而實現光電轉換,是它與普通二極體不同的地方。而光敏三極體不僅具有光電轉換的功能,還具有放大功能,在電路圖中文字符號一般為VT。