51单片机128*64液晶C程序

51单片机128*64液晶C程序,第1张

你这样谁也看不出对错,先从最简单的地方开始测试吧,先写入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汇编程序不知到底哪里错了!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9722679.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存