《微機原理課程設計》簡易全自動洗衣機設計解讀
《《微機原理課程設計》簡易全自動洗衣機設計解讀》由會員分享,可在線閱讀,更多相關《《微機原理課程設計》簡易全自動洗衣機設計解讀(39頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、江蘇科技大學微機原理課程設計0或屛菖乂垮jiangsu university of science and technology微機原理課程設計姓名:學號:班級:專業(yè): 電氣工程及其自動化學院:電氣與信息工程學院江蘇科技大學2013年9月目錄一、課程設計內(nèi)容 1二、系統(tǒng)功能要求 12.1基本功能要求 12.2附件功能要求 1三、系統(tǒng)方案論證 1四、系統(tǒng)硬件設計 24.1系統(tǒng)硬件原理 24.2功能模塊設計 64.3遇到問題及解決措施 7五、系統(tǒng)軟件設計 85.1總體設計思想 85.2 功能模塊設計 105.3遇到問題及解決措施 11六、總結 11七、附錄 13江蘇科技大學微機原理課程設計簡易全自
2、動洗衣機設計一、課程設計內(nèi)容(1)利用8255A芯片,在數(shù)碼管上實時顯示洗衣機檔位和洗衣時間倒計時;(2)利用8254芯片,設置精確倒計時時間或者發(fā)送信號給蜂鳴器;(3)利用8259A芯片,設置按鍵或開關中斷控制功能;(4)利用0809芯片,模擬水位傳感器采集一個電壓信號,控制電機旋轉。二、系統(tǒng)功能要求2.1基本功能要求(1) 能夠實現(xiàn)洗衣機換擋功能,比如設置“1 當鍵” “2當鍵”等不同擋位;(2)能夠實現(xiàn)電機的正轉功能;比如設置電機正轉 3圈,反轉3圈,循環(huán)工作;(3) 能夠實現(xiàn)洗衣機按鍵控制,比如設置啟動鍵” 暫停鍵”或 停止鍵”(4) 能夠實現(xiàn)按鍵或開關控制洗衣機的暫停,比如按下暫停鍵
3、”正在旋轉的 電機停止工作,再按一下 啟動鍵”洗衣機又繼續(xù)工作;(5)能夠實現(xiàn)洗滌、甩干連續(xù)自動功能,甩干后,洗衣機會通過蜂鳴器發(fā)出報警聲音;2.2附件功能要求(1)能夠實現(xiàn)洗衣機單獨甩干功能,此時電機旋轉速度很快;(2)能夠實現(xiàn)洗衣機進水、排水或者洗滌、漂洗、甩干等不同功能使用不同顏 色的指示燈;(3)能夠實現(xiàn)洗滌、漂洗、甩干全過程自動化;(4)能夠實現(xiàn)洗衣機甩干后,發(fā)出優(yōu)美的音樂,音樂一直響直到人為關掉或者音樂響一定時間后自動關閉。(5)自己設計的其他有特色的功能。三、系統(tǒng)方案論證3.1方案一輸入設備主要有啟動按鈕、暫停按鈕、檔位選擇、排水按鈕、及脫水按鈕。輸出設備主要有電源指示燈、數(shù)碼管
4、、步進電機、蜂鳴器等。首先構思系統(tǒng)的總體結構,根據(jù)設計要求確定好系統(tǒng)大致的硬件組成及其結 構,其次根據(jù)系統(tǒng)的各個功能把軟件分成幾個不同的模塊,依次實現(xiàn)各個模塊的功能,最后把各個模塊組合起來完成整個系統(tǒng)的功能。3.2方案二根據(jù)任務的要求,選擇了 4個數(shù)碼管作為信號輸出,以狀態(tài)輸入開關作為輸 入信號,都連接至8255A芯片上。步進電動機由8255PC4-PC7口驅動,其中洗 衣過程漂洗過程排水過程的時間都由 8254提供定時信號,實現(xiàn)在預定時間狀態(tài) 的轉換。在對芯片進行初始化之后,先判斷輸入信號的狀態(tài),根據(jù)輸入狀態(tài)的不同調(diào) 用不同的子程序,鑒于定時程序在很多子程序里調(diào)用到, 多次編寫加長了程序的
5、長度,所以每次在調(diào)用之前先將計數(shù)值讀入一個寄存器中,在延時程序中讀取此 寄存器中的數(shù)值即可。當按照輸入狀態(tài)運行完之后,最后檢測到已完成的時候就啟動蜂鳴報警, 洗 衣過程完成。3.3方案比較方案一相對來說剛開始容易,但是后續(xù)工作麻煩,不容易將每個模塊有機的 整合起來,會出現(xiàn)接口沖突,而方案二在設計初就從全局出發(fā), 充分分配好各個 端口的配置及用途,避免了方案一中的沖突,所以方案二更優(yōu)越。四、系統(tǒng)硬件設計4.1系統(tǒng)硬件原理(1)8255A 芯片8255A是一個通用的可編程的并行接口芯片,內(nèi)部有 2個8位I/O 口( A、 B),兩個4位I/O 口( PC74、PC30).通過編程可設置3種工作方式
6、,可適 用于CPU與I/O設備之間的多種數(shù)據(jù)傳送方式的要求。C 口可作為數(shù)據(jù)口,可作為信號線(CPU與I/O設備之間的應答信號),可作為狀態(tài)口,可按位置位/ 復位。8255A的內(nèi)部結構如圖1所示:8255的引腳分配:(1) DOD7: 8位,雙向,三態(tài)數(shù)據(jù)線,用來與系統(tǒng)數(shù)據(jù)總線相連;(2) 端口 A、B、C: PA0PA7( A組數(shù)據(jù)信號,用來連接外設);PB0PB7 (B組數(shù)據(jù)信號,用來連接外設);PC0PC7(C組數(shù)據(jù)信號,用來連接外設或者作為控制信號)。(3) CS、RESET、WR、RD、A1、A0 (內(nèi)部 4 個端口)。(4) VCC、GND。8255A有三種工作方式,用戶可以通過編
7、程來設置。方式 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送來的讀/寫控制信號,并加以組合完成對 8254內(nèi)部操作 的控制。8254內(nèi)部包含三個獨立的結構功能完全相同的 16位可預置的遞減計數(shù) 器??刂谱旨拇嫫饔脕泶娣庞蒀PU寫入8
8、254的方式選擇控制字,以確定計數(shù)器 的操作方式。1242233774215206S254197US179161015團2 $25斗引腳圖(3) 8259 芯片8259A,可編程中斷控制器芯片。它的引腳圖如圖3所示12S227326斗2552462378259A2282192010191118121713161415圖38259A引腳圖它是可以用程序控制的中斷控制芯片。單個的8259A能管理8級 向量優(yōu)先級中斷。在不增加其他電路的情況下,最多可以級聯(lián)成級的向量優(yōu)級中斷系 統(tǒng)。8259A有多種工作方式,能用于各種系統(tǒng)。各種工作方式的設定是在初始化 時通過軟件進行的。 在總線控制器的控制下,825
9、9A芯片可以處于編程狀態(tài)和 操作狀態(tài),編程狀態(tài)是CPU使用IN或OUT指令對8259A芯片進行初始化編程 的狀態(tài)。(4) 0809芯片ADC0809是8位逐次逼近型A/D轉換器。它由一個八路模擬開關,一個地址 譯碼器,一個A/D轉換器和一個三態(tài)輸出所存器組成,多路開關可選通 8個模擬 通道,允許8路模擬量分時輸入,共用 A/D轉換器進行轉換,三態(tài)輸出用于鎖存 A/D轉換完的數(shù)據(jù),當0E端為高電平時,才可以從三態(tài)輸出鎖存器取走轉換完 成的數(shù)據(jù)。IN0-IN7 : 8條模擬量輸入通道 ADC0809對輸入模擬量要求:信號單 極性,電壓范圍是0-5V,若信號太小,必須進行放大;輸入的模擬量在轉換過程
10、 中應該保持不變,如若模擬量變化太快,則需在輸入端前加采樣保持電路。地址輸入和控制線:4條ALE為地址鎖存允許輸入線,高電平有效,當ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進行鎖存,經(jīng)譯碼后 被選中的通道模擬量通過轉換器進行轉換。A,B和C為地址輸入線,用于選通IN0-IN7上的一路模擬量輸入。通道選擇表如下表一所示。表10809通道選擇表CBA選擇的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7數(shù)字量輸出及控制線:11條ST為轉換啟動信號。當ST上跳沿時,所有內(nèi)部寄 存器清零;下跳沿時,開始進行A/D轉換;在跳
11、轉期間,ST應保持低電平,EOC 為轉換結束信號,當EOC為高電平時,表明轉換結束;否則表明正在進行A/D轉換,OE為輸出允許信號,用于控制三條輸出鎖存器想單片機輸出轉換得到的數(shù)據(jù),0E=1,輸出轉換得到的數(shù)據(jù)OE=ft出數(shù)據(jù)線呈高阻狀態(tài)。D7-D0為數(shù)字 量輸出線CLK為時鐘輸入信號線,因ADC0809的內(nèi)部沒有時鐘電路,所需時鐘 信號必須由外界提供,通常頻率為500KHZ。VREF(+),VREF(-)為參考電壓輸入。 4.2功能模塊設計圖4硬件功能圖圖4硬件功能圖中,系統(tǒng)總體功能模塊在具體實踐中,因硬件資源的限制有 所調(diào)整,比如有些電路采用其他電路來模擬, 進水部分有電位器來模擬,電機驅
12、 動用直流系統(tǒng)來模擬。其接線圖如圖5所示:DOXD7D7XA2 A08259XIOR RDXIOWWRIRQIO Y1CSINTXDOXD7時鐘源EXOEXODORDD7WRCSCLKOAOAlOUTO 3254GATElCLKlCLK20UT10UT2GATE1GET2XIORX10WI0Y1XA2XA3時鐘源SPK+5V圖5系統(tǒng)接線圖4.3遇到問題及解決措施問題1:當把所有線路按照設計要求連接好過后,發(fā)現(xiàn)芯片 8254沒有輸出 時鐘信號。解決方法:芯片8254沒有輸出時鐘信號,這表示8254沒有起作用,原以為 是芯片壞了,換了好幾個新品牌還是一樣不起作用, 后來經(jīng)過不斷排查是由于采 用了
13、12V供電電壓,實際要求是5V。問題2:當把所有的線路按照設計要求連接好之后,發(fā)現(xiàn)電機不能運轉。解決方法:經(jīng)檢查是連接到電機驅動電路上的接線出現(xiàn)斷路,換根接線就把 問題解決了五、系統(tǒng)軟件設計5.1總體設計思想程序首先要用偽指令定義一下。然后是MOV DX,CADDRMOV AL,MODEOUT DX,ALMOV DX,MY8254_MODEMOV AL,36HOUT DX,ALMOV DX,MY8259_ICW1MOV AL,1BHOUT DX,ALMOV DX,MY8259_ICW2MOV AL,08HOUT DX,ALMOV DX,MY8259_ICW4MOV AL,01HOUT DX,A
14、LMOV DX,MY8259_OCW1MOV AL,0FCHOUT DX,AL8255、8254與8259的初始化,如:;8255初始化;初始化8254工作方式;計數(shù)器0,方式3;初始化實驗系統(tǒng)中8259的 ICW1;邊沿觸發(fā)、單片8259、需要ICW4;初始化實驗系統(tǒng)中8259的 ICW2;初始化實驗系統(tǒng)中8259的ICW4;非自動結束EOI;初始化實驗系統(tǒng)中8259的OCW1;打開IR0和IR1的屏蔽位然后按照原先設計好的原理框圖的步驟設計檢測洗衣機開 /停信號,如;CHECK:MOV DX,PORTBIN AL,DXTEST AL,80HJZ CHECK還有接下來的點亮運行指示燈等程序。
15、在設計中用到了子程序調(diào)用、循環(huán)、 測試等程序。在編程時按照設計好的原理框圖,結合微機課程上所學的具有一定功能的程 序一一編出來,然后在計算機上進行調(diào)試,發(fā)現(xiàn)錯誤后再進行修改。在編程過程 中要注意程序的嵌套使用,即有些程序按照前面流程圖設計好了但在后面的程序 中然要用,所以就要注意調(diào)用。軟件可分為10個模塊:主程序、鍵盤掃描子程序、參數(shù)設置子程序、延時子 程序、顯示子程序、自檢程序、甩干子程序、暫停子程序、蜂鳴器子程序。系統(tǒng)的總體流程圖如圖6所示:開始調(diào)用脫水子程關閉脫水標志啟動蜂鳴器結束圖6整體流程方框圖5.2功能模塊設計(1)延時功能模塊設計根據(jù)機箱上給出的芯片我們選用了 8254作為定時計
16、數(shù)器,在延時程序中計 時,在加水過程中計量加水的量。由于需要多次調(diào)用延時子程序,所以把他寫成一個DALLY程序,每次調(diào)用的時候配合 CALL和RET就能往返于子程序和 主程序之間,之前把要記的數(shù)值放在 SI寄存器中,在子程序中讀取該寄存器就 可以知道要記的數(shù)是多少而不必每次都重新給計數(shù)器賦值,減少了程序的步驟也使得更易讀。(2)洗衣功能模塊設計洗衣子程序中是一個不停的在正傳反轉間循環(huán)的過程,期間每次正轉或者反 轉都調(diào)用了延時子程序,定時3S,在完成5次循環(huán)過后,洗衣過程完成。(3)脫水功能模塊設計脫水子程序中只需調(diào)用上面做好的延時程序,并在該延時之前打開或關閉相應的指示燈即可。然后用8086的
17、片選信號加給0832控制電動機正轉反轉,根據(jù) 公式:V0= -NVREF/256計算得到要使電動機保持不轉的時候要輸入給 80H,而 正轉則取最大值FFH,反轉取最小值00H,由于這樣得到的V0不相同,所以引 起了正傳反轉時候的速度有些差異,最后等延時子程序執(zhí)行完畢后,關閉相應指 示燈即可完成。脫水、延時、加水等子程序后面都要加上RET,否則將無法跳回主程序MAIN。當時在前幾次通電試驗的時候每次都出現(xiàn)在排水的時候加水指 示燈亮起,需要加水后才能熄滅,后檢查發(fā)現(xiàn)就是少了一個RET導致的,執(zhí)行完排水程序后沒返回而是接下去執(zhí)行了加水程序。(4)甩干、報警功能模塊設計甩干子程序是一個不停的在正轉的過
18、程,甩干可以分為快甩和慢甩兩種檔位,甩干子程序還可以通過按鍵直接跳過洗衣進行調(diào)用。當甩干程序運行結束后,8254會產(chǎn)生一個時鐘信號給蜂鳴器從而讓蜂鳴器報警,表示洗衣過程結束。(5)加水子程序設計加水是這個總程序中很重要的部分, 特別是如何將水位信號讀取和比較,最 終還要輸出到8253進行計數(shù)。首先打開加水指示燈,將水位信號掃描到寄存器 AL中。然后根據(jù)與設定好的數(shù)據(jù)進行比較確定水位信號是什么,假如檢測到的 是高水位的話,跳轉到LEVEL ,否則給AL置為3,高水位的時候將控制字寫給 計數(shù)器0,繼續(xù)執(zhí)行下去直到給 BL加上1,當加到與原來保存的水位信號數(shù)值 相等的時候,由PC7 口將信號傳遞給8
19、253,告之加水計數(shù)程序完成,跳出加水 程序,然后關閉加水指示燈,執(zhí)行下面的程序。5.3遇到問題及解決措施問題1.通過中斷實現(xiàn)數(shù)碼管計時顯示與步進電機延時相互沖突, 導致步進電 機不能正常運轉。解決方法:經(jīng)過很長時間調(diào)試,還是不能成功,由于時間有限,所以最后只 好通過步進電機正反轉次數(shù)來計時。問題2.報警功能實現(xiàn)后不知道如何使它停止下來。解決辦法:在進入報警子程序前加變量判斷,通過按鍵控制變量的取反改變, 停止報警。六、總結這次微機原理課程設計歷時兩個星期, 在整整兩星期的日子里,可以說得是 苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的 知識,而且學到了很多在書本上所
20、沒有學到過的知識。以前在上課的時候,老師 經(jīng)常強調(diào)在寫一個程序的時候,一定要事先把程序原理方框圖化出來, 但是我開 始總覺得這樣做沒必要,很浪費時間。但是,這次課程設計完全改變了我以前的 那種錯誤的認識,以前我接觸的那些程序都是很短、 很基礎的,但是在課程設計 中碰到的那些需要很多代碼才能完成的任務,畫程序方框圖是很有必要的。因為 通過程序方框圖,在做設計的過程中,我們每一步要做什么,每一步要完成什么 任務都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。其次,以前對于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上 機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結果,怎么去
21、了解每 個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論, 才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。 在設計 的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各 種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處, 對以前所學過的知 識理解得不夠深刻,掌握得不夠牢固。這次課程設計終于順利完成了,在設計中遇到了很多編程問題,通過網(wǎng)絡和 與同學的討論基本上得到解決,提高了自己解決和分析問題的能力。13江蘇科技大學
22、微機原理課程設計七、附錄洗衣機程序.*根據(jù)查看端口資源修改下列符號值*I0Y1EQU 3040HIOYOEQU 3000H;片選IOY0對應的端口始地址.*MY8255_AEQUI0Y0+00H*4;8255的A 口地址MY8255_BEQUI0Y0+01H*4;8255的B 口地址MY8255_CEQUI0Y0+02H*4;8255的C 口地址MY8255_MODEEQUI0Y0+03H*4;8255的控制寄存器地址MY8254_C0UNT0EQUI0Y1+00H*4;8254計數(shù)器0端口地址MY8254_C0UNT1EQUIOY1+01H*4;8254計數(shù)器1端口地址MY8254_C0UN
23、T2EQUIOY1+02H*4;8254計數(shù)器2端口地址MY8254_MODEEQUIOY1+03H*4;8254控制寄存器端口地址I0Y2EQU3080H;片選IOY0對應的端口始地址.*MY8259_ICW1EQUI0Y2+00H;實驗系統(tǒng)中8259的ICW1端口地址MY8259_ICW2EQUIOY2+04H;實驗系統(tǒng)中8259的ICW2端口地址MY8259_ICW3EQUIOY2+04H;實驗系統(tǒng)中8259的ICW3端口地址MY8259_ICW4EQUIOY2+04H;實驗系統(tǒng)中8259的ICW4端口地址MY8259_OCW1址EQUIOY2+04H;實驗系統(tǒng)中8259的0CW1端口地
24、MY8259_OCW2址EQUI0Y2+00H;實驗系統(tǒng)中8259的0CW2端口地MY8259_OCW3 EQU I0Y2+00H址STACK1 SEGMENT STACK;實驗系統(tǒng)中8259的0CW3端口地DW 256 DUPSTACK1 ENDSDATA SEGMENTDTABLE1DB06H,3FH,73H,77H,39H,06H,5BH,4FH,66H,80HDTABLE3DB10H,30H,20H,60H,40H,0C0H,80H,90HDBDTABLE 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HTI
25、ME1 DB 05HTIME2 DB 05HTIME3 DB 0FHMESDB Press any key to exit!,0AH,0DH,0AH,0DH,$FREQ_LIST DW371,495,495,495,624,556,495,556,624DW495,495,624,742,833,833,833,742,624DW624,495,556,495,556,624,495,416,416,371DW495,833,742,624,624,495,556,495,556,833DW742,624,624,742,833,990,742,624,624,495DW556,495,556
26、,624,495,416,416,371,495,0TIME_LIST DB4, 6, 2, 4,4, 6, 2, 4, 4DB6, 2, 4, 4, 12,1,3, 6,2DB4, 4, 6, 2, 4, 4, 6,2, 4, 4DB12, 4, 6, 2, 4, 4, 6,2, 4, 4DB6,2, 4,4, 12, 4,6, 2,4, 4DB6,2, 4,4,6,2, 4,4,12DATAENDSCODE SEGMENT瀕率表;時間表ASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY8254_MODE;初始化8254工作方
27、式MOV AL,36HOUT DX,AL;計數(shù)器0,方式3MOV DX,MY8254_COUNTO;裝入計數(shù)初值MOV AL,00HOUT DX,AL;18432分頻MOV AL,48HOUT DX,ALMOV DX,MY8254_MODE;初始化8254工作方式MOV AL,050HOUT DX,AL;計數(shù)器2,方式0MOV DX,MY8254_COUNT1;裝入計數(shù)初值MOV AL,03HOUT DX,AL;18432分頻MOV AL,00HOUT DX,ALMOV DX,MY8254_MODE;初始化8254工作方式MOV AL,0B6HOUT DX,AL;計數(shù)器2,方式3MOV DX,
28、MY8254_COUNT2;裝入計數(shù)初值MOV AL,00HOUT DX,AL;18432分頻MOV AL,05HOUT DX,ALMOV DX,MY8259_ICW1;初始化實驗系統(tǒng)中8259的ICW1MOV AL,1BHOUT DX,AL;邊沿觸發(fā)、單片8259、需要ICW4MOV DX,MY8259_ICW2MOV AL,08H;初始化實驗系統(tǒng)中8259的ICW217江蘇科技大學微機原理課程設計18江蘇科技大學微機原理課程設計OUT DX,ALMOV DX,MY8259_ICW4MOV AL,01HOUT DX,ALMOV DX,MY8259_OCW1MOV AL,0FCHOUT DX,
29、ALMOV SI,3000HMOV SI,00HMOV SI+02H,05HMOV SI+04H,01HMOV SI+06H,01HMOV SI+08H,01HMOV SI+0AH,02HMOV SI+0CH,02HMOV SI+0EH,01HMOV DX,MY8255_MODEMOV AL,81HOUT DX,ALKAISHI:MOV SI,3000HMOV DH,SI+8CMP DH,8JA ZHI1CMP DH,1JB ZHI8JMP JIXU;初始化實驗系統(tǒng)中8259的ICW4;非自動結束EOI;初始化實驗系統(tǒng)中8259的OCW1;打開IR0和IR1的屏蔽位;數(shù)碼管顯示1;數(shù)碼管顯示2
30、;洗滌,甩干判斷變量;電機速度檔位;電機輸入節(jié)拍倒轉判斷變量;電機方向控制變量;判斷是否進入電機運行程序的變量;警報器關閉判斷變量;初始化8255工作方式力式0, A 口、B 口輸出,C 口低4位輸入;讀取變量首地址;跳轉到節(jié)拍1開始轉動;跳轉到節(jié)拍8開始轉動ZHI1: MOV SI+8,01HJMP JIXUZHI8: MOV SI+8,08H19江蘇科技大學微機原理課程設計JIXU: CALL KEYSCANCMP SI+0EH,02HJNZ CMOV DX,MY8254_MODEMOV AL,0F6HOUT DX,ALMOV AX,0000HMOV DX,MY8254_COUNT2OUT
31、 DX,ALMOV AL,AHOUT DX,ALC:MOV AH,1INT 16HJZ SFRUNQUIT: MOV AX,4C00HINT 21HSFRUN: MOV SI,3000HMOV DH,SI+0CHCMP DH,01HJNZ JIXUMOV DH,SI+0AHCMP DH,01HJNZ ZIJIANINC SI+08HJMP RUNKAISHI1: JMP KAISHIZIJIAN: DEC SI+8RUN: MOV AL,SI+8MOV BX,OFFSET DTABLE3AND AX,00FFH;鍵盤掃描;初始化8254工作方式;計數(shù)器2,方式3;裝入計數(shù)初值;判斷是否有按鍵按
32、下;無按鍵則跳回繼續(xù)循環(huán),有則退出;結束程序退出;讀取變量首地址;判斷變量SI+0CH;不相等跳轉到JIXU;判斷電機運行方向;正向節(jié)拍加1;反向節(jié)拍減一;將變量與節(jié)拍表對應21江蘇科技大學微機原理課程設計ADD BX,AXDEC BXMOV AL,BXMOV DX,MY8255_COUT DX,AL;PC 口輸出節(jié)拍數(shù)值;判斷速度檔位調(diào)用相應的延遲時間;運行個節(jié)拍DANG1:MOV DH,SI+6CMP DH,05HJNZ DANG2PUSH CXMOV CX,10HDA1:CALL DALLY1CALL DALLY1CALL DALLY1;鍵盤掃描;跳轉到PPCALL KEYSCANJMP
33、 PPDANG2:CMP DH,01HJNZ DANG3DA2:CALL DALLY1CALL DALLY1CALL KEYSCANJMP PPDANG3:CMP DH,02HJNZ PPDA3:CALL DALLY1CALL KEYSCANJMP PPDANG4:CMP DH,03HJNZ KAISHI1DA4:CALL KEYSCAN22江蘇科技大學微機原理課程設計PP: MOV DX,MY8259_OCW3MOV AL,0CHOUT DX,ALIN AL,DXTEST AL,80HJZ AAAND AL,03HCMP AL,00HJE IR0ISR序JNE IR1ISR序AA:JMP K
34、AISHIDANG4:CMP DH,03HJNZ KAISHI1DA4:CALL KEYSCANJMP KAISHIIR0ISR: MOV SI,3000HCMP SI+4H,02HJZ M2DIR:CMP SI+0AH,01HJZ DIR1MOV SI+0AH,01HJMP M1;向8259的OCW3發(fā)送查詢命令;讀出查詢字;判斷中斷是否已響應;沒有響應則繼續(xù)查詢;若為IR0請求,跳到IR0處理程;若為IR1請求,跳到IR1處理程;跳轉到KAISHI循環(huán);判斷是否是甩干模式;判斷是否是正向23江蘇科技大學微機原理課程設計#江蘇科技大學微機原理課程設計DIR1: MOV SI+0AH,02HC
35、ALL KEYSCANM1:DEC TIME1MOV AX,10DDIV TIME1MOV AL,TIME1MOV SI+02H,ALCALL KEYSCANCMP TIME1,00HJZ MJMP CTU;洗滌圈數(shù)減1;是否洗滌結束;轉入計數(shù)初值M:MOV SI+4H,02H;進入甩干模式MOV SI+6,02H;速度檔位選2M2:DEC TIME2MOV SI,0MOV AL,TIME2;甩干計數(shù)減一MOV SI+02H,ALCMP SI+02H,00HJZ FINISHJNZ EOI;將計數(shù)值放入數(shù)碼管顯示CTU:MOV DX,MY8254_COUNT1;裝入計數(shù)初值MOV AL,00H
36、OUT DX,ALMOV AL,03HOUT DX,ALJMP EOI;18432分頻EOI:命令MOV DX,MY8259_OCW2MOV AL,20HOUT DX,AL;向實驗系統(tǒng)中8259發(fā)送中斷結束25江蘇科技大學微機原理課程設計26江蘇科技大學微機原理課程設計JMP KAISHIFINISH: MOV SI+0CH,02HCALL PLAYJMP KAISHI;關閉進入電機程序標志;調(diào)用報警程序PLAY PROC NEARSOUND:CMP SI+0EH,02HJZ EOIMOV SI,OFFSET FREQ_LISTMOV DI,OFFSET TIME_LISTP1:MOV DX,
37、1CH1.0416667M = 0FE502HMOV AX,02000HDIV WORD PTR SIMOV DX,MY8254_COUNT2OUT DX,ALMOV AL,AHOUT DX,ALMOV DL,DICALL DALLY3DEC TIME3ADD SI,2INC DICMP WORD PTR SI,0JE SOUND;裝入頻率表起始地址;裝入時間表起始地址;輸入時鐘為1.0416667MHz,;取出頻率值計算計數(shù)初值,0F4240H /輸出頻率;裝入計數(shù)初值;取出演奏相對時間,調(diào)用延時子程序;判斷是否到曲末?PLAY ENDP27江蘇科技大學微機原理課程設計;軟件延時子程序DAL
38、LY1 PROC NEARPUSH CXPUSH AXMOV CX,008FHD11:MOV AX,5000HD22:DEC AXJNZ D22PUSH CXPUSH AXCALL KEYSCANPOP AXPOP CXLOOP D11POP AXPOP CXRETDALLY1 ENDP28江蘇科技大學微機原理課程設計#江蘇科技大學微機原理課程設計KEYSCAN PROC NEAR BEGIN: CALL DISCALL CLEARCALLCCSCANJNZ GETKEY1JMP GOBACK1GETKEY1:CALL DISCALL DALLYCALL DALLY;鍵盤掃描子程序;顯示刷新;
39、清屏;掃描按鍵;有鍵按下則跳置GETKEY1;顯示刷新#江蘇科技大學微機原理課程設計;設置當前檢測的是第幾列;選取一列,將 X1X4中一個置0;讀Y1丫4 ,用于判斷是哪一行按鍵;是否為第1行;不是則繼續(xù)判斷;設置第1行第1列的對應的鍵值;是否為第2行;不是則繼續(xù)判斷;設置第2行第1列的對應的鍵值;是否為第3行;不是則繼續(xù)判斷;設置第3行第1列的對應的鍵值;是否為第4行;不是則繼續(xù)判斷;設置第4行第1列的對應的鍵值CALL CLEARCALL CCSCANJNZ GETKEY2JMP BEGINGETKEY2:M0V CH,OFEHMOV CL,00HCOLUM: MOV AL,CHMOV D
40、X,MY8255_AOUT DX,ALMOV DX,MY8255_C閉合IN AL,DXL1:TEST AL,01HJNZ L2MOV AL,00HJMP KCODEBEGIN1:JMP BEGINL2:TEST AL,02HJNZ L3MOV AL,04HJMP KCODEL3:TEST AL,04HJNZ L4MOV AL,08HJMP KCODEL4:TEST AL,08HJNZ NEXTMOV AL,0CH;清屏;再次掃描按鍵;有鍵按下則跳置GETKEY2;否則跳回開始繼續(xù)循環(huán)29江蘇科技大學微機原理課程設計KCODE: ADD AL,CL 鍵值CALL PUTBUFPUSH AXKO
41、N:CALL DISCALL CLEARCALLCCSCANJNZ KONPOP AXNEXT:INC CLMOV AL,CHTEST AL,08HJZ BEGIN1ROL AL,1MOV CH,ALJMP COLUMGOBACK1: RETKEYSCAN ENDP;將第1列的值加上當前列數(shù),確定按;保存按鍵值;顯示刷新;清屏;掃描按鍵,判斷按鍵是否彈起;未彈起則繼續(xù)循環(huán)等待彈起;當前檢測的列數(shù)遞增;檢測是否掃描到第4列;沒檢測到第4列則準備檢測下一列30江蘇科技大學微機原理課程設計#江蘇科技大學微機原理課程設計CCSCAN PROC NEARMOV AL,00HMOV DX,MY8255_A
42、OUT DX,ALMOV DX,MY8255_CIN AL,DXNOT ALAND AL,0FHRETCCSCAN ENDP;掃描是否有按鍵閉合子程序;將4列全選通,X1X4置0;讀Y1Y4;取出Y1Y4的反值31江蘇科技大學微機原理課程設計32江蘇科技大學微機原理課程設計CLEAR PROC NEARMOV DX,MY8255_BMOV AL,00HOUT DX,ALRETCLEAR ENDP;清除數(shù)碼管顯示子程序;段位置0即可清除數(shù)碼管顯示DIS PROC NEARPUSH AXPUSH SIMOV SI,3006HMOV DL,0F7HMOV AL,DLAGAIN:PUSH DXMOV
43、DX,MY8255_AOUT DX,ALMOV AL,SIMOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,BXMOV DX,MY8255_BOUT DX,ALCALL DALLYDEC SIDEC SIPOP DXMOV AL,DLTEST AL,01H;顯示鍵值子程序;設置X1X4,選通一個數(shù)碼管;取出緩沖區(qū)中存放鍵值;寫入數(shù)碼管ADp;取下一個鍵值;判斷是否顯示完?33江蘇科技大學微機原理課程設計;顯示完,返回;未顯示完,跳回繼續(xù);保存鍵值子程序;是否案件0按下;是否案件1按下;打開進入電機程序標志;關閉進入電機程序標志;是否案件2按下JZ
44、0UT1ROR AL,1MOV DL,ALJMP AGAINOUT1:POP SIPOP AXRETDIS ENDPPUTBUF PROC NEARMOV SI,3000HCMP AL,00HJNZ MODEMDL: CMP SI+4,01HJZ MDL1MOV SI+4,01HJMP LASTMDL1: MOV SI+4,02HJMP LASTMODE: CMP AL,01HJNZ STOPCMP SI+0CH,01HJZ MODE1MOV SI+0CH,01HJMP LASTCMP AL,03HMOV SI+0EH,02HMODE1:MOV SI+0CH,02HJMP LAST34江蘇科技
45、大學微機原理課程設計STOP: CMP AL,02HJNZ GRD1MOV SI+0CH,02HMOV TIME1,05HMOV TIME2,05HMOV SI+4,01HMOV SI+6,02HGRD1: CMP AL,04HJNZ GRD2MOV SI+6,05HGRD2: CMP AL,05HJNZ GRD3MOV SI+6,01HGRD3: CMP AL,06HJNZ GRD4MOV SI+6,02HGRD4: CMP AL,07HJNZ LASTMOV SI+6,03HLAST: CALL DISCALL CLEARCALLCCSCANGOBACK: RETPUTBUF ENDPDA
46、LLY PROC NEARPUSH CX;比較暫停標志變量;關閉進入電機程序標志;洗滌,甩干次數(shù)重置;重置洗滌模式;速度置2;是否案件4按下;改變對應的速度變量的值;是否案件5按下;是否案件6按下;是否案件7按下;軟件延時子程序;入棧35江蘇科技大學微機原理課程設計36江蘇科技大學微機原理課程設計D1:MOV CX,008FHMOV AX,00FFHD2:DEC AXJNZ D2LOOP D1POP CXRET;延時子程序DALLY ENDPDALLY3 PROCDD0:MOV CX,200HDD1:MOV AX,0FFFFHDD2:DEC AXJNZ DD2LOOP DD1DEC DLJNZ DD0RETDALLY3 ENDPCODE ENDSEND START37
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。