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

📄 3800ad.c

📁 TM25温度检测C程序 TM25温度检测C程序
💻 C
字号:
#include	<pic18.h>
#include	<pic18fx490.h>
#define PORTDIT(add,bit) ((unsigned)(&add)*8+(bit))
#define PORTBIT(add,bit) ((unsigned)(&add)*8+(bit))
#define PORTAIT(add,bit) ((unsigned)(&add)*8+(bit))
static volatile int table[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};
  static  volatile bit  PORT_3 @  PORTBIT(PORTB,3);
  static  volatile bit  PORT_4 @  PORTBIT(PORTB,4);
  static  volatile bit  PORT_5 @  PORTBIT(PORTB,5);
  static  volatile bit  PORT_1 @  PORTAIT(PORTA,3);
unsigned char temp_ad[8];
unsigned char bj0;
unsigned int led1flag=0;
//unsigned char count=0;
unsigned char adrel_ad1;
unsigned char adrel_ad12;
void interrupt adint();
void disp1();
void disp2();
void admin();
void admin2 (); 
void ad1_ad();
void ad2_ad();
void delay(unsigned char ms);
void main (void)
{ 
  admin();
   admin2();
   bj0=0;  
   ADCON0=0;
   TRISA=0;
   asm("clrwdt");  
   TRISB=0;
   TRISD=0;
   TRISA0=1;
   TRISJ0=0;
   TRISJ1=0;
   TRISJ2=0;
   TRISJ3=0;
   TRISJ4=0;
   TRISJ5=0;
   TRISJ6=0;
   TRISJ7=0;
   INTCON=0x60;
   INTCON2=0x84;
   RCON=0x80;
   T0CON=0xd0;
   TMR0H=0xfc;
   TMR0L=0x17;
   
    ei();
   do{
       switch(bj0)
      {
        case 0:   ad1_ad();break;
        case 1:   ad2_ad();break;
      }
  }while(1);

}


void admin()
{
  
   ADCON0=0x01;
   ADCON1=0x0e;
   ADCON2=0xff;
   //ADIF=0;
   TRISA0=1;
  // TRISA1=1;
  //PEIE=1;
  //ADIE=1;
  //GIE=1;
  
 

}
void admin2()
{
  
   ADCON0=0x05;
   ADCON1=0x0d;
   ADCON2=0xff;
   //ADIF=0;
   //TRISA0=1;
   TRISA1=1;
  //PEIE=1;
  //ADIE=1;
  //GIE=1;
  
 

}
void  ad1_ad()
{unsigned char ad;
  
  for(ad=2;ad>0;ad--) 
   {admin();
   //ADON=1;
   GODONE=1;
   delay(8);
   GODONE=1;
   while(GODONE);
   
   
   //ADIF=0;
   ADFM=0;
   adrel_ad1=ADRESL*10;
  // adrel_ad=(adrel_ad*10)/(4-adrel_ad);
   adrel_ad1=adrel_ad1*1024/5/2;}
   adrel_ad1=adrel_ad1/2;
    
    disp1();
    ADON=0;TRISA0=0;
    delay(6);
    TRISA1=1;
    GODONE=1;
    TRISA3=0;
  }

void disp1()
{ unsigned int i,j;
 
  if(adrel_ad1>=52&&adrel_ad1<100)
 {adrel_ad1=adrel_ad1-52;
   temp_ad[2]=adrel_ad1/0x0a;
   temp_ad[3]=(adrel_ad1-(temp_ad[2]*0x0a));
   
   for(i=0;i<900;i++)
   {PORT_3=0;PORT_4=0;PORT_5=1;//第5位   
   PORTD|=0x77;
    PORTD&=0;
    
   PORT_3=0;PORT_4=1;PORT_5=1;//第7位  
   PORTD=table[temp_ad[2]];
   PORTD&=0;
    
    PORT_3=1;PORT_4=1;PORT_5=1;//第8位 
   PORTD=table[temp_ad[3]]; 
   PORTD&=0;
}  
  
} 
  if(adrel_ad1==0&&adrel_ad1<52)
 { adrel_ad1=52-adrel_ad1;
   temp_ad[2]=adrel_ad1/0x0a;
   temp_ad[3]=(adrel_ad1-(temp_ad[2]*0x0a));
  
  for(j=0;j<900;j++)
  {PORT_3=0;PORT_4=0;PORT_5=1;//第5位
  PORTD|=0x77;
   PORTD&=0; 

   PORT_3=0;PORT_4=1;PORT_5=1;//第7位 
   PORTD=table[temp_ad[2]];  
   PORTD&=0;   
  
  PORT_3=1;PORT_4=1;PORT_5=1;//第8位 
  PORTD=table[temp_ad[3]];
   PORTD&=0; }

 if(adrel_ad1==0)
 { 
   temp_ad[2]=adrel_ad1/0x0a;
   temp_ad[3]=(adrel_ad1-(temp_ad[2]*0x0a));
  
  for(j=0;j<100;j++)
  {PORT_3=0;PORT_4=0;PORT_5=1;//第5位
  PORTD|=0x77;
   PORTD&=0; 

   PORT_3=0;PORT_4=1;PORT_5=1;//第7位 
   PORTD=table[temp_ad[2]+1];  
   PORTD&=0;   
  
  PORT_3=1;PORT_4=1;PORT_5=1;//第8位 
  PORTD=table[temp_ad[3]+1];
   PORTD&=0; }}

}  
  
}
 

