第8章人機(jī)接口_第1頁
第8章人機(jī)接口_第2頁
第8章人機(jī)接口_第3頁
第8章人機(jī)接口_第4頁
第8章人機(jī)接口_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

“單片機(jī)與控制技術(shù)”

多媒體課程課件武漢工程大學(xué)電氣信息學(xué)院自動(dòng)化研究所楊寧教授主

第8章人—機(jī)接口8.1鍵盤接口方法8.1.1非編碼鍵盤鍵盤是由若干個(gè)按鍵組成的開關(guān)矩陣,它是單片機(jī)最簡單的信息輸入裝置,操作員通過鍵盤向單片機(jī)系統(tǒng)輸入數(shù)據(jù)或命令,實(shí)現(xiàn)簡單的人-機(jī)通信,按鍵是以開關(guān)的狀態(tài)來設(shè)置控制功能和輸入數(shù)據(jù)。若鍵盤上閉合鍵的識別是由專用硬件實(shí)現(xiàn)的,稱為編碼鍵盤;若靠軟件實(shí)現(xiàn)的便為非編碼鍵盤。非編碼鍵盤是由一些按鍵排列成的一個(gè)行、列矩陣。按鍵的作用只是簡單地實(shí)現(xiàn)開關(guān)的接通或斷開,但必須有一套相應(yīng)的程序與之配合,來解決按鍵的識別,防止抖動(dòng)以及鍵值的產(chǎn)生等工作。因此,鍵盤接口電路和軟件程序必須解決以下一些問題。(1)檢查是否有鍵按下。(2)若有鍵按下,判斷是哪一個(gè)鍵并確定其鍵號或鍵值。(3)去抖動(dòng)。目前,按鍵是利用機(jī)械觸點(diǎn),一個(gè)電壓信號通過機(jī)械觸點(diǎn)的閉合、斷開過程。波形如圖8.1.1所示。(4)處理多鍵同時(shí)按下。對于同時(shí)有兩個(gè)以上的鍵被按下的情況,有三種處理方法:第一,“雙鍵同時(shí)按下”。第二,“N鍵鎖定”。(5)鍵輸入軟件處理。圖8.1.2是單片機(jī)鍵輸入處理流程圖。圖8.1.1按鍵閉合及斷開時(shí)的電壓抖動(dòng)圖8.1.2單片機(jī)鍵輸入處理流程圖在圖8.1.3中;用P1口8根I/O線連接8個(gè)按鍵。圖8.1.3中鍵值輸入采用查詢方式。不包括延時(shí)去抖動(dòng)程序。只包括按鍵查詢、鍵功能轉(zhuǎn)移和8個(gè)鍵號處理程序入口等三部分。程序清單如下:START:MOVA,#0FFH;置P1為輸入狀態(tài),讀引腳MOVP1,A;P1口鎖存器寫1,讀引腳有效MOVA,P1;輸入按鍵狀態(tài)供查詢用JNBACC.0,P10;0號鍵按下轉(zhuǎn)JNBACC.1,P11;1號鍵按下轉(zhuǎn)JNBACC.2,P12;2號鍵按下轉(zhuǎn)JNBACC.3,P13;3號鍵按下轉(zhuǎn)JNBACC.4,P14;4號鍵按下轉(zhuǎn)JNBACC.5,P15;5號鍵按下轉(zhuǎn)JNBACC.6,P16;6號鍵按下轉(zhuǎn)JNBACC.7,P17;7號鍵按下轉(zhuǎn)JMPSTART;返回接著查詢P10:LJMPPORT0;轉(zhuǎn)0~7號鍵處理程序入口P11:LJMPPORT1;…P17:LJMPPORT7;以下是各功能鍵處理程序結(jié)構(gòu):PORT0:…;0號鍵處理程序…LJMPSTART;從0號鍵程序執(zhí)行完返回PORT1:…;1號鍵處理程序…LJMPSTART;返回…PORT7:…;7號鍵處理和程序…LJMPSTART;返回2.矩陣式連接非編碼鍵盤矩陣式又稱為行列式鍵盤。(1)矩陣式鍵盤工作原理4行×4列鍵盤工作原理如圖8.1.4所示。圖8.1.44×4簡單鍵盤結(jié)構(gòu)列線Y行線X01111011→100000100=84HCPU操作時(shí),先輸出行有效信號,再輸入列信號,經(jīng)過拼裝、求反得到鍵值,由于這種對應(yīng)是唯一的,所以可用來識別鍵盤上所有的鍵,根據(jù)上述關(guān)系可求出其它鍵的鍵值如下:鍵盤上的字符0123456789ABCDEF鍵字81H82H42H22H84H44H24H88H48H28H18H14H12H11H21H41H

(2)矩陣式非編碼鍵盤接口及程序設(shè)計(jì)鍵盤接口如圖8.1.5所示。設(shè)A口地址0101H,C口地址0103H。圖8.1.5用8155作矩陣式非編碼鍵盤接口電路

