51單片機玩轉物聯網基礎篇02-點亮LED燈,實現跑馬燈效果

2020-08-30 小驛物聯

前言

上一節,我們完成了51單片機開發環境的搭建,本節我們正式學習51單片機,程式語言的學習,通常是從第一個&34;開始,而點燈實驗便是單片機學習的開始。

一、基礎知識

1.單片機最小系統

一個最小的單片機系統,需要有單片機、電源電路、晶振電路、復位電路組成,這幾部分存在就可以使單片機正常工作,如果需要頻繁的下載程序,還需增加下載電路。

(1) 單片機

首先,我們先介紹下單片機,

引腳序號名稱說明

以下為I/O埠:

P0

第一功能:8位,漏極開路的雙向I/O口。用時要加上拉電阻,可驅動8個LS型負載。

第二功能:低8位地址線和8位數據線分時復用;此時為真正的雙向三態口。

P1:

8位準雙向I/O口,可驅動4個LS型TTL負載。

P2:

8位準雙向I/O口,與地址總線(高8位)復用,可驅動4個LS型TTL負載。

P3口:

8位準雙向I/O口,雙功能復用口,可驅動4個LS型TTL負載。

(2) 電源電路

單片機系統需要5V電壓供電,直接輸入的電壓不太穩定性,需要電路穩壓,同時點亮LED2,可以通過LED2的亮滅初步觀察系統運行情況,正常運行情況,LED2常亮。

ESP8266和NRF24L01需要3.3V供電,因此使用ASM1117對VCC進行降壓到3.3V。

(3) 晶振電路

單片機晶振電路如下圖所示,晶振的選擇有兩種:12M或者11.0592M,11.0592串口通信波特率計算會更加精準,而12M的晶振計算延時時間比較方便,本實驗使用開發板採用11.0592M,此外為了增加系統穩定性,防止電感幹擾,需要在晶振兩端增加電容。

(4) 復位電路

單片機有一個RST引腳,只需要將此引腳保持一段時間高電平即可復位STC89C52單片機,當RESET案件按下瞬間,C9還未充電,兩端電壓為0,R4兩端電壓為5V,5V為高電平,作為復位信號經RST引腳送入單片機,對單片機進行復位,同時隨著電源對C9充電,C9電源不斷上升,R4兩端電壓不斷下降,當C9兩端電壓達到5V時,充電結束,此時R4兩端電壓為0,單片機RST引腳變為低電平,單片機進入正常工作裝填,復位完成。

2.LED燈發光原理

LED燈中有電流通過時候,將點亮LED燈,單片機系統中,常見的LED燈如下所示,其中長的引腳一端為正極,短的為負極。

那麼問題來了,如何讓LED中有電流通過呢?電流到多少才能點亮LED呢?我們先看下實際電路設計中常用的LED設計電路

上圖中LED1左邊接入電源正極、右邊接入負極,電流方能通過點亮LED,此時LED電阻幾乎為0,如果電源接反方向了,LED產生很大電阻,阻止電流通過,此時,不能LED不能點亮,一般而言LED正向接入電源,保證通過LED中的電流為20mA左右即可點亮LED。

3.查看開發板LED部分原理圖

從上圖可知,LED3接入了單品阿吉的P10引腳,因此,只需要給P10引腳低電平即可點亮LED。

二、實例

1.新建一個空白工程

打開Keil4,點擊Project->New uVision Project...

然後選擇工程保存路徑,並設置工程名字如下

選擇AT89C52,本實驗使用STC89C52,Keil中默認沒有,選擇與之相近的AT89C52即可。

然後出現下圖,點擊否即可,原因是Keil C51已經幫我們完成了啟動

然後Source Group文件夾,選擇Add Files to Group &39;

緊接著本地創建main.c文件,添加即可

添加完成後,工程中打開main.c,如下圖所示

2.點亮LED

(1) 程序

