衡阳派盒市场营销有限公司

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

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

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

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

天才小貍花 ? 來(lái)源:Sigle_chip ? 作者:Sigle_chip ? 2022-08-16 08:54 ? 次閱讀

導(dǎo)語(yǔ)

根據(jù)前面對(duì)51單片機(jī)的了解和基礎(chǔ)理論知識(shí)的掌握,經(jīng)過(guò)自己的焊接或鈔能力手中有了開(kāi)發(fā)板,就開(kāi)始了正式的單片機(jī)學(xué)習(xí)實(shí)踐。

在前續(xù)知識(shí)的了解和掌握就進(jìn)入了程序編寫以及電路調(diào)試等工程開(kāi)展中,真正做到理論與實(shí)踐結(jié)合。

通過(guò)查看原理圖可知,主要有P0端口,P1端口,P2端口,P3端口等,這些端口占了端口的大部分,除此之外還有復(fù)位端口Rst,時(shí)鐘電路XTLin和XTLout,電源和其他功能端口,在大多數(shù)時(shí)候,我們都將使用P0到P3這些端口。

LED

簡(jiǎn)介

Led為發(fā)光二極管光源。此種光源具有體積小、壽命長(zhǎng)、效率高等優(yōu)點(diǎn)。由等半導(dǎo)體材料制成的、直接將電能轉(zhuǎn)變成光能,效率很高。當(dāng)加上一定的正向電流時(shí),Led發(fā)光,并呈現(xiàn)相對(duì)穩(wěn)定的正向電壓,隨電流變化不明顯。

正負(fù)極區(qū)分

直插

  1. 單色LED有兩根引腳,這兩根引腳有正、負(fù)極之分。長(zhǎng)腳為正。
  2. 當(dāng)長(zhǎng)短腳無(wú)法觀察時(shí),可從側(cè)面觀察兩條引出線在管體內(nèi)的形狀.較小的是正極,較大的類似于碗狀的是負(fù)極
  3. 也可通過(guò)萬(wàn)用表的蜂鳴擋區(qū)分,通過(guò)調(diào)整紅黑表筆在LED的順序使得LED發(fā)光,此時(shí)紅表筆所在的引腳為正極。

貼片LED

  1. 有色點(diǎn)的為負(fù)極,相對(duì)的為正極。
  2. “T”一橫的一邊是正極,相對(duì)的為負(fù)極。
  3. 三角形底邊靠近的是正極,頂角靠近的是負(fù)極。
  4. 帶小缺角那端就是負(fù)極,另一端是正極。

管壓降

當(dāng)電流過(guò)LED以后相對(duì)于同一參考點(diǎn)的電勢(shì)(電位)變化稱為電壓降,簡(jiǎn)稱壓降。通常二極管的管壓降在0.7V左右,在LED中,紅色LED在2v-2.2v,綠色在3v-3.2v,白色藍(lán)色在3.5v。

流水燈電路

正極通過(guò)限流電阻連接到5V,負(fù)極連接到P1端口。也就是說(shuō),當(dāng)陰極為低電平時(shí),LED通過(guò)電流,被點(diǎn)亮。反之LED熄滅。

軟件程序

位定義

通過(guò)sbit關(guān)鍵字定義IO,是C51專有的關(guān)鍵字。

sbit LED0=P1^0;//LED0
sbit LED1=P1^1;//LED1
sbit LED2=P1^2;//LED2
sbit LED3=P1^3;//LED3
sbit LED4=P1^4;//LED4
sbit LED5=P1^5;//LED5
sbit LED6=P1^6;//LED6
sbit LED7=P1^7;//LED7

延時(shí)函數(shù)

編寫延時(shí)函數(shù),實(shí)現(xiàn)延時(shí)的功能,傳參為延時(shí)時(shí)間,無(wú)返回值。

其內(nèi)部實(shí)現(xiàn)與單片機(jī)的運(yùn)行速度有關(guān),主要原理是,單片機(jī)在運(yùn)行程序時(shí),每一條指令會(huì)占用單片機(jī)的一個(gè)機(jī)器周期,如12M外部京真心,一條指令會(huì)占用1ms時(shí)間。通過(guò)for循環(huán)使得單片機(jī)進(jìn)行大量運(yùn)算,占用大量機(jī)器周期達(dá)到目的。延時(shí)計(jì)算不準(zhǔn)確,可通過(guò)stc-isp軟件生成更精準(zhǔn)的值。

void delay_ms(unsignedchar ms)
{
unsignedint i,j;
for(i=0;i for(j=0;j<333;j++);?
};i++)

主函數(shù)

