微機(jī)原理課程設(shè)計簡易全自動洗衣機(jī)設(shè)計解析_第1頁
微機(jī)原理課程設(shè)計簡易全自動洗衣機(jī)設(shè)計解析_第2頁
微機(jī)原理課程設(shè)計簡易全自動洗衣機(jī)設(shè)計解析_第3頁
微機(jī)原理課程設(shè)計簡易全自動洗衣機(jī)設(shè)計解析_第4頁
微機(jī)原理課程設(shè)計簡易全自動洗衣機(jī)設(shè)計解析_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、4,聲/并推火挈jiangsLiuniversityofscienceandtechnology微機(jī)原理課程設(shè)計電氣工程及其自動化電氣與信息工程學(xué)院姓名學(xué)號班級專業(yè)學(xué)院江蘇科技大學(xué)2013年9月江蘇科技大學(xué)微機(jī)原理課程設(shè)計目錄一、課程設(shè)計內(nèi)容1二、系統(tǒng)功能要求12.1 基本功能要求12.2 附件功能要求1三、系統(tǒng)方案論證1四、系統(tǒng)硬件設(shè)計24.1 系統(tǒng)硬件原理24.2 功能模塊設(shè)計64.3 遇到問題及解決措施7五、系統(tǒng)軟件設(shè)計85.1 總體設(shè)計思想85.2 功能模塊設(shè)計105.3 遇到問題及解決措施11六、總結(jié)11七、附錄13江蘇科技大學(xué)微機(jī)原理課程設(shè)計簡易全自動洗衣機(jī)設(shè)計一、課程設(shè)計內(nèi)容(1

2、)利用8255A芯片,在數(shù)碼管上實時顯示洗衣機(jī)檔位和洗衣時間倒計時;(2)利用8254芯片,設(shè)置精確倒計時時間或者發(fā)送信號給蜂鳴器;(3)利用8259A芯片,設(shè)置按鍵或開關(guān)中斷控制功能;(4)利用0809芯片,模擬水位傳感器采集一個電壓信號,控制電機(jī)旋轉(zhuǎn)。二、系統(tǒng)功能要求2.1 基本功能要求(1)能夠?qū)崿F(xiàn)洗衣機(jī)換擋功能,比如設(shè)置“心當(dāng)鍵”、“猾鍵”等不同擋位;(2)能夠?qū)崿F(xiàn)電機(jī)的正轉(zhuǎn)功能;比如設(shè)置電機(jī)正轉(zhuǎn)3圈,反轉(zhuǎn)3圈,循環(huán)工作;(3)能夠?qū)崿F(xiàn)洗衣機(jī)按鍵控制,比如設(shè)置啟動鍵"、暫停鍵”或停止鍵”(4)能夠?qū)崿F(xiàn)按鍵或開關(guān)控制洗衣機(jī)的暫停,比如按下暫停鍵”,正在旋轉(zhuǎn)的電機(jī)停止工作,再按一

3、下啟動鍵”,洗衣機(jī)又繼續(xù)工作;(5)能夠?qū)崿F(xiàn)洗滌、甩干連續(xù)自動功能,甩干后,洗衣機(jī)會通過蜂鳴器發(fā)出報警聲音;2.2 附件功能要求(1)能夠?qū)崿F(xiàn)洗衣機(jī)單獨甩干功能,此時電機(jī)旋轉(zhuǎn)速度很快;(2)能夠?qū)崿F(xiàn)洗衣機(jī)進(jìn)水、排水或者洗滌、漂洗、甩干等不同功能使用不同顏色的指示燈;(3)能夠?qū)崿F(xiàn)洗滌、漂洗、甩干全過程自動化;(4)能夠?qū)崿F(xiàn)洗衣機(jī)甩干后,發(fā)出優(yōu)美的音樂,音樂一直響直到人為關(guān)掉或者音樂響一定時間后自動關(guān)閉。(5)自己設(shè)計的其他有特色的功能。三、系統(tǒng)方案論證3.1 方案一輸入設(shè)備主要有啟動按鈕、暫停按鈕、檔位選擇、排水按鈕、及脫水按鈕輸出設(shè)備主要有電源指示燈、數(shù)碼管、步進(jìn)電機(jī)、蜂鳴器等。江蘇科技大學(xué)

