本帖最后由 youzizhile 于 2015-3-21 18:54 编辑
从申请了LPC54102开发板后,一直忙于工作,年后就出差了将近两周,这期间一直想着活动的进展。
这周回来后迫不及待要先分享一些心得。
我的开发计划中有lcd1602的驱动设计,由于板子现在不在手上,所以要等下周才能下载验证了。程序之前是用过的,应该问题不大。
1 预定义
// D7
*/
#define Init_LCD_DB_7 Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 6)
#define Set_LCD_DB_7 Chip_GPIO_SetPinState(LPC_GPIO,0, 6,true)
#define Clr_LCD_DB_7 Chip_GPIO_SetPinState(LPC_GPIO,0, 6,false)
*/
这个是初始化lcd1602一个数据位定义。
2LCD初始化
void LCD_init(void)
{
//初始化io
Init_LCD_DB_7;
此处省略。。。。
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
}
3写命令
void LCD_write_command(uchar dat)
{
delay_n10us(DELAY_TIME);
Clr_LCD_RS; //指令
Clr_LCD_RW; //写入
Set_LCD_E; //允许
LCD_DB(dat);
delay_n10us(DELAY_TIME);
Clr_LCD_E;
delay_n10us(DELAY_TIME);
}
4 void LCD_write_data(uchar dat)
{
delay_n10us(DELAY_TIME);
Set_LCD_RS; //指令
Clr_LCD_RW; //写入
Set_LCD_E; //允许
LCD_DB(dat);
delay_n10us(DELAY_TIME);
Clr_LCD_E;
delay_n10us(DELAY_TIME);
}
4 显示字符
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}
5 显示字符串
void LCD_disp_str(uchar x,uchar y,uchar *str)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
while(*str!='\0')
{
LCD_write_data(*str);
str++;
}
}
6 测试函数
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,"Be Happy
");//显示字符串
delay(500);//延时
LCD_disp_str(3,2,"youzizhile!
");//显示字符串
delay(500);//延时
}
我的其他心得贴:
【LPC54100】+LPC54102开发板初试用 https://bbs.eeworld.com.cn/thread-457205-1-2.html
【LPC54100】+LPC54102的电流消耗测量电路分析 https://bbs.eeworld.com.cn/thread-458024-1-1.html