1602logo.asm
上传用户:teamwork
上传日期:2021-04-01
资源大小:15k
文件大小:3k
- ;///////////////////////////////////////////
- ;....本程序实现液晶循环显示信息功能.
- ;///////////////////////////////////////////
- RS EQU P3.5
- RW EQU P3.6
- E EQU P3.7
- SJ EQU P1
- org 00h
- ajmp main
- org 030h
- main:
- mov sp,#60h
- main1:
- lcall delay ;延时一段时间
- MOV SJ,#38H ;
- ACALL ENABLE ;写指令38H
- MOV SJ,#38H ;
- ACALL ENABLE ;写指令38H
- MOV SJ,#38H ;
- ACALL ENABLE ;写指令38H
- MOV SJ,#38H ;
- ACALL ENABLE ;写指令38H
- MOV SJ,#08H ;
- ACALL ENABLE ;写指令08H
- MOV SJ,#01H ;
- ACALL ENABLE ;写指令01H
- MOV SJ,#06H ;
- ACALL ENABLE ;写指令06H
- MOV SJ,#0cH ;
- ACALL ENABLE ;写指令0CH
- MOV SJ,#80H ;第一行显示第一个字符的位置
- ACALL ENABLE ;调用写指令
- mov dptr,#table3 ;第一行表头位置
- call write1 ;调用第一行写子程序
- mov SJ,#0c0h ;第二行位置
- call enable ;调用写指令
- mov dptr,#table2 ;第二行表头位置
- call write1 ;调用第二行写子程序
- jmp main1 ;返回主程序不断的循环
- ENABLE: ;写命令时序(参照1602LCD使用说明书)
- CLR RS
- CLR RW
- CLR E
- ACALL DELAY
- SETB E
- RET
- write1: ;写字符串
- mov r1,#00h ;将R1清0
- a1:mov a,r1 ;把R1的值送到ACC
- movc a,@a+dptr ;查表取将显示的数据并把要显示的数送入ACC
- call write2 ;调用写程序写入单个字节
- inc r1 ;将工作寄存器指针加一
- cjne r1,#10h,a1 ;R1的内容加到16后就返回到a1处
- ret ;
-
- write2: ;写单个字符
- mov SJ,a ;写数据到显示端口
- setb rs ;写数据时序(请参照1602LCD使用说明书)
- clr rw
- clr e
- call delay
- setb e
- ret
- delay:
- mov r7,#255
- d1:mov r6,#255
- d2:djnz r6,d2
- djnz r7,d1
- ret
-
- table3: db " 1111111"
- table2: db " 0571-85956028"
- end