LCD1602A的显示实验文档格式.docx

上传人:b****4 文档编号:16367234 上传时间:2022-11-23 格式:DOCX 页数:15 大小:16.78KB
下载 相关 举报
LCD1602A的显示实验文档格式.docx_第1页
第1页 / 共15页
LCD1602A的显示实验文档格式.docx_第2页
第2页 / 共15页
LCD1602A的显示实验文档格式.docx_第3页
第3页 / 共15页
LCD1602A的显示实验文档格式.docx_第4页
第4页 / 共15页
LCD1602A的显示实验文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

LCD1602A的显示实验文档格式.docx

《LCD1602A的显示实验文档格式.docx》由会员分享,可在线阅读,更多相关《LCD1602A的显示实验文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

LCD1602A的显示实验文档格式.docx

/*

/*延时子程序

voiddelay(intms)

{

inti;

while(ms--)

{

for(i=0;

i<

250;

i++)

_nop_();

}

}

/*检查LCD忙状态

/*lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

bitlcd_busy()

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

result=(bit)(P0&

0x80);

LCD_EN=0;

returnresult;

/*写指令数据到LCD

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

voidlcd_wcmd(ucharcmd)

while(lcd_busy());

LCD_RW=0;

P0=cmd;

/*写显示数据到LCD

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

voidlcd_wdat(uchardat)

LCD_RS=1;

P0=dat;

/*设定显示位置

voidlcd_pos(ucharpos)

lcd_wcmd(pos|0x80);

//数据指针=80+地址变量

/*LCD初始化设定

voidlcd_init()

delay(15);

//等待LCD电源稳定

lcd_wcmd(0x38);

//16*2显示,5*7点阵,8位数据

delay(5);

lcd_wcmd(0x0c);

//显示开,关光标

lcd_wcmd(0x06);

//移动光标

lcd_wcmd(0x01);

//清除LCD的显示内容

/*清屏子程序

voidlcd_clr()

/*闪动子程序

voidflash()

delay(600);

//控制停留时间

lcd_wcmd(0x08);

//关闭显示

delay(200);

//延时

//开显示

/*主程序

main()

uchari,j;

delay(10);

lcd_init();

//初始化LCD

while

(1)

lcd_clr();

lcd_pos(0x10);

//设置显示位置为第一行第17列

i=0;

while(dis1[i]!

='

\0'

{//显示字符"

"

lcd_wdat(dis1[i]);

i++;

lcd_pos(0x50);

//设置显示位置为第二行第17列

while(dis2[i]!

lcd_wdat(dis2[i]);

//显示字符"

for(j=0;

j<

16;

j++)//向左移动16格

lcd_wcmd(0x18);

//字符同时左移一格

delay(100);

//控制移动时间

flash();

//闪动二次

汇编程序:

LCD_RSEQUP2.6

LCD_RWEQUP2.5

LCD_ENEQUP2.7

;

*******************************************************************

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOVSP,#60H

ACALLLCD_INIT;

LCD初始化

MAIN1:

ACALLCLR_LCD;

清LCD

MOVA,#90H;

在第一行第17列的位置

ACALLLCD_CMD

MOVDPTR,#LINE1;

第一行字符串的起始地址送入DPTR。

ACALLWRITE

MOVA,#0D0H;

在第二行第17列的位置

MOVDPTR,#LINE2;

第二行字符串的起始地址送入DPTR。

MOVR3,#10H;

向左移动16格

LOOPA:

MOVA,#18H;

字符同时左移一格

MOVR5,#03H;

延时375MS

ACALLDELAY125MS

DJNZR3,LOOPA

ACALLDELAY4;

延时1.6s

ACALLDELAY4

MOVR4,#02H;

设置闪烁次数

ACALLFLASH;

开始闪烁

AJMPMAIN1

LINE1:

DB"

BIGBIGWORLD"

00H

LINE2:

ILOVEPUZHONG"

***************************************************************

LCD初始化设定子程序

LCD_INIT:

ACALLDELAY5MS;

延时15MS

等待LCD电源稳定

ACALLDELAY5MS

MOVA,#38H;

16*2显示,5*7点阵,8位数据

ACALLLCD_CMD_NC;

不进行LCD忙检测

MOVA,#08H;

显示关

ACALLLCD_CMD;

进行LCD忙检测

MOVA,#01H;

清除屏幕

MOVA,#0CH;

显示开,关光标

RET

清LCD子程序

CLR_LCD:

写指令数据到LCD

RS=L,RW=L,D0-D7=指令码,E=高脉冲

LCD_CMD:

CALLCHECKBUSY

LCD_CMD_NC:

CLRLCD_RS

CLRLCD_RW

MOVP0,A

SETBLCD_EN

NOP

CLRLCD_EN

写显示数据到LCD

RS=H,RW=L,D0-D7=数据,E=高脉冲

LCD_WDATA:

ACALLCHECKBUSY

SETBLCD_RS

检测LCD控制器忙状态

读数据

RS=L,RW=H,E=H,输出:

D0-D7=数据

P0.7=1,LCD忙,等待。

P0.7=0,LCD闲,可以进行读写操作。

CHECKBUSY:

PUSHACC

MOVP0,#0FFH

SETBLCD_RW

BUSYLOOP:

JBP0.7,BUSYLOOP

POPACC

发送字符串子程序

WRITE:

WRITE1:

CLRA

MOVCA,@A+DPTR

JZWRITE2

INCDPTR

ACALLLCD_WDATA

JMPWRITE1

WRITE2:

闪烁子程序

FLASH:

关闭显示

开显示,关闭光标

DJNZR4,FLASH

延时5MS子程序

LCD初始化使用

DELAY5MS:

MOVR6,#10

DL1:

MOVR7,#249

DL2:

DJNZR7,DL2

DJNZR6,DL1

延时125MS子程序

字符串移动时使用

DELAY125MS:

DL3:

MOVR6,#250

DL4:

DL5:

DJNZR7,DL5

DJNZR6,DL4

DJNZR5,DL3

延时800MS子程序

闪烁时使用

DELAY4:

MOVR5,#40

DL6:

MOVR6,#100

DL7:

MOVR7,#100

DL8:

DJNZR7,DL8

DJNZR6,DL7

DJNZR5,DL6

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1