全中文中語(yǔ)言微電腦單片機(jī)編程系統(tǒng)使用教程_第1頁(yè)
全中文中語(yǔ)言微電腦單片機(jī)編程系統(tǒng)使用教程_第2頁(yè)
全中文中語(yǔ)言微電腦單片機(jī)編程系統(tǒng)使用教程_第3頁(yè)
全中文中語(yǔ)言微電腦單片機(jī)編程系統(tǒng)使用教程_第4頁(yè)
全中文中語(yǔ)言微電腦單片機(jī)編程系統(tǒng)使用教程_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、- - - 中語(yǔ)言微電腦編程系統(tǒng)使用說(shuō)明中國(guó)人自已的微電腦編程語(yǔ)言最近幾年,中國(guó)的微電子迅猛發(fā)展,微電腦應(yīng)用已進(jìn)入千家萬(wàn)戶,所有的家電幾乎每臺(tái)都裝有微電腦芯片,例如電飯煲,電視機(jī),電風(fēng)扇等。不只是在民用方面,各個(gè)行業(yè)的微電腦應(yīng)用也是是新月異:工業(yè)應(yīng)用,醫(yī)療器械,航天應(yīng)用等等。可以說(shuō),現(xiàn)在社會(huì)微電腦應(yīng)用已是無(wú)所不在!然而,中國(guó)的微電腦編程語(yǔ)言一直是英文為主的,這給一些英文基礎(chǔ)不太好的微電子愛(ài)好者設(shè)定了一定的障礙。在中國(guó),有數(shù)億萬(wàn)計(jì)的微電子愛(ài)好者,但從事微電腦編程的人員占不到十分之一,很大一部分就是因?yàn)榫幊陶Z(yǔ)言的緣故。不只是工作方面,這些微電子愛(ài)好者有好多想法,如果得以實(shí)現(xiàn),可以發(fā)明出很多產(chǎn)品,但

2、是就是因?yàn)橛⑽幕A(chǔ)不態(tài)好的原因造成的微電腦編程不能進(jìn)行,從而給研發(fā)產(chǎn)品造成了一定的困擾,大的方面說(shuō),也阻礙了我國(guó)的電子信息化的發(fā)展。在美國(guó)等一些國(guó)家,普通人員不要專業(yè)知識(shí)就可以學(xué)編程,因?yàn)榫幊陶Z(yǔ)言是他們的,所以就和寫文章一樣,很容易的。為此,我們經(jīng)過(guò)多年努力,終于開(kāi)發(fā)出一套完整的中文微電腦編程系統(tǒng),取名中語(yǔ)言微電腦編程系統(tǒng)。中語(yǔ)言微電腦編程系統(tǒng)是基于C語(yǔ)言基礎(chǔ)上結(jié)合中文特點(diǎn)而開(kāi)發(fā)的一套完整的微電腦單片機(jī)中文編程系統(tǒng),希望能給我國(guó)電子信息化發(fā)展盡一份微薄之力!中語(yǔ)言微電腦編程系統(tǒng)有以下特點(diǎn):1,全中文語(yǔ)法結(jié)構(gòu)與變量,完全符合中國(guó)人的書(shū)寫與閱讀習(xí)慣。2,基于C語(yǔ)言但結(jié)合了中國(guó)人的語(yǔ)法詞匯,無(wú)需生記

3、硬背語(yǔ)法,用的時(shí)候看一下立即明白意思。3,無(wú)論年齡,無(wú)論專業(yè),無(wú)論性別,只要是微電子愛(ài)好者即可學(xué)會(huì)。人人可學(xué),人人可用。4,一天入門,三天上手,簡(jiǎn)單易學(xué)。5,重簡(jiǎn)去繁,在C語(yǔ)言上一些復(fù)雜的用不上的語(yǔ)法完全去掉,只留下簡(jiǎn)單實(shí)用而且常用的,當(dāng)然這是建立在不影響微電腦應(yīng)用的基礎(chǔ)上。使得學(xué)習(xí)起來(lái)更加容易。同時(shí)我們開(kāi)發(fā)了中語(yǔ)言微電腦編程系統(tǒng)編程軟件,系統(tǒng)軟件具有如下特點(diǎn):1,全中文友好界面,無(wú)需英語(yǔ)基礎(chǔ)即可書(shū)寫內(nèi)容。2,內(nèi)嵌編譯器,一鍵編譯出對(duì)應(yīng)的HEX文件,并顯示出對(duì)應(yīng)的目錄,方便易找到HEX文件。3,內(nèi)附有教程,一看即會(huì)。4,代碼折疊功能,復(fù)雜較長(zhǎng)的函數(shù)可以折疊起來(lái),讀起來(lái)更方便。5,左欄有雙擊打開(kāi)

