版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章MCS-51與鍵盤(pán)、顯示器、撥盤(pán)、打印機(jī)的接口設(shè)計(jì)輸入外設(shè):鍵盤(pán)、BCD碼撥盤(pán)等;輸出外設(shè):LED顯示器、LCD顯示器、打印機(jī)等。10.1LED顯示器接口原理LED(LightEmittingDiode):發(fā)光二極管的縮寫(xiě)。顯示器前面冠以“LED”。10.1.1LED顯示器的結(jié)構(gòu)LED顯示器為8段(或7段,8段比7段多了一個(gè)小數(shù)點(diǎn)“dp”有共陽(yáng)極和共陰極兩種。12為使LED顯示不同的符號(hào)或數(shù)字,要為L(zhǎng)ED提供段碼(或稱(chēng)字型碼)。提供給LED顯示器的段碼(字型碼)正好是一個(gè)字節(jié)(8段)。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如下:按上述格式,8段LED的段碼如表10-1所示。3段碼是相對(duì)的,它由各字段在字節(jié)中所處的位決定。例如表10-1中8段LED段碼是按格式:而形成的,“0”的段碼為3FH(共陰)。反之,如將格式改為下列格式:則“0”的段碼為7EH(共陰)。字型及段碼由設(shè)計(jì)者自行設(shè)定,習(xí)慣上還是以“a”段對(duì)應(yīng)段碼的最低位。5N個(gè)LED顯示塊有N位位選線(xiàn)和8×N根段碼線(xiàn)。10.1.2LED顯示器工作原理圖10-2是4位LED顯示器的結(jié)構(gòu)原理圖。段碼線(xiàn)控制顯示的字型,位選線(xiàn)控制該顯示位的亮或暗。6靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。1.靜態(tài)顯示方式各位的公共端連接在一起(接地或+5V)。每位的段碼線(xiàn)(a~dp)分別與一個(gè)8位的鎖存器輸出相連。顯示字符一確定,相應(yīng)鎖存器的段碼輸出將維持不變,直到送入另一個(gè)段碼為止。顯示的亮度高。7圖10-4:4位8段LED動(dòng)態(tài)顯示電路。其中段碼線(xiàn)占用一個(gè)8位I/O口,而位選線(xiàn)占用一個(gè)4位I/O口。9圖10-5為8位LED動(dòng)態(tài)顯示2003.10.10的過(guò)程。圖(a)是顯示過(guò)程,某一時(shí)刻,只有一位LED被選通顯示,其余位則是熄滅的;圖(b)是實(shí)際顯示結(jié)果,人眼看到的是8位穩(wěn)定的同時(shí)顯示的字符。1010.2鍵盤(pán)接口原理1.鍵盤(pán)輸入的特點(diǎn)鍵盤(pán):一組按鍵開(kāi)關(guān)的集合。行線(xiàn)電壓信號(hào)通過(guò)鍵盤(pán)開(kāi)關(guān)機(jī)械觸點(diǎn)的斷開(kāi)、閉合,輸出波形如圖10-6。1110.2.2鍵盤(pán)接口的工作原理獨(dú)立式按鍵接口和行列式鍵盤(pán)接口。1.獨(dú)立式鍵盤(pán)接口各鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線(xiàn),通過(guò)檢測(cè)輸入線(xiàn)的電平狀態(tài)可很容易判斷那個(gè)鍵被按下。此種接口適于鍵數(shù)較少或操作速度較高的場(chǎng)合。圖10-7(a)為中斷方式的獨(dú)立式鍵盤(pán)工作電路圖10-7(b)為查詢(xún)方式的獨(dú)立式鍵盤(pán)工作電路。1314圖10-8為8255A擴(kuò)展I/O口的獨(dú)立式按鍵接口電路。15對(duì)圖10-9獨(dú)立式鍵盤(pán)編程,軟件消抖,查詢(xún)方式檢測(cè)鍵的狀態(tài)。僅有一鍵按下時(shí)才有效才處理。KEYIN:MOVDPTR,#0BFFFH;鍵盤(pán)端口地址 MOVXA,@DPTR ;讀鍵盤(pán)狀態(tài) ANLA,#1FH ;屏蔽高三位MOVR3,A ;保存鍵盤(pán)狀態(tài)值LCALLDELAY10 ;延時(shí)10ms去鍵盤(pán)抖動(dòng)MOVXA,@DPTR ;再讀鍵盤(pán)狀態(tài)ANLA,#1FH ;屏蔽高三位CJNEA,R3,RETURN;兩次不同,抖動(dòng)RETURN CJNEA,#1EH,KEY2;不等轉(zhuǎn)KEY217 LJMPPKEY1 ;是K1鍵按下,轉(zhuǎn)K1鍵處理 ;子程序PKEY1KEY2:CJNEA,#1DH,KEY3;S2鍵未按下,轉(zhuǎn)KEY3 LJMPPKEY2 ;S2鍵按下,轉(zhuǎn)PKEY2處理KEY3: CJNEA,#1BH,KEY4 ;S3未按下,轉(zhuǎn)KEY4 LJMPPKEY3;S3按下,轉(zhuǎn)PKEY3處理KEY4:CJNEA,#17H,KEY5;S4鍵未按下,轉(zhuǎn)KEY5
LJMPPKEY4;S4按下,轉(zhuǎn)PKEY4處理KEY5: CJNEA,#0FH,PASS;S5未按下,轉(zhuǎn)RETURN LJMPPKEY5;S5按下,轉(zhuǎn)PKEY5處理RETURN:RET;重鍵或無(wú)鍵按下,從子程序返回識(shí)別和編程簡(jiǎn)單,用在按鍵數(shù)較少的場(chǎng)合。182.行列式(矩陣式)鍵盤(pán)接口用于按鍵數(shù)目較多的場(chǎng)合,由行線(xiàn)和列線(xiàn)組成,按鍵位于行、列的交叉點(diǎn)上。如圖10-10所示。按鍵數(shù)目較多的場(chǎng)合,行列式鍵盤(pán)與獨(dú)立式鍵盤(pán)相比,要節(jié)省很多的I/O口線(xiàn)。19(2)按鍵的識(shí)別方法a.掃描法圖10-10(b)中3號(hào)鍵被按下為例,來(lái)說(shuō)明此鍵時(shí)如何被識(shí)別出來(lái)的。第1步:識(shí)別鍵盤(pán)有無(wú)鍵按下;第2步:如有鍵被按下,識(shí)別出具體的按鍵。把所有列線(xiàn)置0,檢查各行線(xiàn)電平是否有變化,如有變化,說(shuō)明有鍵按下,如無(wú)變化,則無(wú)鍵按下。 先把(掃描)某一列置低電平,其余各列為高電平,檢查各行線(xiàn)電平的變化,如果某行線(xiàn)電平為低,可確定此行列交叉點(diǎn)處的按鍵被按下。21b.線(xiàn)反轉(zhuǎn)法
只需兩步便能獲得此按鍵所在的行列值,線(xiàn)反轉(zhuǎn)法的原理如圖10-11。(2)按鍵的識(shí)別方法22第1步:列線(xiàn)輸出為全低電平,則行線(xiàn)中電平由高變低的所在行為按鍵所在行。第2步:行線(xiàn)輸出為全低電平,則列線(xiàn)中電平由高變低所在列為按鍵所在列。結(jié)合上述兩步,可確定按鍵所在行和列。b.線(xiàn)反轉(zhuǎn)法
(2)按鍵的識(shí)別方法2310.2.3鍵盤(pán)的工作方式單片機(jī)在忙于各項(xiàng)工作任務(wù)時(shí),如何兼顧鍵盤(pán)的輸入,取決于鍵盤(pán)的工作方式。原則:即要保證能及時(shí)響應(yīng)按鍵操作,又不要過(guò)多占用CPU的工作時(shí)間。通常,鍵盤(pán)工作方式有3種:編程掃描、定時(shí)掃描和中斷掃描。251.編程掃描方式只有當(dāng)單片機(jī)空閑時(shí),才調(diào)用鍵盤(pán)掃描子程序,掃描鍵盤(pán)。工作過(guò)程:(1)在鍵盤(pán)掃描子程序中,先判斷有無(wú)鍵按下。(2)用軟件來(lái)消除按鍵抖動(dòng)的影響。如有鍵按下,則進(jìn)行下一步。(3)求按下鍵的鍵號(hào)。(4)等待按鍵釋放后,再進(jìn)行按鍵功能的處理操作。262.定時(shí)掃描工作方式利用單片機(jī)內(nèi)的定時(shí)器,產(chǎn)生10ms的定時(shí)中斷,對(duì)鍵盤(pán)進(jìn)行掃描。3.中斷工作方式只有在鍵盤(pán)有鍵按下時(shí),才執(zhí)行鍵盤(pán)掃描程序,如無(wú)鍵按下,單片機(jī)將不理睬鍵盤(pán)。27第1層:?jiǎn)纹瑱C(jī)如何來(lái)監(jiān)視鍵盤(pán)的輸入。三種工作方式:①編程掃描②定時(shí)掃描③中斷掃描。第2層:確定具體按鍵的鍵號(hào)。體現(xiàn)在按鍵的識(shí)別方法上就是:①掃描法;②線(xiàn)反轉(zhuǎn)法。第3層:執(zhí)行鍵處理程序。2910.3鍵盤(pán)/顯示器接口設(shè)計(jì)實(shí)例一般把鍵盤(pán)和顯示器放在一起考慮。10.3.1利用并行I/O芯片實(shí)現(xiàn)鍵盤(pán)/顯示器接口圖10-14:8031用擴(kuò)展I/O接口芯片8155H實(shí)現(xiàn)的6位LED顯示和32鍵的鍵盤(pán)/顯示器接口電路。圖中8155H也可用8255A來(lái)替代。30318031外擴(kuò)一片8155H。
RAM地址:7E00H~7EFFH。 I/O口地址:7F00H~7F05H。
PA口為輸出口,控制鍵盤(pán)列線(xiàn)的掃描,同時(shí)又是6位共陰極顯示器的位掃描口。
PB口作為顯示器段碼輸出口,PC口作為鍵盤(pán)的行線(xiàn)狀態(tài)的輸入口。75452:反相驅(qū)動(dòng)器,7407:同相驅(qū)動(dòng)器。321.動(dòng)態(tài)顯示程序設(shè)計(jì)8031內(nèi)部RAM6個(gè)顯示緩沖單元:79H~7EH,存放要顯示的6位數(shù)據(jù)。 ①8155H的PB口輸出相應(yīng)位的段碼, ②依次改變PA口輸出為高的位使某一位顯示某一字符,其它位為暗。動(dòng)態(tài)地顯示出由緩沖區(qū)中顯示數(shù)據(jù)所確定的字符。33硬件資源:A口:位選線(xiàn)(輸出)B口:段碼線(xiàn)(輸出)8155地址分配7F00:命令、狀態(tài)7F01:A7F02:B7F03:C7F04:定時(shí)初值7F05:定時(shí)初值34軟件變量、資源:顯示段碼數(shù)據(jù)@R0→B口段碼表顯示位選數(shù)據(jù)R3→A口軟件延時(shí)程序35參考程序:DIR:MOVR0,#79H ;置緩沖器指針初值MOVR3,#01H ;位選碼的初值送R3MOVA,R3LD0:MOVDPTR,#7F01H;位選碼→PA口(PA.0位);最左邊LED亮MOVX@DPTR,AINCDPTR ;數(shù)據(jù)指針指向PB口MOVA,@R0;顯示數(shù)據(jù)→AADDA,#0DH;加偏移量(到表首間;所有指令占的單元數(shù))MOVCA,@A+PC;根據(jù)顯示數(shù)據(jù)查表段碼36DIR1:MOVX@DPTR,A ;段碼→8155HPB口ACALLDL1ms;該位顯示1msINCR0 ;指針指向下一個(gè)數(shù)據(jù)單元MOVA,R3 ;位選碼送入A中JBAcc.5,LD1;判斷是否掃描到最右邊的;LED,如到最右邊則返回RLA;位選碼向左移一位;右邊的下一位LED亮MOVR3,A ;位選碼送R3中保存AJMPLD0;LD1:RET;DSEG:DB3FH,06H,5BH,4FH,66H,6DH;共陰段碼 DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EH37DB31H,6EH,1CH,23H,40H,03HDB18H,00HDL1ms: MOVR7,#02H ;延時(shí)1ms子程序DL: MOVR6,#0FFHDL6: DJNZR6,DL6DJNZR7,DLRET382.鍵盤(pán)程序設(shè)計(jì)(1)判別鍵盤(pán)上有無(wú)鍵閉合(2)去除鍵的機(jī)械抖動(dòng)(3)判別閉合鍵的鍵號(hào)(4)使CPU對(duì)鍵的一次閉合僅作一次處理39硬件資源:A口:列線(xiàn)(輸出)C口:行線(xiàn)(輸入)8155地址分配7F00:命令、狀態(tài)7F01:A7F02:B7F03:C
軟件變量、資源:列選碼R2→A口列計(jì)數(shù)R440鍵盤(pán)子程序如下:KEYI:ACALLKS1;調(diào)用判有無(wú)鍵閉合子程序JNZLK1;有鍵閉合,跳LK1NI:ACALLDIR;無(wú)鍵閉合,調(diào)用顯示子程序,延;遲6ms后,跳KEYIAJMPKEYILK1:ACALLDIR;可能有鍵閉合,軟件延遲12ms去抖ACALLDIRACALLKS1;調(diào)用判有無(wú)鍵閉合子程序JNZLK2;經(jīng)去抖,判鍵確實(shí)閉合,跳LK2ACALLDIR;調(diào)用顯示子程序延遲6msAJMPKEYI;抖動(dòng)引起,跳KEYILK2:MOVR2,#0FEH ;列選碼→R2MOVR4,#00H ;R4為列號(hào)計(jì)數(shù)器41LK4:MOVDPTR,#7F01H;列選碼→8155H的PA口MOVA,R2MOVX@DPTR,AINCDPTR ;數(shù)據(jù)指針增2,指向PC口INCDPTRMOVXA,@DPTR;讀8155HPC口JBAcc.0,LONE;0行線(xiàn)為高,無(wú)鍵閉合,跳LONE,轉(zhuǎn)判1行MOVA,#00H ;0行有鍵閉合,首鍵號(hào)0→AAJMPLKP ;跳LKP,計(jì)算鍵號(hào)LONE:JBAcc.1,LTW0;1行線(xiàn)為高,無(wú)鍵閉合;跳LTW0轉(zhuǎn)判2行MOVA,#08H;1行有鍵閉合,首鍵號(hào)8→AAJMPLKP 42LTW0:JBA.2,LTHR;2行線(xiàn)為高,無(wú)鍵閉合, ;跳LTHR,轉(zhuǎn)判3行 MOVA,#10H;2行有鍵閉合,首鍵號(hào)10H→AAJMPLKP ;跳LKP,計(jì)算鍵號(hào)LTHR:JBAcc.3,NEXT;3行線(xiàn)為高,無(wú)鍵閉合;跳NEXT,準(zhǔn)備下一列掃描MOVA,#18H ;3行有鍵閉合,首鍵號(hào)18H→ALKP:ADDA,R4;計(jì)算鍵號(hào):首鍵號(hào)+列號(hào)=鍵號(hào)PUSHA ;鍵號(hào)進(jìn)棧保護(hù)LK3:ACALLDIR ;調(diào)用顯示子程序,延時(shí)6msACALLKS1 ;調(diào)用判有無(wú)鍵閉合子程序 ;延時(shí)6ms JNZLK3 ;判鍵釋放否,未釋放,則循環(huán)
POPA;鍵已釋放,鍵號(hào)出?!鶤RET43NEXT:INCR4;列計(jì)數(shù)器加1,為下一列掃描作準(zhǔn)備MOVA,R2;判是否已掃到最后一列(最右一列)JNBAcc.7,KND;鍵掃描到最后一列,跳KND, ;重新進(jìn)行整個(gè)鍵盤(pán)掃描RLA ;鍵掃描未掃到最后一列, ;位選碼左移一位MOVR2,A;位選碼→R2AJMPLK4KND:AJMPKEYIKS1:MOVDPTR,#7F01H;判有無(wú)鍵閉合,全“0”→ ;掃描口(PA口)MOVA,#00H ;即列線(xiàn)全為低電平MOVX@DPTR,AINCDPTR ;DPTR增2,指向PC口44INCDPTR ;指針增1,指向PC口MOVXA,@DPTR;從PC口讀行線(xiàn)的狀態(tài)CPLA ;行線(xiàn)取反,如無(wú)鍵按下,則A為0;ANLA,#0FH;屏蔽無(wú)用的高4位RET4510.3.2利用8031的串行口實(shí)現(xiàn)鍵盤(pán)/顯示器接口串口未作它用,可用來(lái)外擴(kuò)鍵盤(pán)/顯示器。串口為方式0輸出,串口外接移位寄存器74LS164。接口電路如圖10-17。74LS164(0)~74LS164(7):作為8位LED的段碼輸出,8031的P3.4、P3.5:兩行鍵的行狀態(tài)輸入P3.3(TXD):同步移位脈沖輸出控制線(xiàn),4647顯示硬件資源串行口0P3.3軟件變量、資源:字段表串口初始化SCON.SM0、1、2=0IE=0SCON.TICLRSM0CLRSM1CLRSM2CLREA48優(yōu)點(diǎn):亮度大,容易做到顯示不閃爍,且CPU不必頻繁的為顯示服務(wù),從而使單片機(jī)有更多的時(shí)間處理其它事務(wù)。顯示子程序:DIR:SETBP3.3 ;P3.3=1允許TXD腳同步移位 ;脈沖輸出MOVR7,#08H;送出的段碼個(gè)數(shù),R7為段 ;碼個(gè)數(shù)計(jì)數(shù)器MOVR0,#7FH;7FH~78H為顯示數(shù)據(jù)緩沖區(qū)DL0: MOVA,@R0;取出要顯示的數(shù)送AADDA,#0DH;加上偏移量MOVCA,@A+PC;查段碼表SEGTAG,取出段碼MOVSBUF,A;將段碼送SBUF
49DL1:JNBTI,DL1 ;輸出段碼,查詢(xún)TI狀態(tài)CLRTI ;1個(gè)字節(jié)的段碼輸出完,清TI標(biāo)志DECR0 ;指向下一個(gè)顯示數(shù)據(jù)單元
DJNZR7,DL0 ;段碼個(gè)數(shù)計(jì)數(shù)器R7是否為0, ;如不為0,繼續(xù)送段碼CLRP3.3 ;8個(gè)段碼輸出完畢,關(guān)輸出RET ;返回SEGTAB:DB0C0H,0F9H,0A4H,0B0H,99H ;共陽(yáng)極段碼表,0,1,2,3,4DB92H,82H,0F8H,90H ;5,6,7,8,9DB88H,83H,0C6H,0A1H,86H ;A,B,C,D,EDB8FH,0BFH,8CH,0FFH,0FFH ;F,-,P,暗5051鍵盤(pán)硬件資源:P3.3列線(xiàn):串行口0行線(xiàn)P3.4P3.5
軟件變量、資源:串口初始化SCON.SM0、1、2=0IE=0SCON.TI5253鍵盤(pán)掃描子程序:KEYI:MOVA,#00H ;判有無(wú)鍵按下,使所有列線(xiàn)為0 ;的編碼送AMOVSBUF,A ;掃描鍵盤(pán)的(8)號(hào)74LS164輸 ;出為00H,使所有列線(xiàn)為0KL0:JNBTI,KL0 ;串行輸出完否?CLRTI ;串行輸出完畢,清TIKL1:JNBP3.4,PK1 ;第1行有閉合鍵嗎?如有,跳 ;PK1進(jìn)行處理JBP3.5,KL1 ;在第2行鍵中有閉合鍵嗎?無(wú)閉 ;合鍵跳KL1PK1:ACALLDL10 ;調(diào)用延時(shí)10ms子程序DL10,軟 ;件消除抖動(dòng)JNBP3.4,PK2 ;判是否抖動(dòng)引起的?54JBP3.5,KL1PK2: MOVR7,#08H;不是抖動(dòng)引起的MOVR6,#0FEH ;判別是哪一個(gè)鍵按下,F(xiàn)EH為最 ;左一列為低MOVR3,#00H ;R3為列號(hào)寄存器MOVA,R6 ;KL5:MOVSBUF,A ;列掃描碼從串行口輸出KL2:JNBTI,KL2 ;等待串行口發(fā)送完CLRTI ;串行口發(fā)送完畢,清TI標(biāo)志JNBP3.4,PKONE ;讀第1行線(xiàn)狀態(tài),第1行有鍵;閉合,跳PKONE處理JBP3.5,NEXT;讀第2行狀態(tài),是第2行某鍵?MOVR4,#08H ;第2行鍵中有鍵被按下, ;行首鍵號(hào)08H送R4AJMPPK3;55PKONE:MOVR4,#00H;第1行按下,行首鍵號(hào)00H送R4PK3: MOVSBUF,#00H;等待鍵釋放,發(fā)送00H ;使所有列線(xiàn)為低KL3:JNBTI,KL3CLRTI ;發(fā)送完畢,清標(biāo)志KL4:JNBP3.4,KL4;判行線(xiàn)狀態(tài)JNBP3.5,KL4MOVA,R4 ;兩行線(xiàn)均為高,說(shuō)明鍵已釋放ADDA,R3 ;計(jì)算得到鍵碼→ARETNEXT:MOVA,R6 ;列掃描碼左移一位,判下列鍵RLAMOVR6,A ;記住列掃描碼于R6中INCR3 ;列號(hào)增1DJNZR7,KL5;列計(jì)數(shù)器R7減1,8列鍵都檢查完?56AJMPKEYI;8列鍵掃描完畢;開(kāi)始下一個(gè)鍵盤(pán)掃描周期DL10:MOVR7,#0AH ;延時(shí)10ms子程序DL:MOVR6,#0FFHDL6:DJNZR6,DL6DJNZR7,DLRET5710.3.3利用通用鍵盤(pán)/顯示器接口芯片8279實(shí)現(xiàn)鍵盤(pán)/ 顯示器接口Intel8279芯片:通用可編程鍵盤(pán)/顯示器接口芯片。對(duì)鍵盤(pán)部分提供掃描工作方式,能對(duì)64個(gè)鍵鍵盤(pán)陣列不斷掃描,自動(dòng)消抖,自動(dòng)識(shí)別出閉合的鍵并得到鍵號(hào),能對(duì)雙鍵或N鍵同時(shí)按下進(jìn)行處理。58掃描方式的顯示接口,可顯示多達(dá)16位的字符。1.8279的引腳及內(nèi)部結(jié)構(gòu)59602.引腳功能介紹(1)與CPU的接口引腳DB0~DB7:數(shù)據(jù)總線(xiàn)、雙向、三態(tài),與單片機(jī)數(shù)據(jù)總線(xiàn)相連,在CPU和8279之間傳送命令或數(shù)據(jù)。CLK:系統(tǒng)時(shí)鐘,用于8279內(nèi)部定時(shí),以產(chǎn)生其工作所需的時(shí)序。RESET:高電平時(shí),8279被復(fù)位,復(fù)位后的狀態(tài)如下:*16個(gè)字符左邊輸入顯示方式*編碼掃描鍵盤(pán)、雙鍵鎖定方式CS*:片選61A0:=1,寫(xiě)入的是命令字節(jié);讀出的是狀態(tài)字節(jié)。=0,寫(xiě)入或讀出的字節(jié)均為數(shù)據(jù)。RD*、WR*:讀、寫(xiě)控制引腳IRQ:中斷請(qǐng)求線(xiàn)。在鍵盤(pán)方式中,當(dāng)鍵盤(pán)RAM(先進(jìn)先出)中存有按下鍵的數(shù)據(jù)時(shí),IRQ為高電平,向CPU提出中斷申請(qǐng)。
CPU每次從鍵盤(pán)RAM中讀出一個(gè)字節(jié)數(shù)據(jù)時(shí),IRQ就變?yōu)榈碗娖?。如果鍵盤(pán)RAM中還有未讀完的數(shù)據(jù),IRQ將再次變?yōu)楦唠娖?,再次提出中斷?qǐng)求。62SL0~SL3
掃描輸出。用來(lái)掃描鍵盤(pán)和顯示器??删幊淘O(shè)定為編碼輸出,即SL0~SL3需外接4-16譯碼器,輸出16取1的掃描信號(hào),也可編程設(shè)定為譯碼輸出,即由SL0~SL3直接輸出4取1的掃描信號(hào)。(2)掃描信號(hào)輸出引腳63(3)與鍵盤(pán)連接的引腳RL0~RL7鍵盤(pán)矩陣的行信號(hào)輸入線(xiàn)。SHIFT輸入線(xiàn),通常用作鍵盤(pán)上、下檔功能的控制鍵。CNTL/STB輸入線(xiàn),高電平有效。在鍵盤(pán)方式時(shí),通常用來(lái)作為鍵盤(pán)控制功能鍵使用。64(4)與顯示器連接的引腳OUTA0~OUTA3(A組顯示數(shù)據(jù))、OUTB0~OUTB3(B組顯示數(shù)據(jù)):向LED顯示器輸出的段碼,與掃描信號(hào)線(xiàn)SL0~SL3同步。兩組可獨(dú)立使用,也可合并使用。BD*:消隱顯示控制。653.8279的基本功能部件(1)掃描計(jì)數(shù)器編碼方式:掃描線(xiàn)SL0~SL3輸出,經(jīng)外部4-16譯碼器譯碼后,為鍵盤(pán)和顯示器提供16取1的掃描線(xiàn)。譯碼方式:計(jì)數(shù)器的最低二位在8279內(nèi)部譯碼后,從SL0~SL3輸出,為鍵盤(pán)和顯示器提供4取1掃描線(xiàn)。66D7D6D5D4D3D2D1D0CNTLSHIFT掃描回復(fù)(2)鍵盤(pán)去抖動(dòng)及回復(fù)緩沖器RL0~RL7被接到鍵盤(pán)的行線(xiàn)。在逐列掃描時(shí),當(dāng)某一鍵閉合,消抖電路延時(shí)等待10ms之后,再檢驗(yàn)該鍵是否仍閉合。若閉合,則該鍵的行、列地址和附加的移位、控制狀態(tài)一起形成鍵盤(pán)數(shù)據(jù),送入8279內(nèi)部的鍵盤(pán)RAM存儲(chǔ)器。格式為:
控制(CNTL)和移位(SHIFT)的狀態(tài)由兩個(gè)獨(dú)立的附加開(kāi)關(guān)決定,而掃描(D5、D4、D3)是被按鍵的列編碼,而回復(fù)(D2、D1、D0)則是被按鍵的行位置數(shù)據(jù)。67(3)鍵盤(pán)RAM及其狀態(tài)寄存器鍵盤(pán)RAM:8字節(jié)先進(jìn)先出(FIFO)存儲(chǔ)器。內(nèi)部的FIFO狀態(tài)寄存器存放FIFO的工作狀態(tài),如FIFO是空還是滿(mǎn),其中存有多少字符,是否操作出錯(cuò)等等。當(dāng)FIFO存儲(chǔ)器空間不足時(shí),狀態(tài)邏輯將產(chǎn)生IRQ=1信號(hào),向CPU發(fā)出中斷申請(qǐng)。(4)顯示RAM和顯示地址寄存器顯示RAM:存顯示數(shù)據(jù)。16個(gè)字節(jié),可存放16位顯示信息。顯示RAM的輸出與顯示掃描配合,同時(shí)輪流驅(qū)動(dòng)被選中的顯示位,使顯示器呈現(xiàn)穩(wěn)定的顯示(動(dòng)態(tài)掃描)。68狀態(tài)字:主要用于鍵盤(pán)工作方式,以指示鍵盤(pán)RAM中的字符數(shù)和有無(wú)錯(cuò)誤發(fā)生。4.8279的命令字和狀態(tài)字命令字:D7、D6、D5為命令特征位,來(lái)區(qū)分8條不同的命令字。695.8279與鍵盤(pán)/顯示器的接口圖10-20為8279與8位顯示器,4×8鍵盤(pán)的接口電路。行線(xiàn)接8279的RL0~RL3,8279選用外部譯碼方式,SL0~SL2經(jīng)74LS138(1)譯碼輸出,接列線(xiàn),實(shí)現(xiàn)鍵盤(pán)逐列掃描。SL0~SL2又由74LS138(2)譯碼輸出到顯示器各位的公共陰極,進(jìn)行逐位掃描顯示。OUTB0~3、OUTA0~3輸出8位段碼。當(dāng)位切換時(shí),BD*輸出為低電平,使74LS138(2)輸出全為高電平,顯示消隱。當(dāng)鍵盤(pán)上出現(xiàn)有效的閉合鍵時(shí),鍵輸入數(shù)據(jù)自動(dòng)進(jìn)入7071中斷讀取鍵盤(pán)RAM中的鍵輸入數(shù)據(jù)。若要更新顯示器輸出,僅需改變8279中顯示RAM中的內(nèi)容。8279的命令/狀態(tài)口地址為7FFFH,數(shù)據(jù)口地址為7FFEH。8279初始化程序:INITI:SETBEX1 ;允許外部中斷1中斷MOV DPTR,#7FFFH;命令/狀態(tài)口地址寫(xiě)入DPTRMOV A,#0D1H ;控制字D1H送AMOVX@DPTR,A ;向命令/狀態(tài)口寫(xiě)入控制字LP:MOVXA,@DPTR ;讀8279的狀態(tài)JB Acc.7,LPMOV A,#00HMOVX@DPTR,A8279的鍵盤(pán)RAM存儲(chǔ)器,并向8031請(qǐng)求中斷,8031響應(yīng)72MOVA,#2AHMOVX@DPTR,ASETBEA……鍵輸入中斷服務(wù)程序:PINT1:PUSHPSWPUSHDPHPUSHDPLPUSHAccMOVDPTR,#7FFFH;寫(xiě)入讀鍵盤(pán)RAM命令MOVA,#40HMOVX@DPTR,AMOVDPTR,#7FFEH;讀鍵輸入值MOVXA,@DPTRCJNEA,#37H,PRI1;判輸入停機(jī)命令否73SETB20HPRI1:POPAccPOPDPLPOPDPHPOPPSWRETI顯示子程序:DIR:MOVDPTR,#7FFFH;輸出寫(xiě)顯示RAM命令MOVA,#90HMOVX@DPTR,AMOVR0,#70HMOVR7,#08H ;送顯示RAM數(shù)據(jù)的個(gè)數(shù)MOVDPTR,#7FFEHDL0:MOVA,@R074ADDA,#05H ;05H為查表偏移量MOVCA,@A+PC ;查表得到段碼MOVX@DPTR,A ;寫(xiě)入顯示RAMINCR0 ;顯示數(shù)據(jù)單元地址增1DJNZR7,DL0 ;8個(gè)顯示數(shù)據(jù)是否輸出完畢RETADSEG:DB3FH,06H,5BH,4FH,66H,6DH;段碼表(共陰極)
DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHDB31H,6EH,1CH,23H,40H,03H DB18H,38H,00H7510.4MCS-51與液晶顯示器(LCD)的接口LCD(LiquidCrystalDisplay):液晶顯示器的縮寫(xiě),一種被動(dòng)式的顯示器,即液晶本身并不發(fā)光,而是經(jīng)液晶經(jīng)過(guò)處理后能改變光線(xiàn)通過(guò)方向的特性,而達(dá)到白底黑字或黑底白字顯示的目的。液晶顯示器具有功耗低、抗干擾能力強(qiáng)等優(yōu)點(diǎn),廣泛用在儀器儀表和控制系統(tǒng)中。10.4.1LCD顯示器的分類(lèi)按排列形狀分:字段型、點(diǎn)陣字符型和點(diǎn)陣圖形。(1)字段型廣泛用于電子表、數(shù)字儀表、計(jì)算器中。76(2)點(diǎn)陣字符型顯示字母、數(shù)字、符號(hào)。它是由5×7或5×10點(diǎn)陣組成,廣泛應(yīng)用在單片機(jī)應(yīng)用系統(tǒng)中。(3)點(diǎn)陣圖形型筆記本電腦和彩色電視等設(shè)備中。10.4.2點(diǎn)陣字符型液晶顯示模塊介紹點(diǎn)陣字符型LCD顯示器,需相應(yīng)的LCD控制器、驅(qū)動(dòng)器,來(lái)對(duì)LCD顯示器進(jìn)行掃描、驅(qū)動(dòng),以及一定空間的RAM和ROM來(lái)存儲(chǔ)寫(xiě)入的命令和顯示字符的點(diǎn)陣?,F(xiàn)在已將LCD控制器、驅(qū)動(dòng)器、RAM、ROM和LCD顯示器用PCB連接到一起,稱(chēng)為液晶顯示模塊LCM(LCdModule)。77用戶(hù)只向LCM送入相應(yīng)的命令和數(shù)據(jù)就可實(shí)現(xiàn)所需要的顯示內(nèi)容,與單片機(jī)接口簡(jiǎn)單,使用靈活方便。產(chǎn)品分為字符和圖形兩種。1.基本結(jié)構(gòu)(1)液晶板在液晶板上排列著若干5×7或5×10點(diǎn)陣的字符顯示位,從規(guī)格上分為每行8、16、20、24、32、40位,有一行、兩行及四行三類(lèi),用戶(hù)可根據(jù)需要,來(lái)選擇購(gòu)買(mǎi)。(2)模塊電路框圖由控制器HD44780、驅(qū)動(dòng)器HD44100及幾個(gè)電阻電容組成。HD44100是擴(kuò)展顯示字符位用的(例如:16字符×1行模塊就可不用HD44100,16字符×2行模塊就要用一片HD44100)。7879引線(xiàn)號(hào)符號(hào)名稱(chēng)功能1VSS地0V2VDD電源5V±5%3VEE液晶驅(qū)動(dòng)電壓4RS寄存器選擇1:數(shù)據(jù)寄存器;0:命令寄存器5R/W*讀/寫(xiě)1:讀;0:寫(xiě)6E使能下降沿觸發(fā)7~14DB0~DB78位數(shù)據(jù)線(xiàn)數(shù)據(jù)傳輸液晶顯示模塊的引腳模塊14個(gè)引腳,其中有8條數(shù)據(jù)線(xiàn),3條控制線(xiàn),3條電源線(xiàn),見(jiàn)表10-2。通過(guò)單片機(jī)寫(xiě)入模塊的數(shù)據(jù)和指令,就可對(duì)顯示方式和顯示內(nèi)容作出選擇。80RSR/W*操作00命令寄存器寫(xiě)入01忙標(biāo)志和地址計(jì)數(shù)器讀出10數(shù)據(jù)寄存器寫(xiě)入11數(shù)據(jù)寄存器讀出寄存器的選擇命令格式及命令功能說(shuō)明
(1)命令格式控制器HD44780內(nèi)有多個(gè)寄存器,如表10-3所示。81RS位和R/W*引腳上的電平來(lái)選擇寄存器,而DB7~DB0則決定命令功能。命令共11種:清除,返回,輸入方式設(shè)置,顯示開(kāi)關(guān)控制,移位控制,功能設(shè)置,CGRAM(字符生成RAM)地址設(shè)置,DDRAM(顯示數(shù)據(jù)RAM)地址設(shè)置,讀忙標(biāo)志和地址,寫(xiě)數(shù)據(jù)到CGRAM或DDRAM,從CGRAM或DDRAM讀數(shù)據(jù)。這些命令功能強(qiáng):可組合成各種輸入、顯示、移位方式以滿(mǎn)足不同的要求。82838485(2)標(biāo)準(zhǔn)字符庫(kù)字符庫(kù)的內(nèi)容、字符碼和字型的對(duì)應(yīng)關(guān)系。例如“A”的字符碼為41H,“B”的字符碼為42H。868710.4.38031與LCD的接口及軟件編程1.8031與LCD模塊的接口接口電路見(jiàn)圖10-24。將LCM掛接在8031的總線(xiàn)上,通過(guò)對(duì)數(shù)據(jù)總線(xiàn)的讀寫(xiě)實(shí)現(xiàn)對(duì)LCM的控制。881.軟件編程初始化用戶(hù)所編的顯示程序,開(kāi)始必須進(jìn)行初始化,否則模塊無(wú)法正常顯示。顯示程序編寫(xiě)8910.5MCS-51與微型打印機(jī)的接口內(nèi)部有一個(gè)控制用單片機(jī),固化有控打程序,智能化程度高。常用的微型打印機(jī):TPμP-40A/16A、GP16以及XLF嵌入儀器面板上的漢字微型打印機(jī)。10.5.1MCS-51與TPμP-40A/16A微型打印機(jī)的接口1.TPμP-40A/16A微型打印機(jī)單片機(jī)控制的微型智能打印機(jī)。TPμP-40A與TPμP-16A的接口信號(hào)與時(shí)序完全相同,操作方式相近,硬件電路及插腳完全兼容,只是指令代碼不完全相同。TPμP-40A每行打印40個(gè)字符,TPμP-16A則每行打印16個(gè)字符。902.主要性能、接口要求及時(shí)序(1)TPμP-40A主要技術(shù)性能單片機(jī)控制,2KB控打程序及標(biāo)準(zhǔn)的Centronics并行接口。可打印全部ASCII代碼字符及128個(gè)非標(biāo)準(zhǔn)字符和圖符。16個(gè)代碼字符(6×7點(diǎn)陣)由用戶(hù)定義。可打印出8×240點(diǎn)陣的圖樣(漢字或圖案點(diǎn)陣)。字符、圖符和點(diǎn)陣圖可在寬和高的方向放大為×2、×3、×4倍。每行字符的點(diǎn)行數(shù)(包括字符的行間距)可用命令更換。即字符行間距空點(diǎn)行在0~256間任選。912.接口信號(hào)采用國(guó)際上流行的Centronics打印機(jī)并行接口,與單片機(jī)間是通過(guò)一條20芯扁平電纜及接插件相連。打印機(jī)有一個(gè)20線(xiàn)扁平插座,信號(hào)引腳排列如圖10-26所示。引腳介紹:DB0~DB7:數(shù)據(jù)線(xiàn),單向傳輸,由單片機(jī)輸入給打印機(jī)。STB*:數(shù)據(jù)選通信號(hào)。在該信號(hào)的上升沿時(shí),數(shù)據(jù)線(xiàn)上的8位并行數(shù)據(jù)被打印機(jī)讀入機(jī)內(nèi)鎖存。9293BUSY:打印機(jī)“忙”狀態(tài)信號(hào)。當(dāng)該信號(hào)有效(高電平)時(shí),表示打印機(jī)正忙。此時(shí),單片機(jī)不得向打印機(jī)送入新的數(shù)據(jù)。ACK*:打印機(jī)的應(yīng)答信號(hào)。低電平有效,表明打印機(jī)已取走數(shù)據(jù)線(xiàn)上的數(shù)據(jù)。ERR*:“出錯(cuò)”信號(hào)。當(dāng)送入打印機(jī)的命令格式出錯(cuò)時(shí),打印機(jī)立即打印一行出錯(cuò)信息,提示出錯(cuò)。在打印出錯(cuò)信息之前,該信號(hào)線(xiàn)出現(xiàn)一個(gè)負(fù)脈沖,脈沖寬度為30μs。3.接口信號(hào)時(shí)序接口信號(hào)時(shí)序如圖10-27所示。9495選通信號(hào)STB*寬度需大于0.5μs。應(yīng)答信號(hào)ACK*可與STB*信號(hào)作為一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào),也可與BUSY作為一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào)。2.字符代碼及打印命令寫(xiě)入的全部代碼共256個(gè),其中00H無(wú)效。代碼:01H~0FH為打印命令;代碼:10H~1FH為用戶(hù)自定義代碼;代碼:20H~7FH為標(biāo)準(zhǔn)ASCII代碼;代碼:80H~FFH為非ASCII代碼,如圖10-28所示。其中包括少量漢字、希臘字母、塊圖圖符和一些特殊字符。96973.TPμP-40A/16A與MCS-51單片機(jī)接口設(shè)計(jì)TPμP-40A/16A內(nèi)部控制電路由單片機(jī)構(gòu)成,在輸入電路中有鎖存器,在輸出電路中有三態(tài)門(mén)控制。因此可直接與單片機(jī)相接。TPμP-40A/16A只有握手線(xiàn)STB*、BUSY(或ACK*),接口電路如圖10-29所示。圖10-30:并行I/O口連接的打印機(jī)接口電路。圖中的擴(kuò)展I/O口為8255A的PA口,采用查詢(xún)法,即通過(guò)讀8255A的PC0腳的狀態(tài)來(lái)判斷送給打印機(jī)的一個(gè)字節(jié)的數(shù)據(jù)是否處理完畢。也可用中斷法(BUSY直接與單片機(jī)的P3.3腳相連)。9899100例把MCS-51單片機(jī)內(nèi)部RAM3FH~4FH單元中的ASCII碼數(shù)據(jù)送到打印機(jī)。8255A設(shè)置為方式0,即端口A與端口C的上半部為輸出方式。端口C的下半部為輸入方式。打印程序如下:PRINT: MOVR0,#7FH ;控制口地址→R0MOVA,#81H ;8255A控制字→AMOVX@R0,A ;控制字→控制口MOVR1,#3FH ;數(shù)據(jù)區(qū)首地址→R1MOVR2,#0FH;打印數(shù)據(jù)個(gè)數(shù)的計(jì)數(shù)LOOP: MOVA,@R1 ;打印數(shù)據(jù)單元內(nèi)容→AINCR1 ;指向下一個(gè)數(shù)據(jù)單元MOVR0,#7CH;8255A的端口A地址→R0
MOVX@R0,A;打印數(shù)據(jù)送8255A的口A并鎖存101MOVR0,#7FH ;8255A的控制口地址→R0MOVA,#0EH ;PC7的復(fù)位控制字→AMOVX@R0,A ;PC7=0MOVA,#0FH ;PC7的置位控制字→AMOVX@R0,A ;PC7由0變1LOOP1:MOVR0,#7EH ;口C地址→R0MOVXA,@R0 ;讀入C口的值A(chǔ)NLA,#01H ;屏蔽C口的高7位,只留PC0位JNZLOOP1 ;查詢(xún)BUSY的狀態(tài),如為1跳LOOP1DJNZR2,LOOP ;未打完,循環(huán)102IO0~I(xiàn)O7:雙向三態(tài)數(shù)據(jù)總線(xiàn),是CPU與GP16打印機(jī)之間命令、狀態(tài)和數(shù)據(jù)信息傳輸線(xiàn)。CS*:設(shè)備選擇線(xiàn)。RD*、WR*:讀、寫(xiě)信號(hào)線(xiàn)。BUSY:打印機(jī)狀態(tài)輸出,高電平表示GP16處于忙狀態(tài),可供CPU查詢(xún)或作中斷請(qǐng)求線(xiàn)。GP16控制器具有數(shù)據(jù)鎖存器,與單片機(jī)接口十分方便。10.5.2MCS-51與GP16微型打印機(jī)的接口1.GP16微型打印機(jī)的接口信號(hào)控制器為8031單片機(jī)。接口信號(hào)如下:1031.打印命令及打印方式GP16的打印命令占兩個(gè)字節(jié),其格式如下:第一個(gè)字節(jié)
D7-----D4D3-----D0操作碼點(diǎn)行數(shù)n第二個(gè)字節(jié)
D7------------------D0打印行數(shù)NNGP16為微型針打,字符本身占據(jù)7個(gè)點(diǎn)行。命令字中的點(diǎn)行數(shù)n是選擇字符行之間的行距的參數(shù),若n=10,則行距為3個(gè)點(diǎn)行數(shù),應(yīng)大于或等于8。打印行數(shù)是執(zhí)行本條命令時(shí)打?。ɑ蚩兆呒垼┑淖址袛?shù)。104D7D6D5D4 命令功能1000 空走紙1001 打印字符串1010 十六進(jìn)制數(shù)據(jù)打印1011 圖形打印3.MCS-51單片機(jī)和GP16的接口GP16內(nèi)部有三態(tài)鎖存器,能鎖存數(shù)據(jù)總線(xiàn)上的數(shù)據(jù),,故GP16可以直接與MCS-51數(shù)據(jù)總線(xiàn)相連而不須外加鎖存器。圖10-32為GP16與8031數(shù)據(jù)總線(xiàn)口相連的接口電路。GP16的命令編碼如下表。105106圖中BUSY接(P3.3),直接可用于中斷方式。如要以查詢(xún)方式工作時(shí),BUSY可以不連接,通過(guò)查詢(xún)狀態(tài)字來(lái)獲取BUSY的狀態(tài)。如果使用其它I/O或擴(kuò)展I/O口,只須將P0口線(xiàn)換成其他I/O或擴(kuò)展I/O口即可。按照?qǐng)D10-32的連接,GP16的打印機(jī)地址為7FFFH,讀取GP16狀態(tài)字
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度在線(xiàn)教育平臺(tái)股東股份轉(zhuǎn)讓及教育資源整合合同3篇
- 2025年度年度公司終止職工勞動(dòng)合同解除與就業(yè)援助合同3篇
- 二零二五年度農(nóng)村住房租賃市場(chǎng)租賃合同續(xù)租合同
- 二零二五年度特色餐飲酒水定制供應(yīng)與品牌授權(quán)合同3篇
- 二零二五年度冷鏈物流中心冷庫(kù)建造及設(shè)備安裝合同
- 2025年學(xué)校食堂豬肉供應(yīng)與配送保障合同3篇
- 2024年中國(guó)電動(dòng)機(jī)油/齒輪油加油器市場(chǎng)調(diào)查研究報(bào)告
- 2024年河北北方學(xué)院附屬第三醫(yī)院張家口市建國(guó)醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2025年度智能音響產(chǎn)品銷(xiāo)售協(xié)議范本3篇
- 2024年中國(guó)汽車(chē)內(nèi)飾件真空成型機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 空氣動(dòng)力學(xué)仿真技術(shù):湍流模型:k-ε湍流模型原理與應(yīng)用
- 高中期末考試考風(fēng)考紀(jì)及誠(chéng)信教育
- 2025屆廣東省深圳市深圳外國(guó)語(yǔ)九年級(jí)物理第一學(xué)期期末經(jīng)典試題含解析
- 機(jī)械工程技術(shù)訓(xùn)練智慧樹(shù)知到期末考試答案章節(jié)答案2024年北京航空航天大學(xué)
- 人工智能導(dǎo)論智慧樹(shù)知到期末考試答案章節(jié)答案2024年哈爾濱工程大學(xué)
- 醫(yī)生與患者關(guān)系中的信任與治療
- 心衰患者的容量管理中國(guó)專(zhuān)家共識(shí)-共識(shí)解讀
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末考試數(shù)學(xué)試題(解析版)
- 文字學(xué)概要完整版本
- ce自我聲明模板
- 鋼閘門(mén)監(jiān)理評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論