三.软件设计
/*****************************************************************
*程序名称: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;
} |