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

📄 display.c

📁 AVR Mega128 按键菜单显示程序 源码 采用定时器调度算法
💻 C
📖 第 1 页 / 共 3 页
字号:
		   adp_temp=adp+0x0080+0x0001;
		 for(j=0;j<8;j++)
		    { 
			 m_fill(adp_temp,font[num][i++]);
		     adp_temp+=0x0010;
			} 
		}
	 adp+=0x0002;
	 return adp;
}

void cursor_on(unsigned char ypoint,unsigned char xpoint)
{
 	 ypoint=ypoint*2+1;
	 w_cmd(CUSEL|0x00);
	 w_data2(xpoint,ypoint);
	 w_cmd(CUPSET);
	 w_cmd(TGCON);	 
}

void cursor_off(void)
{
 	 w_cmd(TGCOFF);
}

void screen_write(unsigned char *screen)//显示
{
 	 unsigned int i;
	 unsigned char data;
	 unsigned char data1;
	 unsigned int adp;

	 adp=0x0000;
	 
	 for(i=0;i<MAX_DOT;i++)
	 	{
		 data=*(screen+i);
		 if((i%16==0)&&(i!=0))
		 	{
			 adp+=0x00F0;
			}
		 if(adp>=0x0400)
		 	{
			 adp=0x0000;
			}			
    	 if((data>=0x20)&&(data<0x80))
   		    { 
   			 adp=half_write(adp,data);
    		}
   		 else if((data>=0x80)&&(data<=0xff))
     	    {
   			 if((adp+1>=0x0010)&&(adp+1<0x0100))
		       {
			    adp=0x0100;
   			   }
		     else if((adp+1>=0x0110)&&(adp+1<0x0200))
		       {
	   		    adp=0x0200;
		   	   }
		     else if((adp+1>=0x0210)&&(adp+1<0x0300))
		       {
			    adp=0x0300;
			   }
		     else if((adp+1>=0x0310)&&(adp+1<0x0400))
		       {
			    adp=0x0000;
			   }
			 data1=*(screen+(++i));
			 adp=full_write(adp,data,data1);
    		}
		}
}

void init_graph(void)
{
 unsigned int counter;
 unsigned int adp;
 unsigned char data;
	 
 adp=0x0000;
 set_ADP(adp);

 w_cmd(AWRON);
 
 for(counter=0x00;counter<0x0400;counter++)
 	{
  	 if(counter%16!=0&&counter/16!=47)
	   {
	    data=0x00;
		auto_fill(data);
	   }
	 else
	   {
	    if(counter/16==47)
	      {
	       data=0xFF;
		   auto_fill(data);
	      }
		else
		  {
	       if(counter%16==0)
	         {
	          data=0x20;
	   	      auto_fill(data);
	         }
		  }
	   }
	}
	
 chk_sta3();
 w_cmd(AWROFF);
 
 adp=16*48+1;
 data='1';
 qtr_write(adp,data);

 adp++;
 data='=';
 qtr_write(adp,data);

 adp=16*48+7;
 data='A';
 qtr_write(adp,data);

 adp=16*48+9;
 data='2';
 qtr_write(adp,data);

 adp++;
 data='=';
 qtr_write(adp,data);

 adp=16*48+15;
 data='A';
 qtr_write(adp,data);

 adp=16*56+4;
 data='%';
 qtr_write(adp,data);

 adp=16*56+6;
 data='[';
 qtr_write(adp,data);

 adp=16*56+15;
 data=']';
 qtr_write(adp,data);

}

