利用8255A芯片實(shí)現(xiàn)流水燈閃爍設(shè)計(jì)_第1頁
利用8255A芯片實(shí)現(xiàn)流水燈閃爍設(shè)計(jì)_第2頁
利用8255A芯片實(shí)現(xiàn)流水燈閃爍設(shè)計(jì)_第3頁
利用8255A芯片實(shí)現(xiàn)流水燈閃爍設(shè)計(jì)_第4頁
利用8255A芯片實(shí)現(xiàn)流水燈閃爍設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄摘要2第1章 利用8255A芯片實(shí)現(xiàn)流水燈閃爍設(shè)計(jì)的概述2第2章 三種方案的論述與最終方案的確定22.1 第一種方案的論述22.2 第二種方案的論述52.3 第三種方案(最終方案)的論證10第3章 測試結(jié)果及體會心得13第4章 致謝14第5章 參考文獻(xiàn)14附錄1 方案一 Proteus仿真電路效果圖15附錄2 方案一 源程序代碼16附錄3 方案二 Proteus仿真電路效果圖18附錄4 方案二 源程序代碼19附錄5 方案三(最終方案) Proteus仿真電路效果圖20附錄6 方案三(最終方案) 源程序代碼21摘要:8255A是一種通用的可編程并行I/O接口芯片(Programmable P

2、eripherial Interface),它是為Inter系列微處理器設(shè)計(jì)的配套電路,也可用于其它微處理器系統(tǒng)中。通過對它進(jìn)行編程,芯片可工作于不同的工作方式。此次課程設(shè)計(jì)的目的就是利用端口和8255協(xié)同工作來實(shí)現(xiàn)LED顯示功能,對8255A芯片進(jìn)行編程使流水燈左移或右移,通過延時程序使流水燈進(jìn)行順序點(diǎn)亮。通過這次課程設(shè)計(jì)掌握8255A的功能特點(diǎn)、工作原理以及顯示器接口的基本原理與方法技術(shù)。關(guān)鍵詞:8086芯片 AT89C51單片機(jī) 8255A芯片 LED流水燈第1章 利用8255A芯片實(shí)現(xiàn)流水燈閃爍設(shè)計(jì)的概述流水燈在日常的生活中有著廣泛的應(yīng)用,例如,許多樓面上的彩燈廣告就是應(yīng)用了流水燈設(shè)計(jì)

3、。此次的課程設(shè)計(jì)的題目是利用了端口和8255A協(xié)同工作來實(shí)現(xiàn)LED顯示功能,編寫程序,使用8255的A口和B口均為輸出,接8個或16個發(fā)光二極管,實(shí)現(xiàn)流水燈的顯示效果。在實(shí)驗(yàn)中8255A的A和B兩個端口不能同時賦值,從而我們可以用通用寄存器BX對所需要賦值的數(shù)據(jù)進(jìn)行存儲,因?yàn)锽X可以分從高8位寄存器BH和低8位寄存器BL兩部分進(jìn)行獨(dú)立的操作,我們用寄存器BH對A口進(jìn)行賦值,用寄存器BL對B口進(jìn)行賦值,通過延時一段時間再對BH和BL進(jìn)行移位和輸出,實(shí)現(xiàn)了流水燈的效果。第2章 三種方案的論述與最終方案的確定2.1 第一種方案的論述第一種方案,我們使用了8086CPU芯片與8255A芯片一起實(shí)現(xiàn)了流

4、水燈閃爍的設(shè)計(jì),同時還使用了地址鎖存器74LS373芯片。74ls373是常用的地址鎖存器芯片,它是一個是帶三態(tài)緩沖輸出的8D觸發(fā)器,在單片機(jī)系統(tǒng)中為了擴(kuò)展外部存儲器,通常需要一塊74ls373芯片。在方案一中,當(dāng)8086CPU的引腳ALE(地址鎖存允許信號,輸出,高電平有效,用作地址鎖存器74LS373的鎖存控制信號)處于下降沿時將8086CPU輸出的地址信息進(jìn)行鎖存,以定義8255A的工作方式。下面先對74LS373芯片進(jìn)行簡介:1.地址鎖存器74LS373的內(nèi)部電路與工作原理引腳功能圖注:管腳引出端功能符號:D0D7 數(shù)據(jù)輸入端 OE 三態(tài)允許控制端(低電平有效)Q0Q7 輸出端 LE

