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

📄 at6010n.c

📁 LPC2132通协议源代码和液晶源代码 LPC2132通协议源代码和液晶源代码
💻 C
📖 第 1 页 / 共 2 页
字号:

    IO1SET=A0;
    write_byte(mwrite);

	for(i=0;i<28800;i++)
	{
	 IO1CLR=A0;
	 write_byte(0x00);
	}
}

void second_scr()
{
uint16 i,j;

    en_lcd();

    sed1335_write(csrdir_right,null,1);
    sed1335_write(csrw,cur_set_ini2,2);

    IO1SET=A0;
    	write_byte(mwrite);
	 	IO1CLR=A0;

	for(i=0;i<240;i++)
	{
	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=0;j<10;j++)
		 	write_byte(~Row[i].Xbyte[j]);
	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=10;j<20;j++)
		 	write_byte(~Row[i].Xbyte[j]);
	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=20;j<30;j++)
		 	write_byte(~Row[i].Xbyte[j]);

	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=30;j<40;j++)
		 	write_byte(~Row[i].Xbyte[j]);

	}
}

void full_scr()
{
uint16 i,j;

    en_lcd();

    sed1335_write(csrdir_right,null,1);
    sed1335_write(csrw,cur_set_ini1,2);

    IO1SET=A0;
    	write_byte(mwrite);
	 	IO1CLR=A0;

	for(i=0;i<240;i++)
	{
	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=0;j<10;j++)
		 	write_byte(~Row[i].Xbyte[j]);
	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=10;j<20;j++)
		 	write_byte(~Row[i].Xbyte[j]);
	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=20;j<30;j++)
		 	write_byte(~Row[i].Xbyte[j]);

	while((IO0PIN&LP)==0);
	while((IO0PIN&LP)!=0);
		for(j=30;j<40;j++)
		 	write_byte(~Row[i].Xbyte[j]);

	}
}

void clear_buf()
{
uint16 i,j;
	for(i=0;i<240;i++)
	{
		for(j=0;j<40;j++)
		 	Row[i].Xbyte[j]=0;
	}
	for(i=0;i<320;i++)
	    AD_Data[i]=0;
}

/*******************************************************************
*                       显示系统初始化                             *
********************************************************************/
void lcd_ini()
{

        IO0CLR=LCDRST;
        DelayNS(10);
        IO0SET=LCDRST;
        DelayNS(10);

	sed1335_write(system_set,system_set_ini,8);
	sed1335_write(scroll,scroll_ini,9);
	sed1335_write(scrform,scrform_ini,2);
 	sed1335_write(hdot_scr,hdot_scr_ini,2);
	sed1335_write(ovlay,ovlay_ini,1);
	sed1335_write(csrw,cur_set_ini1,2);
	sed1335_write(csrdir_right,null,1);
	clr_scr();
	sed1335_write(disp_on,disp_on_ini,1);
    sed1335_write(csrw,cur_set_ini1,2);
//	    wr_any(6,60,an,29,4); 
//        wr_any(10,60,de,29,4);
//        wr_any(14,60,li,29,4);
//        wr_any(18,60,guang,29,4);
//        wr_any(22,60,dian,29,4);
//        wr_any(26,60,ke,29,4);
//        wr_any(30,60,ji,29,4);
		
}

void reset()
{
buffadd=0;         //SRAM缓冲区指针

csradd[0]=0; csradd[1]=0;

disp_mode=0;

lcd_ini();

X=0; Y=0;

}
void UART0_SendByte(uint8 dat)
{
	U0THR=dat;
	while((U0LSR&0x20)==0);
}

void Uart0_SendString(char *str)
{
	while(1)
	{
	    if(*str=='\0')break;
		UART0_SendByte(*str++);
	}
}
void Send_To_PC(void )
{
/* send A/D data to pc */
   uint8 i;

   AddrNo=1;SendNumb=0;
   while((AddrNo*10)<count)
   {
      UART0_SendByte(0xFE);
      UART0_SendByte(AddrNo);
	  for(i=0;i<9;i++)
	  {
   	    sprintf(SendBuf,"%d",AD_Buf[SendNumb++]);
		Uart0_SendString(SendBuf);
		UART0_SendByte('|');
	  }
      sprintf(SendBuf,"%d",AD_Buf[SendNumb++]);
      Uart0_SendString(SendBuf);
   	  UART0_SendByte(0xFF);   
	  DelayNS(10);     	
	  AddrNo++;
   }

   
}

