液晶显示程序

zhqx511 贡献于2012-10-21

作者 User  创建于2012-10-22 01:52:00   修改者User  修改于2012-10-22 01:52:00字数3445

文档摘要:;SMG12864ZK串行接口程序
关键词:

; SMG12864ZK串行接口程序 ;*************************************************************************** ;连线图:*LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031 * ; *CS----P3.1* *STD---P3.3* *SCLK-----------P3.0* *PSB----------P3.4 * ; *RESET----------P3.5 (详见说明书) * ;注:8031的晶振频率为12MHz * ;*************************************************************************** ;MODUL SMG112864ZK ;RS=CS=CS ;R/W=STD=STD ;E=SCLK=SCLK PSB BIT P3.4 RES BIT P3.5 CS BIT P1.7 STD BIT P2.4 ;串行数据线 SCLK BIT P2.3 ;串行时钟线 START EQU 30H ;起始字节 COM EQU 31H ;命令/数据 HDATA EQU 32H ;命令/数据字节高位 LDATA EQU 33H ;命令/数据字节低位 ASC EQU 34H ;ASCII数据单元 XPOS EQU 35H YPOS EQU 36H ORG 0000H MAIN: MOV SP,#60H CLR RES SETB RES ; 可以直接接电源VDD SETB CS ; 可以直接接电源VDD CLR PSB ; 可以直接接地VSS CALL LCDRESET ; 模块系统初始化 CALL HZKDIS ; 显示汉字子程序 MOV START,#0F8H ; 写入命令(11111000) MOV COM,#80H ; 设定显示位置 CALL LCDWRITE MOV START,#0FAH ;写数据 (11111010) MOV COM,#10H ;显示字符 CALL LCDWRITE MOV COM,#11H ;显示字符 CALL LCDWRITE MOV COM,#1EH ;显示字符 CALL LCDWRITE MOV COM,#1FH ;显示字符 CALL LCDWRITE MOV START,#0F8H ; 写入命令(11111000) MOV COM,#34H ;扩充功能设定 CALL LCDWRITE MOV COM,#05H ;反白选择 CALL LCDWRITE CALL DL40MS ;延时 CALL DL40MS CALL DL40MS MOV A,#055H ;绘图方式下写55数据 CALL LCDFILL CALL CLEAR ;清屏 JMP MAIN CLEAR: ;清屏子程序 MOV A,#00H CALL LCDFILL RET LCDRESET: LCALL DL1MS ;延时等待内部复位 MOV START,#0F8H ; 写入命令(11111000) MOV COM,#30H ;使用基本指令集 LCALL LCDWRITE MOV COM,#0CH LCALL LCDWRITE ;整体显示ON MOV COM,#01H ;清屏 LCALL LCDWRITE LCALL DL1MS MOV COM,#06H ;显示右移 LCALL LCDWRITE LCALL DL1MS RET LCDWRITE: ;模块写入子程序 MOV A,COM ;送待发数据命令A ANL A,#0F0H ;屏蔽低4位 MOV HDATA,A ;将高4位送HDATA单元 MOV A,COM ;取低4位 SWAP A ;高低4位互换 ANL A,#0F0H MOV LDATA,A ;将低4位送LDATA单元 MOV A,START ;取起始字节 LCALL SENDBIT ;发送 LCALL DL1MS ;延时1ms MOV A,HDATA LCALL SENDBIT LCALL DL1MS MOV A,LDATA LCALL SENDBIT LCALL DL1MS RET HZKDIS: ;显示汉字子程序 MOV R5,#2 MOV START,#0F8H ;写入命令(11111000) MOV COM,#80H ;设定显示位置 LCALL LCDWRITE MOV DPTR,#TAB ;指向文字型代码表 MOV A,#00H ;取汉字代码低位 DIS_1: MOV R6,#8 ;每行八个汉字 DIS_2: MOV START,#0FAH ;写数据 (11111010) CLR A MOVC A,@A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPTR ;取汉字代码高位 CLR A MOVC A,@A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPTR CALL DL40MS DJNZ R6,DIS_2 ;未显示完则继续 MOV START,#0F8H ; 写入命令(11111000) MOV COM,#90H ;第二行地址 CALL LCDWRITE DJNZ R5,DIS_1 MOV R5,#2 MOV START,#0F8H ;写入命令(11111000) MOV COM,#88H ;第三行地址 CALL LCDWRITE DIS_4: MOV R6,#08H DIS_3: MOV START,#0FAH ;写数据 (11111010) CLR A MOVC A,@A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPTR ;取汉字代码高位 CLR A MOVC A,@A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPTR CALL DL40MS DJNZ R6,DIS_3 ;未显示完则继续 MOV START,#0F8H ; 写入命令(11111000) MOV COM,#98H ;第四行地址 CALL LCDWRITE DJNZ R5,DIS_4 ;遇“0”结束显示 RET ;写完两行则结束 LCDFILL: ;绘图 MOV R4,A MOV XPOS,#0 MOV YPOS,#0 MOV START,#0F8H MOV COM,#30H ;重新选择基本指令? CALL LCDWRITE MOV COM,#01H ;清屏 CALL LCDWRITE MOV COM,#36H ;扩充功能设定 CALL LCDWRITE LCD_A1: MOV YPOS,#0 LCD_A2: MOV START,#0F8H MOV A,XPOS ;设定绘图首地址 ADD A,#80H ; X坐标 MOV COM,A CALL LCDWRITE MOV A,YPOS ;Y坐标 ADD A,#80H MOV B,A MOV COM,A CALL LCDWRITE MOV START,#0FAH MOV COM,R4 CALL LCDWRITE CALL LCDWRITE INC YPOS MOV A,B CJNE A,#87H,LCD_A2 ;最后一列地址为87H INC XPOS MOV A,XPOS CJNE A,#20H,LCD_A1 ;最后行地址为80H+20H=0A0H MOV XPOS,#0 LCD_A3:MOV YPOS,#0 LCD_A4: MOV START,#0F8H MOV A,XPOS ;设定绘图首地址 ADD A,#80H ; X坐标 MOV COM,A CALL LCDWRITE MOV A,YPOS ;Y坐标 ADD A,#80H MOV B,A MOV COM,A CALL LCDWRITE MOV START,#0FAH MOV COM,R4 CALL LCDWRITE CALL LCDWRITE INC YPOS MOV A,B CJNE A,#8FH,LCD_A4 ;最后一列地址为8FH INC XPOS MOV A,XPOS CJNE A,#20H,LCD_A3 ;最后行地址为80H+20H=0A0H RET SENDBIT: ;串行字节数据发送子程序 MOV R7,#08H ;发送8位 SEND_1: RLC A MOV STD,C ;数据送数据线 CLR SCLK ;产生同步时钟 SETB SCLK DJNZ R7,SEND_1 ;未发送完8位继续 RET DL1MS: ;延时子程序 PUSH 00H ;0.1MS PUSH 01H PUSH 02H MOV R2,#01H WA_PA: MOV R0,#0FH WA_PB: MOV R1,#0FH DJNZ R1,$ DJNZ R0,WA_PB DJNZ R2,WA_PA POP 02H POP 01H POP 00H RET NOP RET DL40MS: ;延时子程序 PUSH 00H ;40MS PUSH 01H PUSH 02H MOV R2,#01H DL_PA: MOV R0,#0FFH DL_PB: MOV R1,#0FFH DJNZ R1,$ DJNZ R0,DL_PB DJNZ R2,DL_PA POP 02H POP 01H POP 00H RET NOP NOP NOP RET TAB: DB "吉林建筑工程学院 " DB "---电子大赛---" DB "---调试中---" DB "电话0731-4167808" DB 00H END

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档