⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.h

📁 在MSP430F247上实现的LCD12864的显示
💻 H
字号:
#include  <msp430x24x.h>
#define  uchar unsigned char
#define BIT(x)  (1<<(x))

#define Lcd_Bus_OUT  P4OUT  //MCU P4<--信号-->LCM
#define Lcd_Bus_IN   P4IN   //MCU P4<--信号-->LCM
#define LCD_DIR  P4DIR      //P4口的输入输出方向 

#define CPORT    P5OUT  //控制端
#define RS  2           //并行的指令/数据选择信号;串行的片选信号
#define RW  1           //并行的读/写选择信号;串行的数据口
#define E   0           //并行的使能信号;串行同步时钟


unsigned char Command;//状态
unsigned char LCDData;//数据
unsigned char COUNT3,COUNT2,COUNT1,COUNT,LCD_X,LCD_Y;

unsigned char temp;

unsigned char clear[]={
/*--  调入了一幅图像128×64清空图像ROM*/
/*--  宽度x高度=128x64 横向取模 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};


unsigned char t[]={
/*--  调入了一幅图像:D:\My Documents\单片机实验\C语言\有用程序\工业手机串口通讯实验\第2步.工业手机串口通讯实验实现图形显示\小人.bmp  --*/
/*--  宽度x高度=128x64 横向取模    左边图片 --*/
0x02,0xAA,0xAA,0x00,0x00,0x00,0x00,0x00,0x0D,0x55,0x54,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x05,0x40,0x10,0x00,0x00,0x00,0x20,0x00,0x03,0x80,0x60,0x00,0x00,0x00,
0x22,0xAA,0xA1,0xC0,0x70,0x00,0x00,0x00,0x27,0xFF,0xE3,0xC1,0xC0,0x00,0x00,0x00,
0x27,0xFF,0xF1,0xC1,0x80,0x40,0x00,0x00,0x27,0x7F,0xE3,0xC7,0x01,0x80,0x00,0x00,
0x06,0x3F,0xF1,0xC7,0x01,0xC1,0x00,0x00,0x27,0x3F,0xE3,0xC7,0x07,0x07,0x00,0x00,
0x23,0xFF,0xF1,0xC7,0x07,0x16,0x14,0x00,0x27,0xFF,0xE3,0xC7,0x07,0x1C,0x18,0x00,
0x23,0xFF,0xF1,0xC7,0x07,0x0E,0x0C,0x50,0x27,0xFF,0xE3,0xC7,0x07,0x06,0x00,0xE0,
0x27,0xFF,0xF1,0xC7,0x03,0x43,0x00,0x70,0x27,0x55,0x43,0xC7,0x01,0x80,0x00,0xF0,
0x21,0x00,0x01,0xC5,0x80,0xC0,0x00,0x70,0x20,0x00,0x01,0xC1,0x80,0x00,0x00,0xF0,
0x1F,0xFF,0xFF,0xE0,0xD0,0x00,0x00,0x78,0x3F,0xFF,0xFF,0x70,0x60,0x00,0x35,0xF8,
0x15,0x55,0x55,0x70,0x30,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x80,0x3C,
0x80,0x00,0x00,0x70,0x00,0x00,0x40,0x1C,0x00,0x01,0xF8,0xF0,0x00,0x00,0xA5,0x3C,
0x80,0x80,0xFC,0x70,0x00,0x00,0x5F,0x5C,0x49,0x24,0xA8,0xE0,0x00,0x00,0xBF,0x3C,
0xBF,0xFF,0xFF,0xF0,0x00,0x00,0x5F,0x9C,0x7F,0xFF,0xFF,0x80,0x00,0x00,0x80,0x3C,
0x3F,0xFF,0xFF,0xC0,0x00,0x00,0x75,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xDC,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0xF1,0xDC,
0x00,0x00,0x00,0x00,0x00,0x00,0x7D,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xDC,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xDC,0x00,0xD5,0x55,0x40,0x00,0x00,0xB3,0x3C,
0x00,0x00,0x00,0x54,0x00,0x00,0x8C,0xDC,0x02,0x00,0x00,0x38,0x00,0x00,0x9D,0xDC,
0x02,0x2D,0x55,0x1C,0x00,0x00,0x9A,0xDC,0x02,0x7F,0xFE,0x3C,0x00,0x00,0xAA,0xBC,
0x00,0x7F,0xFF,0x1C,0x00,0x00,0x4C,0xDC,0x02,0x73,0xFE,0x3C,0x00,0x00,0x9D,0xDC,
0x02,0x71,0x06,0x1C,0x00,0x00,0x4A,0xDC,0x02,0x73,0xFC,0x3C,0x00,0x00,0xA9,0x3C,
0x00,0x73,0xFF,0x1C,0x00,0x00,0xAE,0xDC,0x02,0x7B,0xFE,0x3C,0x00,0x00,0x99,0xDC,
0x02,0x3F,0xFD,0x1C,0x00,0x00,0x0C,0xDC,0x02,0x7B,0xFE,0x3C,0x00,0x00,0xC9,0x3C,
0x02,0x7A,0xAB,0x1C,0x00,0x00,0x3F,0xFC,0x02,0x75,0x54,0x3C,0x00,0x00,0x7F,0xE0,
0x02,0x30,0x00,0x1C,0x00,0x00,0x3F,0xF0,0x02,0x00,0x00,0x1C,0x00,0x00,0x00,0x70,
0x00,0xAD,0xDE,0xF8,0x10,0x10,0x20,0x30,0x01,0xFF,0xFF,0xE0,0x60,0x60,0x60,0x70,
0x05,0x77,0x77,0xF8,0x78,0x78,0x78,0x70,0x0E,0x66,0x67,0x39,0x99,0x99,0x9C,0x70,
0x0F,0x55,0x55,0x1C,0xCC,0xCC,0xCC,0xE0,0x3D,0x99,0x9C,0x9D,0xD9,0xD9,0xDC,0x80,
0x18,0xCC,0xCC,0x7B,0x87,0x87,0x8B,0xC0,0x80,0x00,0x02,0x76,0x06,0x06,0x06,0x00,
0x40,0x00,0x01,0xE3,0x03,0x03,0x03,0x00,0xA2,0x49,0x23,0xC0,0x00,0x00,0x00,0x00,
0x3F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,

};
 

