lpc1114驱动1602_0802程序

LPC1114-1602

图1.LPC1114驱动LCD1602

LPC1114-0802

图2.LPC1114驱动LCD0802

LCD1602和LCD0802用的程序是一样的。

lcd.h文件中,代码如下:

#ifndef __LCD0802_H__
#define __LCD0802_H__
#include "lpc11xx.h"

#define OUT_DATA(value)?? ? LPC_GPIO2->DATA =(value<<4)
#define RS_LOW? LPC_GPIO3->DATA&=~(1<<0)
#define RS_HIGH? LPC_GPIO3->DATA|=(1<<0)
#define WR_LOW? LPC_GPIO3->DATA&=~(1<<1)
#define WR_HIGH? LPC_GPIO3->DATA|=(1<<1)
#define EN_LOW? LPC_GPIO3->DATA&=~(1<<2)
#define EN_HIGH? LPC_GPIO3->DATA|=(1<<2)

extern void delay_0802(uint16_t us);
extern void write_com(uint16_t com);
extern void write_date(uint16_t dat);
extern void init_0802(void);
extern void lcd_show(void);

#endif

lcd.c文件中,代码如下:

#include "lcd.h"
#include "lpc11xx.h"

void delay_0802(uint16_t us)
{
?? ?uint16_t i,j;

?? ?for(i=0;i<100;i++)
?? ??? ?for(j=0;j<us;j++);
}

void write_com(uint16_t value)
{
? EN_LOW;
?? ?RS_LOW;
?? ?WR_LOW;
?? ?OUT_DATA(value);
?? ?delay_0802(10);
?? ?EN_HIGH;
?? ?delay_0802(20);
?? ?EN_LOW;
}

void write_date(uint16_t value)
{
? EN_LOW;
?? ?RS_HIGH;
?? ?WR_LOW;
?? ?OUT_DATA(value);
?? ?delay_0802(10);
?? ?EN_HIGH;
?? ?delay_0802(20);
?? ?EN_LOW;
}

void init_0802(void)
{
?? ?LPC_GPIO2->DIR|=0xFF0;?? ??? ??? // 设置P2口高8位引脚为输出,用作LCD8位并行数据
?? ?LPC_GPIO2->DATA |= 0XFF0;?? ??? // P2口高8位引脚置高
?? ?LPC_GPIO3->DIR|=0x007;?? ??? ??? // P3口P3.0到P3.3为输出,用作LCD控制引脚
?? ?LPC_GPIO3->DATA |= 0x007;?? ??? // P3口P3.0到P3.3置高
?   delay_0802(300);
?? ?write_com(0x38);
?? ?delay_0802(100);
?? ?write_com(0x38);
?? ?delay_0802(100);
?? ?write_com(0x38);
?? ?delay_0802(100);
?? ?write_com(0x0c);
?? ?delay_0802(100);
?? ?write_com(0x06);
?? ?delay_0802(100);
?? ?write_com(0x01);
?? ?delay_0802(100);
}

main.c文件中,代码如下:

/**************************************************
?* 名称:LPC1114 驱动LCD0802 1602
?* 主频:50Mhz(外部接10MHz晶振,倍频5倍)
?* 作者:Ration(瑞生电子网CEO)
?* 时间:2013年12月5日(整理)
?* 版权:版权归<单片机学习网>所有,传播请保持完整性
?*
?* 更多程序请访问:https://mrs.pub
?*************************************************/
#include "lpc11xx.h"
#include "lcd.h"

uint8_t table1[8]=" Hello? ";
uint8_t table2[8]=" World? ";

void delay_ms(uint16_t ms)
{
?? ?uint16_t i,j;

?? ?for(i=0;i<5000;i++)
?? ??? ?for(j=0;j<ms;j++);
}

void lcd_show(void)
{
?? ?uint8_t j;

?? ?write_com(0x80);
?? ?for(j=0;j<8;j++)
?? ?{
?? ??? ?write_date(table1[j]);
?? ??? ?delay_0802(10);
?? ?}
?? ?write_com(0x80+0x40);
?? ?for(j=0;j<8;j++)
?? ?{
?? ??? ?write_date(table2[j]);
?? ??? ?delay_0802(10);
?? ?}
}

int main()
{
?? ?delay_ms(100);
? init_0802();
?? ?lcd_show();

?? ?while(1)
?? ?{?? ?
?? ??? ?;
??? ?}
}

源码下载:1602(KEIL4工程)

类似文章