4、微機(jī)原理課程設(shè)計首先構(gòu)思系統(tǒng)的總體結(jié)構(gòu),根據(jù)設(shè)計要求確定好系統(tǒng)大致的硬件組成及其結(jié)構(gòu),其次根據(jù)系統(tǒng)的各個功能把軟件分成幾個不同的模塊,依次實現(xiàn)各個模塊的功能,最后把各個模塊組合起來完成整個系統(tǒng)的功能。3.2 方案二根據(jù)任務(wù)的要求,選擇了4個數(shù)碼管作為信號輸出,以狀態(tài)輸入開關(guān)作為輸入信號,者B連接至8255A芯片上。步進(jìn)電動機(jī)由8255PC4-PC7驅(qū)動,其中洗衣過程漂洗過程排水過程的時間都由8254提供定時信號,實現(xiàn)在預(yù)定時間狀態(tài)的轉(zhuǎn)換。在對芯片進(jìn)行初始化之后,先判斷輸入信號的狀態(tài),根據(jù)輸入狀態(tài)的不同調(diào)用不同的子程序,鑒于定時程序在很多子程序里調(diào)用到,多次編寫加長了程序的長度,所以每次在調(diào)用之

5、前先將計數(shù)值讀入一個寄存器中,在延時程序中讀取此寄存器中的數(shù)值即可。當(dāng)按照輸入狀態(tài)運行完之后,最后檢測到已完成的時候就啟動蜂鳴報警,洗衣過程完成。3.3 方案比較方案一相對來說剛開始容易,但是后續(xù)工作麻煩,不容易將每個模塊有機(jī)的整合起來,會出現(xiàn)接口沖突,而方案二在設(shè)計初就從全局出發(fā),充分分配好各個端口的配置及用途,避免了方案一中的沖突,所以方案二更優(yōu)越。四、系統(tǒng)硬件設(shè)計4.1系統(tǒng)硬件原理(1)8255A芯片8255A是一個通用的可編程的并行接口芯片,內(nèi)部有2個8位I/O口(A、B),兩個4位I/O口(PC74、PC30).通過編程可設(shè)置3種工作方式,可適用于CPU與I/O設(shè)備之間的多種數(shù)據(jù)傳送

6、方式的要求。C可作為數(shù)據(jù)口,可作為信號線(CPU與I/O設(shè)備之間的應(yīng)答信號),可作為狀態(tài)口,可按位置位/復(fù)位。8255A的內(nèi)部結(jié)構(gòu)如圖1所示:江蘇科技大學(xué)微機(jī)原理課程設(shè)計CPU接口外部接口數(shù)據(jù)控制I/OFAr*FE8位內(nèi)部數(shù)據(jù)總線k組誡口C上半部(4)PC.B組端匚IC下半部(4)I心PClPC.AiRESET讀/舄控制邏輯控制E組端口6C8)CS圖18255的內(nèi)部結(jié)構(gòu)圖8255的弓I腳分配:(1)D0D7:8位,雙向,三態(tài)數(shù)據(jù)線,用來與系統(tǒng)數(shù)據(jù)總線相連;(2)端口A、B、C:PA0PA7(A組數(shù)據(jù)信號,用來連接外設(shè));PB0PB7(B組數(shù)據(jù)信號,用來連接外設(shè));PC0PC7(C組數(shù)據(jù)信號,用

7、來連接外設(shè)或者作為控制信號)。(3) CS、RESET、WR、RD、A1、A0(內(nèi)部4個端口)。(4) VCC、GND。8255A有三種工作方式,用戶可以通過編程來設(shè)置。方式0簡單輸入/輸出一一查詢方式;A,B,C三個端口均可。方式1選通輸入/輸出一一中斷方式;A,B,兩個端口均可。方式2雙向輸入/輸出一一中斷方式。只有A端口才有。工作方式的選擇可通過向控制端口寫入控制字來實現(xiàn)。(2)芯片82548254是可編程計數(shù)器/定時器。它的引腳及功能示意圖如圖2所示。數(shù)據(jù)總線緩沖器是8254與CPU之間的數(shù)據(jù)接口,它是一個8位雙向三態(tài)緩沖器。讀/寫控制邏輯接受CPU送來的讀/寫控制信號,并加以組合完成