4、最近文件功能,簡(jiǎn)單實(shí)用。中語(yǔ)言微電腦編程系統(tǒng)還有很多優(yōu)點(diǎn)等著您去發(fā)現(xiàn),當(dāng)然,我們這套系統(tǒng)也是一套全新的系統(tǒng),有些問(wèn)題和不足之處,如果您發(fā)現(xiàn)了,請(qǐng)告訴我們,以方便改進(jìn)。中語(yǔ)言微電腦編程系統(tǒng)使用教程第一節(jié),新建項(xiàng)目目錄:首先在D:盤或E:根目錄下新建一個(gè)文件夾:我的項(xiàng)目,然后在我的項(xiàng)目文件夾中新建一個(gè)文件夾:項(xiàng)目1.這樣我們就可以方便的保存將要新建的項(xiàng)目:第二節(jié),打開(kāi)軟件:打開(kāi)我們的編程系統(tǒng)軟件,將會(huì)出現(xiàn)如下畫(huà)面 # 第三節(jié):新建我們的工程項(xiàng)目:- - -點(diǎn)擊文件新建工程,將會(huì)出現(xiàn)如下畫(huà)面:這是在提示我們選擇相關(guān)的微電腦芯片,以提供正確的編譯方式,選好以后點(diǎn)擊確認(rèn)選擇將會(huì)出現(xiàn)如下畫(huà)面:面:正確填入

5、我們需要的項(xiàng)目名字:我這里填的是點(diǎn)亮第一盞紅燈,點(diǎn)保存,將會(huì)出現(xiàn)如下畫(huà) - - ISI&4占1卜琲-訝!iM:3EUI-W.-PUifiliSiisi.hSff.&EMHi:占E甜PW初右驅(qū)JL靈ansmzr哉話0計(jì)等翻LEH職呂1WWI!屯日1苗EJt-iJl-rr曲曲TnaihMj;:g-F7aysuism小點(diǎn)范-jHrhill*!3-THdEMi.=可以看到,已有了第一行代碼,這是引入頭文件的,不用我們?cè)賹懥?。接下?lái)就正式進(jìn)入我們的第一個(gè)項(xiàng)目了,這里我們要先從最簡(jiǎn)單的入手,也就是點(diǎn)亮一個(gè)我們的紅燈,代碼很簡(jiǎn)單,請(qǐng)輸入以下代碼:#端口再定義紅燈控制腳P1_1函數(shù)主程序()紅燈控制腳=低;結(jié)

6、束函數(shù)這里第一行我們就是把單片機(jī)的P1_1口再次定義一下,定義為我們方便看懂的紅燈控制腳,這樣對(duì)于我們后面查詢代碼時(shí)非常有用。第二行函數(shù)主程序,這個(gè)不用說(shuō)了,也就是說(shuō)是主程序的開(kāi)始,第三行,紅燈控制腳=低;這句代碼說(shuō)的是將這個(gè)紅燈控制腳置為低電平,可以看出,這個(gè)腳接低電平時(shí)紅燈會(huì)亮。第四句是結(jié)束函數(shù),也就是主程序結(jié)束了。怎么樣,很簡(jiǎn)單吧,那么倒底這幾句代碼是不是有用呢?我們點(diǎn)一下,這時(shí)出現(xiàn)如下畫(huà)面:aTBlKw,河貓!.片曲章aLrtiDStsfffrHMtlPl.ia-tTKHJfe-E禺即5ftmr阿忖、齊理事SSfl-i!i*tsiim工hqm由金口口tcejfqe-jxa遼工sl|S團(tuán)

