《微機原理課程設(shè)計》簡易全自動洗衣機設(shè)計解讀
《《微機原理課程設(shè)計》簡易全自動洗衣機設(shè)計解讀》由會員分享,可在線閱讀,更多相關(guān)《《微機原理課程設(shè)計》簡易全自動洗衣機設(shè)計解讀(39頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、江蘇科技大學(xué) 《微機原理課程設(shè)計》 0或?qū)屋艁V垮 jiangsu university of science and technology 《微機原理課程設(shè)計》 姓名: 學(xué)號: 班級: 專業(yè): 電氣工程及其自動化 學(xué)院:電氣與信息工程學(xué)院 江蘇科技大學(xué) 2013年9月 目錄 一、 課程設(shè)計內(nèi)容 1 二、 系統(tǒng)功能要求 1 2.1基本功能要求 1 2.2附件功能要求 1 三、 系統(tǒng)方案論證 1 四、 系統(tǒng)硬件設(shè)計 2 4.1系統(tǒng)硬件原理 2 4.2功能模塊設(shè)計 6 4.3遇到問題及解決措施 7 五、 系統(tǒng)軟件設(shè)計 8 5
2、.1總體設(shè)計思想 8 5.2 功能模塊設(shè)計 10 5.3遇到問題及解決措施 11 六、 總結(jié) 11 七、 附錄 13 江蘇科技大學(xué) 《微機原理課程設(shè)計》 簡易全自動洗衣機設(shè)計 一、 課程設(shè)計內(nèi)容 (1) 利用8255A芯片,在數(shù)碼管上實時顯示洗衣機檔位和洗衣時間倒計時; (2) 利用8254芯片,設(shè)置精確倒計時時間或者發(fā)送信號給蜂鳴器; (3) 利用8259A芯片,設(shè)置按鍵或開關(guān)中斷控制功能; (4) 利用0809芯片,模擬水位傳感器采集一個電壓信號,控制電機旋轉(zhuǎn)。 二、 系統(tǒng)功能要求 2.1基本功能要求 (1) 能夠?qū)崿F(xiàn)洗衣機換擋功能,比如設(shè)置 “1
3、 當(dāng)鍵” “2當(dāng)鍵”等不同擋位; (2) 能夠?qū)崿F(xiàn)電機的正轉(zhuǎn)功能;比如設(shè)置電機正轉(zhuǎn) 3圈,反轉(zhuǎn)3圈,循環(huán)工作; (3) 能夠?qū)崿F(xiàn)洗衣機按鍵控制,比如設(shè)置 啟動鍵” 暫停鍵”或 停止鍵” (4) 能夠?qū)崿F(xiàn)按鍵或開關(guān)控制洗衣機的暫停,比如按下 暫停鍵”正在旋轉(zhuǎn)的 電機停止工作,再按一下 啟動鍵”洗衣機又繼續(xù)工作; (5) 能夠?qū)崿F(xiàn)洗滌、甩干連續(xù)自動功能,甩干后,洗衣機會通過蜂鳴器發(fā)出報 警聲音; 2.2附件功能要求 (1) 能夠?qū)崿F(xiàn)洗衣機單獨甩干功能,此時電機旋轉(zhuǎn)速度很快; (2) 能夠?qū)崿F(xiàn)洗衣機進(jìn)水、排水或者洗滌、漂洗、甩干等不同功能使用不同顏 色的指示燈; (3) 能夠?qū)崿F(xiàn)洗
4、滌、漂洗、甩干全過程自動化; (4) 能夠?qū)崿F(xiàn)洗衣機甩干后,發(fā)出優(yōu)美的音樂,音樂一直響直到人為關(guān)掉或者 音樂響一定時間后自動關(guān)閉。 (5) 自己設(shè)計的其他有特色的功能。 三、 系統(tǒng)方案論證 3.1方案一 輸入設(shè)備主要有啟動按鈕、暫停按鈕、檔位選擇、排水按鈕、及脫水按鈕。 輸出設(shè)備主要有電源指示燈、數(shù)碼管、步進(jìn)電機、蜂鳴器等。 首先構(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ù)碼管作為信號輸
5、出,以狀態(tài)輸入開關(guān)作為輸 入信號,都連接至8255A芯片上。步進(jìn)電動機由8255PC4-PC7口驅(qū)動,其中洗 衣過程漂洗過程排水過程的時間都由 8254提供定時信號,實現(xiàn)在預(yù)定時間狀態(tài) 的轉(zhuǎn)換。 在對芯片進(jìn)行初始化之后,先判斷輸入信號的狀態(tài),根據(jù)輸入狀態(tài)的不同調(diào) 用不同的子程序,鑒于定時程序在很多子程序里調(diào)用到, 多次編寫加長了程序的 長度,所以每次在調(diào)用之前先將計數(shù)值讀入一個寄存器中,在延時程序中讀取此 寄存器中的數(shù)值即可。 當(dāng)按照輸入狀態(tài)運行完之后,最后檢測到已完成的時候就啟動蜂鳴報警, 洗 衣過程完成。 3.3方案比較 方案一相對來說剛開始容易,但是后續(xù)工作麻煩,不容易將每個模塊
6、有機的 整合起來,會出現(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 口( PC7?4、PC3?0).通過編程可設(shè)置3種工作方式,可適 用于CPU與I/O設(shè)備之間的多種數(shù)據(jù)傳送方式的要求。 C 口可作為數(shù)據(jù)口,可 作為信號線(CPU與I/O設(shè)備之間的應(yīng)答信號),可作為狀態(tài)口,可按位置位/ 復(fù)位。 8255A的內(nèi)部結(jié)構(gòu)如圖1所示: 8255的
7、引腳分配: (1) DO?D7: 8位,雙向,三態(tài)數(shù)據(jù)線,用來與系統(tǒng)數(shù)據(jù)總線相連; (2) 端口 A、B、C: PA0~PA7( A組數(shù)據(jù)信號,用來連接外設(shè));PB0~PB7 (B組數(shù)據(jù)信號,用來連接外設(shè));PC0~PC7(C組數(shù)據(jù)信號,用來連接外設(shè)或 者作為控制信號)。 (3) CS、RESET、WR、RD、A1、A0 (內(nèi)部 4 個端口)。 (4) VCC、GND。 8255A有三種工作方式,用戶可以通過編程來設(shè)置。方式 0――簡單輸入/ 輸出一一查詢方式;A,B,C三個端口均可。方式1――選通輸入/輸出一一中 斷方式;A , B,兩個端口均可。方式2 雙向輸入/輸出 中斷方式
8、。只有 A端口才有。工作方式的選擇可通過向控制端口寫入控制字來實現(xiàn)。 (2)芯片 8254 8254是可編程計數(shù)器/定時器。它的引腳及功能示意圖如圖 2所示。數(shù)據(jù)總 線緩沖器是8254與CPU之間的數(shù)據(jù)接口,它是一個 8位雙向三態(tài)緩沖器。讀/ 寫控制邏輯接受CPU送來的讀/寫控制信號,并加以組合完成對 8254內(nèi)部操作 的控制。8254內(nèi)部包含三個獨立的結(jié)構(gòu)功能完全相同的 16位可預(yù)置的遞減計數(shù) 器。控制字寄存器用來存放由CPU寫入8254的方式選擇控制字,以確定計數(shù)器 的操作方式。 1 24 2 23 3 77 4 21 5 20 6 S25
9、4 19 7 U S 17 9 16 10 15 團2 $25斗引腳圖 (3) 8259 芯片 8259A,可編程中斷控制器芯片。它的引腳圖如圖3所示 1 2S 2 27 3 26 斗 25 5 24 6 23 7 8259A 22 8 21 9 20 10 19 11 18 12 17 13 16 14 15 圖3 8259A引腳圖 它是可以用程序控制的中斷控制芯片。單個的8259A能管理8級 向量優(yōu)先級中斷。在不增加其他電路的情況下,
10、最多可以級聯(lián)成級的向量優(yōu)級中斷系 統(tǒng)。8259A有多種工作方式,能用于各種系統(tǒng)。各種工作方式的設(shè)定是在初始化 時通過軟件進(jìn)行的。 在總線控制器的控制下,8259A芯片可以處于編程狀態(tài)和 操作狀態(tài),編程狀態(tài)是CPU使用IN或OUT指令對8259A芯片進(jìn)行初始化編程 的狀態(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)0E端為高電平時,才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完
11、 成的數(shù)據(jù)。IN0-IN7 : 8條模擬量輸入通道 ADC0809對輸入模擬量要求:信號單 極性,電壓范圍是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上的一路模擬量輸入。通道選擇表如下表一所示。 表1 0809通道選擇表 C B A 選擇的通 道
12、0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 數(shù)字量輸出及控制線:11條ST為轉(zhuǎn)換啟動信號。當(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為輸出允許信號,用于控制三條輸出鎖存器想單片機輸出轉(zhuǎn)換得到的 數(shù)據(jù),0E=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)‘OE=ft出數(shù)據(jù)線呈高阻狀態(tài)。
13、D7-D0為數(shù)字 量輸出線CLK為時鐘輸入信號線,因ADC0809的內(nèi)部沒有時鐘電路,所需時鐘 信號必須由外界提供,通常頻率為500KHZ。VREF(+),VREF(-)為參考電壓輸入。 4.2功能模塊設(shè)計 圖4硬件功能圖 圖4硬件功能圖中,系統(tǒng)總體功能模塊在具體實踐中,因硬件資源的限制有 所調(diào)整,比如有些電路采用其他電路來模擬, 進(jìn)水部分有電位器來模擬,電機驅(qū) 動用直流系統(tǒng)來模擬。 其接線圖如圖5所示: DO XD7 D7 XA2 —— A0 8259 XIOR — RD XIOW WR IRQ IO Y1 CS INT XDO XD7 時
14、鐘源 EXO EXO DO RD D7 WR CS CLKO AO Al OUTO 3254 GATEl CLKl CLK2 0UT1 0UT2 GATE1 GET2 XIOR X10W I0Y1 XA2 XA3 時鐘源 SPK +5V 圖5系統(tǒng)接線圖 4.3遇到問題及解決措施 問題1:當(dāng)把所有線路按照設(shè)計要求連接好過后,發(fā)現(xiàn)芯片 8254沒有輸出 時鐘信號。 解決方法:芯片8254沒有輸出時鐘信號,這表示8254沒有起作用,原以為 是芯片壞了,換了好幾個新品牌還是一樣不起作用, 后來經(jīng)過不斷排查是由于采 用了 1
15、2V供電電壓,實際要求是5V。 問題2:當(dāng)把所有的線路按照設(shè)計要求連接好之后,發(fā)現(xiàn)電機不能運轉(zhuǎn)。 解決方法:經(jīng)檢查是連接到電機驅(qū)動電路上的接線出現(xiàn)斷路, 換根接線就把 問題解決了 五、系統(tǒng)軟件設(shè)計 5.1總體設(shè)計思想 程序首先要用偽指令定義一下。然后是 MOV DX,CADDR MOV AL,MODE OUT DX,AL MOV DX,MY8254_MODE MOV AL,36H OUT DX,AL MOV DX,MY8259_ICW1 MOV AL,1BH OUT DX,AL MOV DX,MY8259_ICW2 MOV AL,08H OUT DX,AL
16、 MOV DX,MY8259_ICW4 MOV AL,01H OUT DX,AL MOV DX,MY8259_OCW1 MOV AL,0FCH OUT DX,AL 8255、8254與8259的初始化,如: ;8255初始化 ;初始化8254工作方式 ;計數(shù)器0,方式3 ;初始化實驗系統(tǒng)中8259的 ICW1 ;邊沿觸發(fā)、單片8259、需要ICW4 ;初始化實驗系統(tǒng)中8259的 ICW2 ;初始化實驗系統(tǒng)中8259的ICW4 ;非自動結(jié)束EOI ;初始化實驗系統(tǒng)中8259的OCW1 ;打開IR0和IR1的屏蔽位 然后按照原先設(shè)計好的原理框圖的步驟設(shè)計檢測洗衣機
17、開 /停信號,如; CHECK: MOV DX,PORTB IN AL,DX TEST AL,80H JZ CHECK 還有接下來的點亮運行指示燈等程序。在設(shè)計中用到了子程序調(diào)用、循環(huán)、 測試等程序。 在編程時按照設(shè)計好的原理框圖,結(jié)合微機課程上所學(xué)的具有一定功能的程 序一一編出來,然后在計算機上進(jìn)行調(diào)試,發(fā)現(xiàn)錯誤后再進(jìn)行修改。在編程過程 中要注意程序的嵌套使用,即有些程序按照前面流程圖設(shè)計好了但在后面的程序 中然要用,所以就要注意調(diào)用。 軟件可分為10個模塊:主程序、鍵盤掃描子程序、參數(shù)設(shè)置子程序、延時子 程序、顯示子程序、自檢程序、甩干子程序、暫停子程序、蜂鳴器子程序。 系
18、統(tǒng)的總體流程圖如圖6所示: 開始 調(diào)用脫水子程 關(guān)閉脫水標(biāo)志 啟動蜂鳴器 結(jié)束 圖6 整體流程方框圖 5.2功能模塊設(shè)計 (1) 延時功能模塊設(shè)計 根據(jù)機箱上給出的芯片我們選用了 8254作為定時計數(shù)器,在延時程序中計 時,在加水過程中計量加水的量。 由于需要多次調(diào)用延時子程序,所以把他寫 成一個DALLY程序,每次調(diào)用的時候配合 CALL和RET就能往返于子程序和 主程序之間,之前把要記的數(shù)值放在 SI寄存器中,在子程序中讀取該寄存器就 可以知道要記的數(shù)是多少而不必每次都重新給計數(shù)器賦值, 減少了程序的步驟也 使得更易讀。 (2) 洗衣功能模塊設(shè)計 洗衣子程
19、序中是一個不停的在正傳反轉(zhuǎn)間循環(huán)的過程,期間每次正轉(zhuǎn)或者反 轉(zhuǎn)都調(diào)用了延時子程序,定時3S,在完成5次循環(huán)過后,洗衣過程完成。 (3) 脫水功能模塊設(shè)計 脫水子程序中只需調(diào)用上面做好的延時程序, 并在該延時之前打開或關(guān)閉相 應(yīng)的指示燈即可。然后用8086的片選信號加給0832控制電動機正轉(zhuǎn)反轉(zhuǎn),根據(jù) 公式:V0= -NVREF/256計算得到要使電動機保持不轉(zhuǎn)的時候要輸入給 80H,而 正轉(zhuǎn)則取最大值FFH,反轉(zhuǎn)取最小值00H,由于這樣得到的V0不相同,所以引 起了正傳反轉(zhuǎn)時候的速度有些差異,最后等延時子程序執(zhí)行完畢后,關(guān)閉相應(yīng)指 示燈即可完成。脫水、延時、加水等子程序后面都要加上 RE
20、T,否則將無法跳 回主程序MAIN。當(dāng)時在前幾次通電試驗的時候每次都出現(xiàn)在排水的時候加水指 示燈亮起,需要加水后才能熄滅,后檢查發(fā)現(xiàn)就是少了一個 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ù)。首
21、先打開加水指示燈,將水位信號掃描到寄存器 AL中。然后根據(jù)與設(shè)定好的數(shù)據(jù)進(jìn)行比較確定水位信號是什么,假如檢測到的 是高水位的話,跳轉(zhuǎn)到LEVEL ,否則給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)電機延時相互沖突, 導(dǎo)致步進(jìn)電 機不能正常運轉(zhuǎn)。 解決方法:經(jīng)過很長時間調(diào)試,還是不能成功,由于時間有限,所以最后只 好通過步進(jìn)電機正反轉(zhuǎn)次
22、數(shù)來計時。 問題2.報警功能實現(xiàn)后不知道如何使它停止下來。 解決辦法:在進(jìn)入報警子程序前加變量判斷,通過按鍵控制變量的取反改變, 停止報警。 六、總結(jié) 這次微機原理課程設(shè)計歷時兩個星期, 在整整兩星期的日子里,可以說得是 苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的 知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。以前在上課的時候,老師 經(jīng)常強調(diào)在寫一個程序的時候,一定要事先把程序原理方框圖化出來, 但是我開 始總覺得這樣做沒必要,很浪費時間。但是,這次課程設(shè)計完全改變了我以前的 那種錯誤的認(rèn)識,以前我接觸的那些程序都是很短、 很基礎(chǔ)的,但是在課程設(shè)計 中碰到
23、的那些需要很多代碼才能完成的任務(wù),畫程序方框圖是很有必要的。因為 通過程序方框圖,在做設(shè)計的過程中,我們每一步要做什么,每一步要完成什么 任務(wù)都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。 其次,以前對于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上 機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結(jié)果,怎么去了解每 個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。 通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的, 只有理論知識 是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論, 才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立
24、思考的能力。 在設(shè)計 的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各 種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處, 對以前所學(xué)過的知 識理解得不夠深刻,掌握得不夠牢固。 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,通過網(wǎng)絡(luò)和 與同學(xué)的討論基本上得到解決,提高了自己解決和分析問題的能力。 13 江蘇科技大學(xué) 《微機原理課程設(shè)計》 七、附錄 洗衣機程序 .**************** 根據(jù)查看端口資源修改下列符號值 ******************* I0Y1 EQU 3040H IOYO EQU 3000H ;片選
25、IOY0對應(yīng)的端口始地址 .***************************************************************** MY8255_ _A EQU I0Y0+00H*4 ;8255的A 口地址 MY8255_ _B EQU I0Y0+01H*4 ;8255的B 口地址 MY8255_ _C EQU I0Y0+02H*4 ;8255的C 口地址 MY8255_ MODE EQU I0Y0+03H*4 ;8255的控制寄存器地址 MY8254_ _C0UNT0 EQU I0Y1+00H*4 ;
26、8254計數(shù)器0端口地址 MY8254_ _C0UNT1 EQU IOY1+01H*4 ;8254計數(shù)器1端口地址 MY8254_ _C0UNT2 EQU IOY1+02H*4 ;8254計數(shù)器2端口地址 MY8254_ MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址 I0Y2 EQU 3080H ;片選IOY0對應(yīng)的端口始地址 .***************************************************************** MY8259_ICW1 EQU I0Y2+00H ;實驗
27、系統(tǒng)中 8259的ICW1端口地址 MY8259_ICW2 EQU IOY2+04H ;實驗系統(tǒng)中 8259的ICW2端口地址 MY8259_ICW3 EQU IOY2+04H ;實驗系統(tǒng)中 8259的ICW3端口地址 MY8259_ICW4 EQU IOY2+04H ;實驗系統(tǒng)中 8259的ICW4端口地址 MY8259_OCW1 址 EQU IOY2+04H ;實驗系統(tǒng)中 8259的0CW1端口地 MY8259_OCW2 址 EQU I0Y2+00H ;實驗系統(tǒng)中 8259的0CW2端口地 MY8259_OCW3 EQU I0Y2+
28、00H 址 STACK1 SEGMENT STACK ;實驗系統(tǒng)中 8259的0CW3端口地 DW 256 DUP⑺ STACK1 ENDS DATA SEGMENT DTABLE1 DB 06H,3FH,73H,77H,39H,06H,5BH,4FH,66H,80H DTABLE3 DB 10H,30H,20H,60H,40H,0C0H,80H,90H DB DTABLE 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H TIME1 DB 05H TIME2 DB 05H TI
29、ME3 DB 0FH MES DB Press any key to exit!,0AH,0DH,0AH,0DH,$ FREQ_LIST DW 371,495,495,495,624,556,495,556,624 DW 495,495,624,742,833,833,833,742,624 DW 624,495,556,495,556,624,495,416,416,371 DW 495,833,742,624,624,495,556,495,556,833 DW 742,624,624,742,833,990,742,624,624,495 DW 556,495,
30、556,624,495,416,416,371,495,0 TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 1, 3, 6, 2 DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 6, 2, 4, 4, 12 DATA ENDS CODE SEGMENT 瀕率表 ;時間表 ASSUME CS:CODE,DS:DATA
31、 START: MOV AX,DATA MOV DS,AX MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H OUT DX,AL ;計數(shù)器0,方式3 MOV DX,MY8254_COUNTO ;裝入計數(shù)初值 MOV AL,00H OUT DX,AL ;18432分頻 MOV AL,48H OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,050H OUT DX,AL ;計數(shù)器2,方式0 MOV DX,MY8254_COUNT1 ;裝入計數(shù)初值 MOV AL,
32、03H OUT DX,AL ;18432分頻 MOV AL,00H OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,0B6H OUT DX,AL ;計數(shù)器2,方式3 MOV DX,MY8254_COUNT2 ;裝入計數(shù)初值 MOV AL,00H OUT DX,AL ;18432分頻 MOV AL,05H OUT DX,AL MOV DX,MY8259_ICW1 ;初始化實驗系統(tǒng)中8259的ICW1 MOV AL,1BH OUT DX,AL ;邊沿觸發(fā)、單片8259、需要ICW4 MOV D
33、X,MY8259_ICW2 MOV AL,08H ;初始化實驗系統(tǒng)中8259的ICW2 17 江蘇科技大學(xué) 《微機原理課程設(shè)計》 18 江蘇科技大學(xué) 《微機原理課程設(shè)計》 OUT DX,AL MOV DX,MY8259_ICW4 MOV AL,01H OUT DX,AL MOV DX,MY8259_OCW1 MOV AL,0FCH OUT DX,AL MOV SI,3000H MOV [SI],00H MOV [SI+02H],05H MOV [SI+04H],01H MOV [SI+06H],01H MOV [SI+08H
34、],01H MOV [SI+0AH],02H MOV [SI+0CH],02H MOV [SI+0EH],01H MOV DX,MY8255_MODE MOV AL,81H OUT DX,AL KAISHI: MOV SI,3000H MOV DH,[SI+8] CMP DH,8 JA ZHI1 CMP DH,1 JB ZHI8 JMP JIXU ;初始化實驗系統(tǒng)中8259的ICW4 ;非自動結(jié)束EOI ;初始化實驗系統(tǒng)中8259的OCW1 ;打開IR0和IR1的屏蔽位 ;數(shù)碼管顯示1 ;數(shù)碼管顯示2 ;洗滌,甩干判斷變量 ;電機速度檔位 ;電機輸入
35、節(jié)拍倒轉(zhuǎn)判斷變量 ;電機方向控制變量 ;判斷是否進(jìn)入電機運行程序的變量 ;警報器關(guān)閉判斷變量 ;初始化8255工作方式 力式0, A 口、B 口輸出,C 口低4 位輸入 ;讀取變量首地址 ;跳轉(zhuǎn)到節(jié)拍1開始轉(zhuǎn)動 ;跳轉(zhuǎn)到節(jié)拍8開始轉(zhuǎn)動 ZHI1: MOV [SI+8],01H JMP JIXU ZHI8: MOV [SI+8],08H
36、 19 江蘇科技大學(xué) 《微機原理課程設(shè)計》 JIXU: CALL KEYSCAN CMP [SI+0EH],02H JNZ C MOV DX,MY8254_MODE MOV AL,0F6H OUT DX,AL MOV AX,0000H MOV DX,MY8254_COUNT2 OUT DX,AL MOV AL,AH OUT DX,AL C: MOV AH,1 INT 16H JZ SFRUN QUIT: MOV AX,4C00H INT 21H SFRUN: MOV SI,3000H MOV DH,[SI+0CH] CMP DH,01H
37、 JNZ JIXU MOV DH,[SI+0AH] CMP DH,01H JNZ ZIJIAN INC [SI+08H] JMP RUN KAISHI1: JMP KAISHI ZIJIAN: DEC [SI+8] RUN: MOV AL,[SI+8] MOV BX,OFFSET DTABLE3 AND AX,00FFH ;鍵盤掃描 ;初始化8254工作方式 ;計數(shù)器2,方式3 ;裝入計數(shù)初值 ;判斷是否有按鍵按下 ;無按鍵則跳回繼續(xù)循環(huán),有則退出 ;結(jié)束程序退出 ;讀取變量首地址 ;判斷變量[SI+0CH] ;不相等跳轉(zhuǎn)到JIXU ;判斷電機運行方
38、向 ;正向節(jié)拍加1 ;反向節(jié)拍減一 ;將變量與節(jié)拍表對應(yīng) 21 江蘇科技大學(xué) 《微機原理課程設(shè)計》 ADD BX,AX DEC BX MOV AL,[BX] MOV DX,MY8255_C OUT DX,AL ;PC 口輸出節(jié)拍數(shù)值 ;判斷速度檔位調(diào)用相應(yīng)的延遲時間 ;運行個節(jié)拍 DANG1: MOV DH,[SI+6] CMP DH,05H JNZ DANG2 PUSH CX MOV CX,10H DA1: CALL DALLY1 CALL DALLY1 CALL DALLY1 ;鍵盤掃描 ;跳轉(zhuǎn)到PP CALL KEYSCAN JM
39、P PP DANG2: CMP DH,01H JNZ DANG3 DA2: CALL DALLY1 CALL DALLY1 CALL KEYSCAN JMP PP DANG3: CMP DH,02H JNZ PP DA3: CALL DALLY1 CALL KEYSCAN JMP PP DANG4: CMP DH,03H JNZ KAISHI1 DA4: CALL KEYSCAN 22 江蘇科技大學(xué) 《微機原理課程設(shè)計》 PP: MOV DX,MY8259_OCW3 MOV AL,0CH OUT DX,AL IN AL,DX TEST AL,
40、80H JZ AA AND AL,03H CMP AL,00H JE IR0ISR 序 JNE IR1ISR 序 AA: JMP KAISHI DANG4: CMP DH,03H JNZ KAISHI1 DA4: CALL KEYSCAN JMP KAISHI IR0ISR: MOV SI,3000H CMP [SI+4H],02H JZ M2 DIR: CMP [SI+0AH],01H JZ DIR1 MOV [SI+0AH],01H JMP M1 ;向8259的OCW3發(fā)送查詢命令 ;讀出查詢字 ;判斷中斷是否已響應(yīng) ;沒有響應(yīng)則繼續(xù)查詢
41、;若為IR0請求,跳到IR0處理程 ;若為IR1請求,跳到IR1處理程 ;跳轉(zhuǎn)到KAISHI循環(huán) ;判斷是否是甩干模式 ;判斷是否是正向 23 江蘇科技大學(xué) 《微機原理課程設(shè)計》 # 江蘇科技大學(xué) 《微機原理課程設(shè)計》 DIR1: MOV [SI+0AH],02H CALL KEYSCAN M1: DEC TIME1 MOV AX,10D DIV TIME1 MOV AL,TIME1 MOV [SI+02H],AL CALL KEYSCAN CMP TIME1,00H JZ M JMP CTU ;洗滌圈數(shù)減1 ;是否洗滌結(jié)束
42、 ;轉(zhuǎn)入計數(shù)初值 M: MOV [SI+4H],02H ;進(jìn)入甩干模式 MOV [SI+6],02H ;速度檔位選2 M2: DEC TIME2 MOV [SI],0 MOV AL,TIME2 ;甩干計數(shù)減一 MOV [SI+02H],AL CMP [SI+02H],00H JZ FINISH JNZ EOI ;將計數(shù)值放入數(shù)碼管顯示 CTU: MOV DX,MY8254_COUNT1 ;裝入計數(shù)初值 MOV AL,00H OUT DX,AL MOV AL,03H OUT DX,AL JMP EOI ;18432分頻 EOI:
43、命令 MOV DX,MY8259_OCW2 MOV AL,20H OUT DX,AL ;向?qū)嶒炏到y(tǒng)中8259發(fā)送中斷結(jié)束 25 江蘇科技大學(xué) 《微機原理課程設(shè)計》 26 江蘇科技大學(xué) 《微機原理課程設(shè)計》 JMP KAISHI FINISH: MOV [SI+0CH],02H CALL PLAY JMP KAISHI ;關(guān)閉進(jìn)入電機程序標(biāo)志 ;調(diào)用報警程序 PLAY PROC NEAR SOUND: CMP [SI+0EH],02H JZ EOI MOV SI,OFFSET FREQ_LIST MOV DI,OFFSET T
44、IME_LIST P1: MOV DX,1CH 1.0416667M = 0FE502H MOV AX,02000H DIV WORD PTR [SI] MOV DX,MY8254_COUNT2 OUT DX,AL MOV AL,AH OUT DX,AL MOV DL,[DI] CALL DALLY3 DEC TIME3 ADD SI,2 INC DI CMP WORD PTR [SI],0 JE SOUND ;裝入頻率表起始地址 ;裝入時間表起始地址 ;輸入時鐘為1.0416667MHz, ;取出頻率值計算計數(shù)初值, 0F4240H /輸出頻率 ;裝
45、入計數(shù)初值 ;取出演奏相對時間,調(diào)用延時 子程序 ;判斷是否到曲末? PLAY ENDP 27 江蘇科技大學(xué) 《微機原理課程設(shè)計》 ;軟件延時子程序 DALLY1 PROC NEAR PUSH CX PUSH AX MOV CX,008FH D11: MOV AX,5000H D22: DEC AX JNZ D22
46、 PUSH CX PUSH AX CALL KEYSCAN POP AX POP CX LOOP D11 POP AX POP CX RET DALLY1 ENDP 28 江蘇科技大學(xué) 《微機原理課程設(shè)計》 # 江蘇科技大學(xué) 《微機原理課程設(shè)計》 KEYSCAN PROC NEAR BEGIN: CALL DIS CALL CLEAR CALLCCSCAN JNZ GETKEY1 JMP GOBACK1 GETKEY1:CALL DIS CALL DALLY CALL DALLY ;鍵盤掃描子程序 ;顯示刷新 ;清屏
47、 ;掃描按鍵 ;有鍵按下則跳置GETKEY1 ;顯示刷新 # 江蘇科技大學(xué) 《微機原理課程設(shè)計》 ;設(shè)置當(dāng)前檢測的是第幾列 ;選取一列,將 X1?X4中一個置0 ;讀Y1?丫4 ,用于判斷是哪一行按鍵 ;是否為第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)的鍵值 CALL CLEAR CALL CCSCAN JNZ GETKEY2 JM
48、P BEGIN GETKEY2:M0V CH,OFEH MOV CL,00H COLUM: MOV AL,CH MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C 閉合 IN AL,DX L1: TEST AL,01H JNZ L2 MOV AL,00H JMP KCODE BEGIN1: JMP BEGIN L2: TEST AL,02H JNZ L3 MOV AL,04H JMP KCODE L3: TEST AL,04H JNZ L4 MOV AL,08H JMP KCODE L4: TEST AL,08H J
49、NZ NEXT MOV AL,0CH ;清屏 ;再次掃描按鍵 ;有鍵按下則跳置GETKEY2 ;否則跳回開始繼續(xù)循環(huán) 29 江蘇科技大學(xué) 《微機原理課程設(shè)計》 KCODE: ADD AL,CL 鍵值 CALL PUTBUF PUSH AX KON: CALL DIS CALL CLEAR CALLCCSCAN JNZ KON POP AX NEXT: INC CL MOV AL,CH TEST AL,08H JZ BEGIN1 ROL AL,1 MOV CH,AL JMP COLUM GOBACK1: RET KEYSCAN ENDP
50、 ;將第1列的值加上當(dāng)前列數(shù),確定按 ;保存按鍵值 ;顯示刷新 ;清屏 ;掃描按鍵,判斷按鍵是否彈起 ;未彈起則繼續(xù)循環(huán)等待彈起 ;當(dāng)前檢測的列數(shù)遞增 ;檢測是否掃描到第4列 ;沒檢測到第4列則準(zhǔn)備檢測下一列 30 江蘇科技大學(xué) 《微機原理課程設(shè)計》 # 江蘇科技大學(xué) 《微機原理課程設(shè)計》 CCSCAN PROC NEAR MOV AL,00H MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DX NOT AL AND AL,0FH RET CCSCAN ENDP ;掃描
51、是否有按鍵閉合子程序 ;將4列全選通,X1?X4置0 ;讀Y1?Y4 ;取出Y1?Y4的反值 31 江蘇科技大學(xué) 《微機原理課程設(shè)計》 32 江蘇科技大學(xué) 《微機原理課程設(shè)計》 CLEAR PROC NEAR MOV DX,MY8255_B MOV AL,00H OUT DX,AL RET CLEAR ENDP ;清除數(shù)碼管顯示子程序 ;段位置0即可清除數(shù)碼管顯示 DIS PROC NEAR PUSH AX PUSH SI MOV SI,3006
52、H MOV DL,0F7H MOV AL,DL AGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL MOV AL,[SI] MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV AL,[BX] MOV DX,MY8255_B OUT DX,AL CALL DALLY DEC SI DEC SI POP DX MOV AL,DL TEST AL,01H ;顯示鍵值子程序 ;設(shè)置X1?X4,選通一個數(shù)碼管 ;取出緩沖區(qū)中存放鍵值 ;寫入數(shù)碼管A?Dp ;取下一個鍵值 ;判斷是否顯
53、示完? 33 江蘇科技大學(xué) 《微機原理課程設(shè)計》 ;顯示完,返回 ;未顯示完,跳回繼續(xù) ;保存鍵值子程序 ;是否案件0按下 ;是否案件1按下 ;打開進(jìn)入電機程序標(biāo)志 ;關(guān)閉進(jìn)入電機程序標(biāo)志 ;是否案件2按下 JZ 0UT1 ROR AL,1 MOV DL,AL JMP AGAIN OUT1: POP SI PO
54、P AX RET DIS ENDP PUTBUF PROC NEAR MOV SI,3000H CMP AL,00H JNZ MODE MDL: CMP [SI+4],01H JZ MDL1 MOV [SI+4],01H JMP LAST MDL1: MOV [SI+4],02H JMP LAST MODE: CMP AL,01H JNZ STOP CMP [SI+0CH],01H JZ MODE1 MOV [SI+0CH],01H JMP LAST CMP AL,03H MOV [SI+0EH],02H MODE1: MOV [SI+0CH],02H
55、 JMP LAST 34 江蘇科技大學(xué) 《微機原理課程設(shè)計》 STOP: CMP AL,02H JNZ GRD1 MOV [SI+0CH],02H MOV TIME1,05H MOV TIME2,05H MOV [SI+4],01H MOV [SI+6],02H GRD1: CMP AL,04H JNZ GRD2 MOV [SI+6],05H GRD2: CMP AL,05H JNZ GRD3 MOV [SI+6],01H GRD3: CMP AL,06H JNZ GRD4 MOV [SI+6],02H GRD4: CMP AL,07H JNZ
56、 LAST MOV [SI+6],03H LAST: CALL DIS CALL CLEAR CALLCCSCAN GOBACK: RET PUTBUF ENDP DALLY PROC NEAR PUSH CX ;比較暫停標(biāo)志變量 ;關(guān)閉進(jìn)入電機程序標(biāo)志 ;洗滌,甩干次數(shù)重置 ;重置洗滌模式 ;速度置2 ;是否案件4按下 ;改變對應(yīng)的速度變量的值 ;是否案件5按下 ;是否案件6按下 ;是否案件7按下 ;軟件延時子程序 ;入棧 35 江蘇科技大學(xué) 《微機原理課程設(shè)計》 36 江蘇科技大學(xué) 《微機原理課程設(shè)計》 D1: MOV CX,008FH MOV AX,00FFH D2: DEC AX JNZ D2 LOOP D1 POP CX RET ;延時子程序 DALLY ENDP DALLY3 PROC DD0: MOV CX,200H DD1: MOV AX,0FFFFH DD2: DEC AX JNZ DD2 LOOP DD1 DEC DL JNZ DD0 RET DALLY3 ENDP CODE ENDS END START 37
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 植樹問題講課
- 小小圖書館賈世喜
- 小班數(shù)學(xué):變得一樣多
- 蘇教版三年級數(shù)學(xué)上冊教學(xué)ppt課件58:解決問題的策略復(fù)習(xí)
- 小學(xué)科學(xué)六下《拓展與應(yīng)用》-公開課一等獎ppt課件
- 高中英語人教版選修七Unit-2-Robots-ppt課件
- 第九章長期負(fù)債課件
- 皮膚免疫系統(tǒng)課件
- 辦公樓施工現(xiàn)場消防安全管理要求規(guī)范課件
- freeroi在功能磁共振roi分析中的應(yīng)用
- 《永遇樂·京口北固亭懷古》用典講解課件
- 《秋天的雨》微課課件
- 護患溝通技巧-課件
- 《高等數(shù)學(xué)B》第十章___微分方程與差分方程__第6節(jié)__差分與差分方程的概念_、……課件
- 英語(人教版)九年級總復(fù)習(xí)題型訓(xùn)練補全對話(含最新原創(chuàng)題)課件