8、對8254內(nèi)部操作的控制。8254內(nèi)部包含三個獨立的結(jié)構(gòu)功能完全相同的16位可預(yù)置的遞減計數(shù)器。控制字寄存器用來存放由CPU寫入8254的方式選擇控制字,以確定計數(shù)器的操作方式。江蘇科技大學(xué)微機(jī)原理課程設(shè)計圖2般54引腳圖(3) 8259芯片8259A,可編程中斷控制器芯片。它的引腳圖如圖3所示12S227326425574678259A上二22Q71O9201019111S121713161415圖38259A弓|腳圖它是可以用程序控制的中斷控制芯片。單個的8259A能管理8級向量優(yōu)先級中斷。在不增加其他電路的情況下,最多可以級聯(lián)窗級的向量優(yōu)級中斷系統(tǒng)。8259A有多種工作方式,能用于各種系

9、統(tǒng)。各種工作方式的設(shè)定是在初始化時通過軟件進(jìn)行的。在總線控制器的控制下,8259A芯片可以處于編程狀態(tài)和操作狀態(tài),編程狀態(tài)是CPU使用IN或OUT指令對8259A芯片進(jìn)行初始化編程江蘇科技大學(xué)微機(jī)原理課程設(shè)計的狀態(tài)。(4) 0809芯片ADC0809是8位逐次逼近型A/D轉(zhuǎn)換器。它由一個八路模擬開關(guān),一個地址譯碼器,一個A/D轉(zhuǎn)換器和一個三態(tài)輸出所存器組成,多路開關(guān)可選通8個模擬通道,允許8路模擬量分時輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,三態(tài)輸出用于鎖存A/D轉(zhuǎn)換完的數(shù)據(jù),當(dāng)OE端為高電平時,才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完成的數(shù)據(jù)。IN0-IN7:8條模擬量輸入通道ADC0809對輸入模擬量要求

10、:信號單極性,電壓范圍是0-5V,若信號太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入端前加采樣保持電路。地址輸入和控制線:4條ALE為地址鎖存允許輸入線,高電平有效,當(dāng)ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進(jìn)行鎖存,經(jīng)譯碼后被選中的通道模擬量通過轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,B和C為地址輸入線,用于選通IN0-IN7上的一路模擬量輸入。通道選擇表如下表一所示。表10809通道選擇表CBA選擇的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7數(shù)字量輸出及控制線:11條ST為轉(zhuǎn)換啟動

11、信號。當(dāng)ST上跳沿時,所有內(nèi)部寄存器清零;下跳沿時,開始進(jìn)行A/D轉(zhuǎn)換;在跳轉(zhuǎn)期間,ST應(yīng)保持低電平,EOC為轉(zhuǎn)換結(jié)束信號,當(dāng)EOC為高電平時,表明轉(zhuǎn)換結(jié)束;否則表明正在進(jìn)行A/D轉(zhuǎn)換,OE為輸出允許信號,用于控制三條輸出鎖存器想單片機(jī)輸出轉(zhuǎn)換得到的江蘇科技大學(xué)微機(jī)原理課程設(shè)計數(shù)據(jù),OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)'OE=0出數(shù)據(jù)線呈高阻狀態(tài)。D7-D0為數(shù)字量輸出線CLK為時鐘輸入信號線,因ADC0809的內(nèi)部沒有時鐘電路,所需時鐘信號必須由外界提供,通常頻率為500KHZ0VREF(+),VREF(-)為參考電壓輸入。4.2 功能模塊設(shè)計圖4硬件功能圖圖4硬件功能圖中,系統(tǒng)總體功能模塊

12、在具體實踐中,因硬件資源的限制有所調(diào)整,比如有些電路采用其他電路來模擬,進(jìn)水部分有電位器來模擬,電機(jī)驅(qū)動用直流系統(tǒng)來模擬。其接線圖如圖5所示:XDO:XD7XA2XIOR一DOD7A08259RDXDOdXD7時鐘源EXOEXODORD*VRCSD7AOCLKOAlOUTO3254GATElCIK1CLK2OUT1OUT2GATE1GEI2XIOWI0Y1WRIRO-CSINIHNTR_-5VXIORX10WI0Y1XA2XA3時鐘源SPK+5V圖5系統(tǒng)接線圖江蘇科技大學(xué)微機(jī)原理課程設(shè)計4.3 遇到問題及解決措施問題1:當(dāng)把所有線路按照設(shè)計要求連接好過后,發(fā)現(xiàn)芯片8254沒有輸出時鐘信號。解決

