項目2 8位流水燈的單片機(jī).ppt_第1頁
項目2 8位流水燈的單片機(jī).ppt_第2頁
項目2 8位流水燈的單片機(jī).ppt_第3頁
項目2 8位流水燈的單片機(jī).ppt_第4頁
項目2 8位流水燈的單片機(jī).ppt_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、項目2 8位流水燈的單片機(jī)控制,項目目標(biāo),通過單片機(jī)控制8個發(fā)光二極管的順序點亮,學(xué)會使用MCS-51單片機(jī)芯片的P1口進(jìn)行輸出控制,進(jìn)一步學(xué)習(xí)匯編程序的分析方法,并能熟練運用RR、RL等基本指令。,項目任務(wù),要求應(yīng)用AT89C51芯片,控制8個發(fā)光二極管的有序亮滅,呈現(xiàn)流水燈的效果。設(shè)計單片機(jī)控制電路并編程實現(xiàn)此功能。,項目分析,利用單片機(jī)P1口連接8個發(fā)光二極管,利用各引腳輸出電位的變化,控制發(fā)光二極管的亮滅。P1口各引腳的電位變化可以通過指令來控制,為了清楚地分辨發(fā)光二極管的點亮和熄滅,在P1口輸出信號由一種狀態(tài)向另一種狀態(tài)變化時,編寫延時程序?qū)崿F(xiàn)一定的時間間隔。,項目實施,一、硬件電路

2、設(shè)計 二、控制程序的編寫 三、程序仿真與調(diào)試,一、硬件電路設(shè)計,(一)設(shè)計思路 在AT89C51單片機(jī)芯片及基本外圍電路組成的單片機(jī)最小系統(tǒng)基礎(chǔ)上,利用P1口的8個引腳控制8個發(fā)光二極管。由于發(fā)光二極管具有普通二極管的共性-單向?qū)щ娦?,因此只要在其兩極間加上合適的正向電壓,發(fā)光二極管即可點亮;將電壓撤除或加反向電壓,發(fā)光二極管即熄滅。根據(jù)發(fā)光二極管的特性,結(jié)合單片機(jī)P1口的輸出信號,即可實現(xiàn)流水燈的控制效果。,(二)電路設(shè)計1、P1口結(jié)構(gòu),左圖是P1口中某一位的位結(jié)構(gòu)電路圖。P1口為8位準(zhǔn)雙向口,每一位均可獨立定義為輸入或輸出口,當(dāng)作為輸出口時,1寫入鎖存器,T2截止,內(nèi)部上拉電阻將電位拉至1

3、,此時該口輸出為1;當(dāng)0寫入鎖存器, ,T2導(dǎo)通,輸出則為0。作為輸入口時,鎖存器置1,T2截止,此時該位既可以把外部電路拉成低電平,也可由內(nèi)部上拉電阻拉成高電平,所以P1口稱為準(zhǔn)雙向口。,2、發(fā)光二極管的連接,發(fā)光二極管的連接方法:若將它們的陰極連接在一起,陽極信號受控制,即構(gòu)成共陰極接法,如圖a所示;若將它們的陽極連接在一起,陰極信號受控制,則構(gòu)成共陽極接法,如圖b所示。由于P1口引腳輸出高電位時電壓大約是5V,為保證發(fā)光二極管的可靠工作,必須在發(fā)光二極管和單片機(jī)輸出引腳間連接一只限流電阻。 本項目選用硅型普通發(fā)光二極管,限流電阻取220。,3、8只發(fā)光二極管的控制電路,(三)材料表 從原

