标题:
51单片机1602汇编,调试乱码或者不显示
[打印本页]
作者:
lyonkon
时间:
2022-2-16 09:03
标题:
51单片机1602汇编,调试乱码或者不显示
程序目的是在 lcd1602 第一行最后一格显示字符 “A”
硬件p0口作为8位数据线
我调试了好几天了,要么满屏幕跑A,要么乱码,要么就不显示,
程序如下,请老师指导一下
EN BIT P2.7 ; 程序主要目的是在lcd1602 在第一行最后一格显示A
RW BIT P2.5
RS BIT P2.6
SJMP MAIN
WRCMD: ;写指令程序,用R3寄存器中转指令值
CLR EN
CLR RS
CLR RW
MOV P0,R3 ;将R3的值赋给P0口
lcall DE5MS
SETB EN ;使能
NOP
NOP
NOP
CLR EN
LCALL DE5MS
RET
WRDAT: ;写数据程序,用R4寄存器中转数据值
CLR EN
SETB RS
CLR RW
MOV P0,R4 ;将R4的值赋给P0口
lcall DE5MS
SETB EN ;使能
NOP
NOP
NOP
CLR EN
LCALL DE5MS
RET
INIT:
MOV R3,#0X38 ;初始化程序
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X38
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X38
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X38
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X08
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X01
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X06
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X0C
LCALL WRCMD
LCALL DE5MS
RET
MAIN: ;主程序开始的地方
LCALL INIT ;调用初始化程序
D1:
LCALL DE5MS
MOV r3,#0X80 ;将lcd1602第一行07位地址0x80用r3寄存器转给p0口
LCALL WRCMD
LCALL DE5MS
MOV r4,#0X41 ;将lcd1602第一行07位地址,要显示数据用r4寄存器转给p0口
LCALL WRDAT
LCALL DE5MS
SJMP d1
DE5MS: MOV 51H,#20 ;延时程序
D2: MOV 52H,#123
DJNZ 52H,$
DJNZ 51H,D2
RET
END
作者:
lyonkon
时间:
2022-2-16 16:28
已经解决,是第一行地址没有加80h造成的
作者:
lyonkon
时间:
2022-2-16 22:16
//修改后显示成功的程序如下
//本程序主要目的是在lcd1602 在第一行 第二行各显示一个字符//
EN BIT P2.7
RW BIT P2.5
RS BIT P2.6
SJMP MAIN
WRCMD:
lcall DE5MS ;这里要加延时,不然不显示
CLR EN
CLR RS
CLR RW
MOV P0,R3 ;将寄存器R3的值赋给P0口
SETB EN ;使能
CLR EN
RET
WRDAT:
lcall DE5MS ; 这里要加延时,不然不显示
CLR EN
SETB RS
CLR RW
MOV P0,R4 ;将寄存器R4的值赋给P0口
SETB EN ;使能
CLR EN
RET
INIT:
MOV R3,#0X38 ;初始化程序 0x38要写两次以上,不然第二行不显示
LCALL WRCMD
MOV R3,#0X38 ;初始化程序
LCALL WRCMD
MOV R3,#0X0c
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X06
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X01
LCALL WRCMD
LCALL DE5MS
RET
MAIN: ;主程序开始的地方
LCALL INIT ;调用初始化程序
D1:
MOV R3,#0x80 ;将lcd1602第一行要显示的地址用r3寄存器转给p0口,第一行地址 80H+00H=80H起
LCALL WRCMD
MOV r4,#0x42 ;第一行显示字符数据 “B”
LCALL WRDAT
MOV R3,#0xc0 ;将lcd1602第二行位地址用r3寄存器转给p0口,第二行地址 80H+40H=C0H起
LCALL WRCMD
MOV r4,#0x41 ;第二行显示字符数据 "A"
LCALL WRDAT
SJMP $
DE5MS: MOV 51H,#20 ;延时程序
D2: MOV 52H,#123
DJNZ 52H,$
DJNZ 51H,D2
RET
END
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1