13、方法:芯片8254沒有輸出時鐘信號,這表示8254沒有起作用,原以為是芯片壞了,換了好幾個新品牌還是一樣不起作用,后來經(jīng)過不斷排查是由于采用了12V供電電壓,實際要求是5V。問題2:當(dāng)把所有的線路按照設(shè)計要求連接好之后,發(fā)現(xiàn)電機(jī)不能運轉(zhuǎn)。解決方法:經(jīng)檢查是連接到電機(jī)驅(qū)動電路上的接線出現(xiàn)斷路,換根接線就把問題解決了江蘇科技大學(xué)微機(jī)原理課程設(shè)計8255、8254與8259的初始化,如:;8255初始化;初始化8254工作方式;計數(shù)器0,方式3;初始化實驗系統(tǒng)中8259的ICW1;邊沿觸發(fā)、單片8259、需要ICW4;初始化實驗系統(tǒng)中8259的ICW2;初始化實驗系統(tǒng)中8259的ICW4;非自動結(jié)束

14、EOI;初始化實驗系統(tǒng)中8259的OCW1;打開IR0和IR1的屏蔽位五、系統(tǒng)軟件設(shè)計5.1 總體設(shè)計思想程序首先要用偽指令定義一下。然后是MOVDX,CADDRMOVAL,MODEOUTDX,ALMOVDX,MY8254_MODEMOVAL,36HOUTDX,ALMOVDX,MY8259_ICW1MOVAL,1BHOUTDX,ALMOVDX,MY8259_ICW2MOVAL,08HOUTDX,ALMOVDX,MY8259_ICW4MOVAL,01HOUTDX,ALMOVDX,MY8259_OCW1MOVAL,0FCHOUTDX,AL然后按照原先設(shè)計好的原理框圖的步驟設(shè)計檢測洗衣機(jī)開/停信號,

15、如;CHECK:MOVDX,PORTBINAL,DXTESTAL,80HJZCHECK還有接下來的點亮運行指示燈等程序。在設(shè)計中用到了子程序調(diào)用、循環(huán)、測試等程序。在編程時按照設(shè)計好的原理框圖,結(jié)合微機(jī)課程上所學(xué)的具有一定功能的程江蘇科技大學(xué)微機(jī)原理課程設(shè)計編出來,然后在計算機(jī)上進(jìn)行調(diào)試,發(fā)現(xiàn)錯誤后再進(jìn)行修改。在編程過程中要注意程序的嵌套使用,即有些程序按照前面流程圖設(shè)計好了但在后面的程序中然要用,所以就要注意調(diào)用。軟件可分為10個模塊:主程序、鍵盤掃描子程序、參數(shù)設(shè)置子程序、延時子程序、顯示子程序、自檢程序、甩干子程序、暫停子程序、蜂鳴器子程序。系統(tǒng)的總體流程圖如圖6所示:開始調(diào)用脫水子程關(guān)

16、閉脫水標(biāo)志啟動蜂鳴器圖6整體流程方框圖江蘇科技大學(xué)微機(jī)原理課程設(shè)計5.2 功能模塊設(shè)計(1)延時功能模塊設(shè)計根據(jù)機(jī)箱上給出的芯片我們選用了8254作為定時計數(shù)器,在延時程序中計時,在加水過程中計量加水的量。由于需要多次調(diào)用延時子程序,所以把他寫成一個DALLY程序,每次調(diào)用的時候配合CALL和RET就能往返于子程序和主程序之間,之前把要記的數(shù)值放在SI寄存器中,在子程序中讀取該寄存器就可以知道要記的數(shù)是多少而不必每次都重新給計數(shù)器賦值,減少了程序的步驟也使得更易讀。(2)洗衣功能模塊設(shè)計洗衣子程序中是一個不停的在正傳反轉(zhuǎn)間循環(huán)的過程,期間每次正轉(zhuǎn)或者反轉(zhuǎn)都調(diào)用了延時子程序,定時3S,在完成5次

17、循環(huán)過后,洗衣過程完成。(3)脫水功能模塊設(shè)計脫水子程序中只需調(diào)用上面做好的延時程序,并在該延時之前打開或關(guān)閉相應(yīng)的指示燈即可。然后用8086的片選信號加給0832控制電動機(jī)正轉(zhuǎn)反轉(zhuǎn),根據(jù)公式:V0=-NVREF/256計算得到要使電動機(jī)保持不轉(zhuǎn)的時候要輸入給80H,而正轉(zhuǎn)則取最大值FFH,反轉(zhuǎn)取最小值00H,由于這樣得到的V0不相同,所以引起了正傳反轉(zhuǎn)時候的速度有些差異,最后等延時子程序執(zhí)行完畢后,關(guān)閉相應(yīng)指示燈即可完成。脫水、延時、加水等子程序后面都要加上RET,否則將無法跳回主程序MAIN。當(dāng)時在前幾次通電試驗的時候每次都出現(xiàn)在排水的時候加水指示燈亮起,需要加水后才能熄滅,后檢查發(fā)現(xiàn)就是

