在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用51單片機點亮LED

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

導語

根據前面對51單片機的了解和基礎理論知識的掌握,經過自己的焊接或鈔能力手中有了開發板,就開始了正式的單片機學習實踐。

在前續知識的了解和掌握就進入了程序編寫以及電路調試等工程開展中,真正做到理論與實踐結合。

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

LED

簡介

Led為發光二極管光源。此種光源具有體積小、壽命長、效率高等優點。由等半導體材料制成的、直接將電能轉變成光能,效率很高。當加上一定的正向電流時,Led發光,并呈現相對穩定的正向電壓,隨電流變化不明顯。

正負極區分

直插

  1. 單色LED有兩根引腳,這兩根引腳有正、負極之分。長腳為正。
  2. 當長短腳無法觀察時,可從側面觀察兩條引出線在管體內的形狀.較小的是正極,較大的類似于碗狀的是負極
  3. 也可通過萬用表的蜂鳴擋區分,通過調整紅黑表筆在LED的順序使得LED發光,此時紅表筆所在的引腳為正極。

貼片LED

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

管壓降

當電流過LED以后相對于同一參考點的電勢(電位)變化稱為電壓降,簡稱壓降。通常二極管的管壓降在0.7V左右,在LED中,紅色LED在2v-2.2v,綠色在3v-3.2v,白色藍色在3.5v。

流水燈電路

正極通過限流電阻連接到5V,負極連接到P1端口。也就是說,當陰極為低電平時,LED通過電流,被點亮。反之LED熄滅。

軟件程序

位定義

通過sbit關鍵字定義IO,是C51專有的關鍵字。

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

延時函數

編寫延時函數,實現延時的功能,傳參為延時時間,無返回值。

其內部實現與單片機的運行速度有關,主要原理是,單片機在運行程序時,每一條指令會占用單片機的一個機器周期,如12M外部京真心,一條指令會占用1ms時間。通過for循環使得單片機進行大量運算,占用大量機器周期達到目的。延時計算不準確,可通過stc-isp軟件生成更精準的值。

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

主函數

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

通過while(1)使得函數循環運行,通過定義的IO名稱對單個IO進行操作,在多個操作時十分容易出錯,所以也可以對IO進行總線操作。

總線IO

當我們使用大量的IO時候,可進行總線操作,對端口直接賦值,可將端口直接看作unsigned char的變量。

P1=0xfe;//相當于二進制 1111 1110
//即P1.1 - P1.7寫入1,P10寫入0,LED0點亮

對此,我們可以使用位運算操作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);//延時1s
}
}
}

1111 1110 << 1 = 1111 1100,向左移動空位補零

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

同樣,我們也可以使用數組對其操作。

數組

我們通過盒中與里面的東西來表示。

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

一個盒子有唯一的一個名字,稱為變量名,給他裝上東西,稱為賦值。這些盒子沒什么聯系,當然也有一些盒子里面裝了一些小盒子,不過只有大盒子有名字叫LED_DAT,小盒子只能通過大盒子才能獲得自己的名字。老大在大盒子里排第一個,我們叫他LED_DAT[0],以此類推。當然,我們再給大盒子裝東西的時候就需要考慮,有多少數據,因為有多少數據就需要多少盒子。盒子用多大的,因為盒子大了需要占地方。

因此我們定義了整個大盒子

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

我們選擇了unsigned char類型的盒子,因為里面最大的數據也沒超過unsigned char的表示范圍。同時,我們裝了{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}這些數,編譯器將數據數出來創建了一個可以裝8個unsigned char小盒子的大盒子起名為LED_DAT;并通過LED_DAT[下標]訪問或修改里面小盒子的值。

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);
}
}
}

在這個里面,我們通過LED_DAT[i]獲得了里面的值,并寫入了P1,實現了流水燈的效果。

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

快去實現你的炫酷流水燈吧。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23286

    瀏覽量

    661107
  • 51單片機
    +關注

    關注

    274

    文章

    5704

    瀏覽量

    123673
