| RS EQU P2.7 RW EQU P2.6 E EQU P2.5 PSB EQU P2.4 ;高是并行的 低是串行的 RST EQU P2.2 ;复位 com equ 20h dat equ 21h ;******************************************************************************** ;程序开始 ;******************************************************************************** ORG 0000H LJMP MAIN ORG 0100H ;----------------------------------------------- MAIN: CLR P2.1 CLR P2.0 mov p0,#0ffh LCALL DELAY2 SETB RST SETB PSB ;通讯方式为8位数据并口 ;********************初始化********************** LGS0: MOV com,#30H ;30H--基本指令操作 LCALL SEND_I MOV com,#01H ;清除显示 LCALL SEND_I MOV com,#06H ;指定在资料写入或读取时,光标的移动方向 LCALL SEND_I MOV com,#0cH ;开显示,关光标,不闪烁 LCALL SEND_I ;=============================================== ;显示汉字和字符 ;加入80ms的延时,使你能够看清楚显示的过程 ;根据汉字显示坐标分段写入(顺序写入) ;================================================= MOV DPTR,#TAB1 ;显示汉字和字符 MOV com,#82H ;第一行起始地址 LCALL SEND_I MOV R1,#0 MOV A,#0 MOV R2,#8 LOOP: MOV a,r1 MOVC A,@A+DPTR mov dat,a LCALL SEND_DATA inc r1 DJNZ R2,LOOP sJMP $ ;=============================================== ;写数据子程序 ;RS=1,RW=0,E=高脉冲,D0-D7=数据 ;=============================================== SEND_data: lcall delay2 clr rs setb rw SETB RS CLR RW clr e MOV P0,dat SETB E NOP NOP CLR E RET ;=============================================== ;写指令子程序 ;RS=0,RW=0,E=高脉冲,D0-D7=指令码 ;=============================================== SEND_I: lcall delay2 setb rs setb rw CLR RS CLR RW clr e MOV P0,com SETB E NOP NOP CLR E RET ;延时子程序 DELAY2: MOV R6,#60H DEL21: MOV R7,#60H DEL22: DJNZ R7,DEL22 DJNZ R6,DEL21 RET ;*********************************************** TAB1: DB 0CCH,0ECH,0BFH,0D5H,0B5H,0E7H,0D7H,0D3H ;天空电子 end |
|
|