1.子程序鍵盤掃描程序中要調(diào)用兩個(gè)子程序:DIRLED顯示器顯示子程序(程序略)。該程序具有延時(shí)功能,其延時(shí)時(shí)間為6ms。KS1判斷子程序。該程序判斷是否有鍵閉合。程序如下:KS1: MOV DPTR, #0101H;MOV A, #00H;A口送00HMOVX @DPTR, A;INC DPTR;INC DPTR;建立C口地址MOVX A, @DPTR;讀C口CPL A,;A取反,無鍵按下則全0ANL A, #0FH;屏蔽A高半字節(jié)RET執(zhí)行KS1判斷子程序的結(jié)果是:有鍵閉合則(A)≠0,無鍵閉合則(A)=0。2.鍵盤掃描程序KEY1: ACALL KS1 ;檢查有鍵閉合否JNZ LK1 ;A非0則轉(zhuǎn)移NI: ACALL DIR ;顯示一次(延時(shí)6ms)AJMP KEY1 LK1: ACALL DIR ;有鍵閉合二次延時(shí)ACALL DIR ;共12ms去抖動(dòng)ACALL KS1 ;再檢查有鍵閉合否JNZ LK2 LK2ACALL DIR AJMP KEY1 ;無鍵閉合,延時(shí)6ms后轉(zhuǎn)KEY1LK2: MOV R2, #0FEH ;掃描初值送R2MOV R4,#00H;掃描行號送R4LK4: MOV DPTR,#0101H;設(shè)A口地址MOV A,R2MOVX @DPTR,A;掃描初值送A口INC DPTRINC DPTR ;指向C口MOVX A,@DPTR;讀C口JB ACC.0,LONE;ACC.0=1,第1列無鍵閉合,轉(zhuǎn)LONEMOV A,#00H ;裝第1列列值A(chǔ)JMP LKPLONE:JB ACC.1,LTWO;ACC.1=1,第2列無鍵閉合,轉(zhuǎn)LTWOMOV A,#08H ;裝第2列列值A(chǔ)JMP LKPLTWO:JB ACC.2,LTHR;ACC.2=1,第3列無鍵閉合,轉(zhuǎn)LTHRMOV A,#10H ;裝第3列列值A(chǔ)JMP LKPLTHR:JB ACC.3,NEXT;ACC.3=1,第4列無鍵閉合,轉(zhuǎn)NEXTMOV A,#18H ;裝第4列列值LKP:ADD A,R4 ;計(jì)算鍵值PUSH A ;保護(hù)鍵值LK3:ACALL DIR ;延時(shí)6msACALL KS1 ;查鍵是否繼續(xù)閉合,若閉合再延時(shí)JNZ LK3 ;若鍵起,鍵值送APOP ARETNEXT: INC R4 ;掃描行號加1MOV A,R2JNB ACC.7,KND;第7位為0,已掃完最高列,轉(zhuǎn)KNDRL A ;循環(huán)左移1位MOV R2,AAJMP LK4 ;掃描下一行KND: AJMP KEY1 ;掃描完畢,開始新的一次掃描8.1.2編碼鍵盤表8.1.1具有優(yōu)先級的8位編碼器CD4532BD真值表狀輸輸入編碼輸出EinI7I6I5I4I3I2I1I0GSO2O1O0Eout0××××××××00000100000000000011×××××××1100001××××××10100101×××××100101001××××1000101101×××10000110001××100000110101×10000001110011000000011110圖8.1.6是一種采用兩片CD4532B構(gòu)成的16個(gè)按鍵的

為了消除鍵盤按下時(shí)產(chǎn)生的抖動(dòng)干擾,該接口電路還設(shè)置了單穩(wěn)態(tài)電路(B1、B2、R2和C2)與延時(shí)電路(A4、R3和C1),電路中E、F、G和H這四點(diǎn)的波形如圖8.1.7所示。圖8.1.7消抖電路波形圖8.2數(shù)碼顯示方法8.2.1發(fā)光二極管LED顯示1.7段LED顯示器結(jié)構(gòu)與原理圖8.2.17段LED顯示器件2.LED顯示器兩種顯示方式點(diǎn)亮LED顯示器有兩種方式:靜態(tài)顯示和動(dòng)態(tài)顯示。下面以共陰極接法為例說明。表8.2.1LED段選碼和顯示字符之間關(guān)系顯示字符共陰極段選碼共陽極段選碼顯示字符共陰極段選碼共陽極段選碼03FHC0HA77H88H106HF9HB7CH83H25BHA4HC39HC6H34FHB0HD5EHA1H466H99HE79H86H56DH92HF71H8EH67DH82HP73H82H707HF8H·80H7FH87FH80H=·C8H37H96FH90H“全滅”00HFFH

(1)LED靜態(tài)顯示方式所謂靜態(tài)顯示就是將N位共陰極LED顯示器的陰極連在一起接地,每一位LED的8位段選線與一個(gè)8位并行口相連,當(dāng)顯示某一個(gè)字符時(shí),相應(yīng)的發(fā)光二極管就恒定地導(dǎo)通或截止。一個(gè)4位靜態(tài)顯示電路如圖8.2.2所示。圖8.2.24位靜態(tài)LED顯示電路

(2)LED動(dòng)態(tài)顯示方式所謂動(dòng)態(tài)顯示就是用掃描方式一位一位地輪流點(diǎn)亮LED顯示器的各個(gè)位。圖8.2.3是一個(gè)8位動(dòng)態(tài)顯示原理圖。按圖8.2.3從左向右的順序輪流顯示8位LED的位選碼為左1→7FH→BFH→DFH→EFH→F7H→FBH→FDH→FEH→循環(huán)圖8.2.38位LED動(dòng)態(tài)顯示原理圖用8031右移循環(huán)指令可實(shí)現(xiàn):MOVA,#7FH;點(diǎn)亮左1LED的位選碼LOOP:MOVX@DPTR,A;從I/O(2)口輸出位選碼RRA;右移一位,指向下一個(gè)LED位LCALLDELAY;調(diào)延時(shí)3ms子程序LJMPLOOP;返回顯示下一位LED3.用硬件譯碼的8位靜態(tài)LED顯示接口電路(1)MC14495使用功能介紹該芯片為16條引腳。內(nèi)部結(jié)構(gòu)如圖8.2.4所示。由圖8.2.4可見:4位鎖存器對A、B、C和D端輸入的BCD碼進(jìn)行鎖存。由選通線LE控制鎖存器,當(dāng)LE=0時(shí),允許輸入數(shù)據(jù),在LE=1時(shí),鎖存輸入數(shù)據(jù)。輸入譯碼電路將輸入的BCD碼:0000~1001、1010~1111譯成7段a、b、c、d、e、f、g輸出,0~9、A~F等16個(gè)字符。電路特點(diǎn)是用字母A、B、C、D、E、F、來顯示對應(yīng)的十進(jìn)制數(shù)10、11、12、13、14、15。引腳h+i為輸入數(shù)據(jù)值指示端:當(dāng)輸入值>10時(shí)h+i=1;輸入數(shù)值<10時(shí),h+i=0。當(dāng)輸入ABCD=1111(15)時(shí),VCR=0。驅(qū)動(dòng)器輸出10mA電流,并有內(nèi)部輸出限流電阻,可直接與顯示器相連接,故LED不須外加限流電阻。MC14495輸入、輸出及顯示字符關(guān)系由表4.2.2所示。圖8.2.4MC14495BCD-7段16鎖存譯碼驅(qū)動(dòng)器

