LCD1602快速显示程序附真实序列图Word文档下载推荐.docx

上传人:b****6 文档编号:21089327 上传时间:2023-01-27 格式:DOCX 页数:12 大小:886.50KB
下载 相关 举报
LCD1602快速显示程序附真实序列图Word文档下载推荐.docx_第1页
第1页 / 共12页
LCD1602快速显示程序附真实序列图Word文档下载推荐.docx_第2页
第2页 / 共12页
LCD1602快速显示程序附真实序列图Word文档下载推荐.docx_第3页
第3页 / 共12页
LCD1602快速显示程序附真实序列图Word文档下载推荐.docx_第4页
第4页 / 共12页
LCD1602快速显示程序附真实序列图Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

LCD1602快速显示程序附真实序列图Word文档下载推荐.docx

《LCD1602快速显示程序附真实序列图Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LCD1602快速显示程序附真实序列图Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

LCD1602快速显示程序附真实序列图Word文档下载推荐.docx

typedefsignedcharsint8;

typedefunsignedshortuint16;

typedefsignedshortsint16;

typedefunsignedlonguint32;

typedefsignedlongsint32;

/*

*函数名称:

LCD_WriteCMD

*功能描述:

写单个命令

*输入参数:

CMD命令字节,低7位有效

*输出参数:

*返回值:

0执行成功,-1执行失败

*其它说明:

*修改日期修改人修改内容

*-----------------------------------------------

*XXXX-XX-XXXXXXXXXX

*/

sint8LCD_WriteCMD(uint8CMD);

LCD_SetPos

设置显示位置

XPos行位置1,2;

YPos列位置,1~16

*0x00----------------0x0f0x10-------0x27第一行(一次显示16个字符)

*0x40----------------0x4f0x50-------0x67第二行

sint8LCD_SetPos(uint8XPos,uint8YPos);

LCD_WriteByte

写入单个字节显示数据

Byte待写入字节数据

sint8LCD_WriteByte(uint8Byte);

LCD_DispChar

指定位置显示单个字符

*ch待显示字符

0执行成功,<

0执行失败

当行或列位置不合法时,不设置显示位置,直接在当前光标处显示

sint8LCD_DispChar(uint8XPos,uint8YPos,charch);

LCD_DispString

指定位置显示字符串

*pStr待显示字符串首地址

sint8LCD_DispString(uint8XPos,uint8YPos,constchar*pStr);

LCD_Init

初始化LCD1602

8位数据总线模式、5*7点阵字符、AC自增、屏不移动、光标不显示、不闪烁

*常用命令:

0x38:

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

指令执行时间40us

*0x0C:

开显示,关光标40us

*0x08:

关显示,关光标40us

*0x06:

写完数据自动右移光标,普通情形,从左向右显示40us

*0x04:

写完数据自动左移光标,可以从右向左显示40us

*0x01:

清除显示内容,即清屏1.64ms

*0x02:

使光标还回起始位置1.64ms

*0x18:

屏幕上所有字符同时左移一格,适合滚动显示40us

*0x1C:

屏幕上所有字符同时右移一格,适合滚动显示40us

sint8LCD_Init(void);

#endif/*endLCD1602_H*/

#include<

reg52.h>

intrins.h>

#include"

LCD1602.h"

/*LCD1602引脚定义*/

#defineLCD_CTRLP2/*LCD控制口*/

#defineEN0x80/*P2.7*/

#defineRS0x40/*P2.6*/

#defineRW0x20/*P2.5*/

#defineLCD_DATAP0/*LCD数据口*/

#defineLCD_DATAIN_SETLCD_DATA=0xFF/*数据口输入设置宏*/

/*控制线置位与复位带参宏定义*/

#defineSET(X)LCD_CTRL|=(X)

#defineRESET(X)LCD_CTRL&

=~(X)

/*读取LCD忙状态BFbit7*/

#defineLCD_STATELCD_DATA&

0x80

/*延时1us宏定义*/

#defineNOP()_nop_()

/*

*延时N毫秒

staticvoidDelayNms(intN)

{

inti=0;

while(N--)

{

for(i=0;

i<

75;

i++)

{}

}

}

/*等待LCD空闲,BF=0*/

staticvoidLCD_WaitIdle(void)

uint8State=0;

/*读BF时序建立*/

RESET(RS);

SET(RW);

SET(EN);

/*设置BF对应引脚为输入*/

LCD_DATAIN_SET;

/*等待BF=0,LCD空闲*/

while((State=LCD_STATE)!

=0);

/*拉低LCD使能*/

RESET(EN);

/*写一个字节命令*/

sint8LCD_WriteCMD(uint8CMD)

/*若为无效命令,则直接返回*/

if((CMD&

0x3F)==0)

return-1;

LCD_DATA=CMD;

RESET(RW);

/*产生下降沿,启动写入操作*/

LCD_WaitIdle();

/*等待LCD空闲*/

return0;

/*设置显示位置*/

sint8LCD_SetPos(uint8XPos,uint8YPos)

uint8Pos=0;

if((XPos!

=1)&

&

(XPos!

=2))/*判断行坐标是否合法*/

if(YPos>

40)/*每行有40个地址*/

if(XPos==1)/*第一行*/

Pos=0x00+YPos-1;

else/*第二行*/

Pos=0x40+YPos-1;

LCD_DATA=Pos|0x80;

/*产生下降沿*/

/*写入一个字节数据*/

sint8LCD_WriteByte(uint8Byte)

if(Byte==0)

LCD_DATA=Byte;

SET(RS);

/*指定位置显示一个字符*/

sint8LCD_DispChar(uint8XPos,uint8YPos,charch)

sint8ret=0;

ret+=LCD_SetPos(XPos,YPos);

ret+=LCD_WriteByte((uint8)ch);

returnret;

/*指定位置显示一个字符串*/

sint8LCD_DispString(uint8XPos,uint8YPos,constchar*pStr)

sint8Cnt=0;

/*逐个显示字符,最多可以显示41-YPos个字符(含超出一屏的内容)

例:

YPos=1,则Cnt范围为0~39*/

while((pStr[Cnt]!

='

\0'

)&

(Cnt<

=40-YPos))

ret+=LCD_WriteByte((uint8)pStr[Cnt]);

Cnt++;

if(Cnt+YPos>

40)/*字符串过长!

ret=-1;

/*LCD1602初始化*/

sint8LCD_Init(void)

/*上电等待LCD硬件自动复位完成,不少于10ms*/

DelayNms(10);

/*关显示*/

LCD_WriteCMD(0x08);

/*功能设置,两行显示、5*7点阵字体、8位数据总线*/

LCD_WriteCMD(0x38);

/*设置输入模式,AC自动加1,显示不移位,光标自动移位*/

LCD_WriteCMD(0x06);

/*开显示,关光标,关闪烁*/

LCD_WriteCMD(0x0C);

/*清显示,清除DDRAM,光标归位*/

LCD_WriteCMD(0x01);

*文件名称:

main.c

*LCD1602模块测试程序

/*延时N个10us*/

staticvoidDelayN10us(uint16N)

while(N--);

intmain()

LCD_Init();

while

(1)

LCD_DispString(2,2,"

Welcome!

!

"

);

DelayN10us(65535);

Hello!

//DelayN10us(65535);

写清屏命令0x01序列图:

写模式设置命令0x38序列图:

写显示地址序列图:

写一字节数据序列图:

注:

以上序列图为本人亲测!

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

当前位置:首页 > 解决方案 > 其它

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

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