4、理圖可以得到實現(xiàn)本項目所需的元器件。元器件的選擇應(yīng)該合理,以滿足功能要求為原則,否則會造成資源的浪費。,二、 控制程序的編寫,(一)繪制程序流程圖 本控制使用簡單程序設(shè)計中的順序結(jié)構(gòu)形式實現(xiàn),程序結(jié)構(gòu)流程圖如右圖。,(二)程序編寫,ORG 0000H MOV P1,#0BFH LJMP MAIN LCALL YS ORG 0030H MOV P1,#7FH MAIN:MOV P1,#0FEH LCALL YS LCALL YS LJMP MAIN MOV P1,#0FDH ORG 0100H LCALL YS YS:MOV R7,#2 MOV P1,#0FBH L1:MOV R6,#0FFH

5、LCALL YS L2:MOV R5,#0FFH MOV P1,#0F7H L3:DJNZ R5,L3 LCALL YS DJNZ R6,L2 MOV P1,#0EFH DJNZ R7,L1 LCALL YS RET MOV P1,#0DFH END LCALL YS,(三)匯編指令學(xué)習(xí),1、對累加器A的邏輯操作指令: 在MCS-51單片機(jī)的指令系統(tǒng)中,累加器A是一個最常用的8位寄存器,為了使用方便,特別設(shè)計了7條對累加器A進(jìn)行邏輯操作的指令,包括清零、取反、移位和高低半字節(jié)互換,且操作結(jié)果依然保存在累加器A中。 匯編指令 指令功能 CLR A 將累加器A中的數(shù)據(jù)清零 CPL A 將累加器A中

6、的數(shù)據(jù)取反 RL A 將累加器A中的數(shù)據(jù)依次循環(huán)左移一位 RR A 將累加器A中的數(shù)據(jù)依次循環(huán)右移一位 RLC A 將累加器A中的數(shù)據(jù)連同進(jìn)位標(biāo)志位CY一起依次循環(huán)左移一位 RRC A 將累加器A中的數(shù)據(jù)連同進(jìn)位標(biāo)志位CY一起依次循環(huán)右移一位,2、延時程序,在項目一和項目二中,為了能清晰的分辨出發(fā)光二極管的變化,我們進(jìn)行了延時程序的編寫。 1)延時功能的實現(xiàn)方法 (1)利用RC的充放電時間來延時的硬件電路 (2)利用單片機(jī)內(nèi)的定時器來實現(xiàn)(T0、T1是可編程的) (3)編程實現(xiàn)軟件延時 a、它是利用執(zhí)行一組指令所花的時間和多次重復(fù)執(zhí)行這組指令的次數(shù)乘積來實現(xiàn),而循環(huán)次數(shù)的確定,則需要根據(jù)延時的

7、時間進(jìn)行計算,因此,延時時間確定關(guān)鍵在于確定循環(huán)計數(shù)器的設(shè)置值 b、常用指令 MOV Rn,#data ;1Tm NOP ;1Tm DJNZ Rn,rel ;2Tm RET ;2Tm,2)通用延時程序結(jié)構(gòu),YS:MOV R7,#C1 ;1Tm D1:MOV R6,#C2 ;1Tm D2:MOV R5,#C3 ;1Tm LOOP:DJNZ R5,LOOP ;2Tm*C3 DJNZ R6,D2 ;2Tm DJNZ R7,D1 ;2Tm RET ;2Tm 延時時間: T=1Tm+1Tm+(1Tm+2Tm*C3+2Tm)*C2+2Tm*C1+2Tm T的長短關(guān)鍵在于設(shè)置C3、C2、C1的值,*C2,*

8、C1,3)例題:延時100ms子程序, 設(shè)fosc=6MHZ(Tm=2us),(1)設(shè)C3=250,則內(nèi)循環(huán)時間 2Tm*250=2*2*250=1000us (2)外循環(huán)要求執(zhí)行時間為100 ms 所以:1Tm+(1Tm+1000us+2Tm)*C2+2Tm=100ms C2=99.7100 (3)程序 YS:MOV R2,#100 D1:MOV R3,#250 LOOP:DJNZ R3,LOOP DJNZ R2,D1 RET,3、程序的編寫技巧:,在本項目中,利用P1口實現(xiàn)8個發(fā)光二極管的流水燈控制,主要利用了送數(shù)指令,將要顯示的現(xiàn)象對應(yīng)的數(shù)據(jù)通過P1口送出。在編寫控制程序時,應(yīng)首先將每個

