在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);编译器默认加个循环,一直刷新你的液晶屏的数据,所以就会闪.是编译器的问题.

posted @ 2013-01-23 16:51  notepi  阅读(1712)  评论(0)    收藏  举报