5、鎖存允許端74373 三態(tài)緩沖輸出的8D鎖存器(3S,鎖存允許輸入有回環(huán)特性),其輸出端 Q0Q7 可直接與總線相連,74LS373的LE端直接與8086CPU的ALE信號連接。1腳是三態(tài)允許控制端(OE),是低電平有效。當(dāng)1腳是高電平時,不管輸入3(D0)、4(D1)、7(D2)、8(D3)、13(D4)、14(D5)、17(D6)、18(D7)如何,也不管11腳(LE 鎖存允許端)如何,輸出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈現(xiàn)高阻狀態(tài)(或者叫浮空狀態(tài))。當(dāng)1腳是低電平時,只要11腳(LE 鎖存允許端)上出現(xiàn)一個下降沿

6、,輸出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈現(xiàn)輸入腳3(D0)、4(D1)、7(D2)、8(D3)、13(D4)、14(D5)、17(D6)、18(D7)的狀態(tài)。 11腳是鎖存允許端(LE),當(dāng)LE由高變低時,輸出端8 位信息被鎖存,直到LE 端再次有效。 當(dāng)三態(tài)允許控制端OE為低電平時,三態(tài)門導(dǎo)通,允許Q0Q7輸出,OE為高電平時,輸出懸空。當(dāng)74LS373用作地址鎖存器時,應(yīng)使OE為低電平,此時鎖存使能端C為高電平時,輸出Q0Q7 狀態(tài)與輸入端D1D7狀態(tài)相同;當(dāng)LE發(fā)生負(fù)的跳變時,輸入端D0D7 數(shù)據(jù)鎖入Q0Q7。2.

7、方案一的工作流程簡述電路圖硬件連接:硬件連線圖注:8086CPU芯片與74LS373芯片在方案一中視為PC總線接口模塊 8255A的引腳WR(寫選通信號)、RD(讀選通信號)分別連到PC總線接口模塊的WR端口、RD端口。 8255A的數(shù)據(jù)端(AD0AD7)、地址線(A0A1)分別連到PC總線接口模塊的數(shù)據(jù)線(D0D7)、地址線(A1A2)。 8255模塊選通線CS連到PC總線接口模塊的IOY1(CS 片選信號,低電平有效,由地址總線經(jīng)I/O端口譯碼電路產(chǎn)生)。 8255的PA0PA7連到發(fā)光二極管的L1L8;8255的PB0PB7連到發(fā)光二極管的L9L16。程序流程簡述:8255A的片選信號C

8、S與地相連,處于低電平有效狀態(tài),8086CPU與8255A之間始終保持通信,8086CPU對8255A進(jìn)行讀/寫等操作。當(dāng)8086CPU的地址鎖存信號ALE處于高電平有效時,在T1狀態(tài),8086CPU通過地址/數(shù)據(jù)總線上傳送地址信息,在ALE的下降沿將地址信息鎖存到地址鎖存器74LS373中,定義了8255A的工作方式,使其A口和B口為輸出口,定義了8255A各端口地址。8086CPU先后寫A、B口的起始數(shù)據(jù),并調(diào)用延時子程序點(diǎn)亮A口燈、B口燈。然后分別調(diào)用左移、右移指令將A口起始數(shù)據(jù)左移再寫入A口、B口起始數(shù)據(jù)右移再寫入B口,點(diǎn)亮下一站盞燈,以此循環(huán)實(shí)現(xiàn)流水燈效果。程序框圖結(jié)論:第一種方案雖

9、然實(shí)現(xiàn)了流水燈閃爍效果,但由于8086CPU芯片所需的程序無法通過KC51實(shí)現(xiàn)編程,不能達(dá)到本次課程設(shè)計(jì)的培訓(xùn)目的,即對單片機(jī)的程序編程進(jìn)行訓(xùn)練掌握,要求較高,方案實(shí)現(xiàn)的難度較大,所以我們沒有把方案一作為最終方案。2.2 第二種方案的論述第二種方案,我們使用了AT89C51單片機(jī)實(shí)現(xiàn)了流水燈閃爍設(shè)計(jì)。AT89C51單片機(jī)是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片機(jī),具有豐富的內(nèi)部資源:4kB閃存、128BRAM、32根I/O口線、2個16位定時/計(jì)數(shù)器、5個向量兩級中斷結(jié)構(gòu)、2個全雙工的串行口,具有4.255.50V的電壓工作范圍和024MHz工作頻率,使用AT89C51單片機(jī)