7、-JilFKSll.T可以看出,在下面項(xiàng)目編譯提示信息中已出現(xiàn)了.hex文件編譯成功的信息,并給出了文件目錄,那么這個(gè)文件倒底能不能運(yùn)行呢?我們必須實(shí)踐一下,打開(kāi)仿真軟件PROTEUS,這可是個(gè)好軟件,在項(xiàng)目調(diào)試過(guò)程中非常有用,這里晶體選12M,裝入我們剛生成的HEX文件,點(diǎn)運(yùn)行,可以看出,LED燈亮了。!=ILII74LGOD0OC51E:ULEEJ-BLUELED3AENLED-FIEDLEE3-tjELLOV/RESI74L50DJ1_iin7II凰陪1J嚴(yán)兀iEXiEL|x21OQ.O-240Q0M|ANIUATlNG:Cl:OQ:12.ED00QQ(CPU2J是不是很容易呢?不過(guò)萬(wàn)里

8、長(zhǎng)征走了第一步,由淺入深慢慢來(lái),接下來(lái)我們要讓這個(gè)燈一直閃,一秒一次,我們要有個(gè)思路,寫代碼沒(méi)思路不行,盲目的寫最后寫出來(lái)的很亂的。那么要想讓燈閃那就讓紅燈控制腳先置高或低,延時(shí)一下,再置高或低,這樣是不是就可以了呢?寫入如下代碼:#端口再定義紅燈控制腳P1_1聲明無(wú)返回值延時(shí)_毫秒(整數(shù)型毫秒);函數(shù)主程序()紅燈控制腳=低;延時(shí)_毫秒(1000);紅燈控制腳=高;延時(shí)_毫秒(1000);- - -結(jié)束函數(shù)函數(shù)延時(shí)_毫秒(整數(shù)型毫秒)短整數(shù)型計(jì)次變量;多任務(wù)自動(dòng)循環(huán)(毫秒遞減)單任務(wù)依次循環(huán)(計(jì)次變量=0;計(jì)次變量120;計(jì)次變量遞加);任務(wù)安排完畢結(jié)束函數(shù)整個(gè)代碼加了個(gè)延時(shí)函數(shù),所以要在主

9、函數(shù)上面聲明一下,這個(gè)函數(shù)是沒(méi)有返回值的,所以要聲明為無(wú)返回值的。先看一下延時(shí)函數(shù),函數(shù)延時(shí)_毫秒(整數(shù)型毫秒)這里先聲明了一個(gè)局部變量,毫秒,表示我們要延時(shí)多長(zhǎng)時(shí)間,如果延時(shí)1毫秒,到時(shí)就填1就可以了,延時(shí)1000毫秒也就是1秒,填1000就可以了。再看下一句:短整數(shù)型計(jì)次變量;這里也是聲明了一個(gè)變量,短整數(shù)型的,用于延時(shí)循環(huán)。再看一下這一句:?jiǎn)稳蝿?wù)依次循環(huán)(計(jì)次變量=0;計(jì)次變量120;計(jì)次變量遞加);這就是說(shuō)當(dāng)計(jì)次變量小于120時(shí),計(jì)次變量就會(huì)遞加1。這里是12MHZ的晶體,大概延時(shí)時(shí)間在1個(gè)毫秒。再看上面一句多任務(wù)自動(dòng)循環(huán)(毫秒遞減),也就是說(shuō)這里面的數(shù)開(kāi)始減1,當(dāng)減為0時(shí)自然就結(jié)束這

10、個(gè)循環(huán)。這里解釋一下單任務(wù)和多任務(wù),單任務(wù)就是只運(yùn)行這個(gè)函數(shù)本身的任務(wù),多任務(wù)就是包除自身任務(wù)外還包含有其它任務(wù)運(yùn)行,后面跟有任務(wù)安排完畢的句子。好,點(diǎn)一下編譯,裝入PROTEUS運(yùn)行,好像不對(duì),亮一下就滅了,不是我們想的一直閃,如果我們想一直閃怎么辦?很簡(jiǎn)單,再用多任務(wù)自動(dòng)循環(huán)(真)就可以了,將代碼改一下:#端口再定義紅燈控制腳P1_1聲明無(wú)返回值延時(shí)_毫秒(整數(shù)型毫秒);函數(shù)主程序()多任務(wù)自動(dòng)循環(huán)(真)紅燈控制腳=低;延時(shí)_毫秒(1000);紅燈控制腳=高;延時(shí)_毫秒(1000);任務(wù)安排完畢結(jié)束函數(shù)函數(shù)延時(shí)_毫秒(整數(shù)型毫秒短整數(shù)型計(jì)次變量;多任務(wù)自動(dòng)循環(huán)(毫秒遞減)單任務(wù)依次循環(huán)(計(jì)

