proteus仿真lm016l总是不显示,代码和图 不知道错在上面地方求指点
RSEQUP3.0RWEQUP3.1ENEQUP3.2LCD_POSTEQUP2DELAY:MOVR6,#0AHLOOP2:MOVR7,#27HLOOP1:DJNZR7,...
RS EQU P3.0
RW EQU P3.1
EN EQU P3.2
LCD_POST EQU P2
DELAY:
MOV R6,#0AH
LOOP2:
MOV R7,#27H
LOOP1:
DJNZ R7,LOOP1
DJNZ R6,LOOP2
RET
WR_CMD:
CLR RW
CLR RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WR_DATA:
CLR RW
SETB RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WAIT_BUSY:
MOV LCD_POST,#0FFH
ACALL DELAY
SETB RW
CLR RS
SETB EN
JB LCD_POST.7,WAIT_BUSY
RET
ORG 0000H
LJMP start
start:
MOV A,#38H;两行显示
LCALL WR_CMD
MOV A,#00001110B ;开显示,光标,光标闪烁
LCALL WR_CMD
MOV A,#06H ;读或写一个字符后数据指针和光标指针都+1
LCALL WR_CMD
MOV A,#01H;显示清屏
LCALL WR_CMD
LCALL WR_CGRAM
MOV A,#80H;数据指针第一行第1个位置
LCALL WR_CMD
LCALL WR_CHAR
MOV A,#068H;将#068H显示
LCALL WR_DATA
END
上面的程序有多余的东西,原本是这样的:
RS EQU P3.0
RW EQU P3.1
EN EQU P3.2
LCD_POST EQU P2
DELAY:
MOV R6,#0AH
LOOP2:
MOV R7,#27H
LOOP1:
DJNZ R7,LOOP1
DJNZ R6,LOOP2
RET
WR_CMD: //写指令函数
CLR RW
CLR RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WR_DATA: //写数据函数
CLR RW
SETB RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WAIT_BUSY: //空闲状态检测
MOV LCD_POST,#0FFH
ACALL DELAY
SETB RW
CLR RS
SETB EN
JB LCD_POST.7,WAIT_BUSY
RET
ORG 0000H
LJMP start
start: //主程序
MOV A,#38H;两行显示
LCALL WR_CMD
MOV A,#00001110B ;开显示,光标,光标闪烁
LCALL WR_CMD
MOV A,#06H ;读或写一个字符后数据指针和光标指针都+1
LCALL WR_CMD
MOV A,#01H;显示清屏
LCALL WR_CMD
MOV A,#80H;数据指针第一行第1个位置
LCALL WR_CMD
MOV A,#068H;将#068H显示
LCALL WR_DATA
END 展开
RW EQU P3.1
EN EQU P3.2
LCD_POST EQU P2
DELAY:
MOV R6,#0AH
LOOP2:
MOV R7,#27H
LOOP1:
DJNZ R7,LOOP1
DJNZ R6,LOOP2
RET
WR_CMD:
CLR RW
CLR RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WR_DATA:
CLR RW
SETB RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WAIT_BUSY:
MOV LCD_POST,#0FFH
ACALL DELAY
SETB RW
CLR RS
SETB EN
JB LCD_POST.7,WAIT_BUSY
RET
ORG 0000H
LJMP start
start:
MOV A,#38H;两行显示
LCALL WR_CMD
MOV A,#00001110B ;开显示,光标,光标闪烁
LCALL WR_CMD
MOV A,#06H ;读或写一个字符后数据指针和光标指针都+1
LCALL WR_CMD
MOV A,#01H;显示清屏
LCALL WR_CMD
LCALL WR_CGRAM
MOV A,#80H;数据指针第一行第1个位置
LCALL WR_CMD
LCALL WR_CHAR
MOV A,#068H;将#068H显示
LCALL WR_DATA
END
上面的程序有多余的东西,原本是这样的:
RS EQU P3.0
RW EQU P3.1
EN EQU P3.2
LCD_POST EQU P2
DELAY:
MOV R6,#0AH
LOOP2:
MOV R7,#27H
LOOP1:
DJNZ R7,LOOP1
DJNZ R6,LOOP2
RET
WR_CMD: //写指令函数
CLR RW
CLR RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WR_DATA: //写数据函数
CLR RW
SETB RS
CLR EN
MOV LCD_POST,A
ACALL DELAY
ACALL WAIT_BUSY
SETB EN
RET
WAIT_BUSY: //空闲状态检测
MOV LCD_POST,#0FFH
ACALL DELAY
SETB RW
CLR RS
SETB EN
JB LCD_POST.7,WAIT_BUSY
RET
ORG 0000H
LJMP start
start: //主程序
MOV A,#38H;两行显示
LCALL WR_CMD
MOV A,#00001110B ;开显示,光标,光标闪烁
LCALL WR_CMD
MOV A,#06H ;读或写一个字符后数据指针和光标指针都+1
LCALL WR_CMD
MOV A,#01H;显示清屏
LCALL WR_CMD
MOV A,#80H;数据指针第一行第1个位置
LCALL WR_CMD
MOV A,#068H;将#068H显示
LCALL WR_DATA
END 展开
1个回答
展开全部
更多追问追答
追问
问题我就是参考过这个,改来改去没改成所依才来提问的~~
追答
你的proteus哪个版本的,win7能运行不?有破解版的吗?
我原来的7.1不能在win7下运行,后面下了一整下午才弄到个7.7 SP2,装好说key是坏的...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询