(2)MC14495與8031單片機(jī)和顯示器接口使用8片MC14495和8位7段LED顯示器與8031單片機(jī)接口電路如圖8.2.5。

由圖8.2.5可見:8個(gè)7段LED采用共陰極接法。用P1口的低4位輸出BCD待顯示的數(shù)字到A、B、C、D公共輸入端。由P1口高4位P1.4~P1.7控制74LS138譯碼器的輸出Y0~Y7分別決定MC14495哪一個(gè)輸入鎖存器LE有效。這樣由P1口一次輸出8位代碼即可完成一位LED靜態(tài)顯示圖8.2.5使用MC14495的8位靜態(tài)LED顯示接口表8.2.2MC14495輸入、輸出及顯示字符表輸入狀態(tài)輸出段選碼引腳顯示字符DCBAh+igfedcba0000001111110000100000110100100101101120011010011113010001101101401010111110150110000001116011101111111710000110111181001011111009101011110111A101111111100B110010111001C110111011110D111011111001E111111110001F若使1#LED顯示0字符,則P1口輸出10000000B=80H,用程序?qū)崿F(xiàn):MOVA,#80H;選中1#LED,顯示0字符MOVP1,A;輸出,Y0=0,ABCD=0000其它位的選擇和顯示0~F字符可根據(jù)需要按上述規(guī)律編寫。

4.用軟件譯碼的8位動(dòng)態(tài)LED顯示接口電路(1)軟件譯碼的動(dòng)態(tài)顯示硬件接口設(shè)計(jì)8位7段LED顯示器需要兩個(gè)8位并行輸出口,一個(gè)輸出段選碼,另一個(gè)輸出8位位選碼。用8031擴(kuò)展一片8155I/O接口可滿足要求,用PB口輸出段選碼,PA口由動(dòng)態(tài)掃描方式輸出位選碼,用7407作為驅(qū)動(dòng)器,實(shí)現(xiàn)上述功能的硬件接口電路如圖8.2.6所示。圖8.2.6通過8155擴(kuò)展I/O口控制的8位LED動(dòng)態(tài)顯示接口電路

(2)8位動(dòng)態(tài)LED顯示程序設(shè)計(jì)動(dòng)態(tài)顯示程序設(shè)計(jì)要點(diǎn)有三方面:1.8155初始化2.代碼轉(zhuǎn)換3.碼的形成。如圖8.2.7所示。圖8.2.7LED數(shù)字顯示緩沖區(qū)

圖8.2.88位動(dòng)態(tài)LED顯示子程序流程圖根據(jù)圖8.2.8編寫的程序清單如下:DIS:MOVA,#03H;8155命令字PA、PB口基本輸出MOVDPTR,#7F00H;8155I/O命令口地址MOVX@DPTR,A;寫入8155方式命令字MOVR0,#10H;送片內(nèi)顯示緩沖區(qū)RAM首地址MOVR3,#7FH;位選碼,最左一位先亮MOVA,R3;暫存于A中LD0:MOVDPTR,#7F01H;指向PA口地址MOVX@DPTR,A;從PA口輸出位選碼MOVA,@R0;取待顯示數(shù)據(jù)送AMOVDPTR,#TABLE;指向換碼表首地址MOVCA,@A+DPTR;取出對應(yīng)段選碼MOVDPTR,#7F02H;指向PB口地址MOVX@DPTR,A;從PB口輸出段選碼ACALLDL1;調(diào)用延時(shí)1ms子程序MOVA,R3;JNBACC.0,LD1;判斷8位LED顯示完轉(zhuǎn)(Acc.0=0)RRA;未顯示完右移一位,變成下一位位選碼MOVR3,A;暫存INCR0;指向下一個(gè)RAM顯示地址LJMPLD0;轉(zhuǎn)回,顯示下一個(gè)數(shù)碼LD1:RET;以下是待顯示數(shù)據(jù)對應(yīng)的段選碼換碼表:TABLE:DB3FH;對應(yīng)字符0DB06H;對應(yīng)字符1DB5BH;對應(yīng)字符2DB4FH;對應(yīng)字符3DB66H;對應(yīng)字符4DB6DH;對應(yīng)字符5DB7DH;對應(yīng)字符6DB07H;對應(yīng)字符7DB7FH;對應(yīng)字符8DB6FH;對應(yīng)字符9DB77H;對應(yīng)字符ADB7CH;對應(yīng)字符BDB39H;對應(yīng)字符CDB5EH;對應(yīng)字符DDB79H;對應(yīng)字符EDB71H;對應(yīng)字符F以下是軟件延時(shí)1ms子程序(相對于8031為6MHz時(shí)鐘):DL1:MOVR7,#64H;DLAY:NOP;2usNOP;2usNOP;2usDJNZR7,DLAY;4usRET述程序設(shè)計(jì)成子程序,一次只能從左向右顯示一次。為了使顯示字符穩(wěn)定下來,必須反復(fù)調(diào)用該程序。8.2.2液晶顯示器LCD顯示1.LCD的基本結(jié)構(gòu)及工作原理液晶顯示器的結(jié)構(gòu)如圖8.2.9所示圖8.2.9液晶顯示器基本結(jié)構(gòu)2.LCD的驅(qū)動(dòng)方式圖8.2.10LCD交流驅(qū)動(dòng)原理圖(a)驅(qū)動(dòng)電路(b)驅(qū)動(dòng)波形(c)真值表圖8.2.11七段液晶顯示器電極配置及譯碼驅(qū)動(dòng)電路表8.2.3七段LCD譯碼及數(shù)字顯示DCBAabcdefg顯示字符000011111100000101100001001011011012001111010013010001100114010110110115011010111116011111100007100011111118100111110119