11、次變量=0;計(jì)次變量120;計(jì)次變量遞加);任務(wù)安排完畢結(jié)束函數(shù)點(diǎn)一下編譯,裝入PROTEUS運(yùn)行,效果出來(lái)了:ISISlileVieiYiaIloclslesicriGraliSour匚已BehueLibrarrlemplateSistoriHelp血回*丨申亀Q耳碑|90*1X*玉1儀#搏滬iJfelMZIe=卄JL二二-Z也旦DEVICES74L5COaocsi.BusA789C51LED-BLUELEDREENLED-REDLED-YELLOWRES74LS00丄031ss.n/nJHq.lErtEEMmEDI2Dc-M川.I川JI.|川MITaITU.8Alsl豐|II|O5Mbs汨

12、口乖U11護(hù)11H工II:U.丄JUUUTlHUIohb-S|接下來(lái)我們要讓紅燈用中斷來(lái)閃爍,因?yàn)橹袛嗍俏㈦娔X必須的一個(gè)功能,新建項(xiàng)目并輸入以下- #- 代碼:#端口再定義紅燈控制腳P1_1短整數(shù)型計(jì)數(shù)器;函數(shù)初始化_定時(shí)器OJI6位(無(wú)類型)模式控制寄存器二0 x01;低位初裝值定時(shí)器0二0 xD8;高位初裝值定時(shí)器0二OxFO;中斷允許_定時(shí)器0二真;總中斷允許二真;開(kāi)啟定時(shí)器0-真;-22-22-結(jié)束函數(shù)函數(shù)中斷后事件定時(shí)器0(無(wú)類型)中斷號(hào)中斷標(biāo)志0二假;低位初裝值定時(shí)器0二0 xD8;高位初裝值定時(shí)器0二OxFO;計(jì)數(shù)器遞加;如果(計(jì)數(shù)器=100)- - -計(jì)數(shù)器=0;紅燈控制腳=取

13、相反(紅燈控制腳);結(jié)束如果結(jié)束函數(shù)函數(shù)主程序()初始化_定時(shí)器0_16位();單任務(wù)自動(dòng)循環(huán)(真);結(jié)束函數(shù)看一下上面的中斷定時(shí)器初始化,這里是12MHZ晶體,所以中斷時(shí)間大概為10毫秒。函數(shù)內(nèi)容很簡(jiǎn)單的,就是幾個(gè)中斷必要的條件。中斷后的事件加了一個(gè)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器大于100時(shí)(也就是1秒鐘),把紅燈控制腳翻轉(zhuǎn),也就是低變成高,高變成低,這樣就可以持續(xù)的閃爍了。主程序很簡(jiǎn)單的,就兩句話。下面是運(yùn)行效果:Nl回匹LDEVICESQ0C51.QUSAT89C51LED;LUELED-GREENLED-PEDLEDYELLOWRESI74L5D0|I.1|-窗一/口+pinDEVICES24LS0

14、D90C51DU9rggcsiLED-BLUELEDJ3REEMLED-FIEDLEDVELLQWRE5I74LSOOI到了這時(shí)候,我們就要學(xué)習(xí)一下按鍵控制了。當(dāng)按鍵1按下的時(shí)候紅燈亮,當(dāng)按鍵2按下的時(shí)候綠燈亮,按鍵控制也有兩種方式,我們先看第一種查詢方式,也就是不停的查詢按鍵的端口狀態(tài)請(qǐng)輸入以下代碼,:TOC o 1-5 h z#端口再定義按鍵1P3_2#端口再定義按鍵2P3_3#端口再定義紅燈1P1_1#端口再定義綠燈2P1_2聲明無(wú)返回值延時(shí)_毫秒(整數(shù)型毫秒);函數(shù)主程序()紅燈1=低;- - -多任務(wù)自動(dòng)循環(huán)(真)如果(按鍵仁二低)延時(shí)毫秒(10);如果(按鍵仁二低)紅燈1二高;綠燈