18、少了一個RET導(dǎo)致的,執(zhí)行完排水程序后沒返回而是接下去執(zhí)行了加水程序。(4)甩干、報警功能模塊設(shè)計甩干子程序是一個不停的在正轉(zhuǎn)的過程,甩干可以分為快甩和慢甩兩種檔位,甩干子程序還可以通過按鍵直接跳過洗衣進(jìn)行調(diào)用。當(dāng)甩干程序運行結(jié)束后,8254會產(chǎn)生一個時鐘信號給蜂鳴器從而讓蜂鳴器報警,表示洗衣過程結(jié)束。(5)加水子程序設(shè)計加水是這個總程序中很重要的部分,特別是如何將水位信號讀取和比較,最終還要輸出到8253進(jìn)行計數(shù)。首先打開加水指示燈,將水位信號掃描到寄存器AL中。然后根據(jù)與設(shè)定好的數(shù)據(jù)進(jìn)行比較確定水位信號是什么,假如檢測到的10江蘇科技大學(xué)微機(jī)原理課程設(shè)計是高水位的話,跳轉(zhuǎn)到LEVEL,否則

19、給AL置為3,高水位的時候?qū)⒖刂谱謱懡o計數(shù)器0,繼續(xù)執(zhí)行下去直到給BL加上1,當(dāng)加到與原來保存的水位信號數(shù)值相等的時候,由PC7將信號傳遞給8253,告之加水計數(shù)程序完成,跳出加水程序,然后關(guān)閉加水指示燈,執(zhí)行下面的程序。5.3遇到問題及解決措施問題1.通過中斷實現(xiàn)數(shù)碼管計時顯示與步進(jìn)電機(jī)延時相互沖突,導(dǎo)致步進(jìn)電機(jī)不能正常運轉(zhuǎn)。解決方法:經(jīng)過很長時間調(diào)試,還是不能成功,由于時間有限,所以最后只好通過步進(jìn)電機(jī)正反轉(zhuǎn)次數(shù)來計時。問題2.報警功能實現(xiàn)后不知道如何使它停止下來。解決辦法:在進(jìn)入報警子程序前加變量判斷,通過按鍵控制變量的取反改變,停止報警。六、總結(jié)這次微機(jī)原理課程設(shè)計歷時兩個星期,在整整

20、兩星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。以前在上課的時候,老師經(jīng)常強(qiáng)調(diào)在寫一個程序的時候,一定要事先把程序原理方框圖化出來,但是我開始總覺得這樣做沒必要,很浪費時間。但是,這次課程設(shè)計完全改變了我以前的那種錯誤的認(rèn)識,以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計中碰到的那些需要很多代碼才能完成的任務(wù),畫程序方框圖是很有必要的。因為通過程序方框圖,在做設(shè)計的過程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。其次,以前對于編程工具

21、的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上機(jī)的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結(jié)果,怎么去了解每個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各11江蘇科技大學(xué)微機(jī)原理課程設(shè)計種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。這次課程設(shè)計終于順

22、利完成了,在設(shè)計中遇到了很多編程問題,通過網(wǎng)絡(luò)和與同學(xué)的討論基本上得到解決,提高了自己解決和分析問題的能力。12江蘇科技大學(xué)微機(jī)原理課程設(shè)計七、附錄洗衣機(jī)程序;*根據(jù)查看端口資源修改下列符號值*IOY1EQU3040HIOY0EQU3000H;片選IOY0對應(yīng)的端口始地址.*MY8255_AMY8255_BMY8255_C;8255的A口地址;8255的B口地址;8255的C口地址EQUIOY0+00H*4EQUIOY0+01H*4EQUIOY0+02H*4MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址MY8254_COUNT0MY8254_COUNT1MY8254

23、_COUNT2MY8254_MODEEQUIOY1+00H*4EQUIOY1+01H*4EQUIOY1+02H*4EQUIOY1+03H*4;8254計數(shù)器0端口地址;8254計數(shù)器1端口地址;8254計數(shù)器2端口地址;8254控制寄存器端口地址IOY2EQU3080H;片選IOY0對應(yīng)的端口始地址.*MY8259_ICW1MY8259_ICW2MY8259_ICW3MY8259_ICW4MY8259_OCW1址MY8259_OCW2址MY8259_OCW3址EQUIOY2+00HEQUIOY2+04HEQUIOY2+04HEQUIOY2+04HEQUIOY2+04HEQUIOY2+00HEQ

