经典的KEILC51LCD16024总线驱动+中文注释程序.docx

上传人:b****1 文档编号:3327231 上传时间:2023-05-05 格式:DOCX 页数:13 大小:17.32KB
下载 相关 举报
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第1页
第1页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第2页
第2页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第3页
第3页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第4页
第4页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第5页
第5页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第6页
第6页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第7页
第7页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第8页
第8页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第9页
第9页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第10页
第10页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第11页
第11页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第12页
第12页 / 共13页
经典的KEILC51LCD16024总线驱动+中文注释程序.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

经典的KEILC51LCD16024总线驱动+中文注释程序.docx

《经典的KEILC51LCD16024总线驱动+中文注释程序.docx》由会员分享,可在线阅读,更多相关《经典的KEILC51LCD16024总线驱动+中文注释程序.docx(13页珍藏版)》请在冰点文库上搜索。

经典的KEILC51LCD16024总线驱动+中文注释程序.docx

经典的KEILC51LCD16024总线驱动+中文注释程序

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

经典的KEIL_C51_LCD1602_4总线驱动+中文注释程序

文件名:

1602.c

cpu:

STC12C5A32S2晶振频率:

11.0592Mhz

编程者:

BG1EQ@TOM.COM

2011-8-25测试通过

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

LCD1602实际硬件连接:

LCM_RS-----P2^0;//1602定义引脚

LCM_RW-----P2^1;

LCM_E-----P2^7;

LCM_DB0-----P0.0

LCM_DB1-----P0.1

LCM_DB2-----P0.2

LCM_DB3-----P0.3

LCM_DB4-----P0.4

LCM_DB5-----P0.5

LCM_DB6-----P0.6

LCM_DB7-----P0.7

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

#include//包含52头文件

#include//包含初试化头文件

#include

//#include//包含标准函数库头文件

#include"4bitlcm1602.h"//包含delay头文件

#include"delay.h"//包含delay头文件

#defineucharunsignedchar

#defineuintunsignedint

//------硬件端口定义--------------------------------

//------函数(声明)--------------------------------

voidsys_init(void);//系统初始化函数(声明)

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

*函数名称:

主程序

*功能描述:

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

main()//主程序入口

{

//LCMInit();//初始化LCD

sys_init();//系统初始化

while

(1)

{//主程序循环(开始)

LCD_cls();//清屏

DisplayListChar(0,0,"MONITORV1.0");//第1行显示

DisplayListChar(0,1,"APPLYINCHINA");//第2行显示

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

LCD_cls();//清屏

DisplayListChar(0,0,"BG1EQ@TOM.COM");//第1行显示

DisplayListChar(0,1,"2011Y08M25D");//第2行显示

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

LCD_cls();//清屏

DisplayOneChar(0,0,'0');//显示字符

DisplayOneChar(1,0,'1');//显示字符

DisplayOneChar(2,0,'2');//显示字符

DisplayOneChar(3,0,'3');//显示字符

DisplayOneChar(4,0,'4');//显示字符

DisplayOneChar(5,0,'5');//显示字符

DisplayOneChar(6,0,'6');//显示字符

DisplayOneChar(7,0,'7');//显示字符

DisplayOneChar(8,0,'8');//显示字符

DisplayOneChar(9,0,'9');//显示字符

DisplayOneChar(10,0,'0');//显示字符

DisplayOneChar(11,0,'-');//显示字符

DisplayOneChar(12,0,'+');//显示字符

DisplayOneChar(13,0,'=');//显示字符

DisplayOneChar(14,0,'#');//显示字符

DisplayOneChar(15,0,'$');//显示字符

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

LCD_cls();//清屏

DisplayOneChar(0,1,'A');//显示字符

DisplayOneChar(1,1,'B');//显示字符

DisplayOneChar(2,1,'C');//显示字符

DisplayOneChar(3,1,'D');//显示字符

DisplayOneChar(4,1,'E');//显示字符

DisplayOneChar(5,1,'F');//显示字符

DisplayOneChar(6,1,'G');//显示字符

DisplayOneChar(7,1,'H');//显示字符

DisplayOneChar(8,1,'I');//显示字符

DisplayOneChar(9,1,'J');//显示字符

DisplayOneChar(10,1,'K');//显示字符

DisplayOneChar(11,1,'L');//显示字符

DisplayOneChar(12,1,'M');//显示字符

DisplayOneChar(13,1,'N');//显示字符

DisplayOneChar(14,1,'O');//显示字符

DisplayOneChar(15,1,'P');//显示字符

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

}//主程序循环结束返回

}

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

*函数名称:

sys_init

*功能描述:

系统初始化

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

voidsys_init()

{

Delay400Ms();//上电后延时,让LCD1602进入稳定状态,

LCMInit();//初始化LCD1602

}

以上是C51主程序

以下是C51模块化4BITLCM1602.H函数程序

/*--------------------------------------------------------------------------

4BITLCM1602.H

4位总线驱动LCD1602头文件

--------------------------------------------------------------------------*/

#ifndef__4BITLCM1602_H__

#define__4BITLCM1602_H__

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

//#include//包含52头文件

//#include//包含初试化头文件

//#include

//#include//包含标准函数库头文件

#defineucharunsignedchar

#defineuintunsignedint

//------硬件端口定义--------------------------------