void interrupt adint()
{
  if(TMR0IE&&TMR0IF&&TMR0IP) 
  {
   TMR0H=0xfc;
   TMR0L=0x17;//1ms
   TMR0IF=0;      
    led1flag ++;
     if(led1flag>=20000)
      { led1flag=0; 
        bj0=!bj0;
        }
  }
  
}


void ad2_ad()
{ unsigned char ad;
  //ADCON1=0x0e;
  //ADCON2=0x24;
 for(ad=2;ad>0;ad--)
  {admin2();
   delay(8);
   ADON=1;
   GODONE=1;
   while(GODONE);
   TRISA1=0;
  ADFM=0;
    adrel_ad12=ADRESL*10;
    //adrel_ad=(adrel_ad*10)/(4-adrel_ad);
   adrel_ad12=adrel_ad12*1024/5/2;}
   adrel_ad12=adrel_ad12/2;
   
   disp2();
   delay(6);
   ADON=0;
   TRISA0=1;
  GODONE=1;
   TRISA3=1;

}

void delay(unsigned char ms)
{
 while(ms--);


}

void disp2()
{ unsigned int i,j;
 
  if(adrel_ad12>=52&&adrel_ad12<100)
 {adrel_ad12=adrel_ad12-52;
   temp_ad[4]=adrel_ad12/0x0a;
   temp_ad[5]=(adrel_ad12-(temp_ad[4]*0x0a));
   
   for(i=0;i<900;i++)
   {PORT_3=0;PORT_4=0;PORT_5=1;//第5位   
   PORTD|=0x7c;
    PORTD&=0;
    
   PORT_3=0;PORT_4=1;PORT_5=1;//第7位  
   PORTD=table[temp_ad[4]];
   PORTD&=0;
    
    PORT_3=1;PORT_4=1;PORT_5=1;//第8位 
   PORTD=table[temp_ad[5]]; 
   PORTD&=0;
}  
  
} 
  if(adrel_ad12>=0&&adrel_ad12<52)
 { adrel_ad12=52-adrel_ad12;
   temp_ad[2]=adrel_ad12/0x0a;
   temp_ad[3]=(adrel_ad12-(temp_ad[2]*0x0a));
  
  for(j=0;j<900;j++)
  {PORT_3=0;PORT_4=0;PORT_5=1;//第5位
  PORTD|=0x7c;
   PORTD&=0; 

   PORT_3=0;PORT_4=1;PORT_5=1;//第7位 
   PORTD=table[temp_ad[4]];  
   PORTD&=0;   
  
  PORT_3=1;PORT_4=1;PORT_5=1;//第8位 
  PORTD=table[temp_ad[5]];
   PORTD&=0; }
if(adrel_ad12==0)
 { 
   temp_ad[2]=adrel_ad1/0x0a;
   temp_ad[3]=(adrel_ad1-(temp_ad[2]*0x0a));
  
  for(j=0;j<100;j++)
  {PORT_3=0;PORT_4=0;PORT_5=1;//第5位
  PORTD|=0x77;
   PORTD&=0; 

   PORT_3=0;PORT_4=1;PORT_5=1;//第7位 
   PORTD=table[temp_ad[4]+1];  
   PORTD&=0;   
  
  PORT_3=1;PORT_4=1;PORT_5=1;//第8位 
  PORTD=table[temp_ad[5]+1];
   PORTD&=0; }}
 
}  
  
}
 

⌨️ 快捷键说明

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