首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

1602/2002/2004液晶模块驱动2

1602/2002/2004液晶模块驱动2

.软件设计

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

*程序名称:1602/2002/21004液晶显示模块驱动

*程序功能:显示字符

*开发工具:WSF-51DB开发板

* MCU型号:AT89S52-24PU

*时钟频率:12MHZ

*程序作者:吴师傅

*版权说明:吴师傅版权所有。转载请注明来源和作者。

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



#include<reg52.h>




sbit E=P3^4;//脉冲使能

sbit RW=P3^3;//读写选择

sbit RS=P3^2;//数据命令选择



// 延时ms函数:

void Delayms(unsigned int t)

{

       unsigned int i,j;

       for(i=t;i>0;i--)

                for(j=0;j<120;j++);

}



// 1602检查状态函数:

void Check1602State(void)

{

       P2=0xff;//P2口初始值

       E=0;//读状态前三控制线的状态

       RS=0;

       RW=1;

       E=1;//拉高,读状态

       while((P2&0x80)==0x80);//判断是否繁忙,等待空闲

       E=0;//读状态后三控制线的状态

       RS=1;

       RW=0;   

}



// 1602写命令函数:

void Write1602Command( unsigned char com)

{

       Check1602State();//检查状态

       P2=com;//赋值

       E=0;//写命令前三控制线的状态

       RS=0;

       RW=0;

       E=1;//拉高,写命令

       E=0;//写命令后三控制线的状态

       RS=1;

       RW=1;

}



//1602写数据函数:

void Write1602Data( unsigned char dat)

{

       Check1602State();//检查状态

       P2=dat;//赋值

       E=0;//写数据前三控制线的状态

       RS=1;

       RW=0;   

       E=1;//拉高,写数据

       E=0;//写数据后三控制线的状态

       RS=0;

       RW=1;

}   
返回列表