設(shè)8031片內(nèi)RAM2OH――23H四個(gè)單元為顯示緩沖區(qū),每個(gè)顯示緩沖區(qū)內(nèi)為4位分離的BCD碼,其顯示子程序如下:LDIR:MOVR0,#20H;顯示緩沖區(qū)首址送R0MOVR3,#00H;位選碼送R3MOVR4,#04H;位數(shù)送R4LOOP:MOVA,R3;位選碼送ASWAPA;位選碼置入高四位MOVR2,A;保存位選碼MOVA,@R0;取顯示碼ORLA,R2;位選碼與BCD碼組合ORLA,#80H;ACC。7置1MOVP1,A;輸出組合碼ANLP1,#7FH;清P1。7位ORLP1,#80H;P1。7再置1INCR3;指向下一位顯示數(shù)INCR0;指向下一位顯示緩沖單元DJNZR4,LOOP;四位未顯示完返回RET圖8.2.12給出了4位液晶顯示電路接口圖。圖8.2.12四位LCD靜態(tài)顯示電路8.3鍵盤顯示專用接口8.3.1串行口硬件譯碼鍵盤顯示器接口MOS-LED譯碼驅(qū)動(dòng)器MC148.3.1所示圖8.3.1MC14499管腳配置圖8.3.3串行硬件譯碼顯示、鍵盤接口D:串行數(shù)據(jù)輸入端;a,b,c,d,e,f,g:七段顯示譯碼輸出;Ⅰ,Ⅱ,Ⅲ,Ⅳ:字位選擇端,用來產(chǎn)生LED選通信號;OSC:振蕩器外接電容端,外接電容使片內(nèi)振蕩器產(chǎn)生200~800HZ掃描信號以防止LED顯示器閃爍;CLK:時(shí)鐘輸入端,用以提供串行接收的控制時(shí)鐘,標(biāo)準(zhǔn)時(shí)鐘頻率為250KHZ;EN:使能端,EN=0時(shí),MC14499允許接收輸入;EN=1時(shí),片內(nèi)的位移寄存器將數(shù)據(jù)送入鎖存器中鎖存。設(shè)要顯示數(shù)據(jù)的BCD碼按千、百、十、個(gè)位次序依次存放在@R0、@R0+1尋址的高低8位中。程序清單如下:顯示子程序:DIS:MOVSCON,;設(shè)置串行口工作方式0MOVR0,#AD;待顯示字節(jié)地址(千位百位)MOVR2,#02H;待顯示字節(jié)數(shù)CLRP1.7

;啟動(dòng)MC1449,EN=0LOOP:MOVA,@R0MOVSBUF,A;發(fā)送一個(gè)顯示W(wǎng)AIT1:JNBTI,WAIT1;未完等待CLRTI

;清標(biāo)志INCR0

;修改地址DJNZR2,LOOP;發(fā)送下一個(gè)字節(jié)SETBP1.7

;關(guān)閉MC1449,EN=1鍵盤掃描子程序KEY:MOVA,#00H;送全掃描字MOVSBUF,ALOOP1:JNBTI,LOOP1;未送完等待CLRTI

;送完清標(biāo)志KEY1:JBP1.0,KEY1

;等待鍵按下ACALLTIME;去抖延時(shí)JBP1.0,KEY1;是抖動(dòng)返回MOVR7,#08H;置列線數(shù)MOVR6,#0FEH;置列掃描字MOVR4,#00H;置鍵初值MOVA,R6;KEY2:MOVSBUF,A;LOOP2:JNBTI,LOOP2;未完等待CLRTI;送完清標(biāo)志JNBP1.0,KEY3;該列鍵按下,轉(zhuǎn)該鍵處理MOVA,R6;該列無鍵按下,轉(zhuǎn)下列掃描RLAMOVR6,AINCR4;鍵號加1DJNZR7,KEY2;8列未掃描完,繼續(xù)ACALLDIS;8列掃完,調(diào)用一次顯示AJMPKEY;未查到,重新鍵掃描KEY3:MOVA,#00H;再掃描MOVSBUF,ALOOP3:JNBTI,LOOP3CLRTILOOP4:JNBP1.0,LOOP4;等待鍵釋放RETTIME:MOVR7,#0AH;返回結(jié)束,出口狀態(tài)R4的內(nèi)容為鍵值TM1:MOVR6,#0FFH;延時(shí)10ms子程序TM0:DJNZR7,TM0DJNZR7,TM1RET8.3.28279可編程鍵盤/顯示器通用接口8279主要特性如下:(1)能同時(shí)執(zhí)行鍵盤與顯示器的管理操作。(2)掃描式鍵盤工作方式,可設(shè)置8×8=64個(gè)按鍵。(3)能自動(dòng)消除按鍵去抖動(dòng)及多個(gè)鍵同時(shí)按下保護(hù)。(4)可與8位或16位LED顯示器連接。(5)由鍵盤輸入產(chǎn)生中斷信號,可向CPU申請中斷。(6)和8位或16位單片機(jī)接線簡單、容易。1.8279片內(nèi)結(jié)構(gòu)和工作原理8279片內(nèi)結(jié)構(gòu)如圖8.3.4所示。各部分工作原理如下:(1)數(shù)據(jù)緩沖器和I/O控制器I/O控制器實(shí)現(xiàn)讀、寫、片選和信息類型的控制。A0用以區(qū)分信息特性。當(dāng)A0=1時(shí),CPU寫入8279的信息為命令字,讀出的為狀態(tài)字;當(dāng)A0=0時(shí),CPU對8279寫入或讀出的均為數(shù)據(jù)。(2)定時(shí)與控制寄存器及定時(shí)與控制定時(shí)與控制寄存器用來寄存鍵盤及顯示器的工作方式、鎖存操作命令字,通過譯碼產(chǎn)生相應(yīng)的控制信號,對8279的各個(gè)部件完成一定的控制功能。圖8.3.48279的片內(nèi)結(jié)構(gòu)(3)掃描計(jì)數(shù)器.一種為編碼方式另一種是譯碼方式(4)鍵輸入控制回復(fù)緩沖器和去抖動(dòng)控制。(5)FIFORAM(6)顯示RAM2.8279引腳功能8279采用40條引腳。分三部分:連接鍵盤;連接顯示器;連接CPU。引腳功能如圖8.3.5所示。圖8.3.58279引腳邏輯功能(1)與CPU連接的引腳8279與CPU連接的引腳有:D7~D08位數(shù)據(jù)總線;RD、WR;片選線CS等。與一般芯片功能相同。A0——數(shù)據(jù)類型選型輸入線。A0與CS連接P0、P2口的兩根線可確定8279地址。CLK——時(shí)鐘輸入線。為8279片內(nèi)提供時(shí)鐘輸入,可連接8031的ALE端作為時(shí)鐘輸入。IRQ——中斷請求輸出線,高電平有效。RESET——復(fù)位輸入線。當(dāng)RESET=1時(shí),8279復(fù)位,其復(fù)位狀態(tài)為:選擇16個(gè)LED顯示位;選擇編碼掃描鍵盤、雙鍵鎖字;程序時(shí)鐘選擇為對CLK輸入進(jìn)行N分頻。BD——消隱控制輸出線,低電平有效,顯示器切換或用消隱命令時(shí),將顯示消隱。(2)與鍵盤連接線RL0~RL7——鍵盤回復(fù)輸入線。是對矩陣鍵盤行(或列)掃描由列(或行)輸入的信號線。SHIFT——偏移輸入線,鍵入和選通方式中不用此腳,可接地。CNTL/STB——控制或選通線。上升沿時(shí)讀入回復(fù)輸入線RL0~RL7上的數(shù)據(jù)。(3)與LED顯示器連接線OUTB3~0、OUTA3~0——顯示數(shù)據(jù)段選碼輸出線。OUTB3~0是低4位連接8段LED的d、c、b、a段;OUTA3~0是高4位,連接LED的dp、g、f、e段。SL3~SL0——掃描輸出線。用來掃描鍵盤和顯示器(輸出位選碼)。可以編程設(shè)定為編碼:4中取1輸出或譯碼輸出16中取1。3.8279的操作命令字CPU通過對8279的編程來選擇操作方式。8279共有8條命令字,在實(shí)際操作中不一定每一次都使用。(1)鍵盤/顯示器方式命令字命令格式如下:D7D6D5D4D3D2D1D0000DDKKK

