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

📄 uart-adc-cbc.c

📁 cygnal 的模拟数字信号转换程序
💻 C
📖 第 1 页 / 共 4 页
字号:
           w_com(colh);
           w_com(coll);
           w_com(0xe0); 
           for(seg=0;seg<16;seg++)
              { 
               wdata(*a);
               a++;
              }       
           w_com(0xee);          
           pages++; 
		  }  
}
//********************************************************************* 
//********************************************************************* 
void LCM_CLR(void)
{ 
   unsigned int half,seg;
   unsigned int page;
   flag_user=1;

    for(page=0xb0;page<0xb8;page++)                     
	 {
           for(half=0;half<2;half++)                
              {  
                w_com(page);                      
                w_com(0x10);
                w_com(0x00);
                w_com(0xe0);                    
                for(seg=0;seg<96;seg++)                   
                    wdata(0x00);                                   
                w_com(0xee); 
                flag_user=!flag_user;
              }
      }            
}
//***keypad operation code****//
/*************************************************/
/*************************************************/
void key_check(void)
{
	unsigned int key=0;
        
    key=(P3&key);
	if(key!=0)        
       keypad(key);
}
/*************************************************/	
//direction key up /down,make a cycle of the symbols;
unsigned int key_detect(void)
{
  unsigned int i,key=0,key1=0,key2=0,temp=0x01;
        
  for(i=0;i<8;i++)
      {
      key=(P3&temp);
      delay40ms();
      key1=(P3&temp);;
      if((key1==0)&&(key==0))
        {
         key=i+1;
         break;
        }
      else
        { 
         key=0;
         temp=(temp<<1);
        }
      }      	       
  return(key);
}
/*************************************************/
/*************************************************/
/*************************************************/
void keypad(void)
{
  int temp;
  unsigned int key 	;
  key=key_detect(); 

  switch(key)	
	{
    case 1:
	   {
	    if(key_set==0)
		   key_set=3;
        
		if(key_set<6)
            key_set+=1;
		else
		    key_set=4;	
		modify_clock_display();	
		break;
	   }
	 case 2:    //roll the number up
	   {
		if(key_set!=0)
		   {
	       temp=roll_key_up();
	       record_clock_set_parameters(temp);
           modify_clock_display();
		   }
		break;
	   }
     case 3:  //roll the number down 
	    {
		if(key_set!=0)
		   {
	        temp=roll_key_down();
	        record_clock_set_parameters(temp);
            modify_clock_display();
		   }
		 break;
		}
     case 4:
		{				   
		write_clk_regs(&ds1302_clock_set[0]);			   
		// if(7<key_set<=10)
	    // modify_others();				
	     key_set=0;
	     key_up=0;
		 key_down=0;
		 key_ent=0;
         clock_set=0;
	     break;
       }
	 case 5:
		{				
	     key_set=0;
	     key_up=0;
		 key_down=0;
		 key_ent=0;
         clock_set=0;
	     break;
         }
     default : break;
	}
  delay(); 
  delay(); 
}
/***************************************************************************/
/***************************************************************************/
void record_clock_set_parameters(unsigned int key_count)
{   
    unsigned int temp,temp1,months ;
    switch(key_set)
       {
       case 1://year
             {
	         temp=(ds1302_clock_set[6]&0x0f);
             temp1=(ds1302_clock_set[6]&0xf0);
	         temp1=(temp1>>4);
			 temp1=temp1*10+temp;

			 if((temp1+key_count)<100)
  		         temp1+=key_count;
  	         else
 		         temp1=temp1+key_count-100;  
             if((temp1!=((unsigned int)(temp1/4)*4))&&(ds1302_clock_set[4]==2)&&(ds1302_clock_set[3]==0x29))			   
			     ds1302_clock_set[3]=0x28;			    				
			 temp=(unsigned int)temp1/10;
			 temp1=temp1-temp*10;
             ds1302_clock_set[6]=temp1+(temp<<4);
			 break;
			 }
       case 2://month
             {
	         temp=(ds1302_clock_set[4]&0x0f);
             temp1=(ds1302_clock_set[4]&0x10);
	         temp1=(temp1>>4);
			 temp1=temp1*10+temp;

			 if((temp1+key_count)<13)
  		         temp1+=key_count;
  	         else
 		         temp1=temp1+key_count-12;  
			 temp=(unsigned int)temp1/10;
			 temp1=temp1-temp*10;
             ds1302_clock_set[4]=temp1+(temp<<4);
			 break;
			}
       case 3://date
			 {
	         temp=(ds1302_clock_set[3]&0x0f);
             temp1=(ds1302_clock_set[3]&0x30);
	         temp1=(temp1>>4);
			 temp1=temp1*10+temp;
             months=months_judge();				  			
			 if((temp1+key_count)<(months+1))
  		         temp1+=key_count;
  	         else
 		         temp1=temp1+key_count-months;  
			 temp=(unsigned int)temp1/10;
			 temp1=temp1-temp*10;
             ds1302_clock_set[3]=temp1+(temp<<4);
			 break;
			}
       case 4://hour
			 {
	         temp=(ds1302_clock_set[2]&0x0f);
             temp1=(ds1302_clock_set[2]&0x30);
	         temp1=(temp1>>4);
			 temp1=temp1*10+temp;

			 if((temp1+key_count)<24)
  		         temp1+=key_count;
  	         else
 		         temp1=temp1+key_count-24;  
			 temp=(unsigned int)temp1/10;
			 temp1=temp1-temp*10;
             ds1302_clock_set[2]=temp1+(temp<<4);
			 break;
			}
       case 5://minutes
			 {
	         temp=(ds1302_clock_set[1]&0x0f);
             temp1=(ds1302_clock_set[1]&0x70);
	         temp1=(temp1>>4);
			 temp1=temp1*10+temp;

			 if((temp1+key_count)<60)
  		         temp1+=key_count;
  	         else
 		         temp1=temp1+key_count-60;  
			 temp=(unsigned int)temp1/10;
			 temp1=temp1-temp*10;
             ds1302_clock_set[1]=temp1+(temp<<4);
			 break;
			}
       case 6://seconds
			 {
	         temp=(ds1302_clock_set[0]&0x0f);
             temp1=(ds1302_clock_set[0]&0x70);
	         temp1=(temp1>>4);
			 temp1=temp1*10+temp;

			 if((temp1+key_count)<60)
  		         temp1+=key_count;
  	         else
 		         temp1=temp1+key_count-60;  
			 temp=(unsigned int)temp1/10;
			 temp1=temp1-temp*10;
             ds1302_clock_set[0]=temp1+(temp<<4);
			 break;
			}
       case 7://day
			 {
             if((ds1302_clock_set[5]+key_count)<8)
		         ds1302_clock_set[5]+=key_count;
	         else
		         ds1302_clock_set[5]=ds1302_clock_set[5]+key_count-7;
			 break;
			 }
   }
}
/*************************************************/
/*************************************************/
unsigned int roll_key_up(void)
{
unsigned int i=1;
return(i);	   
}
/*************************************************/
/*************************************************/
unsigned int roll_key_down(void)
{
	unsigned int months;
	switch(key_set)
	      {
		   case 1:
			    {//year
				 key_down=99;
				 break;
				}
		   case 2://months
				{
				 
				 key_down=11;
				 break;
				}
		   case 3://dates
			    {
                 months=months_judge();
			     key_down=months-1;
				 break;
				}
		   case 4://hours
			    {
				 key_down=23;
				 break;
				}
		   case 5://minutes
			    {
				 key_down=59;
				 break;
				}
		   case 6://seconds
			    {
				 key_down=59;
				 break;
				}
		   case 7:
			    {
				 key_down=6;
				 break;
				}
           case 8:
		   case 9:
			    {
			     key_down=26;
				 break;
				}
		  default : break;
		  }  
	return(key_down);
}