24、UIOY2+00H;實驗系統(tǒng)中8259的ICW1端口地址;實驗系統(tǒng)中8259的ICW2端口地址;實驗系統(tǒng)中8259的ICW3端口地址;實驗系統(tǒng)中8259的ICW4端口地址;實驗系統(tǒng)中8259的OCW1端口地;實驗系統(tǒng)中8259的OCW2端口地;實驗系統(tǒng)中8259的OCW3端口地STACK1SEGMENTSTACK13江蘇科技大學(xué)微機(jī)原理課程設(shè)計DW256DUP(?)STACK1ENDSDATASEGMENTDTABLE1DB06H,3FH,73H,77H,39H,06H,5BH,4FH,66H,80HDTABLE3DB10H,30H,20H,60H,40H,0C0H,80H,90HDTABLE

25、DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HTIME1DB05HTIME2DB05HTIME3DB0FHMESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH,'$'FREQ_LISTDW371,495,495,495,624,556,495,556,624瀕率表DW495,495,624,742,833,833,833,742,624DW624,495,556,495,556,624,495,416,416,371DW495,833,742,624

26、,624,495,556,495,556,833DW742,624,624,742,833,990,742,624,624,495DW556,495,556,624,495,416,416,371,495,0TIME_LISTDB4,6,2,DB6,2,4,DB4,4,6,DB12,4,6,DB6,2,4,DB6,2,4,4,4,6,2,4,4;時間表4,12,1,3,6,22,4,4,6,2,4,42,4,4,6,2,4,44,12,4,6,2,4,44,6,2,4,4,12DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOV

27、DS,AX14江蘇科技大學(xué)微機(jī)原理課程設(shè)計15MOVDX,MY8254_MODEMOVAL,36HOUTDX,ALMOVDX,MY8254_COUNT0MOVAL,00HOUTDX,ALMOVAL,48HOUTDX,ALMOVDX,MY8254_MODEMOVAL,050HOUTDX,ALMOVDX,MY8254_COUNT1MOVAL,03HOUTDX,ALMOVAL,00HOUTDX,ALMOVDX,MY8254_MODEMOVAL,0B6HOUTDX,ALMOVDX,MY8254_COUNT2MOVAL,00HOUTDX,ALMOVAL,05HOUTDX,ALMOVDX,MY8259_I

28、CW1MOVAL,1BHOUTDX,ALMOVDX,MY8259_ICW2MOVAL,08H;初始化8254工作方式;計數(shù)器0,方式3;裝入計數(shù)初值;18432分頻;初始化8254工作方式;計數(shù)器2,方式0;裝入計數(shù)初值;18432分頻;初始化8254工作方式;計數(shù)器2,方式3;裝入計數(shù)初值;18432分頻;初始化實驗系統(tǒng)中8259的ICW1;邊沿觸發(fā)、單片8259、需要ICW4;初始化實驗系統(tǒng)中8259的ICW2江蘇科技大學(xué)微機(jī)原理課程設(shè)計OUTDX,ALMOVDX,MY8259_ICW4MOVAL,01HOUTDX,ALMOVDX,MY8259_OCW1MOVAL,0FCHOUTDX,AL

29、MOVSI,3000HMOVSI,00HMOVSI+02H,05HMOVSI+04H,01HMOVSI+06H,01HMOVSI+08H,01HMOVSI+0AH,02HMOVSI+0CH,02HMOVSI+0EH,01HMOVDX,MY8255_MODEMOVAL,81HOUTDX,ALKAISHI:MOVSI,3000HMOVDH,SI+8CMPDH,8JAZHI1CMPDH,1JBZHI8JMPJIXUZHI1:MOVSI+8,01HJMPJIXUZHI8:MOVSI+8,08H16;初始化實驗系統(tǒng)中8259的ICW4;非自動結(jié)束EOI;初始化實驗系統(tǒng)中8259的OCW1;打開IR0和I