10、時無須外擴(kuò)存儲器。因此,方案二中設(shè)計(jì)的流水燈實(shí)際上是一個帶有八個發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的軟件組成的單個單片機(jī)。下面先對AT89C51單片機(jī)進(jìn)行簡介:1. AT89C51單片機(jī)的簡介AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4K bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機(jī)存取存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,功能強(qiáng)大AT89C51單片機(jī)可以提供許多

11、高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。AT89C51管腳分布注:管腳引出端功能符號:VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,

12、這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部

13、上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口。P3口同時為閃爍編程和編程校驗(yàn)接收一些控制信號。P3口管腳備選功能: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口)P3.2 / INT0(外部中斷0) P3.3 / INT1(外部中斷1)P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入)P3.6 / WR(外部數(shù)據(jù)存儲器寫選通) P3.7 / RD(外部數(shù)據(jù)存儲器讀選通)RS

14、T:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通

15、信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。EA / VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000HFFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。AT89C51提供標(biāo)準(zhǔn)功能有:4K字節(jié)Falsh閃存存儲器,128字節(jié)內(nèi)部RAM,32個I/O口線,兩個16位定

16、時、計(jì)數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,AT89C51可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電模式。空閑方式停止CPU的工作,但允許RAM,定時/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其他所有部件工作直到下一個硬件復(fù)位。2.方案二的工作流程簡述單片機(jī)的應(yīng)用系統(tǒng)由硬件和軟件組成,當(dāng)我們完成了上述硬件原理圖搭建之后,我們還不能看到流水燈循環(huán)點(diǎn)亮的現(xiàn)象,我們還需要告訴單片機(jī)怎么來進(jìn)行工作,即編寫程序控制單片機(jī)管腳電平的高低變化,來實(shí)現(xiàn)發(fā)光二極管的一亮一滅。軟件編程是單片機(jī)應(yīng)用系統(tǒng)中的一個重要的

17、組成部分,也是我們這次課程設(shè)計(jì)學(xué)習(xí)的重點(diǎn)和難點(diǎn)。從電路原理圖中可以看出,如果要讓接在P1.0口的LED1亮起來,那么只要把P1.0口的電平變?yōu)榈碗娖骄涂梢粤?;相反,如果要接在P1.0口的LED1熄滅,就要把P1.0口的電平變?yōu)楦唠娖?;同理,接在P1.1P1.7口的其他7個LED的點(diǎn)亮和熄滅的方法同LED1。因此,要實(shí)現(xiàn)流水燈功能,我們只要將發(fā)光二極管LED1LED8依次點(diǎn)亮、熄滅,8只LED燈便會一亮一暗的做流水燈了。在此我們還應(yīng)注意一點(diǎn),由于人眼的視覺暫留效應(yīng)以及單片機(jī)執(zhí)行每條指令的時間很短,我們在控制二極管亮滅的時候應(yīng)該延時一段時間,否則我們就看不到“流水”效果了。在電路原理圖中,我們還應(yīng)

18、注意的便是和AT89C51單片機(jī)接在一起的晶振電路,在電路圖中為AT89C51單片機(jī)提供了頻率參考作用。晶振是晶體振蕩器的簡稱,在電氣上它可以等效成一個電容和一個電阻并聯(lián)再串聯(lián)一個電容的二端網(wǎng)絡(luò)。AT89C51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。晶振有一個重要的參數(shù),那就是負(fù)載電容值,選擇與負(fù)載電容值相等的并聯(lián)電容,就可以得到晶振標(biāo)稱的諧振頻率。硬件原理圖結(jié)論:第二種方案也實(shí)現(xiàn)了流水燈閃

