單片機快速入門(mén)實(shí)驗:控制LED閃爍發(fā)光
P89LPC900系列單片機是近幾年出現的新一代80C51內核單片機,許多人都想學(xué)習,并希望應用到自己的產(chǎn)品設計中。下面我就以控制LED閃爍發(fā)光這個(gè)最簡(jiǎn)單的實(shí)驗為例,帶領(lǐng)大家入門(mén)。
●LPC900系列單片機簡(jiǎn)介
LPC900系列單片機是國際著(zhù)名半導體廠(chǎng)商Philips公司(http://www.scn.semiconductors.philips.com/)推出的新一代80C51內核單片機。LPC900兼容標準80C51的指令系統和特殊功能寄存器(SFR),如果學(xué)過(guò)80C51單片機,則很容易入門(mén)。LPC900對80C51原有的CPU內核進(jìn)行了重新設計,在相同的時(shí)鐘頻率下,指令執行速度達到標準80C51的6倍。LPC900內部集成有多種外圍功能部件,如I2C總線(xiàn)、SPI接口、增強型UART、實(shí)時(shí)時(shí)鐘、模擬比較器、A/D和D/A轉換、EEPROM、CCU等等。這些功能部件都可以通過(guò)SFR寄存器方便地進(jìn)行操控。片內Flash容量有1KB到16KB,可以進(jìn)行ISP/IAP操作。LPC900系列單片機可謂是功能強大,性?xún)r(jià)比極高。
●電路原理圖及電路說(shuō)明
在電路中是以28引腳的P89LPC932A1單片機為例的,但是類(lèi)似的電路還可以應用于其它型號上。
LPC900系列單片機屬于低電壓器件,正常的電源電壓范圍通常是2.4~3.6V。在這里,電源部分省略不畫(huà)了,直接取VCC=3.3V。
按照一般的電路設計常識,芯片的電源引腳對地要加上10~100nF的電容(見(jiàn)圖中的C1),以消除可能通過(guò)電源線(xiàn)串進(jìn)來(lái)的高頻干擾。
LPC900系列單片機具有“內部復位”功能。因此可以不使用額外的復位電路。如果選擇了內部復位(在燒寫(xiě)程序時(shí)設置)功能,那么“P1.5/RST”引腳可以作為一個(gè)I/O口使用,但是只能用作輸入,不能用作輸出。
LPC900系列單片機片內都有一個(gè)高精度的RC振蕩器。RC振蕩器的頻率標稱(chēng)是7.3728MHz,這是適合于UART通信的頻率點(diǎn),在整個(gè)工作溫度范圍內精度可達±2.5%。LPC900系列單片機同時(shí)也支持外部晶振。外部晶振可以是低頻、中頻或高頻晶振。低頻晶振中常見(jiàn)的是32.768KHz的手表晶振。高頻晶振可以支持到12MHz,部分型號可以支持到18MHz。用編程器燒寫(xiě)程序時(shí)可以選擇使用哪種類(lèi)型的振蕩器。在這里,我們選用片內RC振蕩器,所以在圖中是沒(méi)有晶振電路的。
發(fā)光二極管電路由1只LED和1只電阻串聯(lián)而成。當P0.4引腳輸出低電平時(shí),點(diǎn)亮LED。在LPC900系列單片機中所有型號都擁有P0.4口。
●LPC900系列單片機I/O口特性說(shuō)明
LPC900系列單片機仍然使用P0、P1、P2、P3這4組I/O口,它們的SFR地址仍然與標準80C51相同。目前LPC900系列單片機已有數十種不同的型號,引腳從8個(gè)到28個(gè),將來(lái)還會(huì )有更多引腳的產(chǎn)品。每種型號配置的I/O數目有多有少,但都是P0~P3口的一部分。
從I/O口的特性上看,標準80C51的P0口在作為I/O口使用時(shí),是開(kāi)漏結構,在實(shí)際應用中通常要添加上拉電阻;P1、P2、P3都是準雙向I/O,內部有上拉電阻,既可作為輸入又可以作為輸出。而LPC900系列單片機的I/O口特性有一定的不同,它們可以被配置成4種不同的工作模式:準雙向I/O、推挽輸出、高阻輸入、開(kāi)漏。
準雙向I/O模式與標準80C51相比,雖然在內部結構上是不同的,但在用法上類(lèi)同,比如要作為輸入時(shí)都必須先寫(xiě)“1”置成高電平,然后才能去讀引腳的電平狀態(tài)。推挽輸出的特點(diǎn)是不論輸出高電平還是低電平都能驅動(dòng)較大的電流,比如輸出高電平時(shí)可以直接點(diǎn)亮LED(要串聯(lián)幾百歐限流電阻),而在準雙向I/O模式下很難辦到。高阻輸入模式的特點(diǎn)是只能作為輸入使用,但是可以獲得比較高的輸入阻抗,這在模擬比較器和ADC應用中是必需的。開(kāi)漏模式與準雙向模式相似,但是沒(méi)有內部上拉電阻。開(kāi)漏模式的優(yōu)點(diǎn)是電氣兼容性好,外部上拉電阻接3V電源,就能和3V邏輯器件接口,如果上拉電阻接5V電源,又可以與5V邏輯器件接口。此外,開(kāi)漏模式還可以方便地實(shí)現“線(xiàn)與”邏輯功能。
I/O口配置寄存器共有8個(gè),P0口的配置寄存器是P0M1和P0M2,P1口是P1M1和P1M2,P2口是P2M1和P2M2,P3口是P3M1和P3M2。他們決定每根I/O口線(xiàn)的工作模式。具體的配置方法,請參考相關(guān)的數據資料。例外情況是P1.5/RST、P1.2/SCL/T0、P1.3/SDA/INT0這3個(gè)I/O引腳。P1.5只能被配置成高阻輸入,P1.2和P1.3引腳只能被配置成高阻輸入或開(kāi)漏方式。
●程序設計
從電路圖中可以知道,當P0.4輸出低電平時(shí)可以點(diǎn)亮LED,輸出高電平時(shí),LED不亮。在程序中要設置一個(gè)定時(shí)器,這樣就能方便地交替點(diǎn)亮和熄滅LED。在LPC900系列單片機中,定時(shí)器T0的用法與標準80C51中的T0是相兼容的。程序比較簡(jiǎn)單,下面列出A51源程序和C51源程序。
●A51源程序
;LPC900實(shí)驗程序:控制簡(jiǎn)單的LED閃爍發(fā)光
;作者:21icbbs LPC900,2005年5月
;程序說(shuō)明:
;用P0.4控制LED閃爍發(fā)光,亮0.1秒,滅0.9秒
;采用片內RC振蕩器,CPU時(shí)鐘CCLK=7.3728MHz
;本程序適用于所有LPC900系列單片機
;定義本程序所用到的LPC900內部SFR寄存器
P0M1DATA84H;P0M1和P0M2是P0口的模式寄存器
P0M2DATA85H;它們共同決定P0口的4種工作模式:準雙向、推挽輸出、高阻輸入、開(kāi)漏
;定義LED控制引腳
pin_LEDBITP0.4;所有的LPC900系列單片機都有P0.4引腳
;復位入口
ORG0000H
AJMP_main;跳到主程序
;函數: void Delay(unsigned char t)
;功能: t>0時(shí),延時(shí)(0.01*t)秒
;t=0時(shí),延時(shí)2.56秒
;參數: t=R7
_Delay:
MOVTH0, #70H;(TH0,TL0)=65536-0.01*PCLK
MOVTL0, #00H;PCLK是外圍器件時(shí)鐘,等于CPU時(shí)鐘CCLK的一半
SETBTR0
_Delay_10:
JBCTF0, _Delay_20
SJMP_Delay_10
_Delay_20:
CLRTR0
DJNZR7, _Delay
RET
;函數:void SysInit()
;功能:系統初始化
_SysInit:
;定時(shí)器T0設置成16位定時(shí)器模式,T1的設置不變
ANLTMOD, #0F0H
ORLTMOD, #01H
;將P0.4設置成開(kāi)漏輸出方式,其它I/O的設置不變
ORLP0M1, #00010000B
ORLP0M2, #00010000B
RET
;函數:void main()
_main:
MOVSP, #30H
ACALL_SysInit
_main_10:
CLRpin_LED;點(diǎn)亮LED
MOVR7, #10;延時(shí)100ms
ACALL_Delay
SETBpin_LED;熄滅LED
MOVR7, #90;延時(shí)900ms
ACALL_Delay
SJMP_main_10
END
●C51源程序
/*
LPC900實(shí)驗程序:控制簡(jiǎn)單的LED閃爍發(fā)光
作者:21icbbs LPC900,2005年5月
程序說(shuō)明:
用P0.4控制LED閃爍發(fā)光,亮0.1秒,滅0.9秒
采用片內RC振蕩器,CPU時(shí)鐘CCLK=7.3728MHz
本程序適用于所有LPC900系列單片機
*/
//包含標準80C51的頭文件
#include
//定義本程序所用到的LPC900內部SFR寄存器
sfr P0M1 = 0x84;//P0M1和P0M2是P0口的模式寄存器
sfr P0M2 = 0x85;//它們共同決定P0口的4種工作模式:準雙向、推挽輸出、高阻輸入、開(kāi)漏
//定義LED控制引腳
sbit pin_LED = P0^4;
//延時(shí)函數
//t>0時(shí),延時(shí)(t*0.01)秒
//t=0時(shí),延時(shí)2.56秒
void Delay(unsigned char t)
{
do
{
TH0 = 0x70;//(TH0,TL0)=65536-0.01*PCLK
TL0 = 0x00;//PCLK是外圍器件時(shí)鐘,等于CPU時(shí)鐘CCLK的一半
TR0 = 1;
for (;;)
{
if ( TF0 )
{
TF0 = 0;
break;
}
}
TR0 = 0;
} while (--t);
}
//系統初始化
void SysInit()
{
//定時(shí)器T0設置成16位定時(shí)器模式,T1的設置不變
TMOD = 0xF0;
TMOD |= 0x01;
//將P0.4設置成開(kāi)漏輸出方式,其它I/O的設置不變
P0M1 |= 0x10;
P0M2 |= 0x10;
}
//主函數
void main()
{
SysInit();
for (;;)
{
pin_LED = 0;//點(diǎn)亮LED
Delay(10);//延時(shí)100ms
pin_LED = 1;//熄滅LED
Delay(90);//延時(shí)900ms
}
}
●用戶(hù)配置字、引導向量和狀態(tài)字簡(jiǎn)介
用戶(hù)配置字寄存器UCFG1位于Flash存儲器,此寄存器非常重要,在燒寫(xiě)程序時(shí)必須正確配置。UCFG1寄存器決定單片機在開(kāi)機運行時(shí)采用哪種振蕩器、復位選擇、掉電檢測是否使能以及對看門(mén)狗的設置。UCFG1寄存器各位的詳細解釋請參考相關(guān)資料,具體配置時(shí)只需在編程器操作界面中選擇就可以了。
引導向量和狀態(tài)字用于支持ISP(在系統可編程)操作。在本實(shí)驗中,暫不使用ISP功能。對于LPC932A1來(lái)說(shuō),引導向量默認為1FH,引導狀態(tài)字默認為01H,但要正常運行程序必須要把引導狀態(tài)字設置成00H。
本實(shí)驗非常簡(jiǎn)單,以L(fǎng)PC PRO編程器為例,在配置界面中,我們選擇:WDT禁止,內部復位,掉電檢測禁止,WDSE禁止,內部RC振蕩器;引導向量不使用。在編程界面中,“ISP Memory”和“EEPROM Memory”項暫時(shí)不要選中。
●如何調試運行
程序寫(xiě)完了,接下來(lái)要進(jìn)行運行調試,大致分為兩個(gè)步驟:編譯源程序,生成HEX文件;將HEX文件下載到單片機中運行或者用仿真器調試。
德國Keil軟件公司(http://www.keil.com)開(kāi)發(fā)的 Keil C51 是一種專(zhuān)門(mén)為8051單片機設計的高效率C語(yǔ)言編譯器,符合ANSI C標準,同時(shí)還集成有宏匯編器。LPC900系列單片機也屬于8051家族,Keil C51可以很好地支持對LPC900的開(kāi)發(fā)。如何使用Keil C51是個(gè)很大的課題,限于篇幅不再做介紹。如果沒(méi)有用過(guò)Keil C51,又想快速入門(mén),可以從網(wǎng)上找一個(gè)免費的8051匯編器。
周立功單片機公司(http://www.zlgmcu.com)開(kāi)發(fā)的 LPC PRO 編程器是一款全面支持LPC900系列單片機燒寫(xiě)程序的專(zhuān)業(yè)編程器產(chǎn)品。用這款編程器燒寫(xiě)LPC900的程序非常方便。目前我用的正是LPC PRO。
周立功單片機公司開(kāi)發(fā)的 MiniICP 下載線(xiàn)專(zhuān)門(mén)用于對LPC900系列單片機進(jìn)行在電路編程(In Circuit Programming,ICP)。用ICP方式下載程序時(shí)只需使用單片機的5個(gè)引腳:VDD、VSS、RST、P0.4(PDA)和P0.5(PCL)。實(shí)際應用中,通常的做法是:在電路板上留出ICP接口,相關(guān)的信號線(xiàn)設計成跳線(xiàn)方式,下載程序時(shí),跳線(xiàn)設置成ICP編程方式,下載完畢再跳回去,使用非常方便。

周立功單片機公司開(kāi)發(fā)的 TKS-936 實(shí)時(shí)在線(xiàn)仿真器是專(zhuān)業(yè)的LPC900系列單片機仿真器,支持Keil C51的硬件仿真環(huán)境,支持TKStudio集成調試環(huán)境,使用Philips公司授權的專(zhuān)用BondOut芯片,仿真更加真實(shí)。
* - 本貼最后修改時(shí)間:2005-5-28 16:23:39 修改者:zlg900
* - 修改原因:zlg900處理圖片
評論