本帖最后由 youzizhile 于 2014-7-27 21:17 编辑
板子连接:使用板子预留的J1.J2.J6.J74个接口,使用杜邦线和插针连接LCD1602和LPC1549开发板。
LCD1602驱动移植:
与LCD1602的IO初始化:
//D7
#define Init_LCD_DB_7 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 0)
#define Set_LCD_DB_7 Chip_GPIO_SetPinState(LPC_GPIO,0, 0,true)
#define Clr_LCD_DB_7 Chip_GPIO_SetPinState(LPC_GPIO,0, 0,false)
//D6
#define Init_LCD_DB_6 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 16)
#define Set_LCD_DB_6 Chip_GPIO_SetPinState(LPC_GPIO,0, 16,true)
#define Clr_LCD_DB_6 Chip_GPIO_SetPinState(LPC_GPIO,0, 16,false)
//D5
#define Init_LCD_DB_5 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 12)
#define Set_LCD_DB_5 Chip_GPIO_SetPinState(LPC_GPIO,0, 12,true)
#define Clr_LCD_DB_5 Chip_GPIO_SetPinState(LPC_GPIO,0, 12,false)
//D4
#define Init_LCD_DB_4 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 28)
#define Set_LCD_DB_4 Chip_GPIO_SetPinState(LPC_GPIO,0, 28,true)
#define Clr_LCD_DB_4 Chip_GPIO_SetPinState(LPC_GPIO,0, 28,false)
//D3
#define Init_LCD_DB_3 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 27)
#define Set_LCD_DB_3 Chip_GPIO_SetPinState(LPC_GPIO,0, 27,true)
#define Clr_LCD_DB_3 Chip_GPIO_SetPinState(LPC_GPIO,0, 27,false)
//D2
/*
#define Init_LCD_DB_2 DrvGPIO_Open(GPIOPORT, GPIOPIN_D2, E_IO_OUTPUT)//PA2
#define Set_LCD_DB_2 DrvGPIO_SetBit(GPIOPORT,GPIOPIN_D2)
#define Clr_LCD_DB_2 DrvGPIO_ClrBit(GPIOPORT,GPIOPIN_D2)
*/
#define Init_LCD_DB_2 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 22)
#define Set_LCD_DB_2 Chip_GPIO_SetPinState(LPC_GPIO,0, 22,true)
#define Clr_LCD_DB_2 Chip_GPIO_SetPinState(LPC_GPIO,0, 22,false)
//D1
#define Init_LCD_DB_1 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 23)
#define Set_LCD_DB_1 Chip_GPIO_SetPinState(LPC_GPIO,0, 23,true)
#define Clr_LCD_DB_1 Chip_GPIO_SetPinState(LPC_GPIO,0, 23,false)
//D0
#define Init_LCD_DB_0 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 5)
#define Set_LCD_DB_0 Chip_GPIO_SetPinState(LPC_GPIO,0, 5,true)
#define Clr_LCD_DB_0 Chip_GPIO_SetPinState(LPC_GPIO,0, 5,false)
//RS
#define Init_LCD_RS Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 8)
#define Set_LCD_RS Chip_GPIO_SetPinState(LPC_GPIO,0, 8,true)
#define Clr_LCD_RS Chip_GPIO_SetPinState(LPC_GPIO,0, 8,false)
//RW
#define Init_LCD_RW Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 7)
#define Set_LCD_RW Chip_GPIO_SetPinState(LPC_GPIO,0, 7,true)
#define Clr_LCD_RW Chip_GPIO_SetPinState(LPC_GPIO,0, 7,false)
//ENABLE
#define Init_LCD_E Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 6)
#define Set_LCD_E Chip_GPIO_SetPinState(LPC_GPIO,0, 6,true)
#define Clr_LCD_E Chip_GPIO_SetPinState(LPC_GPIO,0, 6,false)
void LCD_init(void)
{
//初始化io
Init_LCD_DB_7;
Init_LCD_DB_6;
Init_LCD_DB_5;
Init_LCD_DB_4;
Init_LCD_DB_3;
Init_LCD_DB_2;
Init_LCD_DB_1;
Init_LCD_DB_0;
Init_LCD_RS;
Init_LCD_RW;
Init_LCD_E;
//复位清屏
delay_n10us(DELAY_TIME);
LCD_write_command(0x38);//设置8位格式,2行,5x7
delay_n10us(DELAY_TIME);
LCD_write_command(0x0c);//整体显示,关光标,不闪烁
delay_n10us(DELAY_TIME);
LCD_write_command(0x06);//设定输入方式,增量不移位
delay_n10us(DELAY_TIME);
LCD_write_command(0x01);//清除屏幕显示
delay_n10us(DELAY_TIME); //延时清屏,延时函数,延时约n个10us
}
测试函数
void lcd_test()
{
LCD_init();
LCD_write_cmd(0x01);
LCD_disp_char(0,1,1+'0');//显示一个字符
LCD_disp_char(15,1,1+'0');//显示一个字符
delay(1000000);//延时
LCD_write_command(0x01);//清除屏幕显示
delay(500);//延时
LCD_disp_str(3,1,"We Are Good");//显示字符串
delay(500);//延时
LCD_disp_str(3,2,"youzizhile!
![]()
");//显示字符串
delay(500);//延时
}
显示结果
LCD1602手册
lcd1602资料.pdf
(229.19 KB, 下载次数: 18)
LPC1500体验+开发环境的构建
LPC1500体验+驱动步进电机设计
LPC1500体验+led闪烁
LPC1500体验+之四_串口调试接收数据成功