專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
對(duì)單片機(jī)開發(fā)者來說,使用8051單片機(jī)制作圣誕燈并不陌生。英銳恩單片機(jī)開發(fā)工程師分享一個(gè)學(xué)習(xí)8051單片機(jī)入門案例:圣誕燈方案。與開始使用8051單片機(jī)類似,LED接口是單片機(jī)接口編程中的基本內(nèi)容。每個(gè)單片機(jī)的體系結(jié)構(gòu)都不相同,但是接口概念對(duì)于所有單片機(jī)幾乎都是相同的,本文將為介紹與8051單片機(jī)連接的LED。
接口是一種在單片機(jī)和接口設(shè)備之間提供通信的方法。接口可以是輸入設(shè)備或輸出設(shè)備,也可以是存儲(chǔ)設(shè)備或處理設(shè)備。
輸入接口設(shè)備:按鈕開關(guān)、鍵盤、紅外傳感器、溫度傳感器、氣體傳感器等。這些設(shè)備向單片機(jī)提供一些信息,這稱為輸入數(shù)據(jù)。
輸出接口設(shè)備: LED、LCD、蜂鳴器、繼電器驅(qū)動(dòng)器、直流電動(dòng)機(jī)驅(qū)動(dòng)器、7段顯示器等。
存儲(chǔ)接口設(shè)備: 用于存儲(chǔ)/保留數(shù)據(jù),例如SD卡、EEPROM、DataFlash、實(shí)時(shí)時(shí)鐘等。
一、LED與8051的接口
接口包括硬件(接口設(shè)備)和軟件(進(jìn)行通信的源代碼,也稱為驅(qū)動(dòng)程序)。簡單來說,要將LED用作輸出設(shè)備,應(yīng)將LED連接到單片機(jī)端口,并且必須在內(nèi)部對(duì)MC進(jìn)行編程,以使LED亮或滅或閃爍或變暗。該程序稱為驅(qū)動(dòng)程序,可以使用任何程序語言(例如匯編語言、C語言等)開發(fā)驅(qū)動(dòng)程序軟件。
二、8051單片機(jī)
8051單片機(jī)由英特爾于1980年代發(fā)明,基于哈佛架構(gòu)的40引腳PDIP(塑料雙列直插式封裝)單片機(jī)。8051單片機(jī)有一個(gè)片上振蕩器,但是它需要一個(gè)外部時(shí)鐘來運(yùn)行。比如MC的XTAL引腳之間連接了一個(gè)晶振,該晶振需要兩個(gè)相同值的電容器(33pF)來生成所需頻率的時(shí)鐘信號(hào)。
三、LED(發(fā)光二極管)
LED是用于許多電子設(shè)備中的半導(dǎo)體設(shè)備,主要用于信號(hào)傳輸/功率指示目的。它非常便宜且容易獲得,具有各種形狀、顏色和大小。LED還用于設(shè)計(jì)LED招牌和交通控制信號(hào)燈等。
如圖下圖所示,它有兩個(gè)正極和負(fù)極端子。
知道極性的方法是用萬用表進(jìn)行測(cè)試或仔細(xì)觀察LED內(nèi)部。led內(nèi)較大的一端是-ve(陰極),而較短的一端是+ve(陽極。識(shí)別極性的另一種方法是,連接導(dǎo)線時(shí),LED長的針腳是正極,短的針腳是負(fù)極。
三、LED與8051的接口
我們可以通過兩種方式將LED連接到8051單片機(jī)。但是連接和編程技術(shù)會(huì)有所不同,本文中,與圣誕燈方案有關(guān)的8051單片機(jī)包括:AT89C52/AT89C51單片機(jī),以及LED閃爍代碼的信息。
仔細(xì)觀察接口LED2處于正向偏置狀態(tài),因?yàn)?v的輸入電壓已連接到LED的正極,因此此處的單片機(jī)引腳應(yīng)處于LOW電平。反之亦然,與接口1連接。
該電阻在LED接口中很重要,它可以限制流動(dòng)電流并避免損壞LED和MCU。
(1)僅當(dāng)電流流向地面時(shí),MC的PIN值為HIGH時(shí),接口1才會(huì)發(fā)光。
(2)僅當(dāng)MC的PIN值低時(shí),接口2才會(huì)發(fā)光,因?yàn)殡娏饔捎谄漭^低的電位而流向PIN。
電路圖如下所示,一個(gè)LED連接到端口1的引腳0。
本文的圣誕燈方案,連接了11.0592 MHz的晶振以生成時(shí)鐘。我們知道8051單片機(jī)在12個(gè)CPU周期內(nèi)執(zhí)行一條指令,因此,該11.0592Mhz晶振使該8051以0.92 MIPS(每秒百萬條指令)的速度運(yùn)行。
在下面的代碼中,LED定義為端口1的引腳0。在主要功能中,LED每半秒切換一次。每次執(zhí)行時(shí),“延遲”函數(shù)都會(huì)執(zhí)行空語句。
當(dāng)使用11.0592 MHz晶振時(shí),值60000(使用Keil軟件編譯)將生成約1秒(延遲時(shí)間)的空語句執(zhí)行時(shí)間。這樣,使用下面給出的圣誕燈方案代碼可使連接到P1.0引腳的LED閃爍。
#include<reg51.h>
sbit LED= P1^0; // 端口1,pin0被命名為LED
//函數(shù)聲明
void cct_init(void);
void delay(int a);
int main(void)
{cct_init();
while(1)
{LED=0;
delay(60000);
LED=1;
delay(60000);
}}
void cct_init(void)
{P0= 0x00;
P1= 0x00;
P2= 0x00;
P3= 0x00;
}
void delay (int a)
{int i;
for( i=0; i<a; i++) //用來延遲時(shí)間
}
以上就是英銳恩單片機(jī)開發(fā)工程師分享的如何使用8051單片機(jī)制作圣誕燈方案的案例知識(shí)。英銳恩專注單片機(jī)應(yīng)用方案設(shè)計(jì)與開發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)、運(yùn)放芯片和模擬開關(guān)。