19、爍效果,相對于第一種方案而言,更簡單些,這也正是單片機(jī)能廣泛應(yīng)用于各種電路的原因。但由于該方案中,沒有應(yīng)用到8255A芯片實(shí)現(xiàn)接口擴(kuò)展,而我們這次的課程設(shè)計(jì)中一個主要設(shè)計(jì)目的與要求便是:通過利用端口和8255協(xié)同工作來實(shí)現(xiàn)LED顯示功能,對8255A芯片進(jìn)行編程使流水燈左移或右移,實(shí)現(xiàn)流水燈閃爍效果。以此來掌握8255A的功能特點(diǎn)、工作原理以及顯示器接口的基本原理與方法技術(shù)。所以我們沒有把方案二作為最終方案。2.3 第三種方案(最終方案)的論證第三種方案,我們使用了AT89C51單片機(jī)與8255A芯片一起實(shí)現(xiàn)了流水燈閃爍的設(shè)計(jì)。從前兩種方案中,我們分別熟悉與掌握了地址鎖存器74LS373芯片和

20、AT89C51單片機(jī)。我們了解到74ls373是常用的地址鎖存器芯片,它是一個是帶三態(tài)緩沖輸出的8D觸發(fā)器,在單片機(jī)系統(tǒng)中為了擴(kuò)展外部存儲器,通常需要一塊74ls373芯片。而AT89C51單片機(jī)是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片機(jī),具有豐富的內(nèi)部資源:4kB閃存、128BRAM、32根I/O口線、2個16位定時/計(jì)數(shù)器、5個向量兩級中斷結(jié)構(gòu)、2個全雙工的串行口,具有4.255.50V的電壓工作范圍和024MHz工作頻率,使用AT89C51單片機(jī)時無須外擴(kuò)存儲器。在第三個方案中,我們將詳細(xì)地介紹8255A的內(nèi)部電路、功能特點(diǎn)、工作原理以及在電路中的功能擴(kuò)展與應(yīng)用,這也是

21、我們這次課程設(shè)計(jì)中一個需要重點(diǎn)掌握的芯片。1.可編程外圍接口芯片8255A的簡介8255A是Intel公司生產(chǎn)的一種通用的可編程并行I/O接口芯片,它是為Inter系列微處理器設(shè)計(jì)的配套電路,也可用于其它微處理器系統(tǒng)中。通過對它進(jìn)行編程,芯片可工作于不同的工作方式。8255A有3個8位并行I/O口,具有3個通道3種工作方式,其各口功能可由軟件選擇,使用靈活,通用性強(qiáng)。8255作為主機(jī)與外設(shè)的連接芯片,必須提供與主機(jī)相連的3個總線接口,即數(shù)據(jù)線、地址線、控制線接口;同時必須具有與外設(shè)連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內(nèi)部結(jié)構(gòu)分為3個部分:與CPU連

22、接部分、與外設(shè)連接部分、控制部分。 8255的外部引腳和內(nèi)部結(jié)構(gòu)注:管腳引出端功能符號:RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 CS:芯片選擇信號線,當(dāng)這個輸入引腳為低電平時,即/CS=0時,表示芯片被選中,允許8255與CPU進(jìn)行通訊;/CS=1時,8255無法與CPU做數(shù)據(jù)傳輸. RD:讀信號線,當(dāng)這個輸入引腳為低電平時,即/RD=0且/CS=0時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 WR:寫入信號,當(dāng)這個輸入引腳為低電平時,即/WR=0且/CS=0時,允許

23、CPU將數(shù)據(jù)或控制字寫入8255。 D0D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時,通過它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。 PA0PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。 PB0PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 PC0PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信

24、號輸出或狀態(tài)信號輸入端口。 A0,A1:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器. 當(dāng)A0=0,A1=0時,PA口被選擇; 當(dāng)A0=0,A1=1時,PB口被選擇; 當(dāng)A0=1,A1=0時,PC口被選擇; 當(dāng)A0=1.A1=1時,控制寄存器被選擇.8255A的工作方式:方式0:基本輸入輸出方式 適用于無條件傳送和查詢方式的接口電路方式1:選通輸入輸出方式 適用于查詢和中斷方式的接口電路方式2:雙向選通傳送方式 適用于與雙向傳送數(shù)據(jù)的外設(shè)和查詢和中斷方式的接口電路 工作方式控制字 C口按位置位/復(fù)位控制字8255A初始化編程:8255A的A,B,C三個端口的工作方式是在初始

