找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2089|回复: 3
打印 上一主题 下一主题
收起左侧

lpc1778驱动TG12232E-01液晶显示

[复制链接]
跳转到指定楼层
楼主
ID:390945 发表于 2018-8-28 20:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <LPC177x_8x.h>
#include "lcm.h"

extern void write_data(uchar date);
extern void delay(uint32_t tick);

#define  LCM_EN_LOW()                      LPC_GPIO1->CLR |= (1UL<<19);          //EN
#define  LCM_EN_HIGH()                LPC_GPIO1->SET |= (1UL<<19);

#define  LCM_RW_LOW()                      LPC_GPIO1->CLR |= (1UL<<20);          //RW
#define  LCM_RW_HIGH()                LPC_GPIO1->SET |= (1UL<<20);

#define  LCM_RS_LOW()                      LPC_GPIO1->CLR |= (1UL<<21);          //RS
#define  LCM_RS_HIGH()                LPC_GPIO1->SET |= (1UL<<21);

#define LCD_NUM  8      

typedef struct
{
    uint32_t gpioBaseAddr;   // 对应GPIO的基地址
    uint32_t pin;            // 对应的PIN脚掩码
}T_LCD;     // lcd data引脚的描述信息

// 定义data数据位
const T_LCD g_lcd[LCD_NUM]= {
    {LPC_GPIO1_BASE, 1UL << 22},            //DATA:D0-D7
    {LPC_GPIO1_BASE, 1UL << 23},
    {LPC_GPIO1_BASE, 1UL << 24},
    {LPC_GPIO1_BASE, 1UL << 25},
    {LPC_GPIO1_BASE, 1UL << 26},
    {LPC_GPIO1_BASE, 1UL << 27},
    {LPC_GPIO1_BASE, 1UL << 28},
    {LPC_GPIO1_BASE, 1UL << 29},
};

void lcd1602_init(void)
{
        delay(5000);
        write_command(0x30);         // 功能设定       
        delay(100);
        write_command(0x04);    // 显示关闭
        delay(100);
        write_command(0x01);    // 清屏
        delay(100);
        write_command(0x0c);        // 显示开及光标设置
  delay(100);
        write_command(0x80);        // 显示光标移动设置  
        delay(100);
        //write_command(0x04);    //开总显示,不开开光标,光标不闪烁
  //delay(1);
}

// 对lED使用的GPIO管脚进行初始化
void lcdInit(void)
{
    LPC_GPIO_TypeDef *pGPIO;

    uint32_t i;

    for (i = 0; i < LCD_NUM; i++)               //D0-D7 配置输出模式
    {
        pGPIO = (LPC_GPIO_TypeDef *)g_lcd[i].gpioBaseAddr;

        pGPIO->DIR |= g_lcd[i].pin;

    }

    LPC_IOCON->P1_19 &= 0xFFFFFFF8;                            //    EN
    LPC_IOCON->P1_19 |= 0x00000000;                                //   
    LPC_GPIO1->DIR |= (1UL<<19);                //输出模式

    LPC_IOCON->P1_20 &= 0xFFFFFFF8;                            //    R/W
    LPC_IOCON->P1_20 |= 0x00000000;                                //  
    LPC_GPIO1->DIR |= (1UL<<20);                //输出模式

    LPC_IOCON->P1_21 &= 0xFFFFFFF8;                            //    RS
    LPC_IOCON->P1_21 |= 0x00000000;                                //  
    LPC_GPIO1->DIR |= (1UL<<21);                //输出模式

    lcd1602_init();

}

/*********************************************************************//**
* @brief                Delay function
* @param[in]        tick - number milisecond of delay time
* @return                 None
**********************************************************************/
void delay(uint32_t tick)
{
     uint32_t i;
     uint32_t j;
     for (i=tick; i>0; i--)
        for (j=0; j<1000; j++);
}

void write_command(uchar command)               //写命令
{
    uchar i;
    i = command;  
    LCM_RW_LOW();       
    LCM_RS_LOW();
    LCM_EN_LOW();         
    delay(5);   
    LPC_GPIO1->CLR |= (0XFF << 22);             //数据八位清零
    LPC_GPIO1->SET |= (i << 22);                //数据位赋值
    delay(5);
    LCM_EN_HIGH();
    delay(5);
    LCM_EN_LOW();
}

void write_data(uchar date)                     //写单个字符
{
    uchar i;
    i = date;  
    LCM_RW_LOW();       
    LCM_RS_HIGH();
    LCM_EN_LOW();
    delay(5);
    LPC_GPIO1->CLR |= (0XFF << 22);             //数据八位清零
    LPC_GPIO1->SET |= (i << 22);                 //数据位赋值
    delay(5);
    LCM_EN_HIGH();
    delay(5);
    LCM_EN_LOW();
}

void dr_screen_print(int x1,int x2,unsigned char *s1,unsigned char *s2)  //,int light
{
                int j;
                if ((x1 < 8) && (x2 < 8))   
                                        {
                                                j=0;
                                                write_command(0x80 +j* 16+ x1);//????DDRAM??row * 16 + col??
                                                while(*s1)
                                                        {
                                                                write_data(*s1);
                                                                s1++;
                                                        }
                                                                               
                                                                ++j;
                                                       
                                                write_command(0x80 +j*16+ x2);//????DDRAM??row * 16 + col??
                                                while(*s2)
                                                        {
                                                                write_data(*s2);
                                                                s2++;
                                                        }
                                                        }
                               
                               

                       
               
                }
/*
unsigned char set_lcd_position(unsigned char row, unsigned char col)
{
  if ((row < 2) && (col < 8))    //?????2?7.5?(????????)
  {
    write_command(0x80 + row * 16 + col);//????DDRAM??row * 16 + col??
    return 1;//????
  }
  else
    return 0;//????
}

void display_string(uchar *p)                   //写字符串
{
        while(*p)
        {
                write_data(*p);
                p++;
        }
}
}
*/


/*void lcd_display(uchar row, uchar col, uchar *p)
{
  if (set_lcd_position(row, col))
  {
    display_string(p);
  }
}

*/



/*void gotoxy(unsigned y,unsigned x)              //显示位置  2行16列     Y:1-2;  X:0-15
{
        if(y ==0)                                  //第一行
                write_command(0x80+x);
        else if(y ==1)                             //第二行
            write_command(0x80+0x0F+x);
}
*/


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-8-28 20:39 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

板凳
ID:1 发表于 2018-8-29 01:07 | 只看该作者
缺头文件?
回复

使用道具 举报

地板
ID:138664 发表于 2019-1-24 13:04 | 只看该作者
缺函数文件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表