
你这样谁也看不出对错,先从最简单的地方开始测试吧,先写入12864的某个字节看有没有反应,无:看看是不是初始化或寄存器错了
有:继续读某个地址看能否读出
如果没问题了,我觉的你也就能编出来了,我觉得你程序没有结构感,应该把上面的测试做成子函数形式
我记得当时用12864时没有读忙信号,只是做了手册上要求的延时。你试试把
RST EQU P20
CS2 EQU P21
CS1 EQU P22
E EQU P23
RW EQU P24
DI EQU P25
;
ORG 0000H
LJMP MAIN
;
ORG 0050H
MAIN:
MOV SP,#60H
LCALL CHUSH
;
NIEXIAO:
LCALL YEXIAN
LJMP NIEXIAO
;
YEXIAN:
MOV DPTR,#TAB
SETB CS1
CLR CS2
MOV A,#0C0H
LCALL WING
SETB CS2
CLR CS1
MOV A,#0C0H
LCALL WING
MOV R7,#08
MOV R6,#0B8H
TU1:
SETB CS1
CLR CS2
MOV A,R6
LCALL WING
MOV A,#40H
LCALL WING
MOV R5,#64
TU2:
MOV A,#00H
MOVC A,@A+DPTR
LCALL DING
INC DPTR
DJNZ R5,TU2
TU3:
SETB CS2
CLR CS1
MOV A,R6
LCALL WING
MOV A,#40H
LCALL WING
MOV R5,#64
TU4:
MOV A,#00H
MOVC A,@A+DPTR
LCALL DING
INC DPTR
DJNZ R5,TU4
INC R6
DJNZ R7,TU1
RET
;
WING:
LCALL BUSY
CLR E
CLR RW
CLR DI
MOV P0,A
SETB E
CLR E
RET
;
DING:
LCALL BUSY
CLR E
CLR RW
SETB DI
MOV P0,A
SETB E
CLR E
RET
;
BUSY:
CLR E
SETB RW
CLR DI
MOV P0,#0FFH
SETB E
JB P07,BUSY
CLR E
RET
;
CLEAR:
MOV A,#3FH
LCALL WING
MOV R7,#08
MOV R6,#0B8H
CLE1:
MOV A,R6
LCALL WING
MOV A,#40H
LCALL WING
MOV R5,#64
CLE2:
MOV A,#00H
LCALL DING
DJNZ R5,CLE2
INC R6
DJNZ R7,CLE1
RET
;
CHUSH:
CLR RST
MOV R0,#250
DJNZ R0,$
SETB RST
SETB CS1
CLR CS2
LCALL CLEAR
SETB CS2
CLR CS1
LCALL CLEAR
RET
;
TAB:;-- 调入了一幅图像:C:\Documents and Settings\Administrator\桌面\波形bmp --
;-- 宽度x高度=128x64 --
END
波形用画图画个然后用取模软件就可以咯
在解决这个问题之前呢,有一点我需要提醒下你,别介意哈,int a=12;定义整型变量怎么能赋值浮点数呢,相信是手误吧。言归正传,要在12864液晶上显示一个变量不用修改多少程序,只需要在写数据函数里改一下数据形式就行,格式这样定义 writeByte(a/10+'0');,这是显示a的十位的数字,个位只需将 /换为 %就行,
希望我的回答能帮助到你。
以上就是关于51单片机128*64液晶C程序全部的内容,包括:51单片机128*64液晶C程序、关于51单片机控制12864显示温度的程序、求助:基于51单片机的12864汇编程序不知到底哪里错了!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)