在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機快速入門實驗:控制LED閃爍發(fā)光

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

            作者: 時間:2011-12-29 來源:網(wǎng)絡(luò) 收藏
            如果說初學(xué)計算機編程,最簡單的入門程序是在屏幕上顯示“Hello world!”的話,那么學(xué)習(xí)最簡單的入門實驗就是控制發(fā)光二極管(LED)閃爍發(fā)光。
            P89LPC900系列是近幾年出現(xiàn)的新一代80C51內(nèi)核,許多人都想學(xué)習(xí),并希望應(yīng)用到自己的產(chǎn)品設(shè)計中。下面我就以控制這個最簡單的實驗為例,帶領(lǐng)大家入門。


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


            ●電路原理圖及電路說明

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


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


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


            ●A51源程序

            ;LPC900實驗程序:控制簡單的
            ;作者:21icbbs LPC900,2005年5月
            ;程序說明:
            ;用P0.4控制,亮0.1秒,滅0.9秒
            ;采用片內(nèi)RC振蕩器,CPU時鐘CCLK=7.3728MHz
            ;本程序適用于所有LPC900系列單片機



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


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


            ;復(fù)位入口
            ORG0000H
            AJMP_main;跳到主程序



            ;函數(shù): void Delay(unsigned char t)
            ;功能: t>0時,延時(0.01*t)秒
            ;t=0時,延時2.56秒
            ;參數(shù): 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



            ;函數(shù):void SysInit()
            ;功能:系統(tǒng)初始化

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


            ;函數(shù):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閃爍發(fā)光
            作者:21icbbs LPC900,2005年5月
            程序說明:
            用P0.4控制LED閃爍發(fā)光,亮0.1秒,滅0.9秒
            采用片內(nèi)RC振蕩器,CPU時鐘CCLK=7.3728MHz
            本程序適用于所有LPC900系列單片機
            */



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


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


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



            //延時函數(shù)
            //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);
            }


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


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


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




            ●如何調(diào)試運行
            程序?qū)懲炅耍酉聛硪M行運行調(diào)試,大致分為兩個步驟:編譯源程序,生成HEX文件;將HEX文件下載到單片機中運行或者用仿真器調(diào)試。
            德國Keil軟件公司(http://www.keil.com)開發(fā)的 Keil C51 是一種專門為8051單片機設(shè)計的高效率C語言編譯器,符合ANSI C標準,同時還集成有宏匯編器。LPC900系列單片機也屬于8051家族,Keil C51可以很好地支持對LPC900的開發(fā)。如何使用Keil C51是個很大的課題,限于篇幅不再做介紹。如果沒有用過Keil C51,又想,可以從網(wǎng)上找一個免費的8051匯編器。
            周立功單片機公司(http://www.zlgmcu.com)開發(fā)的 LPC PRO 編程器是一款全面支持LPC900系列單片機燒寫程序的專業(yè)編程器產(chǎn)品。用這款編程器燒寫LPC900的程序非常方便。目前我用的正是LPC PRO。

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

            周立功單片機公司開發(fā)的 TKS-936 實時在線仿真器是專業(yè)的LPC900系列單片機仿真器,支持Keil C51的硬件仿真環(huán)境,支持TKStudio集成調(diào)試環(huán)境,使用Philips公司授權(quán)的專用BondOut芯片,仿真更加真實。



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



            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