收藏 人收藏

    評論

    相關推薦

    如何去完成一種基于51單片機點亮led燈的實驗?

    如何去完成一種基于51單片機點亮led燈的實驗?怎樣去編寫實驗代碼?
    發表于 07-14 07:26

    51單片機點亮led燈實驗

    keil + protues 51單片機點亮led燈實驗環境:keil4 + proteus 8proteus操作:1.新建工程,名字隨意。工程已經搞好。2.搞個芯片進來,爽一波。添加
    發表于 07-15 08:38

    51單片機點亮led燈程序

    51單片機點亮led燈程序——點亮LED燈1、對照開發板原理圖對端口進行賦值如下圖,要使
    發表于 07-21 08:11

    怎樣去實現一種基于51單片機點亮LED的設計

    請教大神怎樣去實現一種基于51單片機點亮LED的設計?
    發表于 09-03 06:17

    如何去實現一種基于51單片機點亮led燈的設計

    如何去實現一種基于51單片機點亮led燈的設計?如何對基于51單片機
    發表于 09-28 08:20

    51單片機是如何點亮LED點陣?

    51單片機是如何點亮LED點陣?
    發表于 09-30 06:02

    如何利用51單片機點亮LED燈?

    如何利用51單片機點亮LED燈?
    發表于 10-09 06:18

    C51單片機如何點亮LED燈?

    C51單片機如何點亮LED燈?
    發表于 10-15 06:00

    如何去實現基于一種51單片機點亮LED燈的程序

    如何去實現基于一種51單片機點亮LED燈的程序?
    發表于 10-20 08:05

    如何利用51單片機點亮LED小燈?

    如何利用51單片機點亮LED小燈?
    發表于 10-28 06:47

    如何對基于51單片機點亮LED進行Proteus仿真呢

    如何對基于51單片機點亮LED進行Proteus仿真呢?其實驗代碼是怎樣的?
    發表于 10-28 08:10

    如何利用51單片機點亮LED燈實現跑馬燈效果?

    如何利用51單片機點亮LED燈實現跑馬燈效果?
    發表于 11-08 06:19

    使用51單片機點亮LED的程序詳細資料免費下載

    本文檔的主要內容詳細介紹的是使用51單片機點亮LED的程序詳細資料免費下載。
    發表于 12-18 08:00 ?13次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>點亮</b><b class='flag-5'>LED</b>的程序詳細資料免費下載

    使用51單片機點亮LED的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機點亮LED的C語言程序免費下載。
    發表于 09-02 17:28 ?0次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>點亮</b><b class='flag-5'>LED</b>的程序免費下載

    hc06藍牙模塊接51單片機點亮LED

    hc06藍牙模塊接51單片機點亮LED
    發表于 11-20 19:06 ?52次下載
    hc06藍牙模塊接<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>點亮</b><b class='flag-5'>LED</b>
    主站蜘蛛池模板: 久久婷婷成人综合色| 亚洲操图| 欧美成人精品久久精品| 全部免费a级毛片| www.射| www.色婷婷| 成人看片在线观看| 美女涩涩网站| 激情网五月天| bt天堂资源在线种子| 天天干妹子| 国产精品久久久久影视不卡 | 婷婷开心激情网| 色在线看| 毛片网站在线| 成年人www| 手机在线看片福利| 夜夜嗷| 日日射夜夜| 欧美性a欧美在线| 老师啊灬啊灬用力啊快224视频 | 丁香婷婷影院| 激情啪啪网站| 最近在线视频免费观看2019| 天天操穴| 西西午夜影院| 女生扒开尿口让男生舔| 五月婷婷丁香综合网| 欧美日韩国产成人高清视频| 国产一级特黄| 国产三级精品最新在线| 一级片免费看| 成人黄色在线网站| 美女扒开尿囗给男人玩的动图| 五月婷婷六月丁香综合| 六月丁香婷婷网| 午夜影视免费| 啪啪午夜视频| 亚洲国产欧美日韩一区二区三区| 欧美一区福利| 亚洲成人午夜影院|