液晶显示不全,求助
时间:10-02
整理:3721RD
点击:
#include <reg51.h>
#include <intrins.h>
sbit RS = P2^6;
sbit RW = P2^5;
sbit E = P2^7;
sbit BF=P0^7;
char tab[]={"zhong hong rui"};
char tab1[]={"ni qu si ab"};
void delay(int xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void check_BF()
{
E=0;
do
{
BF=0;
RS=0;
RW=1;
E=1;
}
while(BF==1);
}
void xie_zhiling(char zhiling)
{
check_BF();
RS=0;
RW=0;
E=0;
_nop_();
_nop_();
P0=zhiling;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
E=0;
}
void write(char shuju )
{
check_BF();
RS=1;
RW=0;
E=0;
_nop_();
_nop_();
P0=shuju;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
E=0;
}
void lcdchushihua()
{
xie_zhiling(0x38);
delay(5);
xie_zhiling(0x38);
delay(5);
xie_zhiling(0x38);
delay(5);
xie_zhiling(0x0c);
delay(5);
xie_zhiling(0x06);
delay(5);
xie_zhiling(0x01);
delay(5);
}
main()
{
char i;
lcdchushihua();
xie_zhiling(0x80);
while(tab[i]!='\0')
{
write(tab[i]);
i++;
delay(500);
}
i=0;
xie_zhiling(0x40+0x80);
while(tab1[i]!='\0')
{
write(tab1[i]);
i++;
delay(500);
}
i=0;
}
为什么我的程序第二行显示不出来?还有第一行最后一个字母“i”没有显示出来,请教啊!
#include <intrins.h>
sbit RS = P2^6;
sbit RW = P2^5;
sbit E = P2^7;
sbit BF=P0^7;
char tab[]={"zhong hong rui"};
char tab1[]={"ni qu si ab"};
void delay(int xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void check_BF()
{
E=0;
do
{
BF=0;
RS=0;
RW=1;
E=1;
}
while(BF==1);
}
void xie_zhiling(char zhiling)
{
check_BF();
RS=0;
RW=0;
E=0;
_nop_();
_nop_();
P0=zhiling;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
E=0;
}
void write(char shuju )
{
check_BF();
RS=1;
RW=0;
E=0;
_nop_();
_nop_();
P0=shuju;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
E=0;
}
void lcdchushihua()
{
xie_zhiling(0x38);
delay(5);
xie_zhiling(0x38);
delay(5);
xie_zhiling(0x38);
delay(5);
xie_zhiling(0x0c);
delay(5);
xie_zhiling(0x06);
delay(5);
xie_zhiling(0x01);
delay(5);
}
main()
{
char i;
lcdchushihua();
xie_zhiling(0x80);
while(tab[i]!='\0')
{
write(tab[i]);
i++;
delay(500);
}
i=0;
xie_zhiling(0x40+0x80);
while(tab1[i]!='\0')
{
write(tab1[i]);
i++;
delay(500);
}
i=0;
}
为什么我的程序第二行显示不出来?还有第一行最后一个字母“i”没有显示出来,请教啊!
第一行最后一个字母没有显示 是因为 一行一共只显示16字符 包括空格
显示第二行之前加个延时看看
我找到原因了,谢谢
谢谢,我找到原因了