51单片机

[复制链接]
查看11 | 回复2 | 2009-1-2 21:22:10 | 显示全部楼层 |阅读模式
单片机型号89C51,晶振频率11.0592,液晶是1602,接口是九针232接口。
做串口实验,用串口助手比如发送1234567890123456789,应1602字符液晶一行最多可以显示16个字符,后面的789不能自动显示的第二行,造成789不能显示,请各位高手帮帮忙,让1602液晶第一行显示够16个字符后自动转到第二行继续显示。。。。。谢谢 !!!!!!!!
RS EQU P3.7
RW EQU P3.6
E EQU P3.4

ORG 0000H
;上电后程序从这里运行

AJMP MAIN

ORG 0023H

AJMP URAT

ORG 0100H
MAIN:

MOV TMOD, #20H

MOV SCON,#50H

MOV TL1, #0FDH ;波特率9600

MOV TH1,#0FDH

SETB TR1

SETB ES

SETB EA
;串口初始化



MOV P2,#01H ;清除屏幕

ACALL ENABLE

MOV P2,#38H ;8位点阵

ACALL ENABLE

MOV P2,#0FH ;开显示

ACALL ENABLE

MOV P2,#80H ;显示位置,第一行第一个位置

ACALL ENABLE

SJMP $
;待机
ENABLE: ;送命令

CLR RS

CLR RW

CLR E

ACALL DELAY

SETB E

RET
write2: ;送单个字符

mov p2,a

setb rs

clr rw

clr e

nop

nop

setb e

ret
delay: ;延时子程序

mov r7,#30

d1:mov r6,#255

d2:djnz r6,d2

djnz r7,d1

ret
URAT: ;串口中断程序

CLR EA

MOV A SBUF

ACALL write2

SETB EA


RETI

end

回复

使用道具 举报

千问 | 2009-1-2 21:22:10 | 显示全部楼层
建议你不要用汇编,网上有很多C的,有现在的包装好多C函数,可以直接调用,这样方便多了。...
回复

使用道具 举报

千问 | 2009-1-2 21:22:10 | 显示全部楼层
这个就是液晶方面的问题每个液晶用法不一样需要搞清楚它的控制字把控制字赋给P2,然后调用ENABLE就可以实现控制字主要到了一行结束,你将显示地址的y往下调一点,x清零就可以了具体的设置你看看液晶芯片的显示地址就可以了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行