當前位置:編程學習大全網 - 編程語言 - LCD1602顯示問題

LCD1602顯示問題

RS EQU P3.0 ;決定要傳送的是命令還是數據

RW EQU P3.1 ;決定要讀還是寫,壹般寫的時候多.

E EQU P3.2 ;時鐘信號

ORG 0000H

main:

MOV p1,#00000001B ;清屏

ACALL ENABLE

MOV p1,#00000001B ;清屏

ACALL ENABLE

MOV p1,#00111000B ;設置16*2顯示,5*7點陣8位數據口

ACALL ENABLE

MOV p1,#00001100B ;開顯示,顯示光標光標閃爍

ACALL ENABLE

MOV p1,#00000110B ;讀寫壹個字符地址指針加壹,整屏不移動

ACALL ENABLE

LCALL DELAY1

LCALL DELAY1

MOV p1,#080H ;第壹行顯示起始地址

ACALL ENABLE

MOV dptr,#tab3

LCALL write1

LCALL DELAY1

LCALL DELAY1

mov p1,#0c0h ;第二行顯示起始地址

call enable ;調用寫指令

mov dptr,#tab2 ;第二行表頭位置

call write1 ;調用第二行寫子程序

AJMP $

key:

mov a,p2

jb acc.0,key

call delay1

jb acc.0,key

ret

ENABLE:

CLR RS ;寫指令

CLR RW

CLR E

ACALL DELAY

SETB E

RET

DELAY:

MOV p1,#0FFH

CLR RS

SETB RW

CLR E

NOP

SETB E

JB p1.7,DELAY ;忙檢測

RET

delay1:

mov r7,#250

d:mov r6,#250

djnz r6,$

djnz r7,d

ret

write1: ;寫數據串

mov r1,#00h ;將R1清0

a1:

mov a,r1 ;把R1的值送到ACC

movc a,@a+dptr ;查表取將顯示的數據並把要顯示的數送入ACC

call write2 ;調用寫程序寫入單個字節

inc r1 ;將工作寄存器指針加壹

mov a,r1 ;把R1的內容送到ACC

cjne a,#16,a1 ;acc的值加到16後就返回到a1處

ret

write2: ;寫數據

mov p1,a

SETB RS

CLR RW

CLR E

JB p1.7,$

SETB E

lcall delay1

ret

tab3: db "123456789abcdefg"

tab2: db "1234567890-=\!@#"

END

匯編是我復制來的,我自己有C的,沒匯編的~這個匯編和妳的差不多,我測試通過~希望能幫到妳

  • 上一篇:機電設備維修與管理論文
  • 下一篇:如何免費做網站?詳細點說。
  • copyright 2024編程學習大全網