30、R1的屏蔽位;數(shù)碼管顯示1;數(shù)碼管顯示2;洗滌,甩干判斷變量;電機(jī)速度檔位;電機(jī)輸入節(jié)拍倒轉(zhuǎn)判斷變量;電機(jī)方向控制變量;判斷是否進(jìn)入電機(jī)運行程序的變量;警報器關(guān)閉判斷變量;初始化8255工作方式方式0,A口、B口輸出,C口低4位輸入;讀取變量首地址;跳轉(zhuǎn)到節(jié)拍1開始轉(zhuǎn)動;跳轉(zhuǎn)到節(jié)拍8開始轉(zhuǎn)動江蘇科技大學(xué)微機(jī)原理課程設(shè)計JIXU:CALLKEYSCANCMPSI+0EH,02HJNZCMOVDX,MY8254_MODEMOVAL,0F6HOUTDX,ALMOVAX,0000HMOVDX,MY8254_COUNT2OUTDX,ALMOVAL,AHOUTDX,ALC:MOVAH,1INT16HJZS

31、FRUNQUIT:MOVAX,4C00HINT21HSFRUN:MOVSI,3000HMOVDH,SI+0CHCMPDH,01HJNZJIXUMOVDH,SI+0AHCMPDH,01HJNZZIJIANINCSI+08HJMPRUNKAISHI1:JMPKAISHIZIJIAN:DECSI+8RUN:MOVAL,SI+8MOVBX,OFFSETDTABLE3ANDAX,00FFH;鍵盤掃描;初始化8254工作方式;計數(shù)器2,方式3;裝入計數(shù)初值;判斷是否有按鍵按下;無按鍵則跳回繼續(xù)循環(huán),;結(jié)束程序退出;讀取變量首地址;判斷變量SI+0CH;不相等跳轉(zhuǎn)到JIXU;判斷電機(jī)運行方向;正向節(jié)拍加1;

32、反向節(jié)拍減一有則退出;將變量與節(jié)拍表對應(yīng)17江蘇科技大學(xué)微機(jī)原理課程設(shè)計ADDBX,AXDECBXMOVAL,BXMOVDX,MY8255_COUTDX,ALDANG1:MOVDH,SI+6CMPDH,05HJNZDANG2PUSHCXMOVCX,10HDA1:CALLDALLY1CALLDALLY1CALLDALLY1CALLKEYSCANJMPPPDANG2:CMPDH,01HJNZDANG3DA2:CALLDALLY1CALLDALLY1CALLKEYSCANJMPPPDANG3:CMPDH,02HJNZPPDA3:CALLDALLY1CALLKEYSCANJMPPPDANG4:CMPD

33、H,03HJNZKAISHI1DA4:;PC口輸出節(jié)拍數(shù)值;判斷速度檔位調(diào)用相應(yīng)的延遲時間;運行個節(jié)拍;鍵盤掃描;跳轉(zhuǎn)到PPCALLKEYSCAN18江蘇科技大學(xué)微機(jī)原理課程設(shè)計;跳轉(zhuǎn)到KAISHI循環(huán);判斷是否是甩干模式;判斷是否是正向19PP:MOVDX,MY8259_OCW3MOVAL,0CHOUTDX,ALINAL,DXTESTAL,80HJZAAANDAL,03HCMPAL,00HJEIR0ISR序JNEIR1ISR序AA:JMPKAISHIDANG4:CMPDH,03HJNZKAISHI1DA4:CALLKEYSCANJMPKAISHIIR0ISR:MOVSI,3000HCMPSI

34、+4H,02HJZM2DIR:CMPSI+0AH,01HJZDIR1MOVSI+0AH,01HJMPM1DIR1:MOVSI+0AH,02HCALLKEYSCAN;向8259的OCW3發(fā)送查詢命令;讀出查詢字;判斷中斷是否已響應(yīng);沒有響應(yīng)則繼續(xù)查詢;若為IR0請求,跳到IR0處理程;若為IR1請求,跳到IR1處理程江蘇科技大學(xué)微機(jī)原理課程設(shè)計M1:M:M2:CTU:EOI:命令DECTIME1MOVAX,10DDIVTIME1MOVAL,TIME1MOVSI+02H,ALCALLKEYSCANCMPTIME1,00HJZMJMPCTUMOVSI+4H,02HMOVSI+6,02HDECTIME

35、2MOVSI,0MOVAL,TIME2MOVSI+02H,ALCMPSI+02H,00HJZFINISHJNZEOIMOVDX,MY8254_COUNT1MOVAL,00HOUTDX,ALMOVAL,03HOUTDX,ALJMPEOIMOVDX,MY8259_OCW2MOVAL,20HOUTDX,AL;洗滌圈數(shù)減1;是否洗滌結(jié)束;轉(zhuǎn)入計數(shù)初值;進(jìn)入甩干模式;速度檔位選2;甩干計數(shù)減一;將計數(shù)值放入數(shù)碼管顯示;裝入計數(shù)初值;18432分頻;向?qū)嶒炏到y(tǒng)中8259發(fā)送中斷結(jié)束20江蘇科技大學(xué)微機(jī)原理課程設(shè)計JMPKAISHIFINISH:MOVSI+0CH,02HCALLPLAYJMPKAISHIP