9、對應(yīng)現(xiàn)象分析清楚,比如:要讓L3亮,其余發(fā)光二極管滅,則P1口的數(shù)據(jù)應(yīng)為11110111B;要讓L7亮,則P1口的數(shù)據(jù)應(yīng)為01111111B。然后找到能實現(xiàn)此操作的指令即可。下面使用我們在本項目中學(xué)習(xí)的移位指令編寫程序如下: ORG 0000H ORG 0F00H LJMP MAIN2 DELAY:MOV R7 ,#10 ORG 0200H D0:MOV R6 ,#100 MAIN2:MOV A,#0FEH D1:MOV R5, #200 XH:MOV P1,A D2:DJNZ R5,D2 LCALL DELAY DJNZ R6,D1 RL A DJNZ R7,D0 LJMP XH RET E

10、ND,分析后可知,本段程序與項目中給出的參考程序功能相似,但是指令數(shù)量較少,所占存儲器空間較小。根據(jù)發(fā)光二極管的點亮次序,通過分析每次給P1口所送數(shù)據(jù),發(fā)現(xiàn)不斷變換的是數(shù)據(jù)中“0”的位置。若點亮次序是從L0L7,則“0”是自低位(右)向高位(左)移動的,符合指令“RL A”的功能。同時還可以總結(jié)出,若應(yīng)用“RR A”指令,則8個發(fā)光二極管的點亮次序是從L7L0。應(yīng)用了移位指令后,程序更簡潔易懂了,因此在今后的學(xué)習(xí)中,應(yīng)注意類似情況的處理。,三、程序仿真與調(diào)試:,1、運行Keil軟件。 2、利用Keil進(jìn)行文件編譯。 3、利用Keil進(jìn)行軟件仿真。 4、程序的下載及運行。 5、修改源程序進(jìn)行調(diào)試

11、。 注:此部分可實際利用Keil 軟件教學(xué)。,1、運行Keil軟件。,運行Keil軟件,將本項目中的匯編源程序以文件名MAIN2.ASM保存,添加到工程文件并進(jìn)行軟件仿真的設(shè)置。,2、利用Keil進(jìn)行文件編譯。,將已經(jīng)存儲完成的文件進(jìn)行編譯,若編譯中檢測到錯誤的符號,會將錯誤信息顯示在“Build”卡項中,用鼠標(biāo)雙擊錯誤提示,即可以在對應(yīng)位置進(jìn)行修改。,3、利用Keil進(jìn)行軟件仿真。編譯成功的程序在寫入芯片前,可以先進(jìn)行計算機(jī)軟件仿真,通過觀察分析存儲器中相關(guān)數(shù)據(jù)的變化,分析源程序是否正確。4、程序的下載及運行。,利用編程器將匯編完成的文件下載到所用的芯片中,安裝到焊接好的電路板上,通電后運行程序,觀察8個發(fā)光二極管的亮滅變化,理解送數(shù)指令的意義(如左圖所示)。,5、修改源程序,將送數(shù)指令改為移位指令,重復(fù)以上步驟,觀察8個發(fā)光二極管的控制現(xiàn)象,理解RL、RR指令的功能。,知識點鏈接,項目測試,一、填空題: 1、同樣的工作電壓,( )發(fā)光二極管的亮度較高。 (A) 高亮型 (B)普通型 2、已知(A)=27H,執(zhí)行指令“RL A”后,累加器A中的內(nèi)容 是( )。 (A) 28H (B) 93H (C)4FH 3、本項目中要實現(xiàn)8個發(fā)光二極管初始時兩端點亮的效果, 初值應(yīng)為

溫馨提示

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

評論

0/150

提交評論