//延时子程序
void delay(unsigned int t)
{
    unsigned int i,j;
    for(i=0;i<t;i++)
      for(j=0;j<2;j++); //t*15 us
}

void busy()
{ unsigned char temp;
do{
 LCD_DIR=0xff;       //LCD数据端口为输出状态
 delay(100);
 Lcd_Bus_OUT=0xff;
 LCD_DIR=0x00;      //LCD数据端口为输入状态
 CPORT|=BIT(E);
 delay(50);
 temp=Lcd_Bus_IN;
 CPORT&=~BIT(E);        //???
 }while(temp&0x80);  //Lcd_Bus&0x80 
}
//写指令代码
void WriteCommand()
{
 CPORT&=~BIT(RS);    //RS=0;
 CPORT|=BIT(RW);     //rw=1;
 busy();
 CPORT&=~BIT(RW);
 LCD_DIR=0xff;           //设置为输出
 delay(100);
 
 Lcd_Bus_OUT=Command;     //写指令
 
 CPORT|=BIT(E);
 CPORT&=~BIT(E);
 }

//写显示数据
void WriteData(){
 
 CPORT&=~BIT(RS);
 CPORT|=BIT(RW);
 busy();
 CPORT|=BIT(RS);     		 
 CPORT&=~BIT(RW);
 LCD_DIR=0xff;          //设置为输出
 delay(100); 
 Lcd_Bus_OUT=LCDData;

 CPORT|=BIT(E);
 CPORT&=~BIT(E);
 }
 

//初始化程序
void LCDInit()
{

 delay(20);
 Command=0x30;//选择基本指令集
 WriteCommand();

 delay(10);
 Command=0x30;//选择8bit数据流
 WriteCommand();
 
 delay(5);
 Command=0x0c;//开显示(无游标.不反白)
 WriteCommand();
 
 delay(10);
 Command=0x01;//清DDRAM,清显示并设地址指针为00H 
 WriteCommand();
 
 delay(10);
 Command=0x06;//设定游标方向及显示移位
 WriteCommand();
 delay(10);

 }

//显示字符串
void HZdisp(unsigned char  *s)
{
    while(*s!='\0')
    { 
 	 	LCDData=*s;
  		WriteData();
        s++;
        delay(200);
    }
}

