#include "12864.h"
#include <reg52.h>
#define Lcd_Bus P0 //数据总线
//LCD接口定义
sbit RS = P2^7;//模式位,为0输入指令,为1输入数据
sbit RW = P2^6;//读写位,为0读,为1写
sbit E = P2^5;//使能位
sbit LCM_psb = P2^4;//此处可去掉,直接接高电平
sbit LCM_rst = P2^3;//此处可去掉,直接接高电平
//LCD驱动(DY12864CBL液晶显示屏并口驱动程序)
/******************************************************************************/
void chk_busy()
{//检查忙位(底层)
RS=0;
RW=1;
E=1;
Lcd_Bus=0xff;
while((Lcd_Bus&0x80)==0x80);
E=0;
}
/******************************************************************************/
void write_com(unsigned char cmdcode)
{//写命令到LCD(底层)
chk_busy();
RS=0;
RW=0;
E=1;
Lcd_Bus=cmdcode;
E=0;
}
/******************************************************************************/
void write_data(unsigned char Dispdata)
{ //写数据到LCD(底层)
chk_busy();
RS=1;
RW=0;
E=1;
Lcd_Bus=Dispdata;
E=0;
}
/******************************************************************************/
void lcm_init()
{//初始化LCD屏(被调用层)
write_com(0x30); //选择8bit数据流
write_com(0x0c); //开显示(无游标、不反白)
write_com(0x01); //清除显示,并且设定地址指针为00H
}
/*****************************************************************************/
void LCM_WriteString(unsigned char *s)
{//向LCM发送一个字符串,长度64字符之内。(被调用层)
while(*s>0)
{ //应用:LCM_WriteString("您好!");
write_data(*s);
s++;
}
}
/******************************************************************************/
void LCM_WriteDatOrCom(bit i,unsigned char word)
{//写指令或数据(被调用层)
if(i == 0)
{
write_com(word);//写指令或数据(0,指令)
}else{
write_data(word);//写指令或数据(1,数据)
}
}
void lcm_clr(void){//清屏函数
LCM_WriteDatOrCom(0,0x01);
}