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

📄 10654ed57726001b195af0f72051c412

📁 2006nios嵌入式系统电子设计大赛时用过的完整工程。
💻
字号:
//#include<math.h>
//#include "system.h"
#define VGA_WIDTH     200
#define SetPixel(base,x,y,k)            IOWR(base, y*VGA_WIDTH+x, k) //改动过       
unsigned int extern_start_x,extern_start_y,extern_palindex=1;
unsigned long extern_color;
struct palette
{
  unsigned int index;
  unsigned int r;
  unsigned int g;
  unsigned int b;
} pal[256];
unsigned long RGB(unsigned int r,unsigned int g,unsigned int b)
{
  unsigned long temp;
  temp=(r&1023)+(g&1023)*1024+(b&1023)*1048576;
 return (unsigned long)temp;
}
unsigned int GetColor(unsigned int r,unsigned int g,unsigned int b)
{
  unsigned int i;
  for(i=0;i<256;i++)
  {
    if((pal[i].r==r)&&(pal[i].g==g)&&(pal[i].b==b))   return pal[i].index;
    else if((abs(pal[i].r-r)<=10)&&(abs(pal[i].g-g)<=10)&&(abs(pal[i].b-b)<=10)) return pal[i].index;
  }
  return  300;
}
unsigned int RegisterColor(unsigned int r,unsigned int g,unsigned int b,unsigned int index)
{
  pal[index].r=r;
  pal[index].g=g;
  pal[index].b=b;  
  pal[index].index=index;
  IOWR(VGA_0_BASE,40000+index,RGB(r,g,b)); 
}
MoveTo(unsigned int x,unsigned int y)
{
   extern_start_x=x;
   extern_start_y=y;
}
LineTo(unsigned int x,unsigned int y,unsigned int r,unsigned int g,unsigned int b)
{
    unsigned int i,k,start_x,end_x,index;      
    i=abs(x-extern_start_x);
    if(x-extern_start_x>0)
    {
       start_x=extern_start_x;
       end_x=x;
     }    
     
    index=GetColor(r,g,b)   ;
    if(index==300)  
    {
      RegisterColor(r,g,b,extern_palindex);
      index=extern_palindex;      
      extern_palindex++;
    }    
    for(k=0;k<i;k++)
    SetPixel(VGA_0_BASE,start_x+k,y,index);
    MoveTo(k+start_x,y);
}
SetPixel1(unsigned int x,unsigned int y,unsigned int r,unsigned int g,unsigned int b)
{
  unsigned int index;
  index=GetColor(r,g,b);
  if(index==300)
  {
      RegisterColor(r,g,b,extern_palindex);
      index=extern_palindex;      
      extern_palindex++;    
      if(extern_palindex>=256)  
      {
        printf("\n****************index use up**************");
        exit(1);
        extern_palindex=1;
      }
  }
  SetPixel(VGA_0_BASE,x,y,index);
  
}
void startconvert(int hang,int liel,int lieh)
{
  unsigned long temp;
  temp=lieh;
  temp=temp<<16;
  temp=temp|liel; 
  IOWR(LOCK_PIXEL_NUM_BASE,0,hang);
  IOWR(PIXEL_LOCK_LIE_BASE,0,temp);

}
unsigned long getdata(int num)
{
  IOWR(WHICHOUT_BASE,0,num);  
  usleep(1);
  return IORD(RGB_DATA_BASE,0);
}

⌨️ 快捷键说明

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