其中D7D6D5D=000為該字特征位;D4D3(DD)——用來設(shè)定顯示方式。其定義如下:D4D3顯示器方式008個(gè)LED顯示字符,左入口輸入開始0116個(gè)LED顯示字符,左入口輸入開始(復(fù)位后狀態(tài))108個(gè)LED顯示字符,右入口輸入開始1116個(gè)LED顯示字符,右入口輸入開始D2D1D0(KKK)——鍵盤工作方式選擇位。用來設(shè)定8種鍵盤(附帶顯示器)工作方式。見表4.3.1所示:表8.3.1D2D1D0操作方式000外部編碼掃描鍵盤(16取1),雙鍵互鎖001內(nèi)部譯碼掃描鍵盤(4取1),雙鍵互鎖010外部編碼掃描鍵盤N鍵依次讀出011內(nèi)部譯碼掃描鍵盤N鍵依次讀出100外部編碼掃描傳感器矩陣方式101內(nèi)部譯碼掃描傳感器矩陣方式110選通輸入方式,外部編碼顯示掃描111選通輸入方式,內(nèi)部譯碼顯示掃描雙鍵互鎖:就是當(dāng)鍵盤中同時(shí)有兩個(gè)鍵被按下時(shí),任何一個(gè)鍵的編值均不能進(jìn)入FIFORAM中,直至僅剩一個(gè)鍵保持閉合時(shí),該鍵的鍵值才能進(jìn)入到FIFORAM中,這種工作方式可以避免誤操作信號進(jìn)入CPU而發(fā)生的故障。N鍵依次讀出方式:是N個(gè)鍵同時(shí)按下的保護(hù)方法。當(dāng)有若干個(gè)鍵同時(shí)按下時(shí),在鍵盤的掃描過程中根據(jù)發(fā)現(xiàn)它們的順序進(jìn)行識別。依次將它們的狀態(tài)送入FIFORAM中。(2)時(shí)鐘編程命令字8279內(nèi)部時(shí)鐘由外部輸入時(shí)鐘CLK經(jīng)過分頻后產(chǎn)生內(nèi)部要求的100kHz基本頻率。分頻系數(shù)由時(shí)鐘編程命令字確定,其格式如下所示:D7D6D5D4D3D2D1D0001PPPPP

D7D6D5——001為時(shí)鐘編程命令字的特征位。D4~D0(ppppp)——分頻系數(shù)。用來設(shè)定對外部輸入CLK端時(shí)鐘進(jìn)行N=2~31分頻。按式N=CLK(頻率)/100KHz計(jì)算。例如CLK=2MHz,則N=20,設(shè)定ppppp=10100(N=20),時(shí)鐘編程命令字為00110100B=34H,可由CPU指令寫入該寄存器。(3)讀鍵字RAM命令該命令字只在讀鍵字方式時(shí)使用。格式為:D7D6D5D4D3D2D1D0010AI-任意AAA

D7D6D5=010為該字特征位。CPU在讀鍵字RAM之前,必須用這條命令來設(shè)定RAM的8個(gè)地址(每個(gè)地址一個(gè)字節(jié))。D2D1D0(AAA)——為讀鍵字RAM中的8個(gè)字節(jié)地址。D4(AI)——自動(dòng)增量特征位。若AI=1,CPU則從RAM起始地址開始依次讀出,每次讀出后,地址自動(dòng)加1;AI=0時(shí),CPU僅讀出一個(gè)RAM中單元的內(nèi)容。(4)讀顯示緩沖器RAM命令字CPU在讀(檢查)顯示數(shù)據(jù)之前,必須先輸出讀顯示緩沖器RAM命令字。用來設(shè)定將要讀出的顯示RAM地址。格式:D7D6D5D4D3D2D1D0011AI-AAAA

D7D6D5=011為讀顯示RAM命令字特征位。D3~D0(AAAA)——用來尋址顯示RAM中存儲單元。由于位顯示RAM有16個(gè)字節(jié)單元,故需要4位數(shù)尋址。D4(AI)——自動(dòng)增量特征位。當(dāng)AI=1時(shí),CPU每次讀出RAM數(shù)據(jù)后地址自動(dòng)加1,指向下一個(gè)地址(5)寫顯示緩沖器RAM命令字當(dāng)CPU要執(zhí)行寫入8279顯示緩沖區(qū)RAM數(shù)據(jù)之前,先用該命令字給出要寫入顯示RAM地址。該命令字格式為:D7D6D5D4D3D2D1D0100AI-AAAA

