资料LCD1602移动显示程序.docx

上传人:b****1 文档编号:13263701 上传时间:2023-06-12 格式:DOCX 页数:9 大小:14.92KB
下载 相关 举报
资料LCD1602移动显示程序.docx_第1页
第1页 / 共9页
资料LCD1602移动显示程序.docx_第2页
第2页 / 共9页
资料LCD1602移动显示程序.docx_第3页
第3页 / 共9页
资料LCD1602移动显示程序.docx_第4页
第4页 / 共9页
资料LCD1602移动显示程序.docx_第5页
第5页 / 共9页
资料LCD1602移动显示程序.docx_第6页
第6页 / 共9页
资料LCD1602移动显示程序.docx_第7页
第7页 / 共9页
资料LCD1602移动显示程序.docx_第8页
第8页 / 共9页
资料LCD1602移动显示程序.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

资料LCD1602移动显示程序.docx

《资料LCD1602移动显示程序.docx》由会员分享,可在线阅读,更多相关《资料LCD1602移动显示程序.docx(9页珍藏版)》请在冰点文库上搜索。

资料LCD1602移动显示程序.docx

资料LCD1602移动显示程序

[资料]LCD1602移动显示程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitLCD_RS=P3^0;

sbitLCD_RW=P3^1;

sbitLCD_EN=P3^2;

ucharcodedis1[]={"CHINESE"};

ucharcodedis2[]={"NEWYEAR"};

/*******************************************************************/

/**/

/*延时子程序

*/

/**/

/*******************************************************************/

voiddelay(intms)

{

inti;

while(ms--)

{

for(i=0;i<250;i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

/*******************************************************************/

/**/

/*检查LCD忙状态

*/

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

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

*/

/**/

/*******************************************************************/

bitlcd_busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

_nop_();

_nop_();

_nop_();

_nop_();

result=(bit)(P0&0x80);

LCD_EN=0;

returnresult;

}

/*******************************************************************/

/**/

/*写指令数据到LCD

*/

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

*/

/**/

/*******************************************************************/

voidlcd_wcmd(ucharcmd)

{

while(lcd_busy());

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

_nop_();

_nop_();

P0=cmd;

_nop_();

_nop_();

_nop_();

_nop_();

LCD_EN=1;

_nop_();

_nop_();

_nop_();

_nop_();

LCD_EN=0;

}

/*******************************************************************/

/*

*/

/*写显示数据到LCD

*/

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

*/

/*

*/

/*******************************************************************/

voidlcd_wdat(uchardat){

while(lcd_busy());

LCD_RS=1;

LCD_RW=0;

LCD_EN=0;

P0=dat;

_nop_();

_nop_();

_nop_();

_nop_();

LCD_EN=1;

_nop_();

_nop_();

_nop_();

_nop_();

LCD_EN=0;

}

/*******************************************************************/

/**/

/*设定显示位置

*/

/**/

/*******************************************************************/

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(0x38);

delay(5);

lcd_wcmd(0x38);

delay(5);

lcd_wcmd(0x0c);//显示开,关光标

delay(5);

lcd_wcmd(0x06);//移动光标

delay(5);

lcd_wcmd(0x01);//清除LCD的显示内容

delay(5);

}

/*******************************************************************/

/**/

/*清屏子程序

*/

/**/

/*******************************************************************/

voidlcd_clr()

{

lcd_wcmd(0x01);//清除LCD的显示内容

delay(5);

}

/*******************************************************************/

/**/

/*闪动子程序

*/

/**/

/*******************************************************************/

voidflash()

{

delay(600);//控制停留时间

lcd_wcmd(0x08);//关闭显示

delay(200);//延时

lcd_wcmd(0x0c);//开显示

delay(200);

lcd_wcmd(0x08);//关闭显示

delay(200);//延时

lcd_wcmd(0x0c);//开显示

delay(200);

}

/*******************************************************************/

/*

*/

/*主程序

*/

/*

*/

/*******************************************************************/

main()

{

uchari,j;

delay(10);

lcd_init();//初始化LCD

while

(1)

{

lcd_clr();

lcd_pos(0x10);//设置显示位置为第一行第17列

i=0;

while(dis1[i]!

='\0')

{//显示字符"CHINESE"

lcd_wdat(dis1[i]);

i++;

}

lcd_pos(0x50);//设置显示位置为第二行第17列

i=0;

while(dis2[i]!

='\0')

{

lcd_wdat(dis2[i]);//显示字符"NEWYEAR"

i++;

}

/*for(j=0;j<16;j++)//左移动16格

{

lcd_wcmd(0x18);//字符同时左移一格

delay(100);//控制移动时间

}

flash();*///闪动二次

for(j=0;j<29;j++)//向左移动29格

{

lcd_wcmd(0x18);//字符同时左移一格

delay(100);//控制移动时间

}

for(j=0;j<13;j++)//向右移动13格

{

lcd_wcmd(0x1C);//字符同时左移一格

delay(100);//控制移动时间

}

flash();//闪动二次

}

}

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2