在第上一課中,我們主要講了keil軟件的使用及如何使用keil軟件建立一個工程文件,下面我們就使用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 輸入代碼后的界面
圖7 編譯后的界面
在圖7中我們會下到最下邊的編譯對話框里會多出幾行字,具體的含義如下:
創建目標“Target1”
編譯文件led1.c…
鏈接…
程序大。簝炔縍AM= 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 第一個發光二極管發光的實驗現象