版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第0808章章 單片機(jī)應(yīng)用系統(tǒng)中的按鍵與顯示單片機(jī)應(yīng)用系統(tǒng)中的按鍵與顯示8.1 按鍵的抖動(dòng)8.2 獨(dú)立式按鍵8.3 矩陣式鍵盤(pán)8.3.1 查詢掃描8.3.2 中斷掃描8.4 發(fā)光二極管8.5 LED數(shù)碼管8.5.1 LED數(shù)碼管靜態(tài)顯示8.5.2 LED數(shù)碼管動(dòng)態(tài)顯示8.6 液晶顯示8.6.1 LCD1602液晶顯示模塊8.6.2 LCD1602應(yīng)用舉例8.7全自動(dòng)洗衣機(jī)洗衣流程Proteus仿真按鍵的分類編碼鍵盤(pán) 鍵盤(pán)上閉合鍵的識(shí)別由專用的硬件編碼器實(shí)現(xiàn),并產(chǎn)生鍵編碼號(hào)或鍵值的稱為編碼鍵盤(pán),如計(jì)算機(jī)鍵盤(pán)。非編碼鍵盤(pán) 靠軟件編程來(lái)識(shí)別的稱為非編碼鍵盤(pán)。 在單片機(jī)組成的各種系統(tǒng)中,用的最多的是
2、非編碼鍵盤(pán)。例如在洗衣機(jī)控制面板上,用非編碼按鍵來(lái)設(shè)置洗衣機(jī)的功能。8.1 按鍵的抖動(dòng) 圖圖7-1 7-1 按鍵與單片機(jī)的連接按鍵與單片機(jī)的連接 圖圖7-2 7-2 按鍵的抖動(dòng)過(guò)程按鍵的抖動(dòng)過(guò)程鍵盤(pán)的抖動(dòng)時(shí)間一般為510ms,抖動(dòng)現(xiàn)象會(huì)引起CPU對(duì)一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤!消除抖動(dòng)的方法: 硬件去抖動(dòng) 采用RS觸發(fā)器去抖動(dòng)。 軟件去抖動(dòng) 檢測(cè)到按鍵按下后,軟件延時(shí)1020ms后再確認(rèn)該鍵是否確實(shí)按下,消除抖動(dòng)影響。8.2 獨(dú)立式按鍵特點(diǎn): 1)各按鍵相互獨(dú)立,電路配置靈活; 2)軟件簡(jiǎn)單; 3)按鍵數(shù)量較多時(shí),I/O線耗費(fèi)較多,只適用于按鍵數(shù)量較少的場(chǎng)合。獨(dú)立式按鍵掃描匯編語(yǔ)言
3、程序如下:START: MOV P1,#0FFH ;置P1.0P1.2為輸入狀態(tài) MOV A,P1 ;讀鍵值,鍵閉合相應(yīng)位為0 CPL A ;取反,鍵閉合相應(yīng)位為1 JZ START ;全0,無(wú)鍵閉合,返回 LCALL DY10ms ;非全0,有鍵閉合,延時(shí)10ms,軟件去抖動(dòng) MOV A,P1 ;重讀鍵值,鍵閉合相應(yīng)位為0 CPL A ;取反,鍵閉合相應(yīng)位為1 JZ START ;全0,無(wú)鍵閉合,返回;非全0,確認(rèn)有鍵閉合 JB ACC.0,KA0 ;K0鍵閉合,轉(zhuǎn)K0鍵功能程序 JB ACC.1,KA1 ;K1鍵閉合,轉(zhuǎn)K1鍵功能程序 JB ACC.2,KA2 ;K2鍵閉合,轉(zhuǎn)K2鍵功能程
4、序 SJMP START ;查詢結(jié)束,重新開(kāi)始KA0: LCALL WORK0 ;執(zhí)行K0鍵功能子程序 SJMP START ;返回主程序 KA1: LCALL WORK1 ;執(zhí)行K1鍵功能子程序 SJMP START ;返回主程序KA2: LCALL WORK2 ;執(zhí)行K2鍵功能子程序 SJMP START ;返回主程序8.3 矩陣式鍵盤(pán)特點(diǎn):占用I/O線較少,適合按鍵數(shù)目較多的場(chǎng)合, 但軟件較復(fù)雜。常用的鍵盤(pán)工作方式有查詢方式和中斷方式。0 01 12 23 30 01 12 23 38.3.1 查詢方式鍵盤(pán)掃描過(guò)程包括下列四個(gè)步驟(以圖7-5為例): 判別鍵盤(pán)上有無(wú)按鍵按下。方法為列線(
5、P1.4P1.7)置低電平,行線(P1.0P1.3)置輸入狀態(tài)(高電平“1”)。讀行線的狀態(tài),若為全“1”,則鍵盤(pán)無(wú)按鍵按下;若不全為“1”,則有按鍵按下。 去除按鍵的抖動(dòng)影響。方法是當(dāng)判別到有按鍵按下時(shí),軟件延時(shí) 一段時(shí)間(一般為10 ms左右)后,再判斷鍵盤(pán)狀態(tài),如果仍為有按鍵按下?tīng)顟B(tài),則認(rèn)為有一個(gè)確定的按鍵被按下。 求鍵值(鍵號(hào))。按照?qǐng)D7-5中的16個(gè)按鍵,每行的行號(hào)依次為:0、1、2、3,列號(hào)依次為0、1、2、3,則閉合按鍵的鍵號(hào)可以 用公式計(jì)算獲得:鍵號(hào)=行號(hào)4+列號(hào)。 判斷按鍵是否釋放,按鍵閉合一次僅進(jìn)行一次按鍵功能操作,等按 鍵釋放以后再將鍵號(hào)送入累加器A中,然后執(zhí)行按鍵指定的
6、功能操 作。實(shí)時(shí)查詢實(shí)時(shí)查詢定時(shí)查詢定時(shí)查詢8.3.1 查詢方式開(kāi)始行線輸出高,準(zhǔn)備輸入,列線輸出低讀入行線信號(hào),是否都為1?有按鍵按下,獲取行號(hào),開(kāi)始列掃描YNP1=(00001111)B=0FH=0 x0f判斷P1的低四位是否全為1P1的低四位不全為0,則對(duì)應(yīng)行線上有按鍵按下,開(kāi)始掃描列線,判斷按鍵所在列列掃描方式8.3.1 查詢方式列掃描其中列線置為0,其余置為高獲取按鍵所在列線號(hào),計(jì)算鍵值,確定按鍵P1=(11101111)B=EFH=0 xEFR4=0;將獲取的按鍵所在行、列鍵值合并為8位數(shù)據(jù),作為按鍵鍵值,通過(guò)該鍵值查找對(duì)應(yīng)按鍵讀入行線輸入信號(hào),判斷是否全為1?P1的行輸入是否都為
7、1,若都為1,表示按鍵不在所在置零的列,則將下一列線置零,再進(jìn)行判斷,直到P1輸入不全為1,則按鍵所在列在置零列線YN列掃描方式匯編語(yǔ)言參考程序如下:MAIN: LCALL RDKEY ;調(diào)用鍵盤(pán)掃描子程序 LCALL SHOW ;調(diào)用功能處理子程序 AJMP MAIN ;返回主程序,重新掃描RDKEY: MOV P1,#0FH ;列線置低電平,行線置輸入態(tài) MOV A,P1 ;從鍵盤(pán)讀取的新?tīng)顟B(tài) ANL A,#0FH ;屏蔽列線,保留行線數(shù)據(jù) CJNE A,#0FH,XIAODOU ;有鍵閉合,轉(zhuǎn)消抖 AJMP RDEND ;無(wú)鍵閉合,直接返回XIAODOU:LCALL DELAY10ms
8、;調(diào)用延時(shí)程序,去消抖 MOV P1,#0FH ;列線置低電平,行線置輸入態(tài) MOV A,P1 ;從鍵盤(pán)讀取的新?tīng)顟B(tài) ANL A,#0FH ;屏蔽列線,保留行線數(shù)據(jù) CJNE A,#0FH,SCAN ;仍有鍵閉合,轉(zhuǎn)掃描 AJMP RDEND ;是抖動(dòng),直接返回SCAN: MOV R4,#00H ;鍵值初始化LINE1: MOV P1,#0EFH ;掃描第一列 MOV A,P1 ;讀當(dāng)前按鍵狀態(tài) ANL A,#0FH ;屏蔽列線,保留行線數(shù)據(jù) CJNE A,#0FH,GKEY ;若在此列,轉(zhuǎn)GKEY子程序,判斷行值 INC R4 ;不是第一列,鍵值+1LINE2: MOV P1,#0DFH ;
9、掃描第二列 MOV A,P1 ;讀當(dāng)前按鍵狀態(tài) ANL A,#0FH ;屏蔽列線,保留行線數(shù) CJNE A,#0FH,GKEY ;若在此列,轉(zhuǎn)GKEY子程序,判斷行值 INC R4 ;不是第二列,鍵值繼續(xù)+1LINE3: MOV P1,#0BFH ;掃描第三列 MOV A,P1 ;讀當(dāng)前按鍵狀態(tài) ANL A,#0FH ;屏蔽列線,保留行線數(shù)據(jù) CJNE A,#0FH,GKEY ;若在此列,轉(zhuǎn)GKEY子程序,判斷行值 INC R4 ;不是第三列,鍵值繼續(xù)+1LINE4: MOV P1,#7FH ;掃描第四列 MOV A,P1 ;讀當(dāng)前按鍵狀態(tài) ANL A,#0FH ;屏蔽列線,保留行線數(shù)據(jù) CJ
10、NE A,#0FH,GKEY ;若在此列,轉(zhuǎn)GKEY子程序,判斷行值 AJMP MAIN ;返回繼續(xù)掃描GKEY: JNB ACC.0,NEXT ;判斷行值 RR A ;逐行判斷 INC R4 ;R4+1 INC R4 ;R4+1 INC R4 ;R4+1 INC R4 ;R4+1,前4句指令相當(dāng)于鍵值+4 AJMP GKEY ;返回下一行判斷 NEXT: MOV A,R4 ;鍵值從R4中取出 MOV 30H,A ;把鍵值暫時(shí)存放在30H單元中RDEND: RET ;鍵盤(pán)掃描子程序返回 SHOW: ;根據(jù)鍵值,轉(zhuǎn)入相應(yīng)功能處理子程序(略) RET ;功能處理子程序返回8.3.1 查詢方式開(kāi)始行
11、線輸出高,準(zhǔn)備輸入,列線輸出低讀入行線信號(hào),是否都為1?有按鍵按下,獲取行號(hào),開(kāi)始列掃描YNP1=(00001111)B=0FH=0 x0f判斷P1的低四位是否全為1P1的低四位不全為0,則對(duì)應(yīng)行線上有按鍵按下,獲取行值:P1&0 x0f;開(kāi)始掃描列線,判斷按鍵所在列行列反轉(zhuǎn)方式8.3.1 查詢方式列掃描行線輸出0,列線輸出高,準(zhǔn)備輸入獲取按鍵所在列線號(hào),計(jì)算鍵值,確定按鍵P1=(11110000)B=F0H=0 xf0P1&0 xf0;將獲取的按鍵所在行、列鍵值合并為8位數(shù)據(jù),作為按鍵鍵值,通過(guò)該鍵值查找對(duì)應(yīng)按鍵讀入列線輸入信號(hào)行列反轉(zhuǎn)方式8.3.1 查詢方式uchar rd
12、key() /鍵盤(pán)掃描函數(shù) uchar scan1,scan2,keycode,j; /定義無(wú)符號(hào)字符型變量 scan1,scan2,keycode,j P2=0 x0f; /列線置低電平,行線輸入狀態(tài) scan1=P2; /讀入行值 if(scan1&0 x0f)!=0 x0f) /判斷是否有按鍵按下 delayms(30); /調(diào)用延時(shí)程序去抖動(dòng) scan1=P2; /讀入行值8.3.1 查詢方式/讀入行值 if(scan1&0 x0f)!=0 x0f) /二次判斷是否有按鍵按下 P2=0 xf0; /列線作輸入,行線置低電平 scan2=P2; /讀入列值 keycode
13、=scan1|scan2; /組合成鍵編碼 for(j=0;j=15;j+) /循環(huán)16次 if(keycode= key_codej) /查表得鍵值 key=j; /算出最后鍵值 return(key); /返回鍵值 else P2=0 xff; /P2口初始化 return (16);8.3.2 中斷掃描 當(dāng)鍵盤(pán)上有按鍵閉合時(shí)產(chǎn)生中斷請(qǐng)求,單片機(jī)響應(yīng)中斷請(qǐng)求后,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,在中斷服務(wù)程序中判斷鍵盤(pán)中閉合按鍵的鍵號(hào),并做相應(yīng)的處理。特點(diǎn):提高了單片機(jī)的工作效率。特點(diǎn):提高了單片機(jī)的工作效率。匯編語(yǔ)言參考程序:ORG 0000H ;在0000H單元存放轉(zhuǎn)移指令 AJMP START
14、;轉(zhuǎn)移到主程序ORG 0003H ;外部中斷0入口地址 AJMP PINT0 ;轉(zhuǎn)移到中斷服務(wù)程序 ORG 0100H ;主程序從0100H開(kāi)始START: MOV SP,#60H ;重置堆棧 SETB IT0 ;設(shè)定為邊沿觸發(fā)方式 MOV IP,#01H ;置外部中斷0為高優(yōu)先級(jí)中斷 MOV P1,#0FH ;置行線為輸入態(tài)“1”,置列線輸出“0” SETB EA ;開(kāi)CPU中斷 SETB EX0 ;開(kāi)外部中斷0 SJMP $ ;等待中斷(有鍵按下)ORG 0200H ;中斷服務(wù)程序首地址PINT0: PUSH ACC ;將A的值暫存于堆棧 PUSH PSW ;將PSW的值暫存于堆棧 ;鍵盤(pán)
15、掃描程序(略) POP PSW ;從堆棧取回PSW的值 POP ACC ;從堆棧取回A的值 RETI ;中斷返回8.4 發(fā)光二極管 (常用來(lái)顯示設(shè)備的運(yùn)行狀態(tài)) 發(fā)光二極管(Light Emitting Diode,LED)與普通的二極管一樣由一個(gè)PN結(jié)組成。當(dāng)正向連接時(shí),即P接正極、N接負(fù)極時(shí)二極管導(dǎo)通;反之,二極管截止。這就是二極管的單向?qū)щ娞匦?。?dǎo)通時(shí),若有足夠的正向電流通過(guò)發(fā)光二極管,發(fā)光二極管便會(huì)發(fā)光。 根據(jù)制造材料的不同可以發(fā)出紅、黃、綠、白等不同色彩的可見(jiàn)光來(lái)。八只發(fā)光二極管組成的驅(qū)動(dòng)電路匯編語(yǔ)言參考程序:(循環(huán)左右移動(dòng))MAIN: MOV R1,#07H ;8只二極管,循環(huán)7次
16、 MOV A,#0FEH ;點(diǎn)亮第一只二極管 LOOP1: MOV P2,A ;送入P2口顯示 LCALL DELAY ;調(diào)用延時(shí)子程序 RL A ;循環(huán)左移 DJNZ R1,LOOP1 ;未顯示到最高位,繼續(xù) MOV R1,#07H ;重新設(shè)置循環(huán)次數(shù) LOOP2: MOV P2,A ;從最高位開(kāi)始向最低位顯示 LCALL DELAY ;調(diào)用延時(shí)子程序 RR A ;循環(huán)右移 DJNZ R1,LOOP2 ;未顯示到最低位,繼續(xù) MOV R1,#07H ;重新設(shè)置循環(huán)次數(shù) LJMP LOOP1 ;返回重新顯示 DELAY: ;延時(shí)子程序(略) RET ;子程序返回8.5 LED數(shù)碼管 (可以顯示
17、各種數(shù)字和字符) 常用的LED數(shù)碼管是七段LED數(shù)碼管,由八個(gè)發(fā)光二極管組成。LED數(shù)碼管分為共陰極和共陽(yáng)極兩種。 為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段。因此為L(zhǎng)ED顯示器提供的編碼正好是一個(gè)字節(jié),通常稱為段選碼(顯示代碼)。段選碼與數(shù)據(jù)位的對(duì)應(yīng)關(guān)系如下:圖圖7-10 數(shù)碼管顯示字段排列順序數(shù)碼管顯示字段排列順序LED數(shù)碼管工作原理數(shù)碼管工作原理最低位最高位LED數(shù)碼管顯示段碼表8.5.1 LED數(shù)碼管靜態(tài)顯示所謂靜態(tài)顯示,是指數(shù)碼管顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止,公共端恒定接地(共陰極)或接正電源(共陽(yáng)極)。優(yōu)點(diǎn):顯示控制程序簡(jiǎn)
18、單,顯示亮度大,占用CPU時(shí)間少,顯示穩(wěn)定可靠。:靜態(tài)顯示占用的I/O口線較多,或者需要增加額外的硬件電路,硬件成本較高。 1位靜態(tài)顯示電路如下:匯編語(yǔ)言參考程序(循環(huán)顯示數(shù)字09)LOOP: MOV TIME,#00H ;顯示內(nèi)容初始值為0 MOV R1, #0AH ;循環(huán)顯示10次LOOP0: MOV A, TIME ;顯示內(nèi)容存入A中 MOV DPTR, #TAB ;置共陽(yáng)字段碼表首址 MOVC A,A+DPTR ;查段碼表 MOV P1, A ;送P1口顯示 LCALL DELAY1s ;延時(shí)1秒 MOV A,TIME ;顯示內(nèi)容暫存于A中 INC A ;顯示內(nèi)容加1 MOV TIME
19、,A ;返回變量TIME DJNZ R1, LOOP0 ;判斷循環(huán)是否結(jié)束 AJMP LOOP ;跳轉(zhuǎn)到LOOPDELAY1s: ;1S延時(shí)程序(略) RET ;子程序返回TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;段碼表 ; 0 1 2 3 4 5 6 7 對(duì)應(yīng)內(nèi)容 DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ; 8 9 A B C D E F三位LED數(shù)碼管靜態(tài)顯示電路74LS377為八位鎖存器,用于鎖存顯示代碼。設(shè)在內(nèi)部RAM30H單元中存儲(chǔ)一個(gè)十進(jìn)制數(shù)D(D255)。編寫(xiě)程序?qū)⒃摂?shù)的百分位顯示在左邊的數(shù)碼管上
20、,十分位顯示在中間的數(shù)碼管上,個(gè)分位顯示在右邊的數(shù)碼管上。匯編語(yǔ)言參考程序:MAIN: MOV DPTR,#TAB ;置共陽(yáng)字段碼表首址 MOV A,30H ;讀顯示數(shù) MOV B,#100 ;置除數(shù) DIV AB ;產(chǎn)生百位顯示數(shù)字 MOVC A,A+DPTR ;查表獲得百位顯示代碼 MOV DPTR,#0DFFFH ;百位74LS377地址 MOVX DPTR,A ;輸出百位顯示代碼 MOV A,B ;讀余數(shù) MOV B,#10 ;置除數(shù) DIV AB ;產(chǎn)生十位顯示數(shù)字 MOV DPTR,#TAB ;置共陽(yáng)字段碼表首址 MOVC A,A+DPTR ;查表獲得十位顯示代碼 MOV DPTR
21、,#0BFFFH ;置十位74LS377地址 MOVX DPTR,A ;輸出十位顯示代碼 MOV A,B ;讀個(gè)位顯示數(shù)字 MOV DPTR,#TAB ;置共陽(yáng)字段碼表首址 MOVC A,A+DPTR ;查表獲得個(gè)位顯示代碼 MOV DPTR,#7FFFH ;置個(gè)位74LS377地址 MOVX DPTR,A ;輸出個(gè)位顯示代碼 SJMP MAIN ;返回,循環(huán)顯示TAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;共陽(yáng)字段碼表 DB 92H,82H,0F8H,80H,90H8.5.2 LED數(shù)碼管動(dòng)態(tài)顯示 動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼
22、管有效。動(dòng)態(tài)顯示實(shí)際上是逐個(gè)地循環(huán)點(diǎn)亮各個(gè)數(shù)碼管,但由于LED具有余輝特性以及人眼也有視覺(jué)暫留特性,使人看起來(lái)就好像在同時(shí)顯示不同的字符一樣。優(yōu)點(diǎn)優(yōu)點(diǎn):簡(jiǎn)化硬件線路。 缺點(diǎn)缺點(diǎn):比靜態(tài)顯示要暗一點(diǎn),消耗單片機(jī)較多的運(yùn)行 時(shí)間。LED數(shù)碼管動(dòng)態(tài)顯示電路首先掃描該位匯編語(yǔ)言參考程序如下(動(dòng)態(tài)顯示01234567)START: MOV SP,#60H ;重置堆棧 MOV R2,#7FH ;顯示位初始值,循環(huán)后從最低位開(kāi)始顯示 MOV R1,#0FFH ;顯示初值=FFH,加1后位0,從0開(kāi)始顯示 MOV R0,#08H ;顯示8位MAIN: MOV A,R2 ;讀取顯示位選碼 RL A ;左移顯示位
23、選碼 MOV R2,A ;放回顯示位選碼 MOV P2,A ;在P2口輸出顯示位 MOV A,R1 ;讀取顯示值 INC A ;顯示值加1 MOV R1,A ;放回顯示值 MOV DPTR,#TAB ;置共陰字段碼表首址 MOVC A,A+DPTR ;查段碼表 MOV P0,A ;在P0口輸出顯示代碼 LCALL DELAY ;調(diào)用延時(shí) DJNZ R0,MAIN ;判斷顯示位是否移到最高位 AJMP START DELAY : ; 延時(shí)子程序 RET ;子程序返回TAB: ;共陰段碼表 8.6 液晶顯示 液晶顯示(Liquid Crystal Display,LCD)是一種體積小、重量輕、功耗
24、低的顯示器件,被廣泛應(yīng)用于儀器儀表顯示。段型:像七段LED一樣,顯示內(nèi)容由顯示段組成,其顯示方式和接口形式與七段LED數(shù)碼管相似。主要用于批量大、顯示內(nèi)容固定的產(chǎn)品。字符型:主要由LCD控制器、LCD驅(qū)動(dòng)器和LCD顯示器三部分組成,常將他們稱為液晶顯示模塊。他們一般都自帶ASCII碼點(diǎn)陣字庫(kù),顯示時(shí)只需提供顯示字符的ASCII代碼即可,硬件接口和軟件編程都很簡(jiǎn)單。:點(diǎn)陣信息的組合顯示指定內(nèi)容。更加靈活方便,可顯示字符、漢字、圖形等內(nèi)容,但控制也較為復(fù)雜,一般用于圖像顯示場(chǎng)合。8.6.1 LCD1602液晶顯示模塊LCD1602模塊采用16引腳封裝引腳符號(hào)功能01VSS接地引腳02VDD接+5V
25、電源03VL對(duì)比度調(diào)整端。驅(qū)動(dòng)電源(0V5V),接地時(shí)對(duì)比度最高。04RS0選指令寄存器IR,1選數(shù)據(jù)寄存器DR05R/W0寫(xiě)操作,1讀操作06E下降沿使能有效07-14D0-D78位雙向數(shù)據(jù)總線,4位傳送時(shí)使用高4位15BLA背光正極16BLK背光負(fù)極HD44780工作原理字符發(fā)生器CGROM存儲(chǔ)了不同的點(diǎn)陣字符圖形。包括數(shù)字、大小寫(xiě)英文字母、常用的符號(hào)和日文字符等。每一個(gè)字符都有一個(gè)固定的代碼,如表所示。 DDRAM有80個(gè)單元,但第1行僅用00H0FH單元,第2行僅用40H4FH單元。如上圖所示。DDRAM單元存放的是要顯示字符的ASCII編碼,控制器以該編碼為索引,到CGROM或CGR
26、AM中取點(diǎn)陣字形送液晶板顯示。LCD1602的操作命令LCD1602的操作命令(1)命令1:清屏。光標(biāo)回到屏幕左上角,地址計(jì)數(shù)器設(shè)置為0。命令2:光標(biāo)歸位。光標(biāo)回到屏幕左上角,顯示內(nèi)容不變。命令3:輸入模式設(shè)置,用于設(shè)置每寫(xiě)入一個(gè)數(shù)據(jù)字節(jié)后, 光標(biāo)的移動(dòng)方向及字符是否移動(dòng)。I/D=0,S=0時(shí),光標(biāo)左移一格且地址計(jì)數(shù)器減1;I/D=1,S=0時(shí),光標(biāo)右移一格且地址計(jì)數(shù)器加 1;I/D=0,S=1時(shí),屏幕內(nèi)容全部右移一格,光標(biāo)不動(dòng);I/D=1,S=1時(shí),屏幕內(nèi)容全部左移一格,光標(biāo)不動(dòng)。命令4:顯示與不顯示設(shè)置。D=1:開(kāi)啟顯示屏,D=0:關(guān)閉 顯示屏。C=1,開(kāi)啟光標(biāo),C=0,關(guān)閉光標(biāo)。B=1,
27、 光標(biāo)閃爍,B=0,光標(biāo)不閃爍。命令5:光標(biāo)或屏幕內(nèi)容移位選擇。S/C=1,移動(dòng)屏幕內(nèi)容, S/C=0,移動(dòng)光標(biāo)。R/L=1,右移,R/L=0,左移。命令6:功能設(shè)置。DL=0,設(shè)為4位數(shù)據(jù)接口,DL=1,設(shè)為 8位數(shù)據(jù)接口。N=0,單行顯示,N=1,雙行顯示。 F=1,510字形,F(xiàn)=0,57字形。命令7:CGRAM地址設(shè)置,地址范圍00H3FH(共64個(gè)單 元,對(duì)應(yīng)8個(gè)自定義字符)。命令8:DDRAM地址設(shè)置,地址范圍00H7FH。命令9:讀忙標(biāo)志和計(jì)數(shù)器地址。BF=1,表示忙,此時(shí)模塊 不能接收命令或者數(shù)據(jù),BF=0,表示不忙,可以接收 送來(lái)的數(shù)據(jù)或指令。命令10:寫(xiě)DDRAM或CGRO
28、M。要配合地址設(shè)置命令。命令11:讀DDRAM或CGROM。要配合地址設(shè)置命令。LCD1602的操作命令(2)HD44780控制器接口時(shí)序讀操作時(shí)序HD44780控制器接口時(shí)序p寫(xiě)操作時(shí)序?qū)懖僮鲿r(shí)序LCD1602應(yīng)用舉例單片機(jī)與LCD1602模塊的接口電路如圖所示。LCD1602LCD1602編程思路編程思路初始化初始化: :清屏、顯示方式(單雙行、清屏、顯示方式(單雙行、5 5* *7 7、5 5* *1010)、光)、光標(biāo)閃爍移動(dòng)、字符閃爍移動(dòng)等標(biāo)閃爍移動(dòng)、字符閃爍移動(dòng)等檢查檢查“忙忙”標(biāo)志標(biāo)志BFBF。寫(xiě)入顯示地址位置(寫(xiě)入顯示地址位置(IRIR):在第幾行第幾列顯示,地):在第幾行第幾
29、列顯示,地址最高位址最高位=1=1檢查檢查“忙忙”標(biāo)志標(biāo)志BFBF。寫(xiě)入顯示內(nèi)容寫(xiě)入顯示內(nèi)容(DR)(DR):要顯示的字符代碼:要顯示的字符代碼匯編語(yǔ)言參考程序如下:(在第1行顯示“Thank”,第2行顯示“You!” )RW BIT P2.1 ;定義LCD1602的RW引腳由P2.1引腳控制RS BIT P2.0 ;定義LCD1602的RS引腳由P2.0引腳控制 E BIT P2.2 ;定義LCD1602的E引腳由P2.2引腳控制ORG 0000H ;在0000H單元存放轉(zhuǎn)移指令 SJMP START ;轉(zhuǎn)移到主程序ORG 0030H ;程序從0030H開(kāi)始START: MOV SP,#5F
30、H ;重置堆棧 LCALL INIT ;調(diào)用初始化程序 MOV A,#80H ;第1行,第1列 LCALL WRC ;調(diào)用寫(xiě)命令子程序 MOV A,#54H ;“T”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#68H ;“h”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#61H ;“a”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#6EH ;“n”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#6BH ;“k”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#0C4H ;第2行,
31、第5列(:首列號(hào)為1) LCALL WRC ;調(diào)用寫(xiě)命令子程序 MOV A,#79H ;“Y”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#6FH ;“o”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#75H ;“u”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 MOV A,#21H ;“!”的ASCII碼 LCALL WRD ;調(diào)用寫(xiě)數(shù)據(jù)子程序 SJMP $ 續(xù)上一頁(yè)續(xù)上一頁(yè)INIT: MOV A,#01H ;清屏 LCALL WRC ;調(diào)用寫(xiě)命令子程序 MOV A,#38H ;8位數(shù)據(jù),2行,57點(diǎn)陣 LCALL WRC ;調(diào)用寫(xiě)命
32、令子程序 MOV A,#0EH ;開(kāi)顯示和光標(biāo),字符不閃爍 LCALL WRC ;調(diào)用寫(xiě)命令子程序 MOV A,#06H ;字符不動(dòng),光標(biāo)自動(dòng)右移1格 LCALL WRC ;調(diào)用寫(xiě)命令子程序 RET ;子程序返回CBUSY: PUSH ACC ; 忙檢查子程序,將A的值暫存于堆棧 PUSH DPH ;將DPH的值暫存于堆棧 PUSH DPL ;將DPL的值暫存于堆棧 PUSH PSW ;將PSW的值暫存于堆棧WEIT: CLR RS ;RS=0,選擇指令寄存器 SETB RW ;RW=1,選擇讀模式 CLR E ;E=0,禁止讀/寫(xiě)LCD SETB E ;E=1,允許讀/寫(xiě)LCD 續(xù)上一頁(yè)續(xù)上
33、一頁(yè) MOV A,P1 ;讀操作 CLR E ;E=0,禁止讀/寫(xiě)LCD JB ACC.7,WEIT ;忙碌循環(huán)等待 POP PSW ;從堆棧取回PSW的值 POP DPL ;從堆棧取回DPL的值 POP DPH ;從堆棧取回DPH的值 POP ACC ;從堆棧取回A的值 LCALL DELAY ;延時(shí) RET ;子程序返回WRC: LCALL CBUSY ;寫(xiě)入命令子程序 CLR E ;E=0,禁止讀/寫(xiě)LCD CLR RS ;RS=0,選擇指令寄存器 CLR RW ;RW=0,選擇寫(xiě)模式 SETB E ;E=1,允許讀/寫(xiě)LCD MOV P1,A ;寫(xiě)操作 CLR E ;E=0,禁止讀/寫(xiě)
34、LCD LCALL DELAY ;延時(shí) RET ;子程序返回續(xù)上一頁(yè)續(xù)上一頁(yè)WRD: LCALL CBUSY ;寫(xiě)入數(shù)據(jù)子程序 CLR E ;E=0,禁止讀/寫(xiě)LCD SETB RS ;RS=1,選擇數(shù)據(jù)寄存器 CLR RW ;RW=0,選擇寫(xiě)模式 SETB E ;E=1,允許讀/寫(xiě)LCD MOV P1,A ;寫(xiě)操作 CLR E ;E=0,禁止讀/寫(xiě)LCD LCALL DELAY ;延時(shí) RET ;子程序返回 DELAY: MOV R7,#5 ;給R7賦值 LP1: MOV R6,#0F8H ;給R6賦值 DJNZ R6,$ ;R6減1不等于0繼續(xù)執(zhí)行該行 DJNZ R7,LP1 ;R7減1不
35、等于0跳轉(zhuǎn)到LP1處 RET ;子程序返回END ;匯編結(jié)束續(xù)上一頁(yè)續(xù)上一頁(yè)8.7 全自動(dòng)洗衣機(jī)洗衣流程Proteus仿真設(shè)洗衣機(jī)洗衣流程有三道程序:進(jìn)水、洗滌、甩干。按下“啟動(dòng)”鍵,開(kāi)始洗衣流程。首先進(jìn)水,“進(jìn)水”指示燈亮,用LED發(fā)光二極管指示;定時(shí)10秒,用2位LED數(shù)碼管顯示。然后洗滌,“洗滌”指示燈亮,定時(shí)10秒。最后甩干,“甩干”指示燈亮,定時(shí)10秒。洗衣流程結(jié)束后,揚(yáng)聲器發(fā)聲提示。電路如圖7-20 所示。匯編語(yǔ)言參考程序如下:匯編語(yǔ)言參考程序如下:ORG 0000H ORG 0000H ; ;在在0000H0000H單元存放轉(zhuǎn)移指令單元存放轉(zhuǎn)移指令 LJMP MAIN LJMP
36、MAIN ; ;轉(zhuǎn)移到主程序轉(zhuǎn)移到主程序ORG 000BH ORG 000BH ; ;定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0的中斷入口地址的中斷入口地址LJMP Time0 LJMP Time0 ; ;轉(zhuǎn)到定時(shí)轉(zhuǎn)到定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0的中斷服務(wù)的中斷服務(wù)程序程序Time0Time0ORG 0100H ORG 0100H ; ;主程序從主程序從0100H0100H開(kāi)始開(kāi)始MAIN: JB P1.7,MAIN ;MAIN: JB P1.7,MAIN ;判按鍵是否按下,為判按鍵是否按下,為0 0即按下,即按下,順序執(zhí)行,否則等待。順序執(zhí)行,否則等待。 LCALL DISPLAY ;LCALL
37、DISPLAY ;有鍵按下,延時(shí)去抖動(dòng)有鍵按下,延時(shí)去抖動(dòng) JB P1.7,MAIN JB P1.7,MAIN ; ;再判有鍵按下再判有鍵按下 MOV P1,#0EH MOV P1,#0EH ; ;確定鍵按下,確定鍵按下,A A燈亮,放水定時(shí)燈亮,放水定時(shí) MOV R0,#00H MOV R0,#00H ;R0;R0放放3 3個(gè)階段的工作標(biāo)志個(gè)階段的工作標(biāo)志 MOV R1,#00H MOV R1,#00H ;R1;R1放定時(shí)器的中斷計(jì)數(shù)放定時(shí)器的中斷計(jì)數(shù) SETB EA SETB EA ; ;開(kāi)中斷總開(kāi)關(guān)開(kāi)中斷總開(kāi)關(guān) SETB ET0 SETB ET0 ; ;開(kāi)定時(shí)開(kāi)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0
38、 T0 MOV TMOD,#01H MOV TMOD,#01H ; ;設(shè)定時(shí)設(shè)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0工作方式工作方式1 1 MOV TH0,#3CH MOV TH0,#3CH ; ;定時(shí)定時(shí)50ms50ms高高8 8位初值位初值MOV TL0,#0B0H MOV TL0,#0B0H ; ;定時(shí)定時(shí)50ms50ms低低8 8位初值位初值 SETB TR0 SETB TR0 ; ;啟動(dòng)定時(shí)啟動(dòng)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0 T0 SJMP $ ;SJMP $ ;等待定時(shí)等待定時(shí) ; ;定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0中斷服務(wù)程序中斷服務(wù)程序Time0: CJNE R0,#00H,L1 ;R0
39、Time0: CJNE R0,#00H,L1 ;R0的內(nèi)容為標(biāo)志,若的內(nèi)容為標(biāo)志,若R0=0R0=0,執(zhí),執(zhí)行第行第1 1階段定時(shí)(放水功能)階段定時(shí)(放水功能) INC R1 INC R1 ;R1 ;R1內(nèi)容加內(nèi)容加1 1 MOV A,R1MOV A,R1;R1;R1的內(nèi)容送到的內(nèi)容送到A A MOV B,#20MOV B,#20;B;B寄存器送立即數(shù)寄存器送立即數(shù)2020 DIV ABDIV AB; ;計(jì)算時(shí)間秒計(jì)算時(shí)間秒 MOV B,#10MOV B,#10;B;B寄存器送立即數(shù)寄存器送立即數(shù)1010 DIV ABDIV AB; ;秒分成個(gè)位和十位秒分成個(gè)位和十位 MOV DPTR,#D
40、TABMOV DPTR,#DTAB; ;字形表頭地址送字形表頭地址送DPTRDPTR MOVC A,A+DPTRMOVC A,A+DPTR; ;秒十位查字形碼秒十位查字形碼 MOV P0,AMOV P0,A; ;十位字形送十位字形送P0P0口顯示口顯示 MOV A,B MOV A,B; ;秒個(gè)位送秒個(gè)位送A A寄存器寄存器 MOVC A,A+DPTRMOVC A,A+DPTR; ;秒個(gè)位查字形碼秒個(gè)位查字形碼 MOV P2,AMOV P2,A; ;個(gè)位字形送個(gè)位字形送P2P2口顯示口顯示 CJNE R1,#200,L4 CJNE R1,#200,L4 ; ;若累計(jì)滿若累計(jì)滿200200次,即計(jì)
41、時(shí)滿次,即計(jì)時(shí)滿10s10s MOV P1,#0DH ;AMOV P1,#0DH ;A燈滅,結(jié)束放水,燈滅,結(jié)束放水,B B燈亮,開(kāi)始洗燈亮,開(kāi)始洗滌滌 MOV R1,#00H MOV R1,#00H ;R1;R1內(nèi)容清內(nèi)容清0 0,重新從,重新從0 0開(kāi)始計(jì)數(shù)開(kāi)始計(jì)數(shù) INC R0 INC R0 ;R0;R0內(nèi)容加內(nèi)容加1 1,準(zhǔn)備第,準(zhǔn)備第2 2階段定時(shí)階段定時(shí) SJMP L4 SJMP L4 ; ;轉(zhuǎn)轉(zhuǎn)L4L4,送初值,中斷返,送初值,中斷返回回L1: CJNE R0,#01H,L2 L1: CJNE R0,#01H,L2 ; ;若若R0=1R0=1,執(zhí)行第,執(zhí)行第2 2階段定時(shí)階段定時(shí)
42、(洗滌功能)(洗滌功能) INC R1 INC R1 ;R1 ;R1內(nèi)容加內(nèi)容加1 1 MOV A,R1 MOV A,R1;R1;R1的內(nèi)容送到的內(nèi)容送到A A MOV B,#20MOV B,#20;B;B寄存器送立即數(shù)寄存器送立即數(shù)2020 DIV ABDIV AB; ;計(jì)算時(shí)間秒計(jì)算時(shí)間秒 MOV B,#10MOV B,#10;B;B寄存器送立即數(shù)寄存器送立即數(shù)1010 DIV AB DIV AB; ;秒分成個(gè)位和十位秒分成個(gè)位和十位 MOV DPTR,#DTABMOV DPTR,#DTAB; ;字形表頭地址送字形表頭地址送DPTRDPTR MOVC A,A+DPTR MOVC A,A+DPTR ; ;秒十位查字形碼秒十位查字形碼 MOV P0,AMOV P0,A; ;十位字形送十位字形送P0P0口顯示口顯示 MOV A,BMOV A,B; ;秒個(gè)位送秒個(gè)位送A A寄存器寄存器 MOVC A,A+DPTRMOVC A,A+DPTR ; ;秒個(gè)位查字形碼秒個(gè)位查字形碼 MOV P2,AMOV P2,A; ;個(gè)位字形送個(gè)位字形送P2P2口顯示口顯示 CJNE R1,#200,L4 CJNE R1,#200,L4 ; ;若累計(jì)滿若累計(jì)滿200200次,即計(jì)時(shí)滿次,即計(jì)時(shí)滿10s10s MOV P1,#
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024芒果種植基地?zé)o人機(jī)噴灑農(nóng)藥服務(wù)合同3篇
- 儀器設(shè)備采購(gòu)合同5篇
- 經(jīng)濟(jì)法關(guān)于大學(xué)生就業(yè)維權(quán)方面
- 贊助合同模板(5篇)
- 山東特殊教育職業(yè)學(xué)院《醫(yī)學(xué)基本技能》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度政府投資項(xiàng)目財(cái)務(wù)監(jiān)管代理合同3篇
- 鐘山職業(yè)技術(shù)學(xué)院《商務(wù)英語(yǔ)視聽(tīng)說(shuō)(4)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年礦山石料直供采購(gòu)協(xié)議綱要版B版
- 2025年度新疆棉花采摘機(jī)械化作業(yè)合同范本3篇
- 南京師范大學(xué)泰州學(xué)院《口腔臨床醫(yī)學(xué)概論(口腔修復(fù)學(xué))》2023-2024學(xué)年第一學(xué)期期末試卷
- 職業(yè)暴露處理方法與報(bào)告流程圖
- 蘇教版一年級(jí)上冊(cè)《科學(xué)》期末知識(shí)點(diǎn)匯總 重點(diǎn)知識(shí)梳理 總復(fù)習(xí)【版 】課件
- 青島版小學(xué)科學(xué)三年級(jí)下冊(cè)課程綱要
- 目標(biāo)、計(jì)劃與行動(dòng)課件
- 動(dòng)態(tài)變形模量Evd試驗(yàn)記錄
- 2020-2021學(xué)年浙江省溫州市八年級(jí)(上)期末數(shù)學(xué)試卷(附答案詳解)
- 蔬菜籽種采購(gòu)清單
- 工期定額-民用建筑
- 低壓電能表安裝作業(yè)指導(dǎo)書(shū)
- 能見(jiàn)度不良時(shí)船舶航行須知
- 軟膠囊的制備
評(píng)論
0/150
提交評(píng)論