//LCD清屏
void clearLCD()
{
 Command=0x01;
   WriteCommand();    //清除显示
 Command=0x06;
   WriteCommand();
    delay(50);

}

//显示汉字或字符
void Test(unsigned char *disdata,unsigned char coordinate,unsigned char rid) //数据和坐标,清屏与否
{
 if(rid==1) clearLCD();
 Command=coordinate;
  WriteCommand();    //写指令
  HZdisp(disdata); 
}


//设定图片显示地址
void address_set(unsigned char LCD_x,unsigned char LCD_y) //图片的横向和纵向地址
{
  Command=0x36;	 //扩充指令集动作,绘图ON;注意基本指令集动作中不能开绘图
   WriteCommand();
  Command=LCD_y;
   WriteCommand();
  Command=LCD_x;
   WriteCommand();
  Command=0x30;	 //关绘图
   WriteCommand();
}

 void Photoclear(const uchar *picture,unsigned char LCD_X,unsigned char LCD_Y) 
{  uchar a,Line,Row,Byte;//共16(2位)大块,每大块共32(0-31)行,每次写16字节的数据
   Line=2;  /*写数据的格式如下:从左上角(0x80,0x80)开始,分为两大块,先写第一大块(0-8)的第0行的128(8×16,*/
   Row=32;	/*1次写1个字(8位),共写16次)个数据,行号加1,列号不变,再写0-8块的第1行的128个数据,依此类推*/
   Byte=8; /*写第二大块时,列号加8,但行仍从第0行开始写,即行地址要复原为原地址重复写第一块的过程写第二大块液晶*/ 
   a=LCD_Y;
   for (;Line!=0;Line--) 
   {   LCD_Y=a;	//注意写第二大块时,列号加8,但行仍从第0行开始写
       Row=32;              
       for (;Row!=0;Row--) 
       {  Byte=8;         //Byte=8,只写左边;Byte=16,写整块
		  address_set(LCD_X,LCD_Y);  
          for (;Byte!=0;Byte--) 
           { LCDData=*picture++;
             WriteData(); 
           } 
         LCD_Y++;//列加1 
       } 
       LCD_X=0X88;      //行以 
   } 	
   Command=0x36;              //开绘图
   WriteCommand();
   Command=0x30; 
   WriteCommand();           //关绘图
} 


/*  图片显示  */
/*写数据的格式如下:从左上角(0x80,0x80)开始,分为两大块,先写第一大块(0-8)的第0行的128(8×16,
  1次写1个字(8位),共写16次)个数据,行号加1,列号不变,再写0-8块的第1行的128个数据,依此类推。写第
  二大块时,列号加8,但仍从第0行开始写,即行地址要复原为原地址重复写第一块的过程写第二大块液晶。
*/
 void Photo(const uchar *picture,unsigned char LCD_X,unsigned char LCD_Y) 
{  uchar a,Line,Row,Byte;//共16(2位)大块,每大块共32(0-31)行,每次写16字节的数据
   Line=2;  /*写数据的格式如下:从左上角(0x80,0x80)开始,分为两大块,先写第一大块(0-8)的第0行的128(8×16,*/
   Row=32;	/*1次写1个字(8位),共写16次)个数据,行号加1,列号不变,再写0-8块的第1行的128个数据,依此类推*/
   Byte=8; /*写第二大块时,列号加8,但行仍从第0行开始写,即行地址要复原为原地址重复写第一块的过程写第二大块液晶*/ 
   a=LCD_Y;
   for (;Line!=0;Line--) 
   {   LCD_Y=a;	//注意写第二大块时,列号加8,但行仍从第0行开始写
       Row=32;              
       for (;Row!=0;Row--) 
       {  Byte=8;         //Byte=8,只写左边;Byte=16,写整块
		  address_set(LCD_X,LCD_Y);  
          for (;Byte!=0;Byte--) 
           { LCDData=*picture++;
             WriteData(); 
           } 
         LCD_Y++;//列加1 
       } 
       LCD_X=0X88;      //行以 
   } 	
   Command=0x36;              //开绘图
   WriteCommand();
   Command=0x30; 
   WriteCommand();           //关绘图
}  


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -