在c51中1206液晶显示器while(1)的用处

#include<reg52.h>

#define uchar unsigned char

#define uint  unsigned int

uchar code table[]="i love you!";

uchar code table1[]="WWW.TXMCU.COM";

sbit lcdrw=P1^6;

sbit lcdrs=P1^7;

sbit dula=P3^6;

sbit wela=P3^7;

sbit lcden=P2^4;

void delay_ms(uint);

void write_date (uint);

void write_com (uint);

void make_en();

void init_a();

void main()

{

    uchar num;

    dula=0;

    wela=0;

    init_a();

    write_com(0x80); //指向lcd内部ram的初始端

    for(num=0;num<11;num++)

    {

        write_date(table[num]);

        delay_ms(5);

        }

    write_com(0x80+0x40);// 指向lcd第二行的ram

        for(num=0;num<13;num++)

    {

        write_date(table1[num]);

        delay_ms(5);

        }

    exit(0);

    //    while(1);

}    

void init_a()  //初始化函数

{

    write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口

    write_com(0x0c);

    write_com(0x06);

    write_com(0x01);

    }

void write_date (uint date)

{

    lcdrs=1;     //输入数据

    lcdrw=0;

    P0=date;

    delay_ms(5);

    make_en();

}

void write_com (uint com)

{

    lcdrs=0;         //输入命令

    lcdrw=0;

    P0=com;

    delay_ms(5);

    make_en();

}

void delay_ms(uint xms)

{

    uint i,j;

    for(i=xms;i>0;i--)

    {

        for(j=110;j>0;j--);

    }



}

void make_en()

{

     lcden=0;

     wela=1;

     wela=0;

     delay_ms(5);

     lcden=1;

     wela=1;

     lcden=0;

     wela=0;

}

    

这个是使用1206最基本的用法,我一直在纠结为什么while(1);这个函数去掉以后,会重复的输入.

整个环境没有用while(1);编译器默认加个循环,一直刷新你的液晶屏的数据,所以就会闪.是编译器的问题.

你可能感兴趣的:(while)