單片機快速入門實驗:控制LED閃爍發光

2020-12-12 電子產品世界
如果說初學計算機編程,最簡單的入門程序是在屏幕上顯示「Hello world!」的話,那麼學習單片機最簡單的入門實驗就是控制發光二極體(LED)閃爍發光。
P89LPC900系列單片機是近幾年出現的新一代80C51內核單片機,許多人都想學習,並希望應用到自己的產品設計中。下面我就以控制LED閃爍發光這個最簡單的實驗為例,帶領大家入門。


●LPC900系列單片機簡介
LPC900系列單片機是國際著名半導體廠商Philips公司(http://www.scn.semiconductors.philips.com/)推出的新一代80C51內核單片機。LPC900兼容標準80C51的指令系統和特殊功能寄存器(SFR),如果學過80C51單片機,則很容易入門。LPC900對80C51原有的CPU內核進行了重新設計,在相同的時鐘頻率下,指令執行速度達到標準80C51的6倍。LPC900內部集成有多種外圍功能部件,如I2C總線、SPI接口、增強型UART、實時時鐘、模擬比較器、A/D和D/A轉換、EEPROM、CCU等等。這些功能部件都可以通過SFR寄存器方便地進行操控。片內Flash容量有1KB到16KB,可以進行ISP/IAP操作。LPC900系列單片機可謂是功能強大,性價比極高。


●電路原理圖及電路說明

在電路中是以28引腳的P89LPC932A1單片機為例的,但是類似的電路還可以應用於其它型號上。
LPC900系列單片機屬於低電壓器件,正常的電源電壓範圍通常是2.4~3.6V。在這裡,電源部分省略不畫了,直接取VCC=3.3V。
按照一般的電路設計常識,晶片的電源引腳對地要加上10~100nF的電容(見圖中的C1),以消除可能通過電源線串進來的高頻幹擾。
LPC900系列單片機具有「內部復位」功能。因此可以不使用額外的復位電路。如果選擇了內部復位(在燒寫程序時設置)功能,那麼「P1.5/RST」引腳可以作為一個I/O口使用,但是只能用作輸入,不能用作輸出。
LPC900系列單片機片內都有一個高精度的RC振蕩器。RC振蕩器的頻率標稱是7.3728MHz,這是適合於UART通信的頻率點,在整個工作溫度範圍內精度可達±2.5%。LPC900系列單片機同時也支持外部晶振。外部晶振可以是低頻、中頻或高頻晶振。低頻晶振中常見的是32.768KHz的手錶晶振。高頻晶振可以支持到12MHz,部分型號可以支持到18MHz。用編程器燒寫程序時可以選擇使用哪種類型的振蕩器。在這裡,我們選用片內RC振蕩器,所以在圖中是沒有晶振電路的。
發光二極體電路由1隻LED和1隻電阻串聯而成。當P0.4引腳輸出低電平時,點亮LED。在LPC900系列單片機中所有型號都擁有P0.4口。


●LPC900系列單片機I/O口特性說明
LPC900系列單片機仍然使用P0、P1、P2、P3這4組I/O口,它們的SFR地址仍然與標準80C51相同。目前LPC900系列單片機已有數十種不同的型號,引腳從8個到28個,將來還會有更多引腳的產品。每種型號配置的I/O數目有多有少,但都是P0~P3口的一部分。
從I/O口的特性上看,標準80C51的P0口在作為I/O口使用時,是開漏結構,在實際應用中通常要添加上拉電阻;P1、P2、P3都是準雙向I/O,內部有上拉電阻,既可作為輸入又可以作為輸出。而LPC900系列單片機的I/O口特性有一定的不同,它們可以被配置成4種不同的工作模式:準雙向I/O、推輓輸出、高阻輸入、開漏。
準雙向I/O模式與標準80C51相比,雖然在內部結構上是不同的,但在用法上類同,比如要作為輸入時都必須先寫「1」置成高電平,然後才能去讀引腳的電平狀態。推輓輸出的特點是不論輸出高電平還是低電平都能驅動較大的電流,比如輸出高電平時可以直接點亮LED(要串聯幾百歐限流電阻),而在準雙向I/O模式下很難辦到。高阻輸入模式的特點是只能作為輸入使用,但是可以獲得比較高的輸入阻抗,這在模擬比較器和ADC應用中是必需的。開漏模式與準雙向模式相似,但是沒有內部上拉電阻。開漏模式的優點是電氣兼容性好,外部上拉電阻接3V電源,就能和3V邏輯器件接口,如果上拉電阻接5V電源,又可以與5V邏輯器件接口。此外,開漏模式還可以方便地實現「線與」邏輯功能。
I/O口配置寄存器共有8個,P0口的配置寄存器是P0M1和P0M2,P1口是P1M1和P1M2,P2口是P2M1和P2M2,P3口是P3M1和P3M2。他們決定每根I/O口線的工作模式。具體的配置方法,請參考相關的數據資料。例外情況是P1.5/RST、P1.2/SCL/T0、P1.3/SDA/INT0這3個I/O引腳。P1.5隻能被配置成高阻輸入,P1.2和P1.3引腳只能被配置成高阻輸入或開漏方式。


●程序設計
從電路圖中可以知道,當P0.4輸出低電平時可以點亮LED,輸出高電平時,LED不亮。在程序中要設置一個定時器,這樣就能方便地交替點亮和熄滅LED。在LPC900系列單片機中,定時器T0的用法與標準80C51中的T0是相兼容的。程序比較簡單,下面列出A51源程序和C51源程序。


●A51源程序

;LPC900實驗程序:控制簡單的LED閃爍發光
;作者:21icbbs LPC900,2005年5月
;程序說明:
;用P0.4控制LED閃爍發光,亮0.1秒,滅0.9秒
;採用片內RC振蕩器,CPU時鐘CCLK=7.3728MHz
;本程序適用於所有LPC900系列單片機



;定義本程序所用到的LPC900內部SFR寄存器
P0M1DATA84H;P0M1和P0M2是P0口的模式寄存器
P0M2DATA85H;它們共同決定P0口的4種工作模式:準雙向、推輓輸出、高阻輸入、開漏


;定義LED控制引腳
pin_LEDBITP0.4;所有的LPC900系列單片機都有P0.4引腳


;復位入口
ORG0000H
AJMP_main;跳到主程序



;函數: void Delay(unsigned char t)
;功能: t>0時,延時(0.01*t)秒
;t=0時,延時2.56秒
;參數: t=R7

_Delay:
MOVTH0, #70H;(TH0,TL0)=65536-0.01*PCLK
MOVTL0, #00H;PCLK是外圍器件時鐘,等於CPU時鐘CCLK的一半
SETBTR0
_Delay_10:
JBCTF0, _Delay_20
SJMP_Delay_10
_Delay_20:
CLRTR0
DJNZR7, _Delay
RET



;函數:void SysInit()
;功能:系統初始化

_SysInit:
;定時器T0設置成16位定時器模式,T1的設置不變
ANLTMOD, #0F0H
ORLTMOD, #01H
;將P0.4設置成開漏輸出方式,其它I/O的設置不變
ORLP0M1, #00010000B
ORLP0M2, #00010000B
RET


;函數:void main()
_main:
MOVSP, #30H
ACALL_SysInit
_main_10:

CLRpin_LED;點亮LED

MOVR7, #10;延時100ms
ACALL_Delay

SETBpin_LED;熄滅LED

MOVR7, #90;延時900ms
ACALL_Delay

SJMP_main_10


END


●C51源程序

/*
LPC900實驗程序:控制簡單的LED閃爍發光
作者:21icbbs LPC900,2005年5月
程序說明:
用P0.4控制LED閃爍發光,亮0.1秒,滅0.9秒
採用片內RC振蕩器,CPU時鐘CCLK=7.3728MHz
本程序適用於所有LPC900系列單片機
*/



//包含標準80C51的頭文件
#include //LPC900系列單片機的SFR與標準80C51兼容


//定義本程序所用到的LPC900內部SFR寄存器
sfr P0M1 = 0x84;//P0M1和P0M2是P0口的模式寄存器
sfr P0M2 = 0x85;//它們共同決定P0口的4種工作模式:準雙向、推輓輸出、高阻輸入、開漏


//定義LED控制引腳
sbit pin_LED = P0^4;



//延時函數
//t>0時,延時(t*0.01)秒
//t=0時,延時2.56秒

void Delay(unsigned char t)
{
do
{
TH0 = 0x70;//(TH0,TL0)=65536-0.01*PCLK
TL0 = 0x00;//PCLK是外圍器件時鐘,等於CPU時鐘CCLK的一半
TR0 = 1;
for (;;)
{
if ( TF0 )
{
TF0 = 0;
break;
}
}
TR0 = 0;
} while (--t);
}


//系統初始化
void SysInit()
{
//定時器T0設置成16位定時器模式,T1的設置不變
TMOD = 0xF0;
TMOD |= 0x01;
//將P0.4設置成開漏輸出方式,其它I/O的設置不變
P0M1 |= 0x10;
P0M2 |= 0x10;
}


//主函數
void main()
{
SysInit();
for (;;)
{
pin_LED = 0;//點亮LED
Delay(10);//延時100ms
pin_LED = 1;//熄滅LED
Delay(90);//延時900ms
}
}


●用戶配置字、引導向量和狀態字簡介
用戶配置字寄存器UCFG1位於Flash存儲器,此寄存器非常重要,在燒寫程序時必須正確配置。UCFG1寄存器決定單片機在開機運行時採用哪種振蕩器、復位選擇、掉電檢測是否使能以及對看門狗的設置。UCFG1寄存器各位的詳細解釋請參考相關資料,具體配置時只需在編程器操作界面中選擇就可以了。
引導向量和狀態字用於支持ISP(在系統可編程)操作。在本實驗中,暫不使用ISP功能。對於LPC932A1來說,引導向量默認為1FH,引導狀態字默認為01H,但要正常運行程序必須要把引導狀態字設置成00H。
本實驗非常簡單,以LPC PRO編程器為例,在配置界面中,我們選擇:WDT禁止,內部復位,掉電檢測禁止,WDSE禁止,內部RC振蕩器;引導向量不使用。在編程界面中,「ISP Memory」和「EEPROM Memory」項暫時不要選中。




●如何調試運行
程序寫完了,接下來要進行運行調試,大致分為兩個步驟:編譯源程序,生成HEX文件;將HEX文件下載到單片機中運行或者用仿真器調試。
德國Keil軟體公司(http://www.keil.com)開發的 Keil C51 是一種專門為8051單片機設計的高效率C語言編譯器,符合ANSI C標準,同時還集成有宏彙編器。LPC900系列單片機也屬於8051家族,Keil C51可以很好地支持對LPC900的開發。如何使用Keil C51是個很大的課題,限於篇幅不再做介紹。如果沒有用過Keil C51,又想快速入門,可以從網上找一個免費的8051彙編器。
周立功單片機公司(http://www.zlgmcu.com)開發的 LPC PRO 編程器是一款全面支持LPC900系列單片機燒寫程序的專業編程器產品。用這款編程器燒寫LPC900的程序非常方便。目前我用的正是LPC PRO。

周立功單片機公司開發的 MiniICP 下載線專門用於對LPC900系列單片機進行在電路編程(In Circuit Programming,ICP)。用ICP方式下載程序時只需使用單片機的5個引腳:VDD、VSS、RST、P0.4(PDA)和P0.5(PCL)。實際應用中,通常的做法是:在電路板上留出ICP接口,相關的信號線設計成跳線方式,下載程序時,跳線設置成ICP編程方式,下載完畢再跳回去,使用非常方便。

周立功單片機公司開發的 TKS-936 實時在線仿真器是專業的LPC900系列單片機仿真器,支持Keil C51的硬體仿真環境,支持TKStudio集成調試環境,使用Philips公司授權的專用BondOut晶片,仿真更加真實。



* - 本貼最後修改時間:2005-5-28 16:23:39 修改者:zlg900
* - 修改原因:zlg900處理圖片

相關焦點

  • 單片機實驗簡明過程
    單片機綜合訓練Ⅰ實驗指導書目 錄一、 實驗環境介紹 11、Keil集成開發環境介紹 1二、 實驗內容 9實驗一 練習使用集成調試軟體9實驗二 簡單輸入輸出 10實驗三 定時器應用 11實驗四 流水燈程序設計 13一、實驗環境介紹1、Keil集成開發環境介紹Keil集成開發環境是眾多單片機應用開發的優秀軟體之一
  • 51單片機輕鬆入門與實踐 — 暢學單片機
    簡介      本課程是單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習單片機,循序漸進地基於理論講解並結合實驗項目實戰開發
  • 基於AT89C51單片機16×16 LED漢字滾動顯示屏的設計
    其中,AT89C51是一種帶4kB閃爍可編程可擦除只讀存儲器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低電壓、高性能CMOS型8位微處理器,俗稱單片機。該器件採用ATMEL高密度非易失存儲器製造技術製造,工業標準的MCS一5l指令集和輸出管腳相兼容。
  • 【連載14】LED 小燈的原理解析 | 學單片機做四軸飛行器項目故事
    《 STC15 單片機實戰指南( C 語言版)》 一書以一堅科技研發的飛天三號( FSST15-V1.0)實驗板為硬體平臺, 以《
  • 用單片機實現位邏輯運算
    51單片機實驗8:led點陣(1):點亮一個點 開發板led點陣模塊電路圖如下:74HC595:74HC595為表示出輸入74HC595的8位二進位數,開發板加入了led模塊(圖一中綠色所示)。若要使led發光,則需將JP595接vcc。OE為輸出有效控制端,低電平有效,所以務必將JOE短接片短接到GND端。
  • 第二節:delay()延時實現LED燈的閃爍
    (1)硬體平臺:基於朱兆祺51單片機學習板。(2)實現功能:讓一個LED閃爍。* 本程序基於朱兆祺51單片機學習板。*/ initial_peripheral();/* 注釋五:* while(1){}主函數循環區屬於鴻哥三區一線理論的第三區,* 專門用來編寫被循環掃描到的非中斷應用程式*/ while(1) { led_flicker(); //LED閃爍應用程式
  • 51單片機+PID算法水溫控制系統設計
    本系統設計採用基於PID算法的單片機控制來實現水溫的調控。單片機控制部分採用AT89C51單片機為核心,採用軟體編程,實現用PID算法來控制PWM波的產生,繼而控制電爐的加熱來實現溫度控制。通過編程對PID各參數的調整,來達到提高加溫速度,減小超調的目的。
  • 用一個自閃爍發光二極體帶動三個led一起閃爍
    材料:一塊洞洞板、一個usb公頭、一個9014三極體、一個自閃爍發光二極體、三個綠色普通發光二極體。電路圖。用自閃爍發光二極體控制三極體基極的導通和截止,使三極體集電極間斷通過電流,三個綠色發光二極體也就不斷的發亮和熄滅。
  • MSP430單片機輕鬆入門與實踐 — 暢學單片機
    簡介     本課程是MSP430單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習MSP430單片機
  • Proteus 與 kilec51聯機調試入門實驗
    kilec51與Proteus 聯機的調試,首先軟體得自己從網上下下了你的還會裝,開始下了哥 kile 2.0的,進行聯機調試,可就是不行;問題是kile運行中不會出現startup.a51這個東東好鬱悶,換到3.0就行了;應該是我下的那個版本不行;今天晚上終於把聯機小實驗調通了
  • 這裡有一款比單片機更好用的微處理器,那就是Arduino
    在幾年前,鑲嵌式的開發使用的微控制器用的較多的,較為傳統的一般就是單片機了,但是單片機相對於一些鑲嵌式開發的入門者或者是沒有編程基礎卻要簡單使用鑲嵌式的工作者來說,學習和使用單片機起來,還是相當的麻煩和困難的。
  • 樓頂發光字閃爍的4大常見原因分析及其對應解決方案
    路過街頭巷尾,我們可以看到種類繁多的樓頂發光字,不經意間,會發現總有那麼幾個發光字在閃爍,大多數情況下,閃爍的樓頂發光字給人的感覺很不好。有時候人眼接受不了那麼高頻率的無規律閃爍,說簡單點就是刺眼;也有一些情況的閃爍是設計不合理給人視覺上的汙染導致。
  • 單片機控制的紅外線防盜報警器
    單片機控制的紅外線防盜報警器
  • 用實驗講解:巧用1個GPIO控制2個LED顯示4種狀態
    當時沒有帶具體的實驗現象,有點小遺憾。清華大學的卓老師看到之後,做了具體的實驗分析。不僅重點分析了串並聯兩種實現方式,還對串聯方式時兩個LED存在微亮的問題提出了解決方案。文章講解得非常到位,有理有據,實在是「實踐出真知的典範」。
  • 6位LED顯示單片機控制電子鐘/計數器
    我們能提供的完整的彙編語言源程序清單及電路原理設計圖有助於學習者進行分析和進行實驗驗證產品1:6位LED顯示單片機控制電子鐘/計數器成品板成品每套84元本文引用地址:http://www.eepw.com.cn/article/201611/317464
  • 分享一份通俗易懂的msp430單片機學習教程
    自製實驗電路板,需要單片機晶片內部工作原理的知識、封裝知識,清楚的知道每一個引腳的功能,還需要數碼管、按鈕、排電阻、三端穩壓器、二極體、散熱器、電解電容、普通電容、電阻、鈕子開關等元件的知識,對於初學者,可以做一個只有3個數碼管、8個按鈕、8個發光二極體的簡單實驗板,這樣的實驗板,雖然簡單,但足可以幫助初學者入門單片機。
  • 通俗易懂講PIC單片機:從一竅不通到入門進步
    單片機入門不難-談PIC系列(轉自礦石收音機論壇---嶗山)十年前的老帖子,講得通俗易懂,分享之。本文引用地址:http://www.eepw.com.cn/article/201803/376687.htm  請看圖1
  • 用幾個分立元件使三個LED燈交替閃爍
    材料:三個470Ω電阻、三個10k電阻、三個發光二極體、三個100uF電容、三個1815三極體。還有一塊洞洞板、一些細鋁絲、一個usb公頭。用熱熔膠把公頭尾部粘接固定在洞洞板左側邊緣中間,尾部最上面的插腳是正極,最下面的是負極。把六個電阻依次交叉排列,最右側是10k電阻。在洞洞板背面,用細鋁絲將電阻上端插腳連接在一起,於公頭正極連接。
  • 終極教程,帶具體實驗現象,1個GPIO控制2個LED顯示4種狀態,歡迎討論!
    今天在卓老師公眾號看到了具體的實驗分析,並分析兩種串並聯方式的實驗現象,講解的非常到位,今天分享給大家閱讀。在下面的麵包板上,演示了使用一條IO控制線控制兩個LED分別點亮和熄滅的四種狀態。▲ 一個個單片機IO埠分別控制兩個LED為了理解其中的工作原理,則需要熟悉LED的兩個工作特性:正如發光二極體名字所說,LED只能向二極體那樣單向導電發光。如果施加電壓極性反了,LED則不工作。
  • PWM控制MOSFET搭建的H橋電路驅動直流電機仿真與單片機源碼
    PIC單片機 proteus H橋驅動直流電機PWM控制MOSFET搭建的H橋電路驅動直流電機運行仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)反映在LED燈上,可以看到LED燈的亮度不斷變化//// ACLK= n/a, MCLK= SMCLK= default DCO ~ 800k//// MSP430F13x// -------------------// /|| XIN|-// | | | 32kHz// --|RST XOUT|-// | |// | P1.2|--》LED////// 硬體電路:MSP430F135核心實驗板-I