sbitLCM_RS=P2^0;//1602定义引脚

sbitLCM_RW=P2^1;

sbitLCM_E=P2^7;

sbitLCD7=P0^7;

sbitLCD6=P0^6;

sbitLCD5=P0^5;

sbitLCD4=P0^4;

ucharbdatalcdbuff;//声明,全局的、可以位寻址的变量

sbitlcd_buff7=lcdbuff^7;

sbitlcd_buff6=lcdbuff^6;

sbitlcd_buff5=lcdbuff^5;

sbitlcd_buff4=lcdbuff^4;

sbitlcd_buff3=lcdbuff^3;

sbitlcd_buff2=lcdbuff^2;

sbitlcd_buff1=lcdbuff^1;

sbitlcd_buff0=lcdbuff^0;

//------函数(声明)--------------------------------

voidLCMInit(void);//LCM屏初始化

voidR_BF();//读忙标志BF

voidw_com(ucharcom);//写指令函数

voidw_cdata(void);//写数据函数

voidWriteDataLCM(unsignedcharWDLCM);//LCM屏写数据函数(声明)

voidLCD_cls(void);//LCM屏清屏

voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);

voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);

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

*函数名称:

WriteDataLCM

*功能描述:

LCM写数据

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

voidWriteDataLCM(ucharWDLCM)

{

R_BF();

lcdbuff=WDLCM;

LCM_RS=1;

LCM_RW=0;

w_cdata();//这里写入字符码

}

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

*函数名称:

DisplayListChar

*功能描述:

按指定位置显示一串字符,原来的遇到空格0x20就不显示

*函数说明:

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

voidDisplayListChar(ucharX,ucharY,ucharcode*DData)

{

ucharListLength,j;//定义局部变量

ListLength=strlen(DData);//读取字符串长度

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

Y&=0x1;//限制Y不能大于1

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

{

for(j=0;j

{

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

X++;

}

}

}

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

*函数名称:

DisplayOneChar

*功能描述:

按指定位置显示一个字符

*函数说明:

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

voidDisplayOneChar(ucharX,ucharY,ucharDData)

{

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

Y&=0x1;//限制Y不能大于1

if(Y)X|=0x40;//如果Y是“1”,则合成显示第二行时地址码+0x40;

X|=0x80;//合成的、显示位置码,指令码:

1Yxxxxxx(B)

w_com(X);//写入地址码,X数据包含字符的显示位置

WriteDataLCM(DData);//写入数据码,要显示的字符数据

}

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

*函数名称:

LCMInit

*功能描述:

LCM初始化

*函数说明:

LCM初始化

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

voidLCMInit(void)

{

w_com(0x2c);//功能设置为:

四位数据总线

w_com(0x01);//清屏

w_com(0x06);//设置显示输入模式(AC指针自加1,显示不移位)

w_com(0x0c);//显示开/关设置(设置显示、光标和闪烁开关)

}

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

*函数名称:

R_BF

*功能描述:

读忙标志BF

*函数说明:

读忙标志BF

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

voidR_BF()

{

LCD7=1;//BF端口在DB7,置LCD7为“1”等待测试本端口电平

LCM_RS=0;

LCM_RW=1;

LCM_E=1;//RS=0;RW=1;E=1表示读忙标志BF

while(LCD7);//若内部操作位BF忙CPU就等待BF不忙才能操作

LCM_E=0;

}

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

*函数名称:

w_com

*功能描述:

写命令

*函数说明:

主要用来初始化一些设置显示、输入模式、显示开关、光标、移位、功能、地址

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

voidw_com(ucharcom)

{

R_BF();

lcdbuff=com;

LCM_RS=0;

LCM_RW=0;

w_cdata();

}

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

*函数名称:

w_cdata

*功能描述:

写命令的公共

*函数说明:

四位数据总线,每发送一字节,先发送高四位,再发送低四位

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

voidw_cdata(void)

{

//-----写命令的高4位

LCD7=lcd_buff7;

LCD6=lcd_buff6;

LCD5=lcd_buff5;

LCD4=lcd_buff4;

LCM_E=1;

_nop_();

LCM_E=0;

_nop_();

_nop_();

//-----写命令的低4位

LCD7=lcd_buff3;

LCD6=lcd_buff2;

LCD5=lcd_buff1;

LCD4=lcd_buff0;

LCM_E=1;

_nop_();

LCM_E=0;

}

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

*函数名称:

LCD_cls

*功能描述:

LCM清屏

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

voidLCD_cls(void)

{

w_com(0x01);//清屏

}

#endif

以下是C51模块化DELAY.H函数程序

/*--------------------------------------------------------------------------

DELAY.H

延时函数头文件

--------------------------------------------------------------------------*/

#ifndef__DELAY_H__

#define__DELAY_H__

#defineucharunsignedchar

#defineuintunsignedint

//------函数(声明)--------------------------------

voidDelay400Ms(void);//延时400mS函数(子程序)

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

*函数名称:

Delay400Ms

*功能描述:

400ms延时

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

voidDelay400Ms(void)

{

ucharTempCycA=30;//1周期MPU用30,12周期MPU用5

uintTempCycB;

while(TempCycA--)

{

TempCycB=7269;

while(TempCycB--);

};

}

#endif

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

当前位置:首页 > 考试认证 > 公务员考试

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

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