1602液晶显示,程序显示不了东西

2019-07-15 20:24发布

#include<reg51.h>
#define LCD P0
sbit EN=P2^7;
sbit RW=P2^5;
sbit RS=P2^6;
void DINGSHIQI()  //定时器设置
{
   TMOD=0x01;
   EA=1;
   ET0=1;
   TR0=1;
}

void delay(char H,char L)//延时函数
{
TF0=0;TH0=H;TL0=L;
}
void lcdwritecom(char com)
{
RW=0;
RS=0;
EN=1;
delay(0xf4,0x48);//延时
LCD=com;
delay(0xf4,0x48);
EN=0;
}
void lcdwritedata(char dat)
{
RW=0;
RS=1;
EN=1;
delay(0xf4,0x48);
LCD=dat;
delay(0xf4,0x48);
EN=0;
}
void lcdchushihua()//1602初始化
{
lcdwritecom(0x01);
lcdwritecom(0x06);
lcdwritecom(0x0f);
lcdwritecom(0x14);
lcdwritecom(0x80);
}
/*-------------------------------------*/
void main()
{
char T[]="STARBUCKS";
int i;
lcdchushihua();
for(i=0;i<9;i++)
{
lcdwritedata(T[i]);
}
while(1)
{
}
}
他就是显示不了任何东西,真的很郁闷,我是新手,才刚开始学1602,之前写过一个类似的显示的还好,这个就不知道哪出问题了,调不出来。
PS:程序不够标准,望误喷。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
BBOYBL
1楼-- · 2019-07-15 21:35
void DINGSHIQI()  //定时器设置
{
   TMOD=0x01;
   EA=1;
   ET0=1;
   TR0=1;
}

void delay(char H,char L)//延时函数
{
TF0=0;TH0=H;TL0=L;
}请问这是什么延时程序????
繁华明灭
2楼-- · 2019-07-16 01:10
BBOYBL 发表于 2014-3-30 19:14
void DINGSHIQI()  //定时器设置
{
   TMOD=0x01;

这是我看别人的,后来我也在思考,感觉这个不能延时,那我想请问一下子,用定时器做定时的基本套路有么?
还有我改了一下:
#include<reg51.h>
#define t P0
sbit RS=P2^6;
sbit RW=P2^5;
sbit EN=P2^7;

void delay(int c)   
{
    char a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}
void lcdwritecom(char com)
{
RS=0;
RW=0;
EN=1;
delay(10);
t=com;
delay(10);
EN=0;
}
void lcdwritedata(char dat)
{
RS=1;
RW=0;
EN=1;
delay(10);
t=dat;
delay(10);
EN=0;
}
void lcdchushihua(void)
{
    lcdwritecom(0x01);//清屏
    lcdwritecom(0x0c);//开显示,开光标,光标闪烁
    lcdwritecom(0x06);//AC自加一
    lcdwritecom(0x14);//八位数据总线,显示双行
    lcdwritecom(0x80);//初始地址
}                                 
void main()
{
    char lcd[]="MH370 GO HOME ;MH370 GO HOME";
    int i;
    lcdchushihua();
for(i=0;i<27;i++)
{
lcdwritedata(lcd);
}
while(1)
{
}
}

他还是啥也不出,我真的不晓得哪里出错了,请你帮看下。。
刚学,或许是基本的使用没掌握,但自己搞不明白,写的略乱,见谅。
yjcel2013
3楼-- · 2019-07-16 06:30
char lcd[]="MH370 GO HOME ;MH370 GO HOME";
这个为什么写在main里面??
for(i=0;i<27;i++)
{
lcdwritedata(i);//这个值为 i
}
繁华明灭
4楼-- · 2019-07-16 11:07
 精彩回答 2  元偷偷看……
BBOYBL
5楼-- · 2019-07-16 11:08
yjcel2013 发表于 2014-3-30 20:41
char lcd[]="MH370 GO HOME ;MH370 GO HOME";
这个为什么写在main里面??
for(i=0;i

他这个写在MAIN里面是没有问题的!MAIN开头是允许定义变量的!
BBOYBL
6楼-- · 2019-07-16 15:20
繁华明灭 发表于 2014-3-30 21:11
我改了,还是不对,还有,我想输出一个字符串,里面为啥只是个 i  呢?这个字符串定义在里面会有什么影响 ...

for(i=0;i<27;i++)
{
lcdwritedata(lcd);
}四楼说对了!

一周热门 更多>