原创 LCD1602显示的三种方式

2009-7-27 22:08 4103 8 14 分类: FPGA/CPLD

   在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

PARTNER CONTENT

文章评论6条评论)

登录后参与讨论

用户1508416 2010-6-18 13:17

我用第一钟方式成功了, 第二、三钟,不管怎样该都不成功,不知怎么回事 我用的是8.0的IDE,用2、3种方式要先初始化么?

用户284518 2010-6-8 16:19

你好,我照着您的方法试了试,没有错误,可是液晶上不显示啊,怎么弄?谢谢

用户224803 2009-12-13 20:41

thanks

用户124183 2009-7-29 16:48

把下载的第1个压缩包重命名为1.rar,第2个重命名为2.rar,然后同时选中,再解压

用户519273 2009-7-29 15:59

把两个附件同时放到一个文件夹里,解压再看看!

用户541294 2009-7-28 14:36

问什么不能完全解压呢
相关推荐阅读
用户519273 2009-07-29 15:50
(转)给年轻工程师的十大忠告
来源:http://www.baisi.net/thread-1317555-1-1.html       诸位,咱当电子工程师也是十余年了,不算有出息,环顾四周,也没有看见几个有出息的!回顾工程师生...
用户519273 2009-07-28 11:22
什么是SOF与POF?
        在FPGA的学习过程中,经常会碰到.sof和.pof格式的文件,以前在下载程序时经常弄错两者。后来在网上看是这样分别的:      Altera公司的Quartus II开发工具可以生...
用户519273 2009-07-25 12:41
在NiosII IDE 中使用Flash Programmer
           完成软硬件开发后,可以使用NiosII IDE 提供的Flash Programmer 工具将程序下载到DE2平台上的FLASH储存器。 使用NiosII IDE对FlASH储存...
用户519273 2009-07-24 14:11
DE2板上VGA显示控制
DE2控制面板上提供了VGA显示控制工具和IP,用户可以同以通过VGA显示接口显示一副静止图片。1.利用XP系统自带的画图软件打开任意.bmp图片,在属性中将像素设置为640*480,如下图所示,最后...
用户519273 2009-07-23 21:43
SOPC与RS232 接口
在DE2平台上提供RS232接口。在SOPC Build 中定制 UART。在DE2系统光盘中提供DE2工程中所有的NiosII核的工程都有UART组件。这次我们选用DE2_NIOS_DEVICE_L...
EE直播间
更多
我要评论
6
8
关闭 站长推荐上一条 /3 下一条