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

📄 320_240_driver.c

📁 lcd 320*240液晶底层驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
          {
            pixel(y, x);
          }
        }
        else
        {
          for(y=y2;y<=y1;y++)
          {
            pixel(y, x);
          }
        }          
    }
    else
    {
	if( fabs(y1-y2) <=  fabs(x1-x2))            // |k|<=1      // y行数 <= x列数
	{        
          k=((float)y2-y1) / ((float)x2-x1) ;        
	  b=y1-k*x1;        
	  if( x1 < x2 )       
          {            
            for(x=x1;x<=x2;x++)            
            {                
              y=(unsigned int)(k*x+b);                
	      pixel(y, x);            
	     }        
	   }        
	   else
           {            
             for(x=x2;x<=x1;x++)            
             {                
               y=(unsigned int)(k*x+b);                
               pixel(y,x);            
             }        
           }    
	}    
	else                                                       // 行数>列数                           
	{        
          k=((float)x2-x1) / ((float)y2-y1) ;        
	  b=x1-k*y1;        
	  if( y1 <= y2 )        
	  {            
            for(y=y1;y<=y2;y++)            
	    {                
              x=(unsigned int)(k*y+b);                
	      pixel(y,x);
            }        
          }        
          else        
          {            
            for(y=y2;y<=y1;y++)            
            {                
              x=(unsigned int)(k*y+b);                
              pixel(y , x);            
            }        
          }    
        }
    }
}	
//==================================================
void char_addr_point_set( unsigned int urow,unsigned int ucol)
{
   unsigned int ipos;
   ipos=urow*40+ucol+1200; 
   wr_cmd_0(0x004c); 
   wr_cmd_2(0x0046,ipos);        
}
//==================================================
void showchar8(unsigned int row,unsigned int col,unsigned int chp,unsigned int attribute)
{	                //   row:显示行    col:显示列      chp:显示第几个字. attribute:反色。1:显示字黑,0显示字白
  unsigned int  j,char_data;
  const unsigned int *p;
  p=&HZ8_DOT_LIB[0];
  chp=chp*16; 
  p=p+chp;                                           //  指针指向显示数字的地址
  col/=8;  		 		         
//========================================= 	 	        
//          显示中文
//=========================================  
  if(attribute)
  {       
    for(j=0;j<16;j++)
    {	 			
      char_addr_point_set(row,col);  //设置Vram地址
      write_lcd_command(0x0042);  
	 	            
      char_data=*p++;  	            
      write_lcd_data(char_data);          		   	                	          	         
		           
      row+=1;	      	                			 		       
    }
  }
  else
  {	 		 
    for(j=0;j<16;j++)
    {	 	           
      char_addr_point_set(row,col);  //设置Vram地址
      write_lcd_command(0x0042);
      
      char_data=*p++;      
      char_data^=0x00ff;
      write_lcd_data(char_data);    	
      
      row+=1; 			 	
    }
  }		   	     
}   
//==================================================
void showchar16(unsigned int row,unsigned int col,unsigned int chp,unsigned int attribute)
{	
  unsigned int  j,char_data;
  const unsigned int *p;
  p=&HZ16_DOT_LIB[0];
  chp=chp*32;
  p=p+chp;             
  col/=8;  		 		         
//========================================= 	 	        
//          显示中文
//=========================================  
  if(attribute)
  {            
	 	    
    for(j=0;j<16;j++)
    {	 			
      char_addr_point_set(row,col);  //设置Vram地址               //显示光标右移,设置光标地址
      write_lcd_command(0x0042);                                  // 写显示数据
	 	            
      char_data=*p++;  	           //左8位
      write_lcd_data(char_data);          		   	                	         
      char_data=*p++;  		       //右8位       
      write_lcd_data(char_data);
		           
      row+=1; 	      	                			 		      
    }
  }
  else
  {	 		 
    for(j=0;j<16;j++)
    {	 	           
      char_addr_point_set(row,col);  //设置Vram地址
      write_lcd_command(0x0042);
      
      char_data=*p++;      
      char_data^=0x00ff;
      write_lcd_data(char_data);    	   	                 	         
      char_data=*p++;  
      char_data^=0x00ff;	
      write_lcd_data(char_data);  	 		        
		             
      row+=1; 			 	
    }
  }		   	     
}   
//==================================================

