⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nios2lcd.txt

📁 这是niosⅡ环境下用来控制lcd的程序代码
💻 TXT
字号:
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "lcd_display.h"

#define char8 unsigned char
#define int16 unsigned int
#define int32 unsigned long 


/****************************/
//     delay                    
/****************************/
void delay(int32 i)
{
   while(i!=0)
     i--;  
}

/****************************/
//     delay 3s                    
/****************************/
void delay_3s()
{
   char8 i=0;
   while(i<100)
   {
    delay(50000);
    i++;
   }      
}

/****************************/
/*    read lcd status       */
/****************************/
char8 read_status(void)
{
   char8 i;
   IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0);    //pio set to input
   IOWR_ALTERA_AVALON_PIO_DATA(LCD_DIR_BASE,0);           //LCD_DIR=0,b to a
   delay(10);
   IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,1);            //LCD_CD=1
   delay(10);
   IOWR_ALTERA_AVALON_PIO_DATA(LCD_RD_N_BASE,0);          //LCD_RD_N=0
   delay(10);
   i=IORD_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE);          //status byte
   delay(10);
   IOWR_ALTERA_AVALON_PIO_DATA(LCD_RD_N_BASE,1);          //LCD_RD_N=0
 
   return(i);  
}

/****************************/
/*    read lcd status0 1       */
/****************************/
void st01(void)
{
   while((read_status()&0x03)!=0x03)
   ;  
}

/****************************/
/*    read lcd status3      */
/****************************/
void st3(void)
{
   while((read_status()&0x08)!=0x08)
   ;  
}

/****************************/
//     write data to lcd      
/****************************/
void wr_data(char8 i)
{
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_DIR_BASE,1);
  IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0xff);  //pio set to output
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,0);             //LCD_CD=0
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE,i);           //write data
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,0);           //LCD_WE=0
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,1);           //LCD_WE=1
}

/****************************/
//     write command to lcd      
/****************************/
void wr_cmd(char8 i)
{
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_DIR_BASE,1);
  IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DATA_BASE, 0xff);  //pio set to output
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,1);             //LCD_CD=0
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_DATA_BASE,i);           //write data
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,0);           //LCD_WE=0
  delay(10);
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_N_BASE,1);           //LCD_WE=1
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -