中科因仑“3+1”工程特种兵精英论坛

标题: 基于MSP430G2553液晶12864串行显示详解 [打印本页]

作者: XJzy    时间: 2015-9-29 17:04
标题: 基于MSP430G2553液晶12864串行显示详解
基于MSP430G2553液晶12864串行显示详解
#ifndef __LCD12864_H__

#define __LCD12864_H__

#include "msp430g2553.h"

#include "delay.h"

#define rw_out P1DIR|=BIT0

#define rw_h P1OUT|=BIT0

#define rw_l P1OUT&=~BIT0

#define en_out P1DIR|=BIT1

#define en_h P1OUT|=BIT1

#define en_l P1OUT&=~BIT1

uint Strlen(uchar *p)

{

uint i;

for(i=0;*(p+i);i++);

return i;

}

void WriteBytes(uchar *p)

{

uchar i,j,temp;

         en_out;

         rw_out;

         en_l;

for(j=0;j<3;j++)

{

   temp=p[j];

   for(i=0;i<8;i++)

   {

    if(temp & 0x80)

                           rw_h;

                         else rw_l;

    en_h;

    delay(1);

    en_l;

    temp<<=1;

   }

}

rw_h;

}

void SerialWriteData(uchar send)

{

uchar data[3];

data[0]=0xfa ;     //1111 1010向液晶写数据

data[1]=send & 0xf0;      //取高4位

data[2]=(send<<4)&0xf0;       //取低4位

WriteBytes(data);

}

void SerialWriteCmd(uchar send)

{

uchar data[3];

data[0]=0xf8 ;                    //1111 1000向液晶写命令

data[1]=send & 0xf0;      //取高4位

data[2]=(send<<4) & 0xf0;       //取低4位

WriteBytes(data);
}

void init_lcd()

{

         en_out;

         rw_out;

SerialWriteCmd(0x0C);//显示开,关闭游标和游标位置

SerialWriteCmd(0x06);

SerialWriteCmd(0x01);//清除显示,等待命令

}

void display_12864(uchar hang,uchar lie,uchar *p)

{

uchar i;

switch(hang)

{

             case 1:SerialWriteCmd(0x80+lie);break;

             case 2:SerialWriteCmd(0x90+lie);break;

             case 3:SerialWriteCmd(0x88+lie);break;

             case 4:SerialWriteCmd(0x98+lie);break;

}

for(i=0;i<16;i++)

{

      SerialWriteData(p);

}

         

}

#endif






欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4