void wave_show(unsigned char *graph_head)
{
 unsigned char counter;
 unsigned char pos;
 unsigned char *graph;
 unsigned char graph_temp;
 unsigned char graph_l;
 unsigned char graph_h;
 unsigned int  adp;
 unsigned int  i;
 unsigned char data;
 unsigned int  amp;
 unsigned char amp_c[5];
 
 graph=graph_head;
 init_graph();
 for(counter=3;counter<128;counter++)
   {
    pos=7-(counter%8);
//	graph_temp=*graph;
	if(counter==3)
	  {
	   graph_l=*graph;
	   graph_h=(*(graph+1)+*(graph))/2;
	  }
	else if(counter==127)
	  {
	   graph_l=(*graph+*(graph-1))/2;
	   graph_h=*graph;
	  }
	else
	  {
	   graph_l=(*graph+*(graph-1))/2;
	   graph_h=(*(graph+1)+*(graph))/2;	   
	  }
	if(graph_l>graph_h)
	  {
	  graph_temp=graph_h;
	  graph_h=graph_l;
	  graph_l=graph_temp;
	  }
    for(i=graph_l;i<=graph_h;i++)
	  {	  
	   graph_temp=i;
	   if(graph_temp>46)
	     {
	      graph_temp=46;
	     }
	   adp=graph_temp*16+counter/8;
	   set_ADP(adp);
	   w_cmd(BITSET|pos);
	  }
	graph++;
   }

//第一个拐点
 graph_temp=*(graph_head+*(graph++));
 if(graph_temp>46)
   {
	graph_temp=46;
   }
 if(graph_temp<8)
   {
    adp=(graph_temp+1)*16+1;
   }
 else
   {
    adp=(graph_temp-8)*16+1;
   }
 data='1';
 qtr_write(adp,data);
 
 adp=graph_temp*16;
 set_ADP(adp);

 w_cmd(AWRON);

 data=0x1F;
 auto_fill(data);

 data=0xFF;
 for(i=1;i<16;i++)
   {
	auto_fill(data);
   }

 chk_sta3();
 w_cmd(AWROFF);
 
 amp=(unsigned int)*(graph++);
 amp|=(unsigned int)*(graph++)<<8;
 tobcd(amp,amp_c);
 
 adp=16*48+3;
 for(i=0;i<4;i++)
   {
    data=amp_c[i+1];
	adp=qtr_write(adp,data);
   }

//第二个拐点
 graph_temp=*(graph_head+*(graph++));
 if(graph_temp>46)
   {
	graph_temp=46;
   }
 if(graph_temp<8)
   {
    adp=(graph_temp+1)*16+2;
   }
 else
   {
    adp=(graph_temp-8)*16+2;
   }
 data='2';
 qtr_write(adp,data);
 
 adp=graph_temp*16;
 set_ADP(adp);

 w_cmd(AWRON);

 data=0x1F;
 auto_fill(data);

 data=0xFF;
 for(i=1;i<16;i++)
   {
	auto_fill(data);
   }

 chk_sta3();
 w_cmd(AWROFF);
 
 amp=(unsigned int)*(graph++);
 amp|=(unsigned int)*(graph++)<<8;
 tobcd(amp,amp_c);
 
 adp=16*48+11;
 for(i=0;i<4;i++)
   {
    data=amp_c[i+1];
	adp=qtr_write(adp,data);
   }

//第三个拐点
// graph_temp=*(graph_head+*(graph++));
// if(graph_temp>46)
//   {
//	graph_temp=46;
//   }
// if(graph_temp<8)
//   {
//    adp=(graph_temp+1)*16+15;
//   }
// else
//   {
//    adp=(graph_temp-8)*16+15;
//   }
// data='3';
// qtr_write(adp,data);
// 
// adp=graph_temp*16;
// set_ADP(adp);
//
// w_cmd(AWRON);
//
// data=0x1F;
// auto_fill(data);
//
// data=0xFF;
// for(i=1;i<16;i++)
//   {
//	auto_fill(data);
//  }

// chk_sta3();
// w_cmd(AWROFF);
 
 graph++;
 amp=(unsigned int)*(graph++);
 amp|=(unsigned int)*(graph++)<<8;
 tobcd(amp,amp_c);
 
 adp=16*56+1;
 for(i=0;i<3;i++)
   {
    data=amp_c[i];
	adp=qtr_write(adp,data);
   }
//井号
 adp=56*16+7;
 for(i=0;i<8;i++)
   {
    data=*(graph++);
	adp=qtr_write(adp,data);
   }
}

void init_LCD(void)
{
	 unsigned int counter;
	 unsigned char data;
	 unsigned int i,j,temp;
	 unsigned char data_l;
	 unsigned char data_h;
	 unsigned int adp;

	 PORTE&=~(1<<LCD_RESET);
	 for(i=0;i<20000;i++);
	 PORTE|=1<<LCD_RESET;
	 PORTE&=~(1<<LCD_FS);
	 
	 //set g home address
	 data_l=0x00;
	 data_h=0x00;
	 w_data2(data_l,data_h);
	 w_cmd(GRHOME);
	 
	 //set text home address
	 data_l=0x00;
	 data_h=0x04;
	 w_data2(data_l,data_h);
	 w_cmd(TXHOME);

	 //set text area
	 data_l=0x10;
	 data_h=0x00;
	 w_data2(data_l,data_h);
	 w_cmd(TXAREA);
	 
	 //set g area
	 data_l=0x10;
	 data_h=0x00;
	 w_data2(data_l,data_h);
	 w_cmd(GRAREA);
	 
	 //set mode
	 w_cmd(INROM);
	 	 
	 //clear display
	 adp=0x0000;
	 set_ADP(adp);

	 w_cmd(AWRON);
	 
	 for(data=0x00,counter=0x00;counter<0x2000;counter++)
	 	{
		 auto_fill(data);
		}
		
	 chk_sta3();
	 w_cmd(AWROFF);
	 
	 //set display mode
	 w_cmd(TGCOFF);
}

⌨️ 快捷键说明

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