




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章 緒 論1.1 概述近年來隨著科技的飛速開展,單片機的應用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善。交通信號燈的出現,使交通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。1.2 設計目的?微機應用系統(tǒng)設計與綜合實驗實踐?課程設計是自動化專業(yè)本科生必修的一門技術根底課。通過本課程設計,讓學生對微機系統(tǒng)有一個較全面的理解,對典型數字接口電路的應用技術有一個較深入的掌握,并對應用系統(tǒng)進行
2、硬件原理和軟件編程進行分析、設計和調試,到達根本掌握簡單微型計算機應用系統(tǒng)軟硬件的設計方法,提高工程開發(fā)能力的目的。要求同學獨立完成課題,寫出課程設計說明書,畫出電路原理圖,說明工作原理,畫出電路印制板圖, 編寫設計程序及程序流程圖。希望同學們認真閱讀課程設計任務書,認真查閱資料,完成好上機調試,圓滿完本錢次課程設計。1.3 設計任務和內容設計題10:交通燈控制功能設計限2-3人設計要求:1、編程語言為C語言和匯編語言;2、硬件電路基于80 x86微機接口;3、程序功能要求:小鍵盤給定、數碼管屏幕顯示;4、具備急救車應急響應功能和時間倒計時顯示功能。實驗儀器與設備TPC-H通用微機接口實驗系統(tǒng)
3、1臺。IBM-PC微型計算機1臺。第二章 總體設計及核心器件簡介2.1總體設計 通過采用8086、8255、IO接口電路、鍵盤、LED數字燈顯示、發(fā)光二極管組成交通燈演示系統(tǒng)。利用8255與鍵盤掃描單元,編寫程序完成按鍵掃描功能,并將倒計時時間顯示在數碼管上。按鍵可以完成置數功能和各種控制功能,同時利用8086重復刷新數碼管產生一秒延時,延時一秒之后,將倒計時時間減少一秒,并利用刷新數碼管顯示出當前剩余時間,到倒計時時間為零,通過利用IO接口電路將控制信號傳送給發(fā)光二極管,使之發(fā)光或者熄滅。2.2 CPU80868086簡介 8086CPU根據它的根本性能,應包括20條地址線,16條數據線,加
4、上控制信號,電源和地線,芯片的引腳比擬多。但由于制造工藝的限制,8086CPU芯片采用了40條引腳的雙列直插式封裝。2.3 8255A8255A是Intel公司生產的可編程輸入輸出接口芯片,它具有3個8位的并I/O口,具有三種工作方式,可通過程序改變其功能,因而使用靈活,通用性強。8255有三種根本工作方式, 三種工作方式由工作方式控制字決定,方式控制字由CPU通過輸入/輸出指令來提供.三個端口中PC口被分為兩個局部,上半局部隨PA口稱為A組,下半局部隨PB口稱為B組.其中PA口可工作與方式0、1和2,而PB口只能工作在方式0和1。8255共有40個引腳,采用雙列直插式封裝。其引腳圖如圖2-4
5、所示,各引腳功能如下:8255A引腳圖如下:D0-D7:三態(tài)雙向數據線,與單片機數據總線連接,用來傳送數據信息。CS:片選信號線,低電平有效,表示芯片被選中。RD:讀出信號線,低電平有效,控制數據的讀出。WR:寫入信號線,低電平有效,控制數據的寫入。 Vcc:+5V電源。PA0-PA7:A口輸入/輸出線。PB0-PB7:B口輸入/輸出線。PC0-PC7:C口輸入/輸出線。RESET:復位信號線。A1、A0:地址線,用來選擇8255內部端口。GND:地線。2.4 鍵盤掃描與數碼顯示模塊X1X4控制4位數碼管的公共端,并連接到按鍵的一端,作為列選,確定是哪一列的按鍵按下,Y1Y4連接到按鍵的另一端
6、,作為行選,用于檢測哪一行的按鍵按下。結合行選和列選即可得出是哪一個的按鍵按下,在軟件設計上要注意消除按鍵抖動的處理以及數碼管顯示的刷新。鍵盤及數碼管顯示單元電路結構圖2.5 IO接口電路模塊IO接口電路主要是將信號傳遞給信號燈,使之點亮或者熄滅。IO接口利用三態(tài)緩沖器74LS245,鎖存器74LS374設計微機總線和外部設備的數據通道,實現微機對外部數據的讀取和對輸出數據的輸出。用開關及LED顯示單元的開關和數據燈作為輸入和輸出顯示設備,將開關的數據讀入總線或者將總線的數據傳遞到數據燈。實驗中我們可以利用開關控制交通燈的功能,但是設計中要求我們使用小鍵盤控制,因此我們主要利用IO接口電路中的
7、鎖存器74LS374將數據從總線送出。輸出接口一般用鎖存器實現,從總線送出的數據可以暫存在鎖存器中,74LS374是一種8通道上沿觸發(fā)鎖存器。其管腳結構如以下圖所示。D7:0為輸入數據線,Q7:0為輸出數據線。CLK引腳為鎖存控制信號,上升沿有效。當上升沿時,輸出數據線鎖存輸入數據線上的數據。OE引腳為鎖存器的片選信號,低電平有效。 74LS374上升沿觸發(fā)鎖存器管腳圖根本IO接口設計實驗參考接線圖第三章 軟件編程設計3.1 設計思想先通過小鍵盤設定路口通行時間,按鍵A確定。然后檢測按鈕B是否按下,按下那么進入交通燈演示功能:1南北路口的綠燈,東西路口的紅燈同時亮設定的時間。2南北路口的黃燈閃
8、爍5次,同時東西路口的紅燈繼續(xù)亮。3南北路口的紅燈,東西路口的綠燈同時亮設定的時間。4南北路口的紅燈繼續(xù)亮,同時東西路口的黃燈閃爍五次。在交通燈演示功能的同時檢測是否有按鍵按下,當按鍵B按下,表示系統(tǒng)啟動。當按鍵C按下,表示系統(tǒng)暫停。當按鍵D按下,表示系統(tǒng)重置時間。當按鍵E按下,表示系統(tǒng)進入緊急情況。當按鍵F按下,表示系統(tǒng)關閉。當系統(tǒng)啟動后,交通燈自動交替閃爍,每隔一秒就將數碼管需要顯示的數值減一,同時不停地刷新數碼管,以顯示剩余時間。當系統(tǒng)暫停時,系統(tǒng)不停的檢測是否啟動按鈕按下,否那么就繼續(xù)檢測,同時刷新數碼管,是數碼管顯示暫停時的時間,直到啟動按鈕按下,系統(tǒng)繼續(xù)按照暫停前的狀態(tài)運行,當系統(tǒng)
9、重新設置時間時。相當于程序從新開始執(zhí)行。當緊急按鈕按下,將數碼管顯示時間零,同各個路口的紅燈亮,綠燈和黃燈滅。直到檢測到啟動按鈕按下,啟動按鈕按下后,跳轉到交通燈演示的第一步。當結束按鈕按下,那么跳出程序的運行。3.2典型模塊本實驗中有三種典型的程序模塊分別為按鍵掃描、數碼管刷新數據和IO接口電路輸出數據。按鍵掃描:按鍵掃描的程序首先清屏,然后掃描按鍵,判斷是否有按鍵按下,如果沒有按鍵按下,那么不執(zhí)行掃描按鍵代碼程序。如果有按鍵按下,那么延時一定時間再次掃描按鍵,如果這時沒有按鍵按下,那么說明是按鍵抖動,不執(zhí)行掃描按鍵代碼程序。如果延時后按鍵還是按下的,那么我們需要檢測按下按鍵的代碼,首先設置
10、當前檢測的是第幾列,選取一列,同時將對應的X1X4置低電平,讀Y1Y4,用于判斷是哪一行的按鍵閉合,判斷是否為第一行,如果是第一行那么設置第一行第一列的對應鍵值,如果不是那么判斷是否為下一行。一直檢測到最后一行。如果判斷不是,那么檢測下一列,按照上述方法,從第一列檢測最后一列,直到檢測出對應的按鍵后,設置對應按鍵的鍵值。數碼管的刷新:在交通燈功能控制系統(tǒng)中,均采用了8位數碼管動態(tài)掃描顯示見圖1。它將所有數碼管的8個段線相應地并接在一起,并接到8255單元的PB口,由PB口控制字段輸出。而各位數碼管的共陽極由8255單元的PA口控制X1X4來實現8位數碼管的位輸出控制。這樣,對于一組數碼管動態(tài)掃
11、描顯示需要由兩組信號來控制:一組是字段輸出口輸出的字形代碼,用來控制顯示的字形,稱為段碼;另一組是位輸出口輸出的控制信號,用來選擇第幾位數碼管工作,稱為位碼。由于各位數碼管的段線并聯,段碼的輸出對各位數碼管來說都是相同的。因此,在同一時刻如果各位數碼管的位選線都處于選通狀態(tài)的話,8位數碼管將顯示相同的字符。假設要各位數碼管能夠顯示出與本位相應的字符,就必須采用掃描顯示方式。即在某一時刻,只讓某一位的位選線處于導通狀態(tài),而其它各位的位選線處于關閉狀態(tài)。同時,段線上輸出相應位要顯示字符的字型碼。這樣在同一時刻,只有選通的那一位顯示出字符,而其它各位那么是熄滅的,如此循環(huán)下去,就可以使各位數碼管顯示
12、出將要顯示的字符。雖然這些字符是在不同時刻出現的,而且同一時刻,只有一位顯示,其它各位熄滅,但由于數碼管具有余輝特性和人眼有視覺暫留現象,只要每位數碼管顯示間隔足夠短,給人眼的視覺印象就會是連續(xù)穩(wěn)定地顯示。IO接口輸出電路:先將IO接口電路的片選信號選通。將要傳遞的信號存放在AL存放器中,將要傳遞信號的地址存放在DX存放器中,再用OUT指令輸出。3.2 程序流程框圖 3.3 源程序 匯編語言源代碼:;*根據CHECK配置信息修改以下符號值* IOY0 EQU 0C400H ;片選IOY0對應的端口始地址 IOYO2 EQU 0C440H;* MY8255_A EQU IOY0+00H*4 ;8
13、255的A口地址 MY8255_B EQU IOY0+01H*4 ;8255的B口地址 MY8255_C EQU IOY0+02H*4 ;8255的C口地址 MY8255_MODE EQU IOY0+03H*4 ;8255的控制存放器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H L0 DB 11H L1 DB 41H L2 DB 21H L3 DB 01H L4 DB
14、14H L5 DB 12H L6 DB 10H L7 DB 0CH L8 DB 00H DATA ENDS ;鍵值表,0F對應的7段數碼管的段位值 CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0F000H ;建立緩沖區(qū),存放要顯示的鍵值 MOV AL,00H ;先初始化鍵值為0 MOV SI,AL MOV SI+1,AL MOV DI,0F001H MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口輸出,C口低4位輸入 OUT DX,AL
15、BEGIN: CALL DIS CALL CLEAR ;清屏 CALL CCSCAN ;掃描按鍵 JNZ RGETKEY1 ;有鍵按下那么跳置GETKEY1 MOV AH,1 ;判斷PC鍵盤是否有按鍵按下 INT 16H JZ BEGIN ;無按鍵那么跳回繼續(xù)循環(huán),有那么退出 QUIT: MOV AX,4C00H ;返回到DOS INT 21H RGETKEY1: CALL DALLY1 ;顯示刷新 CALL CLEAR ;清屏 CALL CCSCAN ;再次掃描按鍵 JNZ RGETKEY2 ;有鍵按下那么跳置GETKEY2 JMP BEGIN ;否那么跳回開始繼續(xù)循環(huán) RGETKEY2:
16、MOV CH,0FEH MOV CL,00H ;設置當前檢測的是第幾列 RCOLUM: MOV AL,CH ;選取一列,將X1X4中一個置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;讀Y1Y4,用于判斷是哪一行按鍵閉合 IN AL,DX RL1: TEST AL,01H ;是否為第1行 JNZ RL2 ;不是那么繼續(xù)判斷 MOV AL,00H ;設置第1行第1列的對應的鍵值 JMP RKCODE RL2: TEST AL,02H ;是否為第2行 JNZ RL3 ;不是那么繼續(xù)判斷 MOV AL,04H ;設置第2行第1列的對應的鍵值 JMP RKC
17、ODE RL3: TEST AL,04H ;是否為第3行 JNZ RL4 ;不是那么繼續(xù)判斷 MOV AL,08H ;設置第3行第1列的對應的鍵值 JMP RKCODE RL4: TEST AL,08H ;是否為第4行 JNZ RNEXT ;不是那么繼續(xù)判斷 MOV AL,0CH ;設置第4行第1列的對應的鍵值 RKCODE: ADD AL,CL ;將第1列的值加上當前列數,確定按鍵值 CMP AL,09H JG KERR1 CALL PUTBUF ;保存按鍵值 PUSH AX RKON: CALL DALLY1 ;顯示刷新 CALL CLEAR ;清屏 CALL CCSCAN ;掃描按鍵,判
18、斷按鍵是否彈起 JNZ RKON ;未彈起那么繼續(xù)循環(huán)等待彈起 POP AX RNEXT: INC CL ;當前檢測的列數遞增 MOV AL,CH TEST AL,08H ;檢測是否掃描到第4列 JZ KERR ;是那么跳回到開始處 ROL AL,1 ;沒檢測到第4列那么準備檢測下一列 MOV CH,AL JMP RCOLUM KERR: JMP BEGIN KERR1: CMP AL,0AH JZ KERR2 JMP KERR KERR2: MOV L7,0CH MOV SI,0F000H MOV AL,SI MOV BL,SI+1 SHL BL,4 ADD AL,BL MOV L8,AL
19、B: MOV AL,L0 MOV DX,IOYO2 OUT DX,AL MOV BX,0000H CALL CHANGE CALL BE CALL DALLY1 T: MOV AL,L1 MOV DX,IOYO2 OUT DX,AL MOV BL,L8 T1: CALL CJIAN CALL CHANGE CALL BE CALL DALLY2 CALL DALLY2 CALL DALLY2 CMP BX,00H JNZ T1 MOV BX,0006H T2: MOV AL,L2 MOV DX,IOYO2 OUT DX,AL CALL CJIAN CALL CHANGE CALL BE CAL
20、L DALLY1 CALL DALLY1 MOV AL,L3 MOV DX,IOYO2 OUT DX,AL CALL DALLY2 CALL DALLY2 CMP BX,0 JNZ T2 MOV AL,L4 MOV DX,IOYO2 OUT DX,AL MOV BL,L8 T3: CALL CJIAN CALL CHANGE CALL BE CALL DALLY2 CALL DALLY2 CALL DALLY2 CMP BL,00H JNZ T3 MOV BX,0006H T4: MOV AL,L5 MOV DX,IOYO2 OUT DX,AL CALL CJIAN CALL CHANGE C
21、ALL BE CALL DALLY1 CALL DALLY1 MOV AL,L6 MOV DX,IOYO2 OUT DX,AL CALL DALLY2 CALL DALLY2 CMP BX,0 JNZ T4 JMP T CHANGE PROC NEAR PUSH BX MOV AX,BX MOV SI,0F000H AND AL,0FH MOV SI,AL AND BL,0F0H SHR BL,4 MOV SI+1,BL POP BX RET CHANGE ENDP CJIAN PROC NEAR MOV AX,BX DEC AX DAS MOV BX,AX RET CJIAN ENDP DI
22、S PROC NEAR ;顯示鍵值子程序 PUSH AX PUSH BX ;以緩沖區(qū)存放的鍵值為鍵值表偏移找到鍵值并顯示 MOV SI,0F000H MOV DL,0F7H MOV AL,DL AGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;設置X1X4,選通一個數碼管 MOV AL,SI ;取出緩沖區(qū)中存放鍵值 MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV AL,BX ;將鍵值作為偏移和鍵值基地址相加得到相應的鍵值 MOV DX,MY8255_B OUT DX,AL ;寫入數碼管ADp CALL CLEAR
23、 INC SI ;取下一個鍵值 POP DX MOV AL,DL TEST AL,04H ;判斷是否顯示完? JZ OUT1 ;顯示完,返回 ROR AL,1 MOV DL,AL JMP AGAIN ;未顯示完,跳回繼續(xù) OUT1: POP BX POP AX RET DIS ENDP DALLY1 PROC NEAR ;軟件延時子程序 PUSH CX MOV CX,1000H D1: MOV AX,1000H D2: DEC AX CALL DIS JNZ D2 LOOP D1 POP CX X2: RET DALLY1 ENDP PUTBUF PROC NEAR ;保存鍵值子程序 MOV
24、SI,DI MOV SI,AL DEC DI CMP DI,0EFFFH JNZ GOBACK MOV DI,0F001H GOBACK: RET PUTBUF ENDP DALLY2 PROC NEAR ;軟件延時子程序 PUSH CX MOV CX,0FFFFH D3: MOV AX,0FFFFH D4: DEC AX CALL DIS JNZ D4 LOOP D3 POP CX RET DALLY2 ENDP CCSCAN PROC NEAR ;掃描是否有按鍵閉合子程序 PUSH AX PUSH DX MOV AL,00H MOV DX,MY8255_A ;將4列全選通,X1X4置0 O
25、UT DX,AL MOV DX,MY8255_C IN AL,DX ;讀Y1Y4 NOT AL AND AL,0FH ;取出Y1Y4的反值 POP DX POP AX RET CCSCAN ENDP BE PROC NEAR PUSH CX S: CALL DALLY1 CALL CLEAR ;顯示刷新 CALL CCSCAN ;掃描按鍵 JNZ GETKEY1 ;有鍵按下那么跳置GETKEY1 MOV AL,L7 CMP AL,0BH JZ KERRR CMP AL,0CH JZ S CMP AL,0DH JZ KERRR3 CMP AL,0EH JZ KERRR1 CMP AL,0FH J
26、Z KERRR2 JMP S GETKEY1: CALL DALLY1 ;顯示刷新 CALL CCSCAN ;再次掃描按鍵 JNZ GETKEY2 ;有鍵按下那么跳置GETKEY2 JMP S ;否那么跳回開始繼續(xù)循環(huán) GETKEY2: MOV CH,0FEH MOV CL,00H ;設置當前檢測的是第幾列 COLUM: MOV AL,CH ;選取一列,將X1X4中一個置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;讀Y1Y4,用于判斷是哪一行按鍵閉合 IN AL,DX Q1: TEST AL,01H ;是否為第1行 JNZ Q2 ;不是那么繼續(xù)判斷
27、 MOV AL,00H ;設置第1行第1列的對應的鍵值 JMP KCODE Q2: TEST AL,02H ;是否為第2行 JNZ Q3 ;不是那么繼續(xù)判斷 MOV AL,04H ;設置第2行第1列的對應的鍵值 JMP KCODE Q3: TEST AL,04H ;是否為第3行 JNZ Q4 ;不是那么繼續(xù)判斷 MOV AL,08H ;設置第3行第1列的對應的鍵值 JMP KCODE Q4: TEST AL,08H ;是否為第4行 JNZ NEXT ;不是那么繼續(xù)判斷 MOV AL,0CH ;設置第4行第1列的對應的鍵值 KCODE: ADD AL,CL CMP AL,09H JLE KERR
28、R3 MOV L7,AL ;將第1列的值加上當前列數,確定按鍵值 JMP S PUSH AX KON: CALL DALLY1 ;顯示刷新 CALL CLEAR CALL CCSCAN ;掃描按鍵,判斷按鍵是否彈起 JNZ KON ;未彈起那么繼續(xù)循環(huán)等待彈起 JMP S POP AX NEXT: INC CL ;當前檢測的列數遞增 MOV AL,CH TEST AL,08H ;檢測是否掃描到第4列 JZ KERRR ;是那么跳回到開始處 ROL AL,1 ;沒檢測到第4列那么準備檢測下一列 MOV CH,AL JMP COLUM KERRR: POP CX RET KERRR1: POP C
29、X MOV L7,0CH JMP B RET KERRR2: POP CX CALL COUT RET KERRR3: POP CX JMP START RET BE ENDP SAVE PROC NEAR MOV AL,L0 MOV DX,IOYO2 OUT DX,AL RET SAVE ENDP COUT PROC NEAR MOV AX,4C00H INT 21H RET COUT ENDP CLEAR PROC NEAR PUSH DX PUSH AX MOV DX,MY8255_B MOV AL,00H OUT DX,AL POP AX POP DX RET CLEAR ENDP D
30、ALLY PROC NEAR ;軟件延時子程序 PUSH CX MOV CX,00FFH RD1: MOV AX,00FFH RD2: DEC AX JNZ RD2 LOOP RD1 POP CX RET DALLY ENDP CODE ENDS END STARTC語言源代碼:#include #include #include #include #include #include void dis(void);void key(void);void clear(void);void ccscan(void);void putbuf(void);void getkey(void);void
31、delay(int time);void getkey1(void);void jian(void);void che(void);/*根據查看配置信息修改以下符號值*#define IOY0 0 xE400#define IOYO2 0 xE440/*#define MY8255_A IOY0 + 0 x00*4#define MY8255_B IOY0 + 0 x01*4#define MY8255_C IOY0 + 0 x02*4#define MY8255_MODE IOY0 + 0 x03*4char a = 0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0
32、x6d, 0 x7d, 0 x07, 0 x7f, 0 x6f, 0 x77, 0 x7c, 0 x39, 0 x5e, 0 x79, 0 x71;int b = 0, 0, 0, 0, 0;char c = 0 x11,0 x41,0 x21,0 x01,0 x14,0 x12,0 x10;int cc;int b_n;int n;void main() int i,j,ad;outp(MY8255_MODE, 0 x81);b_n = 1; b4=10; while(1) jian(); switch(b4) case 10:n=0;b0=0;b1=0; while(n=9) dis();
33、clear();ccscan();if (cc)dis();delay(0 x100);delay(0 x100);clear();ccscan();if (cc)getkey(); key(); b2=b0;b3=b1;b4=11; break;case 11:dis();break; case 12:while(b4=12) b0=b2; b1=b3; ad=b0+b1; outp(IOYO2,c1); while(ad) /*到計時*/ b0-; if(b0=-1) b0=9; b1-; ad=b0+b1; for(i=0;i=6000;i+) dis(); che();key(); w
34、hile(n=13)dis();jian();key(); if(n!=12)break; b0=5; b1=0; ad=b0+b1; while(ad) outp(IOYO2,c2); b0-; if(b0=-1) b0=9; b1-; ad=b0+b1; for(i=0;i=2000;i+) dis();che();key(); while(n=13)dis();jian();key(); if(n!=12)break; outp(IOYO2,c3); for(i=0;i=4000;i+) dis();che();key(); while(n=13)dis();jian();key();
35、if(n!=12)break; b0=b2; b1=b3; ad=b0+b1; outp(IOYO2,c4); while(ad) /*到計時*/ b0-; if(b0=-1) b0=9; b1-; ad=b0+b1; for(i=0;i=6000;i+) dis();che();key(); while(n=13)dis();jian();key(); if(n!=12)break; b0=5; b1=0; ad=b0+b1; while(ad) outp(IOYO2,c5); b0-; if(b0=-1) b0=9; b1-; ad=b0+b1; for(i=0;i=2000;i+) di
36、s();che();key(); while(n=13)dis();jian();key(); if(n!=12)break; outp(IOYO2,c6); for(i=0;i=4000;i+) dis();che();key(); while(n=13)dis();jian();key(); if(n!=12)break; break; case 13:dis();break; case 14:outp(IOYO2,c0); b0=0;b1=0;for(i=0;i=50;i+)dis();break; case 15:exit(0);break; default: exit(0); voi
37、d getkey(void)int i;int j = 0 xfe;for(i=0;i9)break;putbuf();return;if ( !( (inp(MY8255_C) & 0 x02) )n = i + 4;if(n9)break;putbuf();return;if ( !( (inp(MY8255_C) & 0 x04) )n = i + 8;if(n9)break;putbuf();return;if ( !( (inp(MY8255_C) & 0 x08) )n = i + 12;if(n9)break;putbuf();return;j = 1;void ccscan(v
38、oid)outp(MY8255_A, 0 x00);cc = inp(MY8255_C);cc = (cc) & 0 x0F;void dis(void)int i;int j = 0 xf7;for(i=0;i= 1;j |= 0 x80;void clear(void)outp(MY8255_B, 0 x00);void putbuf(void)bb_n = n;b_n-;if (b_n = -1)b_n = 1;dis();clear();ccscan();while (cc)dis();clear();ccscan();void key(void)if (bioskey(1) != 0
39、)exit(0);void delay(int time)int i;int j;for(i=0;i=time;i+)for(j=0;j=0 x100;j+) return;void getkey1(void)int i;int j = 0 xfe;for(i=0;i=3;i+)outp(MY8255_A, j);if ( !( (inp(MY8255_C) & 0 x01) )n = i + 0;b4=n;return;if ( !( (inp(MY8255_C) & 0 x02) )n = i + 4;b4=n;return;if ( !( (inp(MY8255_C) & 0 x04)
40、)n = i + 8; b4=n;return;if ( !( (inp(MY8255_C) & 0 x08) )n = i + 12;b4=n;return;j = 1;void jian(void) dis(); clear(); ccscan(); if (cc) dis();delay(0 x100);delay(0 x100);clear();ccscan();if (cc) getkey1(); key(); if(n=15) exit(0); void che(void)cc=0;ccscan();if(cc)jian();dis();key();if(b4=15) exit(0);第四章 設計心得與體會以及問題在課程設計的過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度二手車寄售代理服務合同
- 2025年度吊車租賃與施工現場管理服務協(xié)議
- 2025年車貸居間服務收費標準合同范本
- 建立適應性強的財務體系計劃
- 學生領導力培養(yǎng)課程計劃
- 教學工作創(chuàng)新方向計劃
- 年度戰(zhàn)略性談判的技巧分享計劃
- 市場調研與分析工作安排計劃
- 特色課程開發(fā)與實施方案計劃
- 高危作業(yè)的安全保障措施優(yōu)化計劃
- 物流托運單模板
- CNC設備具體參數
- 濕式石灰石法煙氣脫硫的工藝流程
- 7S目視化管理標準
- 酒店成本管理系統(tǒng)PICC
- 文科學術規(guī)范與學術論文寫作課件
- 人教版小學二年級體育下冊全冊教案
- 【員工關系管理研究國內外文獻綜述2800字】
- 電動機潤滑檔案
- 聯通光纜及傳輸網絡搶修應急預案
- 《發(fā)展?jié)h語(第二版)中級綜合(Ⅰ)》第7課+課件
評論
0/150
提交評論