LCD1602显示程序.docx

上传人:b****3 文档编号:10780974 上传时间:2023-05-27 格式:DOCX 页数:9 大小:16.39KB
下载 相关 举报
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显示程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitLCM_E=P3^5;//定义接口

sbitLCM_RW=P3^6;

sbitLCM_RS=P3^7;

#defineLCM_DataP1//数据接口

voidLCM_WriteData(ucharWDLCM);

voidLCM_WriteCommand(ucharWCLCM,BuysC);

ucharLCM_ReadData(void);

ucharLCM_ReadStatus(void);

voidLCM_Init(void);

voidDisplayOneChar(ucharX,ucharY,ucharDData);

voidDisplayListChar(ucharX,ucharY,ucharcode*DData);

voidDelay5Ms(void);

voidDelay400Ms(void);

ucharcodeuctech[]={"1602A"};

ucharcodenet[]={""};

voidmain(void)

{

Delay400Ms();//启动等待,等LCM讲入工作状态

LCM_Init();//LCM初始化

Delay5Ms();//延时片刻(可不要)

DisplayListChar(6,1,uctech);

DisplayListChar(0,0,net);

LCM_ReadData();//测试用句无意义

LCM_Data=255;

while

(1);

}

/****************************1602A写数据函数**************************/

/*函数原型:

voidLCM_WriteData(ucharWDLCM)

/*函数功能:

1602A写数据

/*输入参数:

要写入的数据

/*输出参数:

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

voidLCM_WriteData(ucharWDLCM)

{

LCM_ReadStatus();//检测忙

LCM_Data=WDLCM;

LCM_RS=1;

LCM_RW=0;

LCM_E=0;//若晶振速度太高可以在这后加小的延时

LCM_E=0;//延时

LCM_E=1;

}

/****************************1602A写指令函数**************************/

/*函数原型:

voidLCM_WriteCommand(ucharWCLCM,BuysC)

/*函数功能:

1602A写指令

/*输入参数:

要写入的指令

/*输出参数:

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

voidLCM_WriteCommand(ucharWCLCM,BuysC)//BuysC为0时忽略忙检测

{

if(BuysC)LCM_ReadStatus();//根据需要检测忙

LCM_Data=WCLCM;

LCM_RS=0;

LCM_RW=0;

LCM_E=0;

LCM_E=0;

LCM_E=1;

}

/****************************1602A读数据函数**************************/

/*函数原型:

ucharLCM_ReadData(void)

/*函数功能:

1602A读数据

/*输入参数:

/*输出参数:

1602A返回的数据

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

ucharLCM_ReadData(void)

{

LCM_RS=1;

LCM_RW=1;

LCM_E=0;

LCM_E=0;

LCM_E=1;

return(LCM_Data);

}

/****************************1602A读状态函数**************************/

/*函数原型:

ucharLCM_ReadData(void)

/*函数功能:

1602A读状态

/*输入参数:

/*输出参数:

1602A返回的状态

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

ucharLCM_ReadStatus(void)

{

LCM_Data=0xFF;

LCM_RS=0;

LCM_RW=1;

LCM_E=0;

LCM_E=0;

LCM_E=1;

while(LCM_Data&0x80);//检测忙信号

return(LCM_Data);

}

/****************************1602A初始化函数**************************/

/*函数原型:

voidLCM_Init(void)

/*函数功能:

1602A初始化

/*输入参数:

/*输出参数:

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

voidLCM_Init(void)

{

LCM_Data=0;

LCM_WriteCommand(0x38,0);//三次显示模式设置,不检测忙信号

Delay5Ms();

LCM_WriteCommand(0x38,0);

Delay5Ms();

LCM_WriteCommand(0x38,0);

Delay5Ms();

LCM_WriteCommand(0x38,1);//显示模式设置,开始要求每次检测忙信号

LCM_WriteCommand(0x08,1);//关闭显示

LCM_WriteCommand(0x01,1);//显示清屏

LCM_WriteCommand(0x06,1);//显示光标移动设置

LCM_WriteCommand(0x0C,1);//显示开及光标设置

}

/******************1602A按指定位置显示一个字符函数**********************/

/*函数原型:

voidDisplayOneChar(ucharX,ucharY,ucharDData)

/*函数功能:

1602A按指定位置显示一个字符

/*输入参数:

X坐标Y坐标要显示的字符

/*输出参数:

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

voidDisplayOneChar(ucharX,ucharY,ucharDData)

{

Y&=0x1;

X&=0xF;//限制X不能大于15,Y不能大于1

if(Y)X|=0x40;//当要显示第二行时地址码+0x40;

X|=0x80;//算出指令码

LCM_WriteCommand(X,0);//这里不检测忙信号,发送地址码

LCM_WriteData(DData);

}

/*******************1602A按指定位置显示一串字符函数*********************/

/*函数原型:

voidDisplayListChar(ucharX,ucharY,ucharcode*DData)

/*函数功能:

1602A按指定位置显示一个字符

/*输入参数:

X坐标Y坐标要显示字符串的首地址

/*输出参数:

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

voidDisplayListChar(ucharX,ucharY,ucharcode*DData)

{

ucharListLength;

ListLength=0;

Y&=0x1;

X&=0xF;//限制X不能大于15,Y不能大于1

while(DData[ListLength]>0x20)//若到达字串尾则退出

{

if(X<=0xF)//X坐标应小于0xF

{

DisplayOneChar(X,Y,DData[ListLength]);//显示单个字符

ListLength++;

X++;

}

}

}

/********************5ms延时函数************************/

/*函数原型:

voidDelay5Ms(void)

/*函数功能:

5ms延时

/*输入参数:

/*输出参数:

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

voidDelay5Ms(void)

{

unsignedintTempCyc=5552;

while(TempCyc--);

}

/********************400ms延时延时函数************************/

/*函数原型:

voidDelay400Ms(void)

/*函数功能:

400ms延时延时

/*输入参数:

/*输出参数:

/*调用模块:

/*建立时间:

2005/11/14

/*作者:

站长

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

voidDelay400Ms(void)

{

ucharTempCycA=5;

unsignedintTempCycB;

while(TempCycA--)

{

TempCycB=7269;

while(TempCycB--);

};

}

1

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

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

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

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