現(xiàn)在在學習單片機,做了個鍵盤與顯示實驗,但不知代碼哪里出現(xiàn)了問題,lcd無法顯示,特來問下大家,想知道如何將問題解決,謝謝大家的解答仿真結果:lcd不顯示任何數(shù)據(jù)以下為此次代碼:
ORG 1000H;
MAIN:
;*******顯示屏顯示準備************
RS EQU P3.7;
RW EQU P3.6;
E EQU P3.5;
MOV P1,#1; 清屏并光標復位
ACALL ELABLE;
MOV P1,#00111000B;設置8位單行5*10顯示
ACALL ELABLE;
MOV P1,#00000111B; 顯示器開,光標開,光標允許閃爍
ACALL ELABLE;
MOV P1,#00000110B;文字不動,光標自動右移
ACALL ELABLE;
MOV P1,#80H;寫入顯示開始位置
ACALL ELABLE;
;*******鍵值查找*******************
DISP: ACALL KEYSCAN; 調(diào)用鍵盤掃描程序
MOV A,30H; 取出偏移量
MOV DPTR,#TABLE; 指向table表
MOVC A,@A+DPTR; 取出鍵盤所指數(shù)據(jù)
;*******將數(shù)據(jù)送到顯示器上顯示******
MOV P1,A;
MOV P2,A;
SETB RS;
CLR RW;
CLR E;
ACALL DELAY;
SETB E;
ACALL DELAY_XD;
SJMP MAIN;
;*******寫入控制命令的子程序************
ELABLE: CLR RS;
CLR RW;
CLR E;
ACALL DELAY;
SETB E;
RET;
;*******判斷顯示器是否處于忙的狀態(tài)******
DELAY: MOV P1,#0FFH;
CLR RS;
SETB RW;
CLR E;
NOP;
SETB E;
JB P1.7,DELAY;
RET;
;******消抖**********************
DELAY_XD:MOV R5,#10H;
NEXT1: MOV R6,#10H;
NEXT2: MOV R7,#10H;
DJNZ R7,$;
DJNZ R6,NEXT2;
DJNZ R5,NEXT1;
;*******線反轉法*****************
KEYSCAN:MOV P3,#0FH;
MOV A,P3;
ANL A,#0FH;
MOV R3,A;
MOV P3,#0F0H;
MOV A,P3;
ANL A,#0F0H;
ORL A,R3;
CJNE A,#0FFH,KEYPRO;
RET;
;*******鍵值處理********************
KEYPRO: MOV 31H,A;
MOV DPTR,#KEYVALUE;
MOV R4,#0;
KEY1: INC R4;
MOV A,R4;
MOVC A,@A+DPTR;
CJNE A,31H,KEY1;
MOV A,R4;
MOV 30H,A;
RET;
;*******表格數(shù)據(jù)*******************
KEYVALUE:DB 7EH,0BEH,0DEH,0EEH,7DH,0BDH,0DDH,0EDH,7BH,0BBH,0DBH,0EBH,77H,0B7H,0D7H,0E7H;
TABLE: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H;
END
|