/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
// Pinout:  
void PORT_Init(void)
{  
   XBR1 = 0x00;   
   XBR0 = 0x00;   
   XBR2 = 0x40;  
   PRT0CF=0xff;                        
   PRT1CF=0xff;
   PRT2CF=0xff;

}
//-----------------------------------------------------------------------------
// SYSCLK
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
   int i;                             
   OSCXCN = 0x67;                  
   for (i=0; i < 256; i++) ;          
   while (!(OSCXCN & 0x80)) ;         
   OSCICN = 0x08;                     
}
//------------------------------------------------------------------------------------
// Timer3_Init
//------------------------------------------------------------------------------------
void Timer3_Init (int counts)
{
   TMR3CN = 0x00;                      // Stop Timer3; Clear TF3;
                                      
   TMR3RL  = -counts;                 
   TMR3    = 0xffff;                 
   EIE2   |= 0x01;                   
   TMR3CN |= 0x04;                     // start Timer3
}

//------------------------------------------------------------------------------------
// Interrupt Service Routines
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
void Timer3_ISR (void) 
{  
   static int j=0;            
   TMR3CN &= ~(0x80);                   // clear TF3
   P0=p0led[j];
   j++;
   if(j==2)
	   j=0;
 
}
/******************************************************************/
 /*delay*/
/******************************************************************/
void delay(void)    
 {
   int i,j;
   for(i=0;i<300;i++)
      for(j=0;j<200;j++);
 }
 /******************************************************************/
 /*delet the tremble delay*/
/******************************************************************/
void delay40ms(void)    
 {
   int i,j;
   for(i=0;i<10;i++)
      for(j=0;j<200;j++);
 }
/***************************************************************************
nop code
****************************************************************************/
void nop(void)
{
	int j ;
 for(j=0;j<15;j++);
}

//AD dealing code
/*************************************************/
/*************************************************/
//**************************************************
long high_temp(void)
{
   
  long result_temp;
  float E=(result[0]*24380/65536)/10;	
  float t;    	

	if (E >= 0 && E < 0.0879)
	t = (6666.67*E + 103.57)/6.8515;

	if (E >= 0.0879 && E < 0.18705)
	t = (6666.67*E + 195.61)/7.3376;

	else if (E >= 0.18705 && E < 0.30135)
	t = (6666.67*E + 263.05)/7.5703;

	else if (E >= 0.30135 && E < 0.41505)
	t = (6666.67*E + 311.47)/7.6945;

	else if (E >= 0.41505 && E < 0.53055)
	t = (6666.67*E + 363.8)/7.8;

	else if (E >= 0.53055 && E < 0.64755)
	t = (6666.67*E + 427.89)/7.9073;

	else if (E >= 0.64755 && E < 0.7662)
	t = (6666.67*E + 522.96)/8.043;

	else if (E >= 0.7662 && E < 0.88695)
	t = (6666.67*E + 661.34)/8.217;

	else if (E >= 0.88695 && E < 1.0104)
	t = (6666.67*E + 803.29)/8.3758;

	else if (E >= 1.0104 && E > 1.1361)

⌨️ 快捷键说明

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