25、化編程時,通過向8255A的控制端口寫入控制字來設(shè)定的。8255A由編程寫入的控制字有兩個:方式控制字和置位/復(fù)位控制字。方式控制字用于設(shè)置端口A, B, C的工作方式和數(shù)據(jù)傳送方向;置位/復(fù)位控制字用于設(shè)置C口的PC7PC0中某一條口線PCi(i07)的電平。兩個控制字公用一個端口地址,由控制字的最高位作為區(qū)分這兩個控制字的標(biāo)志位。 2.方案三的工作流程簡述方案三中AT89C51單片機(jī)的工作流程與方案一中的8086CPU的工作流程大致相同,但是相對于第一個方案而言,省略了地址鎖存器74LS373芯片,直接通過P2.0、P2.1與8255A的A0、A1端相連,傳送地址信號,定義8255A的工作

26、方式,使其A口和B口為輸出口,定義了8255A各端口地址。 8255A的片選信號CS與地相連,處于低電平有效狀態(tài),AT89C51與8255A之間始終保持通信,AT89C51對8255A進(jìn)行讀/寫等操作。AT89C51單片機(jī)先后寫A、B口的起始數(shù)據(jù),并調(diào)用延時子程序點(diǎn)亮A口燈、B口燈。然后分別調(diào)用左移、右移指令將A口起始數(shù)據(jù)左移再寫入A口、B口起始數(shù)據(jù)右移再寫入B口,點(diǎn)亮下一站盞燈,以此循環(huán)實(shí)現(xiàn)流水燈效果。與第二個方案相比較,結(jié)合了第二個方案的優(yōu)點(diǎn)。在電路圖中和AT89C51單片機(jī)接在一起的晶振電路,AT89C51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是

27、此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中,在電路圖中晶振電路為AT89C51單片機(jī)提供了頻率參考作用。開始設(shè)置8255A工作方式寫入PA、PB口,并分別對其數(shù)值位移延時寫入PA、PB口,并分別對其數(shù)值位移延時全部閃爍一次程序流程圖第3章 測試結(jié)果及體會心得我們把方案三確定為最終方案后,便開始在Proteus軟件上繪制出了仿真效果圖,并通過Keil軟件編寫出了相應(yīng)的源程序匯編文件,導(dǎo)入到了仿真圖中的AT89C51單片機(jī)上,并最終仿真成功,實(shí)現(xiàn)了流水燈閃爍的效果。但整個實(shí)驗(yàn)過程

28、并不是一帆風(fēng)順的,更不是一蹴而就的。我們通過網(wǎng)上查找相關(guān)資料,在圖書館里查詢與流水燈相關(guān)的書籍,搜集整理出了前面三種方案,并通過實(shí)際的仿真與比較,最終確定了方案三作為我們的最終方案。三個方案在仿真的過程中都出現(xiàn)了問題,不是源程序有誤就是網(wǎng)上搜集到的相關(guān)資料是錯誤的,把我們帶進(jìn)了誤區(qū),但我們最終通過自己討論研究和請教老師,解決了這些問題。把三個方案都通過Proteus軟件仿真出來了。在這次課程設(shè)計(jì)中,我們分別熟悉掌握了地址鎖存器74LS373芯片、AT89C51單片機(jī)、可編程外圍接口芯片8255A的內(nèi)部電路、功能特點(diǎn)、工作原理以及在電路中的功能擴(kuò)展與應(yīng)用等,使我們對這些芯片的認(rèn)識更加深刻,并通過

