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

📄 e0720f93319f001d1d70866674efd667

📁 NIOSII的液晶显示ip 核
💻
字号:
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <sys/alt_cache.h>

#include "system.h"
#include "anywhere_avalon_lcd_regs.h"

int main()
{
  alt_u32 nBGOffset;
  alt_u32 nFG1Offset;
  alt_u16 nBGWidth;
  alt_u16 nBGHeight;
  alt_u16 nFG1Width;
  alt_u16 nFG1Height;
  alt_u16 nFG1PosX;
  alt_u16 nFG1PosY;
  alt_u8  nFG1Alpha;
  alt_u16 nFG1TransColor;
  alt_16 nStepX;
  alt_16 nStepY;
  
  
  nBGOffset=EXT_SSRAM_BASE;
  nBGWidth=640;
  nBGHeight=480;
  nFG1Offset=nBGOffset+nBGWidth*nBGHeight*2;
  nFG1Width=20;
  nFG1Height=20;
  nFG1PosX=100;
  nFG1PosY=100;
  nFG1Alpha=128;
  nFG1TransColor=0x1234;
  nStepX=2;
  nStepY=2;
  
  //initialize LCD Controller
  //Enable 2 layers
  IOWR_ANYWHERE_AVALON_LCD_LAYER_EN(CONTROLLER_BASE,0x03);
  //Set read mode
  IOWR_ANYWHERE_AVALON_LCD_READ_MODE(CONTROLLER_BASE,0x03);
  //Enalbe transparency
  IOWR_ANYWHERE_AVALON_LCD_TRANS_EN(CONTROLLER_BASE,0x02);
  //Set layer start address
  IOWR_ANYWHERE_AVALON_LCD_BG_STARTADDR(CONTROLLER_BASE,nBGOffset);
  IOWR_ANYWHERE_AVALON_LCD_FG1_STARTADDR(CONTROLLER_BASE,nFG1Offset);
  //Set foreground layer 1
  IOWR_ANYWHERE_AVALON_LCD_FG1_WIDTH(CONTROLLER_BASE,nFG1Width);
  IOWR_ANYWHERE_AVALON_LCD_FG1_HEIGHT(CONTROLLER_BASE,nFG1Height);
  IOWR_ANYWHERE_AVALON_LCD_FG1_X(CONTROLLER_BASE,nFG1PosX);
  IOWR_ANYWHERE_AVALON_LCD_FG1_Y(CONTROLLER_BASE,nFG1PosY);
  IOWR_ANYWHERE_AVALON_LCD_FG1_ALPHA(CONTROLLER_BASE,nFG1Alpha);
  IOWR_ANYWHERE_AVALON_LCD_FG1_TRANSCOLOR(CONTROLLER_BASE,nFG1TransColor);
  //Enable LCD Controller
  IOWR_ANYWHERE_AVALON_LCD_CTRL(CONTROLLER_BASE,0x01);

  //Draw
  alt_u16 *pPixel;
  for(pPixel=(alt_u16 *)nBGOffset;pPixel<(alt_u16 *)(nBGOffset+nBGWidth*nBGHeight*2);pPixel++)
  {
	  alt_u8 x;
	  alt_u8 y;

	  x=((((alt_u32)pPixel-nBGOffset)/2)%nBGWidth/40)%2;
	  y=((((alt_u32)pPixel-nBGOffset)/2)/nBGWidth/40)%2;
	  if(x==y)
	  {
		  *pPixel=0xf800;
	  }
	  else
	  {
		  *pPixel=0x001f;
	  }
    
    /*
    alt_u16 x;
    alt_u16 y;
    alt_u32 d;

    x=(((alt_u32)pPixel-nBGOffset)/2)%nBGWidth;
    y=(((alt_u32)pPixel-nBGOffset)/2)/nBGWidth;
    d=(x-320)*(x-320)+(y-240)*(y-240);

    if(d<200*200)
    {
      *pPixel=0x07e0;
    }
    else
    {
      *pPixel=0xffff;
    }
    */
  }
  
  for(pPixel=(alt_u16 *)nFG1Offset;pPixel<(alt_u16 *)(nFG1Offset+nFG1Width*nFG1Height*2);pPixel++)
  {
	  
	  alt_u16 x;
	  alt_u16 y;
	  alt_u32 d;

	  x=(((alt_u32)pPixel-nFG1Offset)/2)%nFG1Width;
	  y=(((alt_u32)pPixel-nFG1Offset)/2)/nFG1Width;
	  d=(x-nFG1Width/2)*(x-nFG1Width/2)+(y-nFG1Height/2)*(y-nFG1Height/2);

	  if(d<10*10)
	  {
		  *pPixel=0x07e0;
	  }
	  else
	  {
		  *pPixel=nFG1TransColor;
	  }
	   
    //*pPixel=0x07e0;
  }
  
  alt_dcache_flush_all();
  
  while(1)
  {
	  alt_u32 nCount;

	  nCount=200000;
	  while(nCount--);
	  
	  nFG1PosX+=nStepX;
	  if(nFG1PosX==0 || nFG1PosX+nFG1Width==nBGWidth)
	  {
		  nStepX=-nStepX;
	  }

	  nFG1PosY+=nStepY;
	  if(nFG1PosY==0 || nFG1PosY+nFG1Height==nBGHeight)
	  {
		  nStepY=-nStepY;
	  }

	  IOWR_ANYWHERE_AVALON_LCD_FG1_X(CONTROLLER_BASE,nFG1PosX);
	  IOWR_ANYWHERE_AVALON_LCD_FG1_Y(CONTROLLER_BASE,nFG1PosY);
  }
}

⌨️ 快捷键说明

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