新手求教,延时程序问题

2020-02-01 16:17发布

/////////////////1602显示///////////
#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit wela = P2^7;   
sbit dula = P2^6;

uchar code LCD1602firstline[] = " I LOVE YOU ";
uchar code LCD1602secondline[] = " WELCOME ";

sbit LCDRS = P3^5;
sbit LCDWR = P3^6;
sbit LCDEN = P3^4;

void Delay1MS(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
        {
                        for(y=124;y>0;y--);
  }
/*uint i = 124;
        while (z--)   //为什么改成这样就不可以了呢
        {
                i--;
        }*/
}

void WriteCom1602(uchar com)
{
        LCDEN = 0;
        LCDRS = 0;
        LCDWR = 0;
        P0 = com;
        LCDEN = 1;
        Delay1MS(1);
        LCDEN = 0;
}

void WriteDat1602(uchar dat)
{
        LCDEN = 0;
        LCDRS = 1;
        LCDWR = 0;
        P0 = dat;
        LCDEN = 1;
        Delay1MS(1);
        LCDEN = 0;
}
void Writechar1602(uchar x , uchar y , uchar date )
{
        x &= 0x0f;
        y &= 0x01;
       
        if (y==1)
        {
                x += 0x40;
  }
        x += 0x80;
       
        WriteCom1602(x);
        WriteDat1602(date);
       
}

void LCD1602Init()
{
  LCDEN = 0 ;
        WriteCom1602(0x38);
        WriteCom1602(0x01);
        WriteCom1602(0x06);
        WriteCom1602(0x0c);
}
void main()
{
        uint i = 0 ;
       
        P0 = 0xff ;                     //ÊýÂë¹Ü¹Ø¶Ï
        wela = 1 ;
        wela = 0;
        Delay1MS(5);
       
        LCD1602Init();
        for (i=0 ; i<12 ; i++)
        {
                Writechar1602(i ,0 , LCD1602firstline);
        }
        for (i=0 ; i<9 ; i++)
        {
                Writechar1602(i , 1, LCD1602secondline);
        }
       
        while(1);
       
}



/*
汗,今天我调了好久才发现好像延迟函数出了问题
上面Delay1MS()改成下面之后1602不能显示,是不是我延时函数写的不对
新手求教,还有一般延时函数怎么写好呢
*/
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
lcw_swust
1楼-- · 2020-02-01 18:21
uint i = 124;
        while (z--)   //为什么改成这样就不可以了呢
        {
                i--;
        }
这个循环在干什么?
z一直减到0退出循环,i在每次循环里就减一次
看起来是时间不够
xqn2012
2楼-- · 2020-02-01 23:54
显然这个延时时间不够长嘛
while(z--)
    for(i=124;i>0;i--);
yayajie
3楼-- · 2020-02-02 02:05
谢谢各位 我知道了

一周热门 更多>