void Uart0_Rx(void)
{
    uint8 tmp;
	tmp=U0RBR;
	if(tmp==0xfe)
	{
   	     if(com1_on!=TRUE)
	     {
              com1_on=TRUE;
			  p1Rx=0;
			  serial_on=TRUE;
	     }
	     else
	     {
	          comu_err=TRUE;		  
	     }
	}
	else if(tmp==0xff)
	{
	     if(com1_on==TRUE)
		 {
		 	com1_off=TRUE;
		 	com1_on=FAULT;
		 }
		 else
		 {
		    comu_err=TRUE;
		 }
	}
	else
	{
	     if(com1_on==TRUE)
	        Uart0_RxBuf[p1Rx++]=tmp;
		 if(p1Rx==128) p1Rx=0;
	}
}
	
void __irq IRQ_UART0(void)
{
   if( 0x04==(U0IIR&0x0F) ) 
   {
      Uart0_Rx();
   }
    VICVectAddr=0x00;		
}	

void UART1_SendByte(uint8 dat)
{
	U1THR=dat;
	while((U1LSR&0x20)==0);
}

void Uart1_Rx(void)
{
    uint8 tmp;
	tmp=U1RBR;
	if(tmp==0xfe)
	{
   	     if(com2_on!=TRUE)
	     {
              com2_on=TRUE;
			  p2Rx=0;
			  serial_on=TRUE;
	     }
	     else
	     {
		      comu_err=TRUE;
	     }
	}
	else if(tmp==0xff)
	{	 if(com2_on==TRUE)
	     {
	     	com2_off=TRUE;
		    com2_on=FAULT;
		 }
		 else
		 {
		    comu_err=TRUE; 
		 }
	}
	else
	{
	     if(com2_on==TRUE)
	        Uart1_RxBuf[p2Rx++]=tmp;
		 if(p2Rx==128) p2Rx=0;
	}
	
}
void Uart1_SendString(char *str)
{
	while(1)
	{
	    if(*str=='\0')break;
		UART1_SendByte(*str++);
	}
}

void Send_To_MCU()
{
    Uart1_SendString("MCU<->OK");
}
void __irq IRQ_UART1(void)
{
     if(0x04==(U1IIR&0x0f))
     {
	    Uart1_Rx();
     }		    	
     VICVectAddr=0x00;		
}	

void System_Ini(void)
{

UARTMODE  uart0_set;
UARTMODE  uart1_set;
	
	PINSEL0=0x00050005;   //使能UART0 和UART1 为零Modem
	PINSEL1=0x00400000;
	
	IO0DIR=WR|LCDCS|LCDRST|LED1CON;
	IO1DIR=P1PORT|A0|RD;

	uart0_set.datab=8;              
	uart0_set.stopb=1;              
	uart0_set.parity=0;             
	UART0_Ini(115200,uart0_set);    
	                                
	                                
	uart1_set.datab=8;              
	uart1_set.stopb=1;          	
	uart1_set.parity=0;         	
	UART1_Ini(115200,uart0_set);    

	VICIntSelect=0x00000000;
	VICVectCntl0=0x26;
	VICVectAddr0=(int)IRQ_UART0;

	U1MCR=0x00;
	VICVectCntl1=0x27;
	VICVectAddr1=(int)IRQ_UART1;
	VICIntEnable=0x000000c0;
	com1_on=com1_off=com2_on=com2_off=FAULT;
}
void ENABLE_UART()
{
//	VICIntEnable=0x000000c0; 
}