36、LAYPROCNEARSOUND:CMPSI+0EH,02HJZEOIMOVSI,OFFSETFREQ_LISTMOVDI,OFFSETTIME_LISTP1:MOVDX,1CH1.0416667M=0FE502HMOVAX,02000HDIVWORDPTRSIMOVDX,MY8254_COUNT2OUTDX,ALMOVAL,AHOUTDX,ALMOVDL,DICALLDALLY3DECTIME3ADDSI,2INCDICMPWORDPTRSI,0JESOUND;關(guān)閉進(jìn)入電機(jī)程序標(biāo)志;調(diào)用報警程序;裝入頻率表起始地址;裝入時間表起始地址;輸入時鐘為1.0416667MHz,;取出頻率值計算計數(shù)

37、初值,0F4240H/輸出頻率;裝入計數(shù)初值;取出演奏相對時間,調(diào)用延時子程序;判斷是否到曲末?PLAYENDP21江蘇科技大學(xué)微機(jī)原理課程設(shè)計22;軟件延時子程序;鍵盤掃描子程序;顯示刷新彳青屏;掃描按鍵;有鍵按下則跳置GETKEY1;顯示刷新DALLY1PROCNEARPUSHCXPUSHAXMOVCX,008FHD11:MOVAX,5000HD22:DECAXJNZD22PUSHCXPUSHAXCALLKEYSCANPOPAXPOPCXLOOPD11POPAXPOPCXRETDALLY1ENDPKEYSCANPROCNEARBEGIN:CALLDISCALLCLEARCALLCCSCAN

38、JNZGETKEY1JMPGOBACK1GETKEY1:CALLDISCALLDALLYCALLDALLY江蘇科技大學(xué)微機(jī)原理課程設(shè)計彳青屏;再次掃描按鍵;有鍵按下則跳置GETKEY2;否則跳回開始繼續(xù)循環(huán);設(shè)置當(dāng)前檢測的是第幾列;選取一列,將X1X4中一個置0;讀Y1Y4,用于判斷是哪一行按鍵;是否為第1行;不是則繼續(xù)判斷;設(shè)置第1行第1列的對應(yīng)的鍵值;是否為第2行;不是則繼續(xù)判斷;設(shè)置第2行第1列的對應(yīng)的鍵值;是否為第3行;不是則繼續(xù)判斷;設(shè)置第3行第1列的對應(yīng)的鍵值;是否為第4行;不是則繼續(xù)判斷;設(shè)置第4行第1列的對應(yīng)的鍵值CALLCLEARCALLCCSCANJNZGETKEY2JMP

39、BEGINGETKEY2:MOVCH,0FEHMOVCL,00HCOLUM:MOVAL,CHMOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_C閉合INAL,DXL1:TESTAL,01HJNZL2MOVAL,00HJMPKCODEBEGIN1:JMPBEGINL2:TESTAL,02HJNZL3MOVAL,04HJMPKCODEL3:TESTAL,04HJNZL4MOVAL,08HJMPKCODEL4:TESTAL,08HJNZNEXTMOVAL,0CH23江蘇科技大學(xué)微機(jī)原理課程設(shè)計;將第1列的值加上當(dāng)前列數(shù),確定按;保存按鍵值;顯示刷新彳青屏;掃描按鍵,判斷按鍵是否彈起;未彈起則繼續(xù)循環(huán)等待彈起;當(dāng)前檢測的列數(shù)遞增檢測是否掃描到第4列;沒檢測到第4列則準(zhǔn)備檢測下一列KCODE:ADDAL,CL鍵值CALLPUTBUFPUSHAXKON:CALLDISCALLCLEARCALLCCSCANJNZKONPOPAXNEXT:INCCLMOVAL,CHTESTAL,08HJZBEGIN1ROLAL,1MOVCH,ALJMPCOLUMGOBACK1:RETKEYSCANENDPCCSCANPROCNEARMOVAL,00HMOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_CINAL,DXNOTALANDAL,0FHRETCCSCANENDP

溫馨提示

  • 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

提交評論