15、2二低;結(jié)束如果-31-31結(jié)束如果如果(按鍵2二二低)延時(shí)毫秒(10);如果(按鍵2二二低)紅燈1二低;綠燈2二咼;結(jié)束如果- - -結(jié)束如果任務(wù)安排完畢結(jié)束函數(shù)函數(shù)延時(shí)_毫秒(整數(shù)型毫秒)短整數(shù)型計(jì)次變量;多任務(wù)自動(dòng)循環(huán)(毫秒遞減)單任務(wù)依次循環(huán)(計(jì)次變量=0;計(jì)次變量120;計(jì)次變量遞加);任務(wù)安排完畢結(jié)束函數(shù)同樣,代碼很簡(jiǎn)單,這里要解釋的就是這個(gè)延時(shí)10毫秒,為什么要這樣?因?yàn)槲覀兊膯纹瑱C(jī)周圍存在很多電磁波干擾,所以延時(shí)一點(diǎn)時(shí)間,如果這個(gè)端口還是這個(gè)狀態(tài)的話,那就表示是真的按鍵了,如果延時(shí)后端口狀態(tài)變化了,就說(shuō)明這個(gè)是干擾,就不處理這次按鍵的結(jié)果了。這種方法叫去抖動(dòng)或消抖動(dòng)。編譯并裝入

16、PROTEUS,看一下效果:eOCEl.BUSAT03C51BUTTONLED-BLUELED-GREENLED-REDLED-YEULOWRESI74LGQ0JO12SJIf!.:=一十生呂=l-臨E33卸次豎/=AS1*nmcvCO.IIJDIunMn1nsjcvnujauajcvninjcPT.WJFJiACiST戸ajsjjjrsaifEIIIMF331lppaPSraiJlTPI$找|園因|妙上面演示了按鍵的查詢,下面要進(jìn)行按鍵中斷演示,因?yàn)槲覀兊闹袛喾磻?yīng)很快,而且運(yùn)行過(guò)程中點(diǎn)用的時(shí)間很小,這就是中斷的好處了,原理是當(dāng)中斷來(lái)時(shí),事先可以設(shè)定高中斷還是低中斷,我們這里設(shè)定低中斷,也就是

17、按鍵按下以后端口為低,引發(fā)中斷,從而控制燈的狀態(tài),請(qǐng)輸入以下代碼:#端口再定義按鍵1P3_2#端口再定義按鍵2P3_3#端口再定義紅燈P1_1#端口再定義綠燈P1_2短整數(shù)型按鍵狀態(tài)位;聲明無(wú)返回值延時(shí)_毫秒(整數(shù)型毫秒);函數(shù)初始化_硬件中斷()- - #-觸發(fā)方式選擇硬件0二1;中斷允許_硬件0二真;觸發(fā)方式選擇硬件1=1;中斷允許_硬件1二真;總中斷允許二真;結(jié)束函數(shù)函數(shù)中斷后事件硬件0()_中斷號(hào)0- #- -延時(shí)毫秒(10);如果(按鍵1二二低)按鍵狀態(tài)位二1;結(jié)束如果結(jié)束函數(shù)函數(shù)中斷后事件硬件1()_中斷號(hào)2延時(shí)毫秒(10);- - -如果(按鍵2二二低)按鍵狀態(tài)位二0;結(jié)束如果結(jié)

18、束函數(shù)函數(shù)主程序()初始化_硬件中斷();多任務(wù)自動(dòng)循環(huán)(真)- - #-如果(按鍵狀態(tài)位二二1)紅燈二高;綠燈二低;否則紅燈二低;綠燈-高;結(jié)束如果- - -任務(wù)安排完畢結(jié)束函數(shù)函數(shù)延時(shí)_毫秒(整數(shù)型毫秒)短整數(shù)型計(jì)次變量;多任務(wù)自動(dòng)循環(huán)(毫秒遞減)單任務(wù)依次循環(huán)(計(jì)次變量=0;計(jì)次變量120;計(jì)次變量遞加);任務(wù)安排完畢結(jié)束函數(shù)這里我們用了兩個(gè)硬件中斷,當(dāng)中斷來(lái)時(shí),同樣延時(shí)10毫秒檢測(cè)一下端口狀態(tài),也是起延時(shí)消抖的作用。M-n-*:!焦??鸵?LJc)8A亙串8OZ51.BUSAT09C51BUTTONLEDBLUELEDGREENLEDREDLEDYELLOWFiESI74LBOOIJI

