51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
液晶1602显示程序01(汇编)
发布时间:2009/6/2  阅读次数:1791  字体大小: 【】 【】【

发布者:  未知     来源:网络

;第一行第一列开始显示"Welcome!",打开光标并闪烁显示.

RS bit P2.5
RW bit P2.6
E bit P2.7

DPORT EQU P0
XPOS EQU R1 ;列方向地址指针
YPOS EQU R2 ;行方向地址指针
CUR EQU R3 ;设定光标参数

NoDisp EQU 0 ;无显示
NoCur EQU 1 ;有显示无光标
CurNoFlash EQU 2 ;有光标但不闪烁
CurFlash EQU 3 ;有光标且闪烁

  

ORG 0000H
JMP START
ORG 30H
START:
MOV SP,#5FH
CALL RSTLCD
MOV 20H,#'W'
MOV 21H,#'e'
MOV 22H,#'l'
MOV 23H,#'c'
MOV 24H,#'o'
MOV 25H,#'m'
MOV 26H,#'e'
MOV 27H,#'!'
MOV 28H,#' '
MOV 29H,#0

MOV Cur,#CurFlash
CALL SETCUR

MOV R0,#20H
MOV r1,#1
MOV r2,#0
CALL WRITESTRING
JMP $
;测试主程序到此结束

WriteString:
MOV A,@R0
JZ WS_RET
CALL WriteChar
MOV A,XPOS
CJNE A,#15,WS_1 ;如果XPOS中的值未到15(可显示的最多位)
JMP WS_RET
WS_1:
INC R0
INC XPOS
JMP WriteString
WS_RET:
RET

;光标设置命令
SetCur:
MOV A,CUR
JZ S_1 ;参数为0,转关显示
DEC A
JZ S_2 ;参数为1,转开显示,但无光标
DEC A
JZ S_3 ;参数为2,转开显示且有光标,无闪烁
DEC A
JZ S_4 ;参数为3,转开显示,光标闪烁
JMP S_RET ;否则返回
S_1:
MOV A,#00001000B ;关显示
CALL LCDWC
JMP S_RET
S_2:
MOV A,#00001100B ;开显示但无光标
CALL LCDWC
JMP S_RET
S_3:
MOV A,#00001110B ;开显示有光标但不闪烁
CALL LCDWC
JMP S_RET
S_4:
MOV A,#00001111B ;开显示有光标且闪烁
CALL LCDWC
S_RET:
RET

;清屏命令
ClrLcd:
MOV A,#01H
CALL LCDWC
RET
;在指定的行与列显示指珲的字符,xpos,行,ypos,列 A,待显示字符
WriteChar:
CALL LCDPOS
CALL LCDWD
RET

;系统资源 一个堆栈
WaitIdle: ;正常读写操作之前必须检测LCD控制器状态
PUSH ACC
MOV DPORT,#0FFH
CLR RS
SETB RW
SETB E
NOP
W_1:
MOV A,DPORT
ANL A,#80H
JZ W_2
JMP W_1
W_2:
CLR E
POP ACC
RET
;系统资源 a
LcdWd: ;写字符子程序
CALL WAITIDLE
SETB RS
CLR RW
MOV DPORT,A ;以A为数据传递
SETB E
NOP
CLR E
RET
;系统资源 a
LcdWc: ;送控制字子程序(检测忙信号)
CALL WaitIdle
LcdWcn: ;送控制字子程序(不检测忙信号)
CLR RS
CLR RW
MOV DPORT,A
SETB E
NOP
CLR E
RET
;系统资源:一个堆栈
LCDPOS: ;设置第(XPOS,YPOS)个字符的DDRAM地址
PUSH ACC
MOV A,XPOS
ANL A,#0FH ;X位置范围(0到15)
MOV XPOS,A
MOV A,YPOS
ANL A,#01H ;Y位置范围(0到1)
MOV YPOS,A
CJNE A,#00,LPS_LAY ;(第一行)X: 第0----15个字符
MOV A,XPOS ; DDRAM: 0----0FH
JMP LPS_LAX
LPS_LAY:
MOV A,XPOS ;(第二行)X: 第0----15个字符
ADD A,#40H ;DDRAM: 40----4FH
LPS_LAX:
ORL A,#80H ;设置DDRAM地址
CALL LCDWC
POP ACC
RET
;系统资源 a
RSTLCD:
MOV R6,#15 ;如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30
CALL DELAY ;延时15毫秒
MOV A,#38H
CALL LCDWCN
MOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值
CALL DELAY
CALL LCDWCN
MOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值
CALL DELAY
CALL LCDWCN

MOV A,#38H ;显示模式设置
CALL LCDWC
MOV A,#08H ;显示关闭
CALL LCDWC
MOV A,#01H ;显示清屏
CALL LCDWC
MOV A,#06H ;显示光标移动位置
CALL LCDWC
MOV A,#0CH ;显示开及光标设置
CALL LCDWC
RET

;系统资源:r4,r5,r6
DELAY:
D_1: MOV R5,#25 ;延时子程序(1MS)
D_2: MOV R4,#20
DJNZ R4,$
DJNZ R5,D_2
DJNZ R6,D_1 ;R6用作参数传递
RET

END

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号