在DE2开发板上附带一块1602液晶,在学习SOPC过程中发现下面三种方式都可以控制1602:比如在DE2开发板的LCD上分两行显示"NIOS II ON DE2“和" TIANWEN JLU "
1.LCD的底层开发方式:LCD的编程包括对1602的命令读写和数据读写,根据LCD的定义,可以在LCD.h文件中定义lcd的命令读写和数据读写。
//----------------------------------LCD.h-----------------------------------------------//
#ifndef _LCD_H_
#define _LCD_H_
#define lcd_write_cmd(base,data) IOWR(base,0,data)
#define lcd_read_cmd(base) IORD(base,1)
#define lcd_write_data(base,data) IOWR(base,2,data)
#define lcd_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);
usleep(2000);
}
}
//-----------------------------------------------------------------------------------//
void LCD_Line2()//换行
{
lcd_write_cmd(LCD_16207_0_BASE,0xc0);
usleep(2000);
}
//------------------------------main------------------------------------------------//
void main()
{
char Text1[16]="NIOS II ON DE2";
char Text2[16]=" TIANWEN JLU ";
LCD_Init();
LCD_Show_Text(Text1);
LCD_Line2();
LCD_Show_Text(Text2);
return 0;
}
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 DE2\n");
fprintf(lcd,"TIANWEN JLU");
fclose(lcd);
}
3.使用标准函数控制I/O设备的方式
使用标准输入(stdio)标准输出(stdout)标准错误(stdeer)函数。
#include"stdio.h"
int main()
{
printf("NIOS II ON DE2\n");
printf("TIANWEN JLU");
return 0;
}
在编译之前,用右键单击工程,在弹出的"System Library Properties",按如下设置:
工程文件:https://static.assets-stash.eet-china.com/album/old-resources/2009/7/27/29e66444-a4f5-4d69-b89c-f4d885455c50.rarhttps://static.assets-stash.eet-china.com/album/old-resources/2009/7/27/369ae3fe-b190-414b-a616-f363ba397728.rar
用户1508416 2010-6-18 13:17
用户284518 2010-6-8 16:19
用户224803 2009-12-13 20:41
用户124183 2009-7-29 16:48
用户519273 2009-7-29 15:59
用户541294 2009-7-28 14:36