void main(void)
{
while(1)
{
LED0=0;delay_ms(1000);LED0=1;//LED0點(diǎn)亮,其余熄滅
LED1=0;delay_ms(1000);LED1=1;//LED1點(diǎn)亮,其余熄滅
LED2=0;delay_ms(1000);LED2=1;//LED2點(diǎn)亮,其余熄滅
LED3=0;delay_ms(1000);LED3=1;//LED3點(diǎn)亮,其余熄滅
LED4=0;delay_ms(1000);LED4=1;//LED4點(diǎn)亮,其余熄滅
LED5=0;delay_ms(1000);LED5=1;//LED5點(diǎn)亮,其余熄滅
LED6=0;delay_ms(1000);LED6=1;//LED6點(diǎn)亮,其余熄滅
LED7=0;delay_ms(1000);LED7=1;//LED7點(diǎn)亮,其余熄滅
}
}

通過(guò)while(1)使得函數(shù)循環(huán)運(yùn)行,通過(guò)定義的IO名稱對(duì)單個(gè)IO進(jìn)行操作,在多個(gè)操作時(shí)十分容易出錯(cuò),所以也可以對(duì)IO進(jìn)行總線操作。

總線IO

當(dāng)我們使用大量的IO時(shí)候,可進(jìn)行總線操作,對(duì)端口直接賦值,可將端口直接看作unsigned char的變量。

P1=0xfe;//相當(dāng)于二進(jìn)制 1111 1110
//即P1.1 - P1.7寫入1,P10寫入0,LED0點(diǎn)亮

對(duì)此,我們可以使用位運(yùn)算操作P1端口。

void main(void)
{
while(1)
{
unsignedchar temp=0xfe,i;
temp=0xfe; // 1111 1110
for(i=0; i {
LED= temp;
temp=(temp<<1)?|?1;?//1111 1101?
delay_ms(1000);//延時(shí)1s
}
}
}

1111 1110 << 1 = 1111 1100,向左移動(dòng)空位補(bǔ)零

1111 1100 | 1 = 1111 1101,即1111 1100 | 0000 0001。有1則1。最低位補(bǔ)1;

同樣,我們也可以使用數(shù)組對(duì)其操作。

數(shù)組

我們通過(guò)盒中與里面的東西來(lái)表示。

變量的類型相當(dāng)于盒子的大小,char可以裝255個(gè),int可以裝65535個(gè),使用什么數(shù)據(jù)類型取決于數(shù)據(jù)的范圍,范圍大,需要的盒就大。大盒子裝的多,占用地方(內(nèi)存)也多。

一個(gè)盒子有唯一的一個(gè)名字,稱為變量名,給他裝上東西,稱為賦值。這些盒子沒(méi)什么聯(lián)系,當(dāng)然也有一些盒子里面裝了一些小盒子,不過(guò)只有大盒子有名字叫LED_DAT,小盒子只能通過(guò)大盒子才能獲得自己的名字。老大在大盒子里排第一個(gè),我們叫他LED_DAT[0],以此類推。當(dāng)然,我們?cè)俳o大盒子裝東西的時(shí)候就需要考慮,有多少數(shù)據(jù),因?yàn)橛卸嗌贁?shù)據(jù)就需要多少盒子。盒子用多大的,因?yàn)楹凶哟罅诵枰嫉胤健?/p>

因此我們定義了整個(gè)大盒子

unsignedchar LED_DAT[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

我們選擇了unsigned char類型的盒子,因?yàn)槔锩孀畲蟮臄?shù)據(jù)也沒(méi)超過(guò)unsigned char的表示范圍。同時(shí),我們裝了{(lán)0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}這些數(shù),編譯器將數(shù)據(jù)數(shù)出來(lái)創(chuàng)建了一個(gè)可以裝8個(gè)unsigned char小盒子的大盒子起名為L(zhǎng)ED_DAT;并通過(guò)LED_DAT[下標(biāo)]訪問(wèn)或修改里面小盒子的值。

