LCD12864显示问题。
时间:10-02
整理:3721RD
点击:
void Busy()
{
DataPort=0xFF;
RS=0;
RW=1;
while (1)
{
E =1;
if (P0^7==0)
break;
}
E=0;
}
/***********写指令子程序****************/
void Write_Com(uchar command)
{
Busy(); //检测忙标志位
RS=0;
RW=0;
DataPort=command; //写入指令
E=1;
delay(1);
E=0;
}
/***********写数据子程序***************/
void Write_Data(uchar Data)
{
Busy();
RS=1;
RW=0;
DataPort=Data;
E=1;
delay(1);
E=0;
}
/***********LCD初始化*******************/
void Init_LCD(void)
{
PSB=0;
delay(1);
PSB=1; //将PSB置1,通信方式为8位数据并口
delay(1);
Write_Com(0x30); //30H--基本指令操作
Write_Com(0x0c); //开显示,关光标,不闪烁。
Write_Com(0x01); //清除显示
Write_Com(0x02);
Write_Com(0x06); //指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
Write_Com(0x04); //显示状态 全关
}
/*****************清屏***********************/
void Clear_LCD(void)
{
Write_Com(0x01);
Write_Com(0x34);
Write_Com(0x30);
}
void setPosition(uchar x, uchar y)
{
uchar p;
switch(x)
{
case 0: p = 0x80; break; //第一行开始地址
case 1: p = 0x90; break; //第二行
case 2: p = 0x88; break; //第三行
case 3: p = 0x98; break; //第四行
}
p += y;
Write_Com(p);
}
void writeString(uchar * str)
{
uchar i = 0;
while(str[i] != 0)
{
Write_Data(str[i++]);
}
}
程序如上,我在显示特殊符号如★★__▲▲ ,~o~的时候就会出现乱码,并且两者交替出现?
{
DataPort=0xFF;
RS=0;
RW=1;
while (1)
{
E =1;
if (P0^7==0)
break;
}
E=0;
}
/***********写指令子程序****************/
void Write_Com(uchar command)
{
Busy(); //检测忙标志位
RS=0;
RW=0;
DataPort=command; //写入指令
E=1;
delay(1);
E=0;
}
/***********写数据子程序***************/
void Write_Data(uchar Data)
{
Busy();
RS=1;
RW=0;
DataPort=Data;
E=1;
delay(1);
E=0;
}
/***********LCD初始化*******************/
void Init_LCD(void)
{
PSB=0;
delay(1);
PSB=1; //将PSB置1,通信方式为8位数据并口
delay(1);
Write_Com(0x30); //30H--基本指令操作
Write_Com(0x0c); //开显示,关光标,不闪烁。
Write_Com(0x01); //清除显示
Write_Com(0x02);
Write_Com(0x06); //指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
Write_Com(0x04); //显示状态 全关
}
/*****************清屏***********************/
void Clear_LCD(void)
{
Write_Com(0x01);
Write_Com(0x34);
Write_Com(0x30);
}
void setPosition(uchar x, uchar y)
{
uchar p;
switch(x)
{
case 0: p = 0x80; break; //第一行开始地址
case 1: p = 0x90; break; //第二行
case 2: p = 0x88; break; //第三行
case 3: p = 0x98; break; //第四行
}
p += y;
Write_Com(p);
}
void writeString(uchar * str)
{
uchar i = 0;
while(str[i] != 0)
{
Write_Data(str[i++]);
}
}
程序如上,我在显示特殊符号如★★__▲▲ ,~o~的时候就会出现乱码,并且两者交替出现?
比如显示☆就会和 爱 字交替出现。
6666666666666666666666666666666666666