void PC_Comu_ini()
{
   serial_on=FAULT;
   OneToPC=FAULT;
   AutoToPC=FAULT;
}
void PC_Explan()
{
   switch(Uart0_RxBuf[0])
   {
	  case 0xE9:
      case 0xEA:
      case 0xEB:
	  case 0xEC:
      case 0xED:
      case 0xEE:
	  case 0xEF:
      case 0xF0:
      case 0xF1:
	    break; 
      case 0xF2:
	    OneToPC=TRUE;
		break;
      case 0xF3:
	  {
	    if(Uart0_RxBuf[1]=='1')
		{
		   AutoToPC=TRUE;
		}
		else if(Uart0_RxBuf[1]=='0')
		{
		   AutoToPC=FAULT;
		}
		else
		{
		   comu_err=TRUE;
		}
	  }
	    break;  
	  default:
	    break;
   }

}
/***************************************************************
*                 main  program                                *
****************************************************************/
int main()
{
	unsigned char i,av,max,min,min_flag;
	uint16 j;

    System_Ini();

    lcd_ini();
//    DelayNS(500);
//	Send_To_MCU();															 
//	ENABLE_UART();
//	write_background();
    PC_Comu_ini();

		clear_buf();
        Write_BackG();
		second_scr();
		clear_buf();
	    Write_Message();
		full_scr();

//		clear_buf();
		full_scr();
	
    ADCR=(1<<0) |
	      ((Fpclk/4500000-1)<<8)| 
		  (0<<16) |
		  (0<<17) |
		  (1<<21) |
		  (0<<22) |
		  (1<<24) |
		  (1<<27);
	DelayNS(10);

	ADC_Data=ADDR;
/*		
	sed1335_write(disp_off,disp_off_ini,1);
	sed1335_write(disp_on,disp_on_ini,1);
	sed1335_write(sleep_in,disp_off_ini,0);
	sed1335_write(system_set,system_set_ini,8);
	sed1335_write(disp_on,disp_on_ini,1);
*/
		     
	while(1)
	{  
	  ADC_Flag=FAULT;
      tmp1=IO0SET;
	  if((tmp1&LED1CON)==0)
	      IO0SET=LED1CON;
	  else 
	      IO0CLR=LED1CON;
	  do
	  {
	     if(com1_off==TRUE)
	     {
		     PC_Explan();
			 com1_off=FAULT;
			 serial_on=FAULT;
		 }
	  }while(serial_on==TRUE);
      clear_buf();
	  count=0;
	  while((IO0PIN&ADCINT)==0);
	  while((IO0PIN&ADCINT)!=0);
	  tmp1=IO0SET;
	  numb=0;
	  do
	  {
		ADCR=(ADCR&0xffffff00)|0x01|(1<<24);
		while((ADDR&0x80000000)==0);
		if((IO0PIN&ADCINT)!=0)break;
		ADCR=ADCR|(1<<24);
		while((ADDR&0x80000000)==0);
		if(serial_on==TRUE) break;	
		if((IO0PIN&ADCINT)!=0)break;
		ADC_Data=ADDR;
		ADC_Data=(ADC_Data>>5)&0xfff;	
		ADC_Data/=5;
		AD_Buf[count]=ADC_Data;

		count++;

		ADC_Flag=TRUE;	
		if((IO0PIN&ADCINT)!=0)break;
	  }while((IO0PIN&ADCINT)==0);
	  if(ADC_Flag==TRUE)
	  {
  	     av=count/230;
	     min=240;
	     for(j=0;j<count-1;j++)
	     {
	  	    AD_Buf[j]=240-AD_Buf[j];
	     }

	     min_flag=0;
	     for(i=5;i<235;i++)
	     {
	        AD_tmp=0;
		    Row[AD_Data[i]].Xbyte[i/8]=(0x80>>(i%8));

		    min=240;max=0;
		    for(j=0;j<av;j++)
		    {
		 	   if(AD_Buf[i*av+j]>max) max=AD_Buf[i*av+j];
		 	   if(AD_Buf[i*av+j]<min) min=AD_Buf[i*av+j];
		    }
         	if(min<48)min=48;
		    for(j=min;j<max;j++) Row[j].Xbyte[i/8]+=(0x80>>(i%8));
	      }
		 full_scr();
   		 if(OneToPC==TRUE)
		 {
	        Send_To_PC();
		    OneToPC=FAULT; 	
		 }
   		 if(AutoToPC==TRUE)
		 {
	        Send_To_PC();
		 }
		 if(com2_off==TRUE)
		 {
	        Send_To_MCU();
		    com2_off=FAULT; 	
		 }
		 ADC_Flag=FAULT;
	  }
	}
}


⌨️ 快捷键说明

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