D7D6D5=100為寫顯示RAM命令字特征位。D3~D0(AAAA)——用來尋址顯示緩沖器RAM的16位存儲單元。若AI=1,CPU除在第一次寫入RAM時(shí)必須給出地址外,以后每次寫入,地址自動(dòng)加1,直至所有顯示緩沖器RAM數(shù)據(jù)全部寫完。(6)顯示器禁止寫入/熄滅命令字命令字格式為:D7D6D5D4D3D2D1D0101任意-IWAIWBIWAIWB

D7D6D5=101為該字特征位。D3D2(IWA,IWB)——表示禁止寫入A、B組顯示RAM。由于顯示寄存器分成A、B兩組,可以單獨(dú)送數(shù),故用兩位來分別禁止。當(dāng)IWA=D3=1,IWB=D2=0時(shí),則A組的顯示RAM禁止寫入,但不影響B(tài)組的RAM寫入。D1D0(BLA、BLB)——LED熄滅設(shè)置位。當(dāng)D1D0=11時(shí),則同時(shí)熄滅A、B兩組LED顯示。當(dāng)D1D0=00時(shí)恢復(fù)顯示。(7)清除命令字該命令字用來清除讀鍵字RAM和顯示緩沖器RAM。其格式如下:D7D6D5D4D3D2D1D0110CD-CDCDCFCA

D7D6D5=110為清除命令字特征位。D4D3D2(CDCDCD)——用來設(shè)定清除顯示RAM方式。共有4種方式,見下表:D4D3D2清除方式10×將顯示RAM全部清0110將顯示RAM清成20H(A組=0010;B組=0000)111將顯示RAM全部置10××不清除(CA=0);若CA=1時(shí),則D3D2仍有效D1(CF)——用來置空鍵字RAM。當(dāng)CF=1時(shí),執(zhí)行清除命令后,鍵字RAM被置空,使中斷輸出線IRQ復(fù)位。同時(shí),RAM的讀出地址也被置0。D0(CA)——是總清除的特征位。它兼有CD和CF的聯(lián)合效用。當(dāng)CA=1時(shí),對顯示RAM的清除方式由D3D2的編碼確定。清除顯示緩沖器RAM大約需160μs。在此時(shí)間,顯示無效,CPU不能向顯示緩沖器RAM寫入數(shù)據(jù)。上述用于確定8279操作方式的命令字用戶在使用時(shí)要注意以下幾點(diǎn):(1)由于是寫入命令字,要求數(shù)據(jù)類型選擇線A0=1,因此8個(gè)寫入命令字占用一個(gè)口地址。(2)所有命令字類型皆由D7D6D5特征位確定區(qū)別。在CPU寫入8279后能自動(dòng)尋址相應(yīng)的命令寄存器,與寫入的先后順序無關(guān)。(3)每次進(jìn)行8279初始化不一定要求寫入所有的控制命令字。而是根據(jù)要求寫入相關(guān)的命令字。4.鍵盤輸入數(shù)據(jù)格式在鍵盤掃描方式下,進(jìn)入鍵字RAM中的鍵輸入數(shù)據(jù)對應(yīng)于該鍵所在鍵盤上的行、列位置。鍵輸入數(shù)據(jù)的格式如下:D7D6D5D4D3D2D1D000-SCANRETURND7D6=00;表示引腳CNTL和SHIFT均接地,可與鍵盤的8×8=64個(gè)按鍵配合工作。D2D1D0(RETURN)——表示輸入鍵所在的列號。由RL0~RL7的狀態(tài)決定。D5D4D3(SCAN)——表示輸入鍵所在行號,由掃描計(jì)數(shù)值SL2~SL0的狀態(tài)確定。上述鍵盤輸入數(shù)據(jù)格式組成按鍵的鍵值。圖8.3.6給出了8×8鍵盤鍵號與鍵值。在鍵盤輸入格式中,用D5D4D3表示SL2~SL0的8個(gè)譯碼狀態(tài),用D2D1D0表示RL7~RL0的8位狀態(tài)。圖8.3.68279的8×8鍵盤的鍵號與鍵值8.3.38279接口和編程方法1.硬件設(shè)計(jì)采用2行×8列=16個(gè)鍵盤。數(shù)字鍵為0~9,命令鍵采用A、B、C、D、E、F。雙鍵互鎖。鍵值與鍵號相同:00H~0FH。顯示器采用8位8段LED,編碼掃描(8中取1)。8279的OUTA0-OUTA3依次連接顯示器a、b、c、d、e、f、g、dp段。這樣可保證顯示器所需要的段選碼和程序中所列出的段選碼表相一致。電路如圖8.3.7所示。圖8.3.7實(shí)用8279鍵盤/顯示器接口電路2.軟件設(shè)計(jì)軟件程序包括:8279初始化程序,8279鍵盤經(jīng)中斷處理程序,8279顯示程序,鍵盤散轉(zhuǎn)分類程序。(1)8279初始化程序1)清除命令字。本命令碼為D1H,D7D6D5=110為特征位;D4為清除顯示有效。D0=1為全清,包括:顯示RAM、顯示器熄滅等。2)設(shè)置顯示器/鍵盤工作方式。本命令字碼為00H。選擇8位LED顯示器,左入口、雙鍵互鎖。3)時(shí)鐘編程命令字。由ALE輸入到CLK端為2MHz,則分頻系數(shù)為N=2MHz/100KHz=20,因此本命令字為34H。

