|
12864测试程序:11月11日买来12864 --------- 11月11日21:43完成测试-----在80H区显示汉字:“王均伟” 原来12864也没啥!呵呵呵

ORG 0000H
NOP
RS EQU P1.0;并行模式下为指令数据选择信H/L=指令/数据
RW EQU P1.1;并行的读写信号H/L=读/写
E EQU P1.2;并行下的使能信号
DATE EQU P0 ;并行下的数据IO
PSB EQU P1.3; 决定是串行模式还是并行模式H=并行L=串行;默认是高电平可不用设置
RESET EQU P1.5;L=复位;默认是高电平,也可以不设置,不需要RESET的话
AJMP MAIN
ORG 0030H
NOP
MAIN: CLR E
MOV A,#01H ;DDRAM写入20H,DDRAM的AC计数器清零
LCALL WRITE12864CT ;12864写入指令
LCALL DELAY4_6MS//延时4.6毫秒
MOV A,#02H // AC清零,游标到开头为之
LCALL WRITE12864CT ;12864写入指令
LCALL DELAY4_6MS//延时4.6毫秒
MOV A,#0FH //游标开,整体显示开,游标位置开
LCALL WRITE12864CT ;12864写入指令
LCALL DELAY4_6MS//延时4.6毫秒
//*********************************
MOV A,#80H // DDRAM说白了就是那个你在那里显示这个汉子从第一行到第四行80H-9FH,一共32个汉子 ---这里还有一点DDRAM是自动加一得,所一下面的才会显示“王均伟”
LCALL WRITE12864CT ;12864写入指令
LCALL DELAY4_6MS//延时4.6毫秒
//*********************************
MOV A,#0CDH
LCALL WRITE12864DB
LCALL DELAY //汉字的字形码,16位的从高位到底为一次写8位所以要写2次呵呵 就是所谓的写数据到RAM
MOV A,#0F5H
LCALL WRITE12864DB //王---CDF5
LCALL DELAY
//****************************
MOV A,#0BEH
LCALL WRITE12864DB
LCALL DELAY //汉字的字形码,16位的从高位到底为一次写8位所以要写2次呵呵 就是所谓的写数据到RAM
MOV A,#0F9H
LCALL WRITE12864DB //均---BEF9
LCALL DELAY
MOV A,#0CEH
LCALL WRITE12864DB
LCALL DELAY //汉字的字形码,16位的从高位到底为一次写8位所以要写2次呵呵 就是所谓的写数据到RAM
MOV A,#0B0H
LCALL WRITE12864DB //伟----CEB0
LCALL DELAY
AJMP $
WRITE12864DB: ;写12864数据
SETB RS;选择数据
NOP
NOP
CLR RW ;写模式
NOP
NOP
SETB E ;使能允许
NOP
NOP
MOV DATE,A ;数据写入
NOP
CLR E
NOP
NOP
NOP
RET
WRITE12864CT: ;写12864指令
CLR RS;选择指令
NOP
NOP
CLR RW ;写模式
NOP
NOP
SETB E ;使能允许
NOP
NOP
MOV DATE,A ;指令写入
NOP
CLR E
NOP
NOP
NOP
RET
DELAY4_6MS: //延时4.6毫秒
MOV R6,#0CH
DL0:
MOV R5,#0AFH
DJNZ R5,$
DJNZ R6,DL0
RET
DELAY:NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
END
|
|