unsignedchar LED_DAT[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{
while(1)
{
unsignedchar i;
for(i=0;i<8;i++)?
{
P1=LED_DAT[i];
delay_ms(1000);
}
}
}

在這個(gè)里面,我們通過(guò)LED_DAT[i]獲得了里面的值,并寫入了P1,實(shí)現(xiàn)了流水燈的效果。

不太建議使用_crol_()這些循環(huán)左移和循環(huán)右移函數(shù),建議位運(yùn)算直接干,位運(yùn)算YYDS。

快去實(shí)現(xiàn)你的炫酷流水燈吧。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23362

    瀏覽量

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

    關(guān)注

    274

    文章

    5705

    瀏覽量

    124308
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何去完成一種基于51單片機(jī)點(diǎn)亮led燈的實(shí)驗(yàn)?

    如何去完成一種基于51單片機(jī)點(diǎn)亮led燈的實(shí)驗(yàn)?怎樣去編寫實(shí)驗(yàn)代碼?
    發(fā)表于 07-14 07:26

    51單片機(jī)點(diǎn)亮led燈實(shí)驗(yàn)

    keil + protues 51單片機(jī)點(diǎn)亮led燈實(shí)驗(yàn)環(huán)境:keil4 + proteus 8proteus操作:1.新建工程,名字隨意。工程已經(jīng)搞好。2.搞個(gè)芯片進(jìn)來(lái),爽一波。添加
    發(fā)表于 07-15 08:38

    51單片機(jī)點(diǎn)亮led燈程序

    51單片機(jī)點(diǎn)亮led燈程序——點(diǎn)亮LED燈1、對(duì)照開(kāi)發(fā)板原理圖對(duì)端口進(jìn)行賦值如下圖,要使
    發(fā)表于 07-21 08:11

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

    請(qǐng)教大神怎樣去實(shí)現(xiàn)一種基于51單片機(jī)點(diǎn)亮LED的設(shè)計(jì)?
    發(fā)表于 09-03 06:17

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

    如何去實(shí)現(xiàn)一種基于51單片機(jī)點(diǎn)亮led燈的設(shè)計(jì)?如何對(duì)基于51單片機(jī)
    發(fā)表于 09-28 08:20

    51單片機(jī)是如何點(diǎn)亮LED點(diǎn)陣?

    51單片機(jī)是如何點(diǎn)亮LED點(diǎn)陣?
    發(fā)表于 09-30 06:02

    如何利用51單片機(jī)點(diǎn)亮LED燈?

    如何利用51單片機(jī)點(diǎn)亮LED燈?
    發(fā)表于 10-09 06:18

    C51單片機(jī)如何點(diǎn)亮LED燈?

    C51單片機(jī)如何點(diǎn)亮LED燈?
    發(fā)表于 10-15 06:00

    如何去實(shí)現(xiàn)基于一種51單片機(jī)點(diǎn)亮LED燈的程序

    如何去實(shí)現(xiàn)基于一種51單片機(jī)點(diǎn)亮LED燈的程序?
    發(fā)表于 10-20 08:05

    如何利用51單片機(jī)點(diǎn)亮LED小燈?

    如何利用51單片機(jī)點(diǎn)亮LED小燈?
    發(fā)表于 10-28 06:47

    如何對(duì)基于51單片機(jī)點(diǎn)亮LED進(jìn)行Proteus仿真呢

    如何對(duì)基于51單片機(jī)點(diǎn)亮LED進(jìn)行Proteus仿真呢?其實(shí)驗(yàn)代碼是怎樣的?
    發(fā)表于 10-28 08:10

    如何利用51單片機(jī)點(diǎn)亮LED燈實(shí)現(xiàn)跑馬燈效果?

    如何利用51單片機(jī)點(diǎn)亮LED燈實(shí)現(xiàn)跑馬燈效果?
    發(fā)表于 11-08 06:19

    使用51單片機(jī)點(diǎn)亮LED的程序詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)點(diǎn)亮LED的程序詳細(xì)資料免費(fèi)下載。
    發(fā)表于 12-18 08:00 ?13次下載
    使用<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>的程序詳細(xì)資料免費(fèi)下載

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

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)點(diǎn)亮LED的C語(yǔ)言程序免費(fèi)下載。
    發(fā)表于 09-02 17:28 ?0次下載
    使用<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>的程序免費(fèi)下載

    hc06藍(lán)牙模塊接51單片機(jī)點(diǎn)亮LED

    hc06藍(lán)牙模塊接51單片機(jī)點(diǎn)亮LED
    發(fā)表于 11-20 19:06 ?52次下載
    hc06藍(lán)牙模塊接<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>
    大发888被查封| 现金百家乐官网| 威斯汀百家乐官网的玩法技巧和规则| 88娱乐城址| 百家乐最新缆| 百家乐算号软件| 百家乐官网发牌器8副| 云鼎娱乐场送彩金| 骰子百家乐的玩法技巧和规则| 神话百家乐官网的玩法技巧和规则 | bet365金融技巧| 百家乐筹码方形| 百家乐如何视频| 百家乐官网揽法大全| 百家乐官网视频游戏冲值| 百苑百家乐的玩法技巧和规则 | 威尼斯人娱乐城信誉好吗| 赌博百家乐技术| 百家乐游戏研发| 百家乐官网娱乐平台开户| 7人百家乐官网桌子| 开平市| 美高美国际娱乐| 威尼斯人娱乐城易博| 百家乐无损打法| 百家乐翻天粤| 百家乐如何投注法| 澳门百家乐官网必胜看| 网上百家乐官网必赢玩| 百家乐官网自动算牌软件| 百家乐官网什么平台好| 青川县| 百家乐天下| 网上赌博网址| 娱乐城网| 大发888作弊| 大发888老虎机手机版下载安装| 全讯网xb112| 百家乐官网押注最高是多少| 订做百家乐官网桌子| 百家乐官网电投网址|