`4)允許INT1中斷。根據(jù)上述分析,8279初始化程序框圖如圖8.3.8所示。圖8.3.88279初始化程序框圖(2)8279鍵盤中斷程序若操作人員有按鍵,則鍵值自動(dòng)進(jìn)入8279FIFORAM中,然后8279的引腳IRQ=1,向INT1申請中斷。在中斷程序中,CPU先向8279寫入讀FIFORAM命令字40H,再讀出鍵值送A中。中斷返回后執(zhí)行鍵盤分類程序。8279鍵盤中斷程序框圖如圖4.3.9。(3)8279顯示子程序顯示子程序框圖如圖8.3.10所示。圖8.3.98279鍵盤中斷程序框圖

圖8.3.108279顯示子程序框圖根據(jù)上述分析,可編出8279鍵盤、顯示器初始化及管理程序如下。初始化主程序:ORG0000HLJMPSTARTORG0100HSTART:MOVSP,#50H;設(shè)置堆棧指針MOVDPTR,#7FFFH;指向8279命令口地址MOVA,#0D1H;總清除顯示RAM命令字MOVX@DPTR,A;總清除命令字寫入8279LP1:MOVXA,@DPTR;讀8279內(nèi)狀態(tài)字JBACC.7,LP1;等待清除顯示RAMMOVA,#00H;設(shè)置鍵盤/顯示器工作方式命令字MOVX@DPTR,A;命令字寫入8279MOVA,#34H;對CLK20分頻為100KHz命令字MOVX@DPTR,A;分頻命令字寫入8279MOVDPTR,#DISBH;顯示提示符“bh–706”代碼表首地址LCALLDIS;轉(zhuǎn)提示符顯示子程序MOV20H,#80H;20H為鍵盤數(shù)據(jù)緩沖單元,設(shè)D7=1為空SETBIT1;下降沿觸發(fā)中斷SETBEA;開放CPU中斷SETBEX1;允許中斷ATD:MOVB,#03H;擴(kuò)展程序入口地址表間隔RDKEY:MOVA,20H;取鍵盤數(shù)據(jù)緩沖器內(nèi)容JNBACC.7,K0;ACC.7=0,已有鍵值轉(zhuǎn)K0SETBEASJMPRDKEY;鍵盤數(shù)據(jù)緩沖單元20H空,等待按鍵中斷K0:MOV20H,#80H;鍵盤數(shù)據(jù)緩沖單元,置空標(biāo)志,D7=1CLREA;關(guān)CPU中斷,處理鍵值分類MOVDPTR,#K1;K1為鍵功能程序入口地址表首地址MULABJMP@A+DPTR;鍵功能程序散轉(zhuǎn)操作者按鍵后,鍵號碼的行、列進(jìn)入8279FIFORAM單元,同時(shí)IRQ=1,向INT1=0申請中斷,CPU執(zhí)行下面讀鍵值中斷服務(wù)程序:ORG 0013H ;INT1中斷矢量LJMP INT1 ORG 1000H INT1:MOV A,#40H ;讀RAM鍵值命令字MOV DPTR,#7FFFH;8279命令字口地址MOVX @DPTR,A ;命令字寫入8279MOV DPTR,#7FFEH;指向8279數(shù)據(jù)口地址MOVX A,@DPTR ;將RAM中鍵值讀入AMOV 20H,A ;鍵值送緩沖單元20H,D7=0RETI ;中斷返回以下為鍵盤散轉(zhuǎn)程序:K1:LJMPG0;轉(zhuǎn)0鍵處理程序入口LJMPG1;轉(zhuǎn)1鍵處理程序入口……LJMPG9;轉(zhuǎn)9鍵處理程序入口LJMPGA;轉(zhuǎn)A鍵處理程序入口……LJMPGF;轉(zhuǎn)F鍵處理程序入口以下為16個(gè)功能鍵處理程序結(jié)構(gòu):G0:……;0鍵功能處理程序……LJMPATD;返回G1:……;1鍵功能處理程序……LJMPATD;返回……GF:……;F鍵功能處理程序……LJMPATD;返回以下為顯示子程序:DIS:PUSHDPH;提示符顯示代碼地址入棧保護(hù)PUSHDPLMOVR2,#08H;顯示器LED位數(shù)送R2MOVA,#90H;寫顯示RAM命令字MOVDPTR,#7FFFH;8279命令口地址MOVX@DPTR,A;將命令字寫入8279POPDPL;回恢復(fù)地址POPDPHTI:MOVA,#00H;采用固定偏移量查提示符表MOVCA,@A+DPTR;查提示符代碼表相對偏移量PUSHDPHMOVDPTR,#TABA,@A+DPTR;指向段選碼表首地址MOVCA,@A+DPTR

;取段選碼送APUSHDPLMOVDPTR,#7FFEH;指向8279數(shù)據(jù)口地址MOVX@DPTR,A;段選碼寫入8279顯示RAM中POPDPLPOPDPHINCDPTR;指向下一個(gè)提示符代碼地址DJNZR2,TI;8位LED未顯示完,繼續(xù)送RET;送完返回以下為提示符“bH706”段選碼查表的相對偏移量:DISBH:DB0BH,11H,13H,07H,00H,06H,13H,13H

以下為顯示段碼、字符和偏移量對應(yīng)表TAB:DB3FH;000HDB06H;101HDB5BH;202HDB4FH;303HDB66H;404HDB6DH;505HDB7DH;606HDB07H;707HDB7FH;808HDB6FH;909HDB77H;A0AHDBTC1H;b0BHDB39H;C0CHDB5EH;D0DHDB79H;E0EHDB71H;F0FHDB73H;P10HDB76H;H11HDBFFH;曰12HDB00H;熄滅LED13HEND8.4微型打印機(jī)及接口電路8.4.1GP16微型打印機(jī)及接口GP16打印機(jī)的工作原理GP16為一種早期的智能微型打印機(jī),機(jī)芯為Model-150-??16行針打。機(jī)內(nèi)控制器由8039單片機(jī)構(gòu)成。GP16-??為改進(jìn)型,控制器由8031單片機(jī)實(shí)現(xiàn)。GP16微型打印機(jī)只有16根能外接口信號錢和3個(gè)控制開關(guān),使用+5電源,可以打印字符串,數(shù)據(jù)和圖表。圖8.4.1為其接線示意圖。K1K2K33333GP16微型打印機(jī)+5V+5VIO00IO01IO02IO03IO04IO05IO06IO07CSWRRDBUSY地地圖8.4.1GP16微型打印機(jī)接線示意圖IO0.0~IO0.7:雙向三態(tài)數(shù)據(jù)總線,是CPU與打印機(jī)之間命令,數(shù)據(jù)和狀態(tài)信息傳輸線。CS:設(shè)備選擇線,低電平有效。BUSY:打印狀態(tài)輸出線,BUSY輸出高電平表示GP16處于忙狀態(tài),不能接收CPU命令或數(shù)據(jù)。該信號可供CPU查詢或向CPU發(fā)中斷請求信號。K1:空走紙開關(guān);K2:復(fù)位停機(jī)開關(guān);K3:自檢開關(guān)。GP16的打印命令占兩個(gè)字節(jié),格式為:

命令中的點(diǎn)行n是選擇字符行之間的行距參數(shù),字符本身占距7個(gè)點(diǎn)行,所以打印點(diǎn)行數(shù)應(yīng)大于或等于8,若n=10則行距為3個(gè)點(diǎn)行數(shù)。打印行數(shù)NNH是指需要打?。ɑ蚩兆呒垼┑淖址袛?shù)。表8.4.1是GP16的命令編碼表。命令功能操作碼空走紙1000字符串打印1001十六進(jìn)制數(shù)據(jù)打印1010圖形打印1011空走紙命令(8nNNH)執(zhí)行空走紙命令時(shí),打印機(jī)自動(dòng)空走紙NN╳n點(diǎn)行。其間忙狀態(tài)(BUSY)置1,執(zhí)行完后清零。打印字符串命令(9nNNH)執(zhí)行完該命令后,打印機(jī)等待CPU寫入字符數(shù)據(jù),當(dāng)接收完16個(gè)字符(一行)后,轉(zhuǎn)入打印,打印一行需時(shí)約一秒。若收到非法字符作空格處理。若收到換行(OAH)碼,作停機(jī)處理。打完本行即停止印。當(dāng)打印完規(guī)定的NNH行數(shù)后,忙狀態(tài)(BUSY)清零。GP16可打印的字符編碼如表8.4.2所示。(3)十六進(jìn)制數(shù)據(jù)打印命令(AnNNH)本指令通常用來直接打印內(nèi)存數(shù)據(jù)。當(dāng)GP16接收到數(shù)據(jù)打印命令后,把CPU寫入的數(shù)據(jù)字節(jié)分兩次打印,先打印高4位,后打印低4位,一行打印4個(gè)字節(jié)數(shù)據(jù)。行首為相對地址。(4)圖形打?。˙nNNH)GP16接收到CPU的圖形打印命令和行數(shù)以后,等待主機(jī)送來一行96個(gè)字節(jié)的數(shù)據(jù)便進(jìn)行打印。把這些數(shù)據(jù)所確定的圖形打印出來,然后再接受CPU的另一組圖形數(shù)據(jù),直到規(guī)定的行數(shù)打印完為止。GP16還有一個(gè)狀態(tài)字可供CPU查詢,格式為:錯(cuò)忙D7D0D0為忙位(BUSY),當(dāng)CPU輸入的數(shù)據(jù)命令沒處理完時(shí),或處于自檢狀態(tài)時(shí)均置1,空閑時(shí)置0。D7為錯(cuò)誤位,當(dāng)接收到非法命令時(shí)置1,接收到正確命令后復(fù)位。表8.4.2GP16打印的字符編碼2.MCS-51單片機(jī)和GP16的接口電路GP16打印機(jī)其控制電路中自身有三態(tài)鎖存器,在CS和WR控制下能鎖存CPU總線數(shù)據(jù),故GP16可以直接和MCS-51單片機(jī)數(shù)據(jù)總線相連。接線如圖8.4.2所示。打印機(jī)地址為7FFFH。此種接法即可用于中斷方式,以可用于查詢工作方式。下面通過一個(gè)例子來說明打印程序的編制方法。圖8.4.2GP16與8031數(shù)據(jù)總線的接口方法設(shè)8031RAM內(nèi)20H~28H中分別存放一、二、三區(qū)水源壓力的數(shù)據(jù),單位為KPa。壓力數(shù)據(jù)的前兩個(gè)字節(jié)為整數(shù)部分,后一個(gè)字節(jié)為小數(shù)部分。壓力數(shù)據(jù)均以壓縮的BCD碼形式存放,要求打印格式如下:一#:_××××.××Kpa__二#:_××××.××Kpa__三#:_××××.××Kpa__為了節(jié)省數(shù)據(jù)緩沖單元,常把表格中重復(fù)且固定不變的字符,如本例中“#:_”、“Kpa”以數(shù)據(jù)表格形式存放在EPROM中,而單次出現(xiàn)的常數(shù)可在程序中設(shè)置代碼,如本例中的一、二、三字樣。下面給出以查詢方式編出的程序清單:PRINT:MOV DPTR,#7FFFH ;送地址WAIT0:MOVX A,@DPTR ;取打印機(jī)狀態(tài)字ANL A,#81H ;保留D7、D0位JNZ WAIT0 ;“忙”或“錯(cuò)”時(shí)返回WAIT1:MOV A,#9CH ;送打印字符串命令,點(diǎn)行數(shù)為9CHMOVX @DPTR,AWAIT2: MOVX A,@DPTR ;查詢打印機(jī)狀態(tài)字JB ACC.7,WAIT1;有“錯(cuò)”重新送打印命令JB ACC.0,WAIT2 ;“忙”再查詢MOV A,#03H ;送打印行數(shù)NNHWAIT3: MOVX A,@DPTR ;查“忙”JB ACC.0,WAIT3 ;“忙”等待MOV R1,#20H ;打印數(shù)據(jù)緩沖區(qū)首址送R1MOV R7,#00H ;行數(shù)初值送R7@DPTR,ALOOP2:MOVA,R7ADD

A,#81H

;構(gòu)成一、二、三的代碼、分別是81H,82H,83HMOVX @DPTR,A ;送打印字符WAIT4: MOVX A,@DPTR ;查狀態(tài)碼JB ACC.0,WAIT4 ;“忙”等待MOV R4,#e1 ;符號代碼表TAB1首址偏移量送R4LOOP0: MOV A,R4;MOVC A,@A+PC ;取表中字符代碼MOVX @DPTR,A ;送打印WAIT5: MOVX A,@DPTR ;查狀態(tài)JB ACC.0,WAIT5 ;“忙“等待INC R4 ;指向下一個(gè)字符MOV

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論