29、仿真電路圖等實(shí)踐操作更進(jìn)一步掌握了這些芯片的實(shí)際應(yīng)用效果與它們的優(yōu)缺點(diǎn)、在提高我們理論知識水平與范圍的同時,也提高了我們實(shí)踐能力?!袄碚撆c實(shí)踐相結(jié)合”永遠(yuǎn)使我們學(xué)習(xí)上一條不可繞過的道路,用理論指導(dǎo)實(shí)踐,通過實(shí)踐提高對理論知識的認(rèn)知水平,這就是我們這次課程設(shè)計(jì)的一個較為深刻的體會。第4章 致謝在此,我們鄭重感謝系里給我們提供的這次珍貴的鍛煉機(jī)會以及張斌老師的熱情指導(dǎo)與幫助。在我們遇到困難而無法解決的時候,張斌老師給我們提供了很多有用的方案建議,并為我們提供了對我們極為有用的資料;當(dāng)我們有些問題不懂疑惑時,張斌老師也耐心給了我們做了清楚的解釋,在此我們表示真摯的感謝。通過課程設(shè)計(jì),我們學(xué)到了很多東

30、西。我們隊(duì)友之間的精密合作與默契對我們也是一個重要幫助,沒有我們的合作,不可能會有所成功。感謝所有幫過我們的老師和同學(xué)們,他們都很熱情幫助我們,為我們提供了他們力所能及的幫助,在此我們對他們表示真摯的感謝。第5章 參考文獻(xiàn)1 孫俊逸,盛秋林,張錚等 單片機(jī)原理及應(yīng)用M。北京:清華大學(xué)出版社,2001。2 蔡美琴,MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用M。北京:高等教育出版社,2000。3 孫育才,孫華芳,王榮興 單片機(jī)原理及應(yīng)用M。北京:電子工業(yè)出版社,2003。4 李鴻,單片機(jī)原理及應(yīng)用M。湖南:湖南大學(xué)出版社,2004。5 丁元杰,單片微機(jī)原理及應(yīng)用第二版M。北京:機(jī)械工業(yè)出版社,2001。6

31、 潘新民,王燕芳 編著.微型計(jì)算機(jī)控制技術(shù)。北京:高等教育出版社,2004。7 馬忠梅 單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)M。北京:北京北航出版社,2003。8 范立南 單片微機(jī)接口與控制技術(shù)M。沈陽:遼寧大學(xué)出版社,1996。9 張友德 單片微型機(jī)原理、應(yīng)用與實(shí)踐M。上海:復(fù)旦大學(xué)出版社,1992。10 李華 MCS-51系列單片機(jī)實(shí)用接口技術(shù)M。北京:北京航空航天大學(xué)出版社,1993。11 何希慶,高偉 MCS-51單片機(jī)原理、實(shí)驗(yàn)、實(shí)例M.。山東:山東大學(xué)出版社,1989。12 張毅剛,彭喜元,姜守達(dá) 新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)M。哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003。附錄1 方案一 Pr

32、oteus仿真電路效果圖附錄2 方案一 源程序代碼MY8255_A EQU IOY0+00H*2 ;8255的A口地址MY8255_B EQU IOY0+01H*2 ;8255的B口地址MY8255_C EQU IOY0+02H*2 ;8255的C口地址MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址DATA SEGMENTLA DB 1 DUPLB DB 1 DUPAXX DW 1 BUPCXX DW 1 BUPDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX

33、,MY8255_MODE ;定義8255工作方式MOV AL,80H ;工作方式0,A口和B口為輸出OUT DX,ALBEGIN:MOV DX,MY8255_A ;寫A口發(fā)出的起始數(shù)據(jù)MOV AL,01HOUT DX,ALMOV LA,ALMOV DX,MY8255_B ;寫B(tài)口發(fā)出的起始數(shù)據(jù)MOV AL,80HOUT DX,ALMOV LB,ALMOV CX,7LOOP1:CALL DALLYMOV AL,LA ;將A口起始數(shù)據(jù)左移再寫入A口ROL AL,1MOV LA,ALMOV DX,MY8255_AOUT DX,ALMOV AL,LB ;將B口起始數(shù)據(jù)右移再寫入B口ROR AL,1MO

34、V LB,ALMOV DX,MY8255_BOUT DX,ALLOOP LOOP1MOV CX,7LOOP2: CALL DALLYMOV AL,LA ;將A口起始數(shù)據(jù)右移再寫入A口ROR AL,1MOV LA,ALMOV DX,MY8255_AOUT DX,ALMOV AL,LB ;將B口起始數(shù)據(jù)左移再寫入B口ROL AL,1MOV LB,ALMOV DX,MY8255_BOUT DX,ALLOOP LOOP2JMP BEGIN ;流水燈重新開始DALLY PROC ;軟件延時子程序MOV CXX,CXMOV AXX,AX ;這里本應(yīng)該用堆棧,我用CXX,AXX變量代替了MOV CX,0FH

