51单片机-液晶1602

2011年03月22日 11:37    发布者:techshare
液晶是一种高分子材料,液晶显示器的主要原理是电流刺激液晶分子产生点,线,面并配合背面灯管构成画面。为叙述简单,把各种液晶显示器都直接叫做液晶。各种型号的液晶通常是按照显示字符的行数或液晶点阵的行列数来命名的。比如:1602的意思是每行显示16个字符,一共显示两行;类似的命名还有0801,0802,1601等,这类液晶通常都是字符型液晶,即只能显示ASCII码字符,如数字,大小写字母,各种符号等。12232液晶属于图形型液晶,他的意思是液晶有122列,32行组成。液晶的体积小,功耗低,显示操作简单,但是它有一个致命的弱点,其使用的温度范围很窄。  

初始化设置:  


   


   


   
RAM地址映射图:  


   
写操作时序:     



  实现两行显示,从左向右滑动。

  #include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit RS = P1^0;
sbit RW = P1^1;
sbit E = P1^2;
uint i;
uchar code table[] = "I LOVE MCU!";
uchar code table1[]="WWW.TXMCU.COM";  

void delay(uint t){
    int i,j;
    for(i = 0; i < t; i++)
        for(j = 200; j > 0; j--)
            ;
}

void lcd_com(uchar s){
    RS = 0;                    //低电平,写指令
    P2 = s;                    //传数据
    delay(14);                //看时序图,数据需要稳定一段时间
    E = 1;                            //给一个高脉冲,发送命令
    delay(14);                    //如图,高脉冲延时一段时间,确保命令发送
    E = 0;                            //发送结束E置为低电平
}

void lcd_data(uchar s){
    RS = 1;
    P2 = s;
    delay(14);
    E = 1;
    delay(14);
    E = 0;
}

void init(){
    RS = 1;         //先发指令,在初始时刻RS是高,E和RW是低
    E = 0;
    RW = 0;
    lcd_com(0x38);           //设置为16*2显示,5*7点阵,8位数据接口
    lcd_com(0x0f);           //开显示,显示光标,光标闪烁
    lcd_com(0x06);           //读写一个字符后地址指针加一
    lcd_com(0x01);
    lcd_com(0x80+0x10); //显示屏幕对应一块RAM,屏幕外面还有一块RAM
    for(i = 0; i < 11; i++){  //设置地址为屏幕外的RAM,以便实现滚动效果
        RS = 0;
        lcd_data(table[ i]);
        delay(40);
    }
    lcd_com(0x80+0x50);   
    for(i = 0; i < 13; i++){
        RS = 0;
        lcd_data(table1[ i]);
        delay(40);
    }
        for(i = 0; i < 13; i++){
                lcd_com(0x18);                 //0x18,向左移动显示,光标跟着移动
                delay(200);
        }
}

void main(){
    init();
    while(1);
}


李万鹏

网友评论

williamkmcn 2011年07月07日
好东西值得收藏