19、卜fujuxuFD.IM1en_uaMr-3EJ3XI33mJixmITrFH.1JWiaHfl-stari11Lf-n(I:-?rajixi2ZJI.W11Htlr|I4PE51diqrajPl.iura.F工円-FjDIAEPRSP.iP5ciraaa王LII耳rDhri*i.JlD:IaSSPTini2A1-17aifBKA*a_=PA叫|I.|H|顯5Messagefsl|ANIM4TING120:00:20.050000CPU按鍵控制就這樣,當(dāng)然在實(shí)際應(yīng)用中請(qǐng)靈活運(yùn)用。到這時(shí)候,不得不玩一下我們單片機(jī)常用的- - #流水燈也稱為跑馬燈了,這也是微電腦單片機(jī)常用的一個(gè)學(xué)習(xí)程序,那么我們

20、這里也有兩種方式,一種是延時(shí),先看一下這種方式,請(qǐng)輸入以下程序:#端口再定義紅燈1P1_0#端口再定義紅燈2P1_1#端口再定義紅燈3P1_2#端口再定義紅燈4P1_3#端口再定義紅燈5P1_4#端口再定義紅燈6P1_5#端口再定義紅燈7P1_6#端口再定義紅燈8P1_7聲明無(wú)返回值延時(shí)_毫秒(整數(shù)型毫秒);- - -函數(shù)主程序()多任務(wù)自動(dòng)循環(huán)(真)紅燈1二低;延時(shí)毫秒(1000);紅燈2二低;延時(shí)毫秒(1000);紅燈3二低;延時(shí)毫秒(1000);紅燈4二低;延時(shí)毫秒(1000);紅燈5二低;- - -延時(shí)毫秒(1000);紅燈6二低;延時(shí)毫秒(1000);紅燈7二低;延時(shí)毫秒(1000)

21、;紅燈8二低;延時(shí)毫秒(1000);紅燈1二高;紅燈2二高;紅燈3二高;紅燈4二高;紅燈5二高;- - -紅燈6二高;紅燈7二高;紅燈8二高;延時(shí)毫秒(1000);紅燈8二低;延時(shí)毫秒(1000);紅燈7二低;延時(shí)毫秒(1000);紅燈6二低;延時(shí)毫秒(1000);紅燈5二低;- - -延時(shí)毫秒(1000);紅燈4二低;延時(shí)毫秒(1000);紅燈3二低;延時(shí)毫秒(1000);紅燈2二低;延時(shí)毫秒(1000);紅燈1二低;延時(shí)毫秒(1000);紅燈1二高;紅燈2二高;紅燈3二高;- #- -紅燈4二高;紅燈5二高;紅燈6二高;紅燈7二高;紅燈8二高;延時(shí)毫秒(1000);任務(wù)安排完畢結(jié)束函數(shù)lA

22、NIMATlNG:i:0:00:18.200DCO(CPUbad13SJ- -lANIMATlNG:i:0:00:18.200DCO(CPUbad13SJ- - -函數(shù)延時(shí)_毫秒(整數(shù)型毫秒)短整數(shù)型計(jì)次變量;多任務(wù)自動(dòng)循環(huán)(毫秒遞減)單任務(wù)依次循環(huán)(計(jì)次變量=0;計(jì)次變量120;計(jì)次變量遞加);任務(wù)安排完畢結(jié)束函數(shù)學(xué)了上面幾個(gè)程序,那么這個(gè)就很簡(jiǎn)單了,不用解釋,全是一些端口置高置低的??匆幌滦Ч厚RIT葺圭詈恂-ISISrrofusianal(lLiiiBaliiLg:)PilftViawEditToalsD&sijnGraphSaurcaDabugLibraryTamplataSyctam

23、Hlp酋曙丨帝圓|j國(guó)匣I串丨半電魚(yú)魚(yú)陜|呼罕丨瞬昭審丨壬書(shū)丨議#擰/|雇J船KI畫(huà)賈抽逼因丨阿麗hshs-葛ssn.lRNJU?ln.nkr2tcl-xPEAPLDEVICES74LGO00OC51BUSAT83C51LED-BLUELED-GREENLED-REDLED-fELLOWFiES7蕊回護(hù)0圖一/口0DWAS#1IIJ5Message(旬- - -這里我們主要介紹第二種方式,移位流水跑馬燈,移位這個(gè)功能很有用的,用在遙控解密或I2C通訊等多個(gè)方面。請(qǐng)輸入以下代碼:#端口再定義流水燈緩沖值P1聲明無(wú)返回值延時(shí)_毫秒(整數(shù)型毫秒);函數(shù)主程序()短整數(shù)型主計(jì)次變量;多任務(wù)自動(dòng)循環(huán)(真

24、)流水燈緩沖值=0b11111110;多任務(wù)依次循環(huán)(主計(jì)次變量=0;主計(jì)次變量8;主計(jì)次變量遞加)延時(shí)_毫秒(2000);流水燈緩沖值=流水燈緩沖值按位左移位1;任務(wù)安排完畢流水燈緩沖值=0b01111111;多任務(wù)依次循環(huán)(主計(jì)次變量=0;主計(jì)次變量8;主計(jì)次變量遞加)延時(shí)_毫秒(2000);流水燈緩沖值=流水燈緩沖值按位右移位1;任務(wù)安排完畢任務(wù)安排完畢結(jié)束函數(shù)函數(shù)延時(shí)_毫秒(整數(shù)型毫秒)短整數(shù)型計(jì)次變量;多任務(wù)自動(dòng)循環(huán)(毫秒遞減)單任務(wù)依次循環(huán)(計(jì)次變量=0;計(jì)次變量120;計(jì)次變量遞加);任務(wù)安排完畢結(jié)束函數(shù)我們先看這一句:#端口再定義流水燈緩沖值P1這個(gè)和我們前幾個(gè)項(xiàng)目都是有區(qū)別的

25、,前幾個(gè)是針對(duì)一個(gè)端口,而這里是針對(duì)P1的8個(gè)端口,這8個(gè)端口我們送數(shù),送什么樣的數(shù)?當(dāng)然是二進(jìn)制數(shù)??催@一句:流水燈緩沖值=0b11111110;這里說(shuō)明我們送的數(shù)每一位代表一個(gè)端口的狀態(tài),二進(jìn)制數(shù)用Ob表示,最后一位為0,對(duì)應(yīng)我們的P1.0端口為低電平,其它的為1全是高電平。再看這一句:流水燈緩沖值二流水燈緩沖值按位左移位1;也就是將流水燈緩沖值每次往前移一位,移的數(shù)為1,這樣就把0b11111110慢慢的移到Ob111111OO-Ob11111OOO-Ob1111OOOO直移到0bOOOOOOOO,這時(shí)8個(gè)燈就全亮了。其它的語(yǔ)句就很簡(jiǎn)單了。編譯并裝入PROTEUS,看一下效果:殍位採(cǎi)作I

26、SISrrofccsioiL-blEil亡3fiiftToolsR亡mi,GSra.phS.aurceDehucLibraryTempi*-teSestcm回莖舟丨奪愆蟲(chóng)耳嚥壽粘電丨工圧丨衣攜/|區(qū)丨舲#丨囲00廠tS0C51.BUSAFB3匚弓1LEDBLUELED-GREENLEDREDLED-tELLOWHES74LSOOssaCNn.n33H3HraBraHlnlRlBE1-比呂丨樂(lè)丨尊團(tuán)I7SEG-U忖-CAT-ELLIE7JL50080C51.BUSATESC51LEDBLUELED-REDMATRIX尿AGREENI74LSOOX-m3E陽(yáng)K畫(huà)肆:一t-亠”I卜II*IMI丨血5

27、同曲汨皿閡/.FIIMAnJ.LUUJ.L!b.lLUJULrii_:HUujC-T上面學(xué)了靜態(tài)的數(shù)碼管,目的是讓我們了解一下數(shù)碼管的原理,這樣的程序?qū)嶋H應(yīng)用很占資源,如果同時(shí)亮個(gè)123那就要24個(gè)口,而且程序代碼量也很大。所以就需要?jiǎng)討B(tài)顯示了,利用人眼的遲滯效應(yīng),輪流的讓123這三位進(jìn)行顯示,由于閃爍的頻率很快,所以人眼是看不出來(lái)在閃的,請(qǐng)看以下代碼:#端口再定義數(shù)碼管段控接口P0#端口再定義數(shù)碼管位控接口P2整數(shù)型臨時(shí)變量;短整數(shù)型百位數(shù),十位數(shù),個(gè)位數(shù);聲明無(wú)返回值延時(shí)_毫秒(整數(shù)型毫秒);聲明無(wú)返回值數(shù)碼管顯示(整數(shù)型百位,整數(shù)型十位,整數(shù)型個(gè)位);- - -函數(shù)主程序()臨時(shí)變量二123;百位數(shù)二臨時(shí)變量/100;十位數(shù)二臨時(shí)變量%10

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論