void showchar24(unsigned int row,unsigned int col,unsigned int chp,unsigned int attribute)
{	                            
  unsigned int  j,char_data;   
  const unsigned int *p;
  p=&HZ24_DOT_LIB[0];
  chp=chp*72;
  p=p+chp;             
  col/=8;  		 		         
//========================================= 	 	        
//         显示中文
//=========================================  
  if(attribute)
  {            
	 	    
    for(j=0;j<24;j++)
    {	 			
	char_addr_point_set(row,col);  //设置Vram地址
	write_lcd_command(0x0042);  
	 	            
	char_data=*p++;  	           
	write_lcd_data(char_data);     //左8位     		   	                	         
	char_data=*p++;  		              
	write_lcd_data(char_data);	   //中8位           
	char_data=*p++;  		              
	write_lcd_data(char_data);     //右8位
		           
	row+=1;
      	                			 		       
    }
  }
  else
  {	 		 
    for(j=0;j<24;j++)
    {	 	           
	char_addr_point_set(row,col);  //设置Vram地址
	write_lcd_command(0x0042);
		           
	char_data=*p++;             
        char_data^=0x00ff;
	write_lcd_data(char_data);    	   	                 	         
	char_data=*p++;  
	char_data^=0x00ff;	
	write_lcd_data(char_data);  	 		        	             
	char_data=*p++;  
	char_data^=0x00ff;	
	write_lcd_data(char_data);  
	    	         
	row+=1;		 	
    }
  }		   	     
}   
//==================================================
//==================================================
// 画实时波形
//==================================================
void lineVT(void)
{
  unsigned int i;
  clr_grphram();
//================================
// 实时曲线
//================================   
  showchar24(0,24*4,29,1);
  showchar24(0,24*5,30,1);
  showchar24(0,24*6,27,1);
  showchar24(0,24*7,28,1);
   
  line(40,0,239,0);
  lineH(100,0,100,320);
  lineH(200,0,200,320);
  for(i=0;i<255;i++)
  {
  
    line(100-sindata[i],i+1,100-sindata[i+1],i+2);  	
   
    line(200-sindata[i],i+1,200-sindata[i+1],i+2);
  }
}
//==================================================

// 画频谱图
//==================================================
void lineVF(void)
{
  unsigned int i;
  clr_grphram();
/*  
//------------------------
// 电压频谱图
//------------------------  
  showchar24(0,24*4,0,1);
  showchar24(0,24*5,11,1);
  showchar24(0,24*6,22,1);
  showchar24(0,24*7,23,1);
  showchar24(0,24*8,24,1);
//-------------------------  
//频率
//电压:         含有率:   
//------------------------
  showchar16(26,16*2,121,1);
  showchar16(26,16*3,102,1);
  showchar16(26,16*4,198,1);
  
  showchar16(44,16*2,6,1);
  showchar16(44,16*3,82,1);
  showchar16(44,16*4,198,1);
  
  
  
  showchar16(44,16*11,119,1);
  showchar16(44,16*12,126,1);
  showchar16(44,16*13,102,1);
  showchar16(44,16*14,198,1);
  */
 //----------------------- 
  lineH(43,0,43,320);  
  lineH(61,0,61,320); 
//------------------------
  lineH(25,0,25,320);  
  lineH(239,0,239,320);
  line(25,0,239,0);  
  line(25,319,239,319);
//------------------------  
  for(i=0;i<19;i++)
  {
    line(199,i*16+8,199-sindata[i],i*16+8);  	
    line(199,i*16+9,199-sindata[i],i*16+9);  
    line(199,i*16+10,199-sindata[i],i*16+10); 
//    showchar8(200,i*16+8,i+0,1); 
     
  }
 //  showchar8(200,1*16+8,1,0);

}

//==================================================
// 画圆
//==================================================
void circle(unsigned char OY,unsigned char OX,unsigned char R)//
{
  unsigned int dx,dy,xx,rr,rs;
  
  dy = R;
  rr = R*R;
  rs = R*71/100;          //0.71R
  
  for(dx=0;dx<=rs;)
  { 
    dx++;
    xx = dx*dx;
    while((rr-xx)<(dy*dy))
      {
        dy--;
      }
    
    pixel(OY-dy,OX+dx);  //第一象限
    pixel(OY-dy,OX-dx);  //第二象限
    pixel(OY+dy,OX-dx);  //第三象限
    pixel(OY+dy,OX+dx);  //第四象限
    
    pixel(OY-dx,OX+dy);  //第一象限
    pixel(OY-dx,OX-dy);  //第二象限
    pixel(OY+dx,OX-dy);  //第三象限
    pixel(OY+dx,OX+dy);  //第四象限
    
  }
}
//==================================================
void delaya(unsigned int dat)
{
	unsigned int i,j,datnum;
	datnum=dat;
	for(i=0;i<datnum;i++)
	{
		for (j=0;j<1000;j++)
		{
		}
	}		
}
//==================================================
//eof
//==================================================

⌨️ 快捷键说明

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