35、D1:MOV AX,0FFFHD2:DEC AXJNZ D2LOOP D1MOV AX,AXXMOV CX,CXXRETDALLY ENDPCODE ENDSEND START附錄3 方案二 Proteus仿真電路效果圖附錄4 方案二 源程序代碼ORG 0000H ;單片機(jī)上電后從0000H地址執(zhí)行AJMP START ;跳轉(zhuǎn)到主程序存放地址處ORG 0030H ;設(shè)置主程序開始地址START:MOV SP,#60H ;設(shè)置堆棧起始地址為60HCLR P1.0 ;P1.0輸出低電平,使LED1點(diǎn)亮ACALL DELAY ;調(diào)用延時子程序SETBP1.0 ;P1.0輸出高電平,使LED1熄滅CL

36、R P1.1 ;P1.1輸出低電平,使LED2點(diǎn)亮ACALLDELAY ;調(diào)用延時子程序SETBP1.1 ;P1.1輸出高電平,使LED2熄滅CLR P1.2 ;P1.2輸出低電平,使LED3點(diǎn)亮ACALLDELAY ;調(diào)用延時子程序SETBP1.2 ;P1.2輸出高電平,使LED3熄滅CLR P1.3 ;P1.3輸出低電平,使LED4點(diǎn)亮ACALLDELAY ;調(diào)用延時子程序SETBP1.3 ;P1.3輸出高電平,使LED4熄滅CLR P1.4 ;P1.4輸出低電平,使LED5點(diǎn)亮ACALLDELAY ;調(diào)用延時子程序SETBP1.4 ;P1.4輸出高電平,使LED5熄滅CLR P1.5 ;

37、P1.5輸出低電平,使LED6點(diǎn)亮ACALLDELAY ;調(diào)用延時子程序SETBP1.5 ;P1.5輸出高電平,使LED6熄滅CLR P1.6 ;P1.6輸出低電平,使LED7點(diǎn)亮ACALLDELAY ;調(diào)用延時子程序SETBP1.6 ;P1.6輸出高電平,使LED7熄滅CLR P1.7 ;P1.7輸出低電平,使LED8點(diǎn)亮ACALLDELAY ;調(diào)用延時子程序SETBP1.7 ;P1.7輸出高電平,使LED8熄滅ACALLDELAY ;調(diào)用延時子程序AJMP START ;8個LED流了一遍后返回到標(biāo)號START處再循環(huán)DELAY ;延時子程序MOV R0,#255;延時一段時間D1:MOV

38、 R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回END ;程序結(jié)束附錄5 方案三(最終方案) Proteus仿真電路效果圖附錄6 方案三(最終方案) 源程序代碼ORG 0000H LJMP MAIN ORG 0030H MAIN:CLR P2.2 ;8255復(fù)位 SETB P2.2 CLR P2.2 SETB P2.0 ;A0=1,A1=1,8255A控制寄存器地址 SETB P2.1 MOV A,#80H ;PA,PB和PC都作為輸出口 MOVX R0,ASTART:MOV R1,#0FEH ;賦循環(huán)初值 MOV R2,#7FH MOV R3,#08 LOOP:CL

39、R P2.0 CLR P2.1 MOV A,R1 MOVX R0,A ;寫入數(shù)據(jù) RL A ;左移1位 MOV R1,A SETB P2.0 ;PB口 CLR P2.1 MOV A,R2 MOVX R0,A RR A MOV R2,A CALL DELAY DJNZ R3,LOOP ;從P0循環(huán)到P7 MOV R1,#7FH MOV R2,#0FEH MOV R3,#08LOOP1:CLR P2.0 ;PA口 CLR P2.1 MOV A,R1 MOVX R0,A ;寫入數(shù)據(jù) RR A ;右移1位 MOV R1,A SETB P2.0 ;PB口 CLR P2.1 MOV A,R2 MOVX R0,A

溫馨提示

  • 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

提交評論