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

📄 lcd12864.c

📁 EasyARM1138人机界面扩展板方案源码
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name:               LCD12864.c
** Last modified Date:      2008/07/29
** Last Version:            V1.10
** Description:             LCD TG12864E-02B(st7920驱动芯片)在LM3S1138上串行通信的驱动程序
**
**--------------------------------------------------------------------------------------------------------
** Created By:              周小明
** Created date:            2008/07/10
** Version:                 V1.00
** Descriptions:
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             周小明
** Modified date:           2008/07/29
** Version:                 V1.10
** Description:
**
*********************************************************************************************************/

#include "LCD_KEY.h"

//******************************************************************************
//  ZLG的LOGO数据表
uint8 PowerOnPicture[1024] = {
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x13,0xA0,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x24,0x50,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x24,0x50,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x27,0x90,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x25,0x10,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x24,0x90,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x14,0x60,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0xFF,0xFF,0xFF,0xF9,0xFC,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x01,0xFF,0xFF,0xFF,0xF9,0xF9,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x01,0xFF,0xFF,0xFF,0xF3,0xF9,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
	0x03,0xFF,0xFF,0xFF,0xE7,0xF3,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x07,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x1F,0xCF,0xE7,0xFF,0x03,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x1F,0x9F,0xCF,0xF0,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x3F,0x9F,0x9F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x3F,0x3F,0x9F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x7E,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0xFE,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0xFC,0xFE,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x01,0xF9,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x03,0xF9,0xF9,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x03,0xF3,0xF9,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x07,0xE7,0xF3,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x0F,0xE7,0xE3,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x0F,0xCF,0xE7,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x1F,0x9F,0xCF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x3F,0x9F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x7F,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x7E,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0xFE,0x7F,0xFF,0xFF,0xFC,0x3F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x01,0xFC,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x01,0xF9,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x03,0xF9,0xFF,0xFF,0xFF,0xF1,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x07,0xF2,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x0F,0xFC,0x00,0x0F,0xF0,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x1F,0xF8,0x00,0x0F,0xF8,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x1F,0xF0,0x00,0x07,0xFC,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x3F,0xF0,0x00,0x07,0xFC,0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x7F,0xE0,0x00,0x03,0xFE,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x7F,0xC0,0x00,0x03,0xFF,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0xFF,0xC0,0x00,0x01,0xFF,0xC0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x01,0xFF,0x80,0x00,0x00,0xFF,0xF0,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x01,0xFF,0x00,0x00,0x00,0x7F,0xFE,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x03,0xFF,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x07,0xFF,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x07,0xFF,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x0F,0xFF,0xFF,0xFF,0xFF,0xE3,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x1F,0xFF,0xFF,0xFF,0xFF,0xF0,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

//###########################################################################
//***       字符操作用户接口函数驱动函数
//###########################################################################
//  向LCM写入一个字节
void LCD_ByteWrite(int8 Bytename)
{
    int8 i, dat;

    for( i=0; i<8; i++ )                                    // 循环写一个字节的数据
    {
        GPIOPinWrite(LCD_KEY_PORT, LCD_KEY_CLK, 0x00);
        __delayNuS(5);                                      //  延时5us
        dat = Bytename & 0x80;

        if( dat )
            {
                GPIOPinWrite(LCD_KEY_PORT, LCD_KEY_DIO, 0xff);
            }
        else  
            {
                GPIOPinWrite(LCD_KEY_PORT, LCD_KEY_DIO, 0x00);
            }

        Bytename  <<=  1;
        GPIOPinWrite(LCD_KEY_PORT, LCD_KEY_CLK, 0xff);
        __delayNuS(5);
    }

}

//  向LCM写命令
void LCD_ComdWrite(int8 comd)
{
    GPIOPinWrite(LCD_KEY_PORT, LCD_KEY_CS, 0xff);
    LCD_ByteWrite(0xf8);
    LCD_ByteWrite(comd & 0xf0);
    comd  <<=  4;
    LCD_ByteWrite(comd & 0xf0);
}

//  向LCM写数据
void LCD_DataWrite(int8 data)
{
    GPIOPinWrite(LCD_KEY_PORT, LCD_KEY_CS, 0xff);
    LCD_ByteWrite(0xfa);
    LCD_ByteWrite(data & 0xf0);
    data <<= 4;
    LCD_ByteWrite(data & 0xf0);
}

//###########################################################################
//***       图形操作用户接口函数驱动函数
//###########################################################################

//  开启图片显示功能
void LCD_PictureOn(void)
{
    LCD_ComdWrite(0x34);                                    //  Expand instruction
    LCD_ComdWrite(0x36);
    LCD_ComdWrite(0x30);                                    //  Base instruction
}

//  关闭图片显示功能
void LCD_PictureOff(void)
{
    LCD_ComdWrite(0x34);                                       //  Expand instruction
    LCD_ComdWrite(0x30);
    LCD_ComdWrite(0x30);                                       //  Base instruction

}

void LCD_GdramAddress(uint8  VerticalAddr,uint8  HorizontalAddr)
{
    VerticalAddr &= 0x1F;
    HorizontalAddr &= 0x0F;
    LCD_ComdWrite(0x34);                                       //  Expand instruction G=Off
    LCD_ComdWrite(VerticalAddr|0x80);
    LCD_ComdWrite(HorizontalAddr|0x80);
    LCD_ComdWrite(0x30);                                       //  Base instruction
}

//  上电初始化图形显示缓冲区数据, 显示LOGO图形128*64点阵
void LCD_PowerOnPictureInit_disp(void)
{
    unsigned char i,j;
    unsigned char *p;

    p = PowerOnPicture;

        for(i=0;i<32;i++)                                   //  写入图形数据时采用逐行扫描的方式
        {
            LCD_GdramAddress(i,0);

            for(j=0;j<16;j++)
            {
                LCD_DataWrite(*p);
                p++;
            }
        }
   
        for(i=0;i<32;i++)
        {
            LCD_GdramAddress(i,8);

            for(j=0;j<16;j++)
            {    
                LCD_DataWrite(*p);
                p++;
            }
        }
}

//  清屏
void clear_all(void)
{
    LCD_ComdWrite(0x01);
    __delayNuS(5);
}

//   LCD初始化 
void LCDInit(void)
{
    SysCtlPeriEnable(LCD_KEY_PERIPH);                       //   使能GPIO B口LCD控制接口

    GPIOPinTypeOut(LCD_KEY_PORT , LCD_KEY_CS);              //   设置CS,CLK,DIO为输出
    GPIOPinTypeOut(LCD_KEY_PORT , LCD_KEY_CLK);
    GPIOPinTypeOut(LCD_KEY_PORT , LCD_KEY_DIO);

    LCD_ComdWrite(0x30);                                    //   功能设定,基本指令
    LCD_ComdWrite(0x30);                                    //   基本指令,8-bit 模式,基本指令
    LCD_ComdWrite(0x0c);                                    //   显示开,游标关,反白关
    LCD_ComdWrite(0x01);                                    //   清除显示
    LCD_ComdWrite(0x06);                                    //   进入设定点,游标7 右移,画面不移动
}

⌨️ 快捷键说明

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