⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rocky2.asm

📁 51单片机控制1602液晶显示模块,显示两行数据经实践检验可行,
💻 ASM
字号:

   ;用1602液晶显示模块显示字符串的51源程序
 ;作者 李双印
 ;编制于2006年4月6日

 RS BIT P3.7  ;P3.7脚接RS端
 R_W BIT P3.6  ;P3.6脚接R_W端
 E BIT P3.5  ;P3.5脚接E端
 D_BUS EQU P1  ;P1口控制D_BUS输出

 ORG 0000H   ;从0000H处开始
 LJMP MAIN   ;跳转到MAIN处

 ORG 0030H   ;主程序从0030H处开始

MAIN: 
 MOV SP,#70H   ;堆栈指针指向70H
 LCALL INITIAL   ;调用启动LCM子程序进行初始化
 LCALL CLS   ;调用清除LCM子程序
 MOV A,#80H   ;向A送立即数80H设定显示地址为第一行第一列
 LCALL WRITE_COM  ;调用写指令到LCM子程序
 MOV DPTR,#LINE1  ;将第一行字符串的启始地址送如DPTR中
 LCALL DISP   ;调用显示字符串到LCM子程序
 MOV A,#0C0H   ;向A送立即数0C0H设定显示地址为第二行第一列
 LCALL WRITE_COM  ;调用写指令到LCM子程序
 MOV DPTR,#LINE2  ;将第二行字符串的启始地址送如DPTR中
 LCALL DISP   ;调用显示字符串到LCM子程序
 SJMP $   ;程序动态停机

LINE1: DB "  lishuangyin   ",00H ;第一行字符串
LINE2: DB "tel:13466575928 ",00H ;第二行字符串

INITIAL:    ;启动LCM子程序
 MOV A,#38H
 LCALL WRITE_COM
 MOV A,#0EH
 LCALL WRITE_COM
 MOV A,#06H
 LCALL WRITE_COM
 RET

CHECK_BUSY:    ;查询忙碌信号子程序
 PUSH ACC

BUSY_LOOP:
 CLR E
 SETB R_W
 CLR RS
 SETB E
 MOV A,D_BUS
 CLR E
 JB ACC.7,BUSY_LOOP
 POP ACC
 LCALL DEL
 RET

WRITE_COM:    ;写指令到LCM子程序 
 LCALL CHECK_BUSY
 CLR E
 CLR RS
 CLR R_W
 SETB E
 MOV D_BUS,A
 CLR E
 RET

WRITE_DATA:    ;写数据到LCM子程序
 LCALL CHECK_BUSY
 CLR E
 SETB RS
 CLR R_W
 SETB E
 MOV D_BUS,A
 CLR E
 RET

CLS:     ;清除LCM子程序
 MOV A,#01H
 LCALL WRITE_COM
 RET

DEL: 
 MOV R6,#5   ;2.7ms延时子程序
D1: MOV R7,#248
 DJNZ R7,$
 DJNZ R6,D1
 RET

DISP: 
 PUSH ACC   ;将A的内容压栈

DISP_LOOP: 
 CLR A   ;A清零
 MOVC A,@A+DPTR  ;查表将字符串内容送入A
 JZ END_DISP  ;若查到的内容为0则终止查表
 LCALL WRITE_DATA  ;调用写数据到LCM子程序
 INC DPTR   ;DPTR加1指向下一个对象
 SJMP DISP_LOOP  ;跳转到DISP_LOOP循环执行

END_DISP:
 POP ACC   ;弹出压栈内容至A
 RET

 END    ;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -