在DE2开发板上附带一块1602液晶,在学习SOPC过程中发现下面三种方式都可以控制1602:比如在DE2开发板的LCD上分两行显示"NIOSII ON DE2“和" TIANWEN JLU "
1.LCD的底层开发方式:LCD的编程包括对1602的命令读写和数据读写,根据LCD的定义,可以在LCD.h文件中定义lcd的命令读写和数据读写。
//----------------------------------LCD.h-----------------------------------------------//
#ifndef _LCD_H_
#define _LCD_H_
#definelcd_write_cmd(base,data)IOWR(base,0,data)
#definelcd_read_cmd(base)IORD(base,1)
#definelcd_write_data(base,data)IOWR(base,2,data)
#definelcd_read_data(base)IORD(base,3)
void LCD_Init();
void LCD_Show_Text(char* Text);
void LCD_Line2();
void LCD_Test();
#endif
//-----------------------------LCD.c----------------------------------------------//
#include <unistd.h>
#include "string.h"
#include "io.h"
#include "system.h"
#include "alt_types.h"
#include <stdio.h>
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
#include "LCD.h"
void LCD_Init()
{
lcd_write_cmd(LCD_16207_0_BASE,0x38);//初始化LCD
usleep(2000);
lcd_write_cmd(LCD_16207_0_BASE,0x0C);//关显示,光标闪烁方式
usleep(2000);
lcd_write_cmd(LCD_16207_0_BASE,0x01);//清显示
usleep(2000);
lcd_write_cmd(LCD_16207_0_BASE,0x06);//光标迁移方式不许整屏移动
usleep(2000);
lcd_write_cmd(LCD_16207_0_BASE,0x80);//显示光标指示的位置
usleep(2000);
}
//-----------------------------------------------------------------------------------//
void LCD_Show_Text(char* Text)
{
int i;
for(i=0;i<strlen(Text);i++)
{
lcd_write_data(LCD_16207_0_BASE,Text[i]);
usleep(2000);
}
}
//-----------------------------------------------------------------------------------//
void LCD_Line2()//换行
{
lcd_write_cmd(LCD_16207_0_BASE,0xc0);
usleep(2000);
}
//------------------------------main------------------------------------------------//
void main()
{
charText1[16]="NIOS II ON DE2";
charText2[16]=" TIANWEN JLU ";
LCD_Init();
LCD_Show_Text(Text1);
LCD_Line2();
LCD_Show_Text(Text2);
return0;
}
2.调用标准函数对LCD编程的方式:利用NIOSII的fprintf标准函数对LCD编程,同样显示上面两行话
#include<unistd.h>
#include<stdio.h>
#include<string.h>
#include<io.h>
#include"system.h"
void main()
{
FILE *lcd;
lcd="fopen"("/dev/lcd_16207_0","w");
fprintf(lcd,"NIOS II ON DE2n");
fprintf(lcd,"TIANWEN JLU");
fclose(lcd);
}
3.使用标准函数控制I/O设备的方式
使用标准输入(stdio)标准输出(stdout)标准错误(stdeer)函数。
#include"stdio.h"
int main()
{
printf("NIOS II ON DE2n");
printf("TIANWEN JLU");
return 0;
}
在编译之前,用右键单击工程,在弹出的"System LibraryProperties",按如下设置:
转载自:http://blog.ednchina.com/tianwen09/246657/Message.aspx
自己在做的过程中,第一种方式能够成功,后面两种却失败了,正在找原因