include <reg52.h>sbit LED3 = P1^0;unsigned char val = 0;void delay_ms(int ms){ int i = 0, j = 0; for (i = ms; i > 0; i--) { for (j = 110; j > 0; j--); }}// 跑馬燈int main(void){ // 滅所有燈 val = 0xFF; // 11111111 while(1) { val = val << 1; P1 = val; if (val == 0) { val = 0xFF; } delay_ms(200); }}

程序中邏輯處理,用到了左移算法,0xFF二進位是1111 1111,對應P10所有引腳都為高電平,LED3-LED10都熄滅,0xFF左移一位是0xFE,二進位為1111 1110,LED3點亮,0xFE左移一位是1111 1100,LED3和LED4同時點亮,依次類推,直到數據為0, 所有燈點亮後,重新賦值0xFF。

(2)下載運行

下載後,可以看到跑馬燈效果,LED燈逐個點亮。

一葉孤沙出品:一沙一世界,一葉一菩提

相關焦點

  • 51單片機玩轉物聯網基礎篇05-控制繼電器
    前言本節我們開始學習如何使用51單片機控制繼電器,有了繼電器,我們可以使用單片機輸出的低電平控制高電平期間工作,比如繼電器接到220V用電器上,可通過單片機智能控制用電器。從上圖可知,給繼電器模塊供電後,紅色LED燈就會被點亮
  • 51單片機系列之2點亮第一個led燈
    點亮led燈簡單的理解就是要求陽極高電平陰極低電平。接下來我們去看看單片機的原理圖,找到led模塊。如圖可以看到led的陽極是連接的VCC(電源高電平)陰極連接的接口是單片機的I/O口P20到P27.要想led點亮只需控制單片機I/O口輸出低電平即可(單片機I/O口默認高電平)。接下來就是如何編寫程序並燒錄到單片機中了。
  • 51單片機玩轉物聯網基礎篇03-獨立按鍵
    前言上一節,我們完成了51單片機控制LED燈,並實現流水燈效果,本節我們學習操作獨立按鍵,並通過兩個按鍵,分別打開和關閉所有LED燈,按鍵作為輸入設備,在系統開發過程中十分常見,一般來說,按鍵可以設置系統參數、控制系統運行狀態。
  • 51單片機玩轉物聯網基礎篇01-開發環境搭建
    前言上至航天,下至兒童玩具,凡事沾一點智能的東西,都離不開單片機的身影......,本文開始,我們學習STC89C52單片機,這款單片機屬於8051系列單片機,51單片機作為入門級單片機不僅在教學實驗中應用廣泛,在實際項目中應用亦是十分廣泛。
  • MCS-51單片機控制跑馬燈的三種方法
    在MCS一51單片機的控制系統中,它的四個並行8位輸入輸出埠P0一P3是我們經常使用的。在並行埠的編程學習中,「跑馬燈」是單片機並行埠輸出控制的典型實例。所謂跑馬燈,是指將八個發光二極體分別連接到單片機的某一併行埠的八根線上,通過編程控制這八個發光二極體從低到高或從高到低依次點亮。
  • 51單片機入門:LED燈實現不同頻率閃爍
    在上一篇文章中,我們用51單片機實現了單個LED燈的閃爍,但閃爍頻率固定的。下面我們實現LED燈不同頻率的閃爍!
  • 單片機小製作,LED小燈瓶
    之所以能這樣連接,是因為AVR單片機的每個I/O都是3態輸出。如果用普通51單片機,這樣連接是不行的。那麼又是如何控制LED的亮度呢?控制亮度的關鍵是ATtiny13的兩路PWM,它們可以分別設置連接到PB0和PB1引腳上。在ATtiny13使用內部振蕩器的情況下,PWM的最高頻率可設置為47.5kHz。
  • 51單片機改造LED燈管
    主要改動在關LED燈這個步驟,我需要增加一個功能,能夠通過遙控器來對LED燈管進行斷電操作。接著就是需求分析並確認方案對於上述需求的分析,考慮到自己手頭閒置很久模塊物料的最大化的利用(主要是為了省錢)最終定下來的方案如下(使用模塊基本都是以前自學使用的,後面基本都閒置了):主控晶片:STC90C516RD+遙控:紅外遙控器+紅外接收模塊通斷電:繼電器開關模塊啟動開關:無鎖開關東西都準備好了,接下來需要進行原理圖的設計和各模塊之間的連接
  • 單片機LED燈花式閃爍電路圖及程序
    在點亮LED燈的程序中我們知道開發板上的LED燈是接到高電平的,如果單片機引腳輸出電平,LED導通發亮。
  • 51單片機利用LED宏,控制LED等的亮度
    c代碼//#include my51.h#includetypedef unsigned char u8;typedef unsigned short int u16;#ifndef _51LED_#define _51LED_#define led P1 //P1總線連8個led燈,燈連
  • 51單片機與esp8266例程實現的LED無線控制
    一、關於51單片機和無線WIFI模塊的接線方面   RXD、TXD、GND和51單片機的TXD、RXD、GND接好,模塊其他引腳均為高電平,電源VCC是3.3V左右(兩節1.5v乾電池),本人由於沒有穩壓模塊,偷懶了當時使用5V的直流源,測試結果目前沒有問題(不過不建議啊!)
  • 51單片機之計時器與計數器
    =~led; } } 關鍵字:51單片機  計時器  計數器 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/ic494675.html
  • 基於STM32從零寫作業系統系列---點亮LED燈
    目的:用彙編語言編寫一個點亮LED的程序,用於驗證前面章節中,下載.bin文件到晶片後,程序能否運行。要求:1.晶片手冊2.開發板上有LED模塊實驗步驟:1.新建文件夾led_proj,複製bootloader_proj(參照本系列第3篇文章)文件夾中的所有文件到led_proj文件夾。2.新建文件led.s,編寫代碼。
  • LED燈的51單片機pwm控制實例
    我們知道 51單片機本身是沒有pwm接口的,這個程序是通過軟體模擬pwm.在一定的頻率的方波中,調整高電平和低電平的佔空比,即可實現LED燈亮度控制
  • 51單片機程序匯總(一)
    /*************************************************************************************** 點亮第一個LED實驗 *實現現象:下載程序後D1指示燈點亮注意事項:無 ***********
  • 51單片機玩轉物聯網基礎篇04-蜂鳴器
    前言上一節,我們完成了按鍵操作,本節我們學習使用蜂鳴器,首先我們介紹下蜂鳴器,然後完成實驗:上電後默認驅動頻率為5KHZ,通過KEY1控制驅動頻率為1KHZ ,蜂鳴器,KEY2控制驅動頻率為 2KHZ,可以聽到不同的效果。
  • 安卓手機與51單片機間藍牙通信的實現
    藍牙耳機今天分享下如利用藍牙4.0模塊建立安卓手機和51單片機間的藍牙通信。(1)安卓智慧型手機一部,只用是近幾年的智慧型手機都內嵌藍牙模塊,藍牙4.0及以上(2)任意51單片機最小系統都可使用,如下文連結。
  • 用51單片機實現pwm專題及常見問題 - CSDN
    基於51單片機脈衝寬度調製(即PWM)直流電機轉速快慢以及霍爾測速的項目一、前言1、基於51單片機脈衝寬度調製(即PWM)直流電機轉速快慢以及霍爾測速的項目包括用Keil軟體編寫單片機C語言程序和用
  • 單片機實驗--跑馬燈
    1.彙編語言的原始碼如下:ORG0000H;這個彙編程序實現的是跑馬燈實驗本文引用地址:http://www.eepw.com.cn/article/201611/319586.htmJMPSTART
  • 51單片機-最小系統-流水燈-仿真
    打開APP 51單片機-最小系統-流水燈-仿真 Easadon 發表於 2020-05-26 16:00:42 現在開始學習單片機的仿真了,一般用的都是Proteus軟體 第一次使用,先畫了一個單片機最小系統練練手,加上流水燈代碼,做一個簡單的實驗, 在此把流程做一個簡單的介紹 1.建立工程之後,選擇相應的設備,所需要的設備如圖所示,大家自行添加