基于sopc的LCD1602液晶显示

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于sopc的LCD1602液晶显示

液晶是常用的显示输出设备,种类繁多。我们常用的比较容易的液晶是LCD1602液晶,下文给了一个基于sopc的LCD1602液晶的驱动程序。

SOPC Builder中自带LCD1602液晶软核,设计时可以直接添加,十分方便。

打开Quartus II软件,在sopc builder里建立如下硬件

在nios II软件里写如下程序:

#include

#include

#include

#include

#include

#include

#include

#define LCD1602 0x9000

alt_u8 lcd_srting1[]="baidu";

alt_u8 lcd_string2[]="2016/4/10";

void check_busy()

{

alt_u8 status;

do

{

status = IORD_ALTERA_AVALON_LCD_16207_STATUS(LCD1602_BASE);

}while(status&0x80);

}

void lcd_init()

{

IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD1602_BASE,0x38);

check_busy();

IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD1602_BASE,0x01);

check_busy();

IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD1602_BASE,0x06);

check_busy();

IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD1602_BASE,0x0C);

}

void lcd_prints(alt_u8 *string)

{

while(*string !='\0')

{

check_busy();

IOWR_ALTERA_AVALON_LCD_16207_DATA(LCD1602_BASE,*string);

string++;

}

}

void select_xy(alt_u8 x,alt_u8 y)

{

check_busy();

if(x%2==0)

{

I OWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD1602_BASE,0x80+y); }

else

{

I OWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD1602_BASE,0xC0+y); }

}

int main()

{

lcd_init();

select_xy(0,0);

lcd_prints(lcd_string1);

select_xy(1,7);

lcd_prints(lcd_string2);

return 0;

}

相关文档
最新文档