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

📄 lcd12864._c

📁 用proteus仿真AVR单片机12864LCD,实现波形的实时显示。
💻 _C
字号:
//ICC-AVR application builder : 2007-4-27 9:07:43
// Target : M16
// Crystal: 8.0000Mhz
//author: zhuyiguo
//lcd12864_display exercise
#include "LCD12864.h"
#include "LCD12864_DATA.h"
//#pragma data:data

void main(void)
{   
    unsigned char i,start;
	//uchar page=0xb8,column=0x48;
	init_devices();
	E_0; 
	
	lcd_init();	
	dis_one_zi(0,1,yie);
	delay_ms(200);	 
	dis_one_zi(0,2,jing);	
	delay_ms(200);
	dis_one_zi(0,3,xian);
	delay_ms(200);
	dis_one_zi(0,4,shi);
	delay_ms(200);
	dis_one_zi(0,5,shi1);
	delay_ms(200);
	dis_one_zi(0,6,yan);
	delay_ms(200);
	
	dis_one_zi(2,5,zhu);
	//delay_ms(500);	
	dis_one_zi(2,6,yi);
	//delay_ms(500);
	dis_one_zi(2,7,guo);
	//delay_ms(500);
	
	dis_one_abc(3,10,dayu);
	delay_ms(100);
	dis_one_abc(3,11,dayu);
	delay_ms(100);
	dis_one_abc(3,12,dayu);
	delay_ms(100);
	dis_one_abc(3,13,dayu);
	delay_ms(100);
	dis_one_abc(3,14,dayu);
	delay_ms(100);
    CLRLCD();
	
	
	
		
	while(1)
	{ 
	  WDR();	  
	  if(graphy_num==1)
	  {	   
	   if(flash_flag%2==1)
	   {	  	     
	    dis_one_zi(0,1,X26);
	   	dis_one_zi(0,2,X26);
	   	dis_one_zi(0,3,X26);
	   }
	   else 
	   {
	     dis_one_zi(0,1,tu);//汉字:图片1
	     dis_one_zi(0,2,pian);
	     dis_one_abc(0,6,n_1);
	   }
	  }
	  else
	  {
	    dis_one_zi(0,1,tu);//汉字:图片1
	    dis_one_zi(0,2,pian);
	    dis_one_abc(0,6,n_1);
	  }
	  	  
	  if(graphy_num==2)
	  {	   
	   if(flash_flag%2==1)
	   {	  	      
	   	 dis_one_zi(1,1,X26);
	   	 dis_one_zi(1,2,X26);
	  	 dis_one_zi(1,3,X26);
	   }
	   else
	   {
	     dis_one_zi(1,1,tu);//汉字:图片2
	     dis_one_zi(1,2,pian);
	     dis_one_abc(1,6,n_2);
	   }	   
	  }
	  else
	  {
	    dis_one_zi(1,1,tu);//汉字:图片2
	     dis_one_zi(1,2,pian);
	     dis_one_abc(1,6,n_2);
	  }
	  
	  
	  if(graphy_num==3)
	  {	   
	   if(flash_flag%2==1)
	   {	     	      
	     dis_one_zi(2,1,X26);
	     dis_one_zi(2,2,X26);
	     dis_one_zi(2,3,X26);
	   }
	   else
	   {
	     dis_one_zi(2,1,tu);//汉字:图片3
	     dis_one_zi(2,2,pian);
	     dis_one_abc(2,6,n_3);
	   }	   
	  }
	  else
	  {
	     dis_one_zi(2,1,tu);//汉字:图片3
	     dis_one_zi(2,2,pian);
	     dis_one_abc(2,6,n_3);
	  }
	  
	  
	  
	  if(graphy_num==4)
	  {	   
	   if(flash_flag%2==1)
	   {	     	      
	     dis_one_zi(3,1,X26);
	     dis_one_zi(3,2,X26);
	     dis_one_zi(3,3,X26);
		 dis_one_zi(3,4,X26);
	   }
	   else
	   {
	     dis_one_zi(3,1,buo);//汉字:波形显示
	     dis_one_zi(3,2,xing);
	     dis_one_zi(3,3,xian);
		 dis_one_zi(3,4,shi);
	   }	   
	  }
	  else
	  {
	    dis_one_zi(3,1,buo);//汉字:波形显示
	     dis_one_zi(3,2,xing);
	     dis_one_zi(3,3,xian);
		 dis_one_zi(3,4,shi);
	  }
	  
	  if((enter==1)&&(graphy_num!=0))
	  {
	   CLRLCD();
	   enter=0;	   
	   switch(graphy_num)
	   {
//******************************************************************
	    case 1:
		{
	      scroll(tu1);		  
		  break;
		}
//******************************************************************
		case 2:		
		{
	      scroll(tu2);		 
		  break;
		}
//******************************************************************
		case 3:
		{
	      scroll(tu3);		 
		  break;
		}
//*******************************************************************
        case 4:
		{
		  adc_init();
		  wave_display();
		  break;
		}
	   }
	   graphy_num=0;   	  
	   //lcd_init();
	   CLRLCD();
	   lcd_write_code(0xc0);	    	  
	  }
	  WDR(); 
	}

}
//***********************************************************************
#pragma interrupt_handler int0_isr:2
void int0_isr(void)//实现进入选择状态和返回上一页(在显示图形时,返回到选择菜单)
{
 //external interupt on INT0
 WDR();
 GICR=0X40;     //清除INT0中断,延时20MS判断是否为干扰;
 delay_ms(20); 
 if((PIND&0x04)==0x00)
 {
  if(hanzi_flag==1)
  {
    graphy_num++;
	TCNT1H = 0xF3; //counter high value
    TCNT1L = 0xCB; //counter low value
	if(graphy_num==5)
	{
	  graphy_num=0;
	}
  }
  if(graphy_flag==1)
  {
    graphy_flag=0;
	hanzi_flag=1;
  }
 }
 while((PIND&0x04)==0x00)//判断按键是否释放;
 {
  WDR();      //一定要在判断按键释放循环中喂狗;
 }
 GICR=0XC0;//恢复中断INT0
}


#pragma interrupt_handler int1_isr:3
void int1_isr(void)//确认键;
{
 //external interupt on INT1
 WDR();
 GICR=0X80;
 delay_ms(20); 
 if((PIND&0x08)==0x00)
 {
   if(graphy_num!=0)
   {
     enter=1;
	 hanzi_flag=0;
	 graphy_flag=1;
   }
 }
 while((PIND&0x08)==0x00)
 {
  WDR();
 }
 GICR=0XC0;
}


#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{
 //TIMER1 has overflowed
 WDR();
 flash_flag++;
 if(graphy_num!=0)//只在选择状态下开定时器;
 {
   TCNT1H = 0xF3; //reload counter high value
   TCNT1L = 0xCB; //reload counter low value
 }
 WDR();
}

#pragma interrupt_handler adc_isr:15
void adc_isr(void)
{
 WDR();
 //conversion complete, read value (int) using...
  //value=ADCL;            //Read 8 low bits first (important)
  //value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
  //delay_us(50);
 adc_value=ADC&0X3FF;
 adc_value=(adc_value>>4);
 if(hanzi_flag==0)// 只在显示波形的时候开AD
 {ADCSRA = 0xCD;} 
}

⌨️ 快捷键说明

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