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

📄 q1.c

📁 24位AD压力实验板 protell99se打开
💻 C
📖 第 1 页 / 共 3 页
字号:
     
   }

 P1IFG&=~BIT0;//clear IFG 
}



//========================================================================================
//函数:void adc_init(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void adc_init(void)
{    
   unsigned char i;     
   //int chan;
  // unsigned char ACRVal;
  // ADS1240Init();   
   
   P6OUT&=~ADS1240_RESET;//RSET LO  
   Delay(6);//52 cycle   
   P6OUT|=ADS1240_RESET;//RSET HI, LO-->HI > 16 clock
   Delay(6);//52 cycle    
    
    
AD1240_Reg_Val[0]=PGA_Plus;//ADS1240_GAIN_32;//PGA_Plus;//SETUP

AD1240_Reg_Val[1]=ADS1240_MUXP_AIN0+ADS1240_MUXN_AIN1;//MUX

AD1240_Reg_Val[2]=0;//BUFEN_BIT+RANGE_BIT;//
    

while(P1IN&BIT0) {;}  

ADS1240WriteRegister(ADS1240_SETUP_REGISTER, 3, AD1240_Reg_Val);

  
ADS1240SendByte(ADS1240_CMD_SELFCAL);

//ADS1240SendByte(ADS1240_CMD_SYSOCAL);
 //ADS1240SendByte(ADS1240_CMD_SYSGCAL);

   for (i=0; i<4; i++)
      ADS1240WaitForDataReady(0);    
  
   
}

//========================================================================================
//函数:void mode_check(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================


void mode_check(void)
{ 
 unsigned char i;
switch(key_data)
   {
   case 2:
     { 
       Mode=2;
       key_data=0;
       WDTCTL =WDT_ADLY_1000;  //WDT_ADLY_250;//WDT_ADLY_1000;                  // WDT 1s/4 interval timer
       IE1 |= WDTIE;                             // Enable WDT interrupt 
       
      }
   break;
   case 1:
     { 
      Mode=1;
       key_data=0;  
       set_lcd_out();
       LCD_Cursor_Addr=0;
       for(i=0;i<6;i++)
         LCD_Key_bar[i]=0;
       password_ok_flag=0;
      }
   break;
   case 3:
     { 
       Mode=3;
       key_data=0;      
      }
   break;
   case 4:
     { 
      // Mode=4;
      // key_data=0;    
      // P2DIR |= BIT5;// 
       //P2OUT &= ~BIT5;// 0x7e;  
       //back_light_flag=1;
      // back_light_num=0;
      }
   break;
   case 5:
     { 
     /*  if(C_Power_Flag==1)
       {
       power_off();
       }
      else
      {      
        C_Power_Flag=1;
        EN_AD_Flag=1;
        Mode=0;
       WDTCTL =WDT_ADLY_1000;  //WDT_ADLY_250;//WDT_ADLY_1000;                  // WDT 1s/4 interval timer
       IE1 |= WDTIE;       
       En_key_INT();
       
      }
       */
      
       key_data=0;      
      }
   break;
   }  
   
}
//========================================================================================
//函数:void Password_check(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Password_check(void)
{
 unsigned char flag,i;
////校正密码验证
  while(!password_ok_flag)
  {
    if(key_data==0x02)
    {
      LCD_Cursor_Addr++;
     if(LCD_Cursor_Addr>=LCD_NUM) LCD_Cursor_Addr=0;
     key_data=0;
    } 
    if(key_data==0x03)
    {
      LCD_Key_bar[LCD_Cursor_Addr]++;
      if(LCD_Key_bar[LCD_Cursor_Addr]>=10) LCD_Key_bar[LCD_Cursor_Addr]=0;
          key_data=0;    
    }
    if(key_data==0x01)
    {
       flag=0;
       for(i=0;i<LCD_NUM;i++)
       {
         if(LCD_Key_bar[i]!=password[i])//password_ok_flag
         { flag=1;break;}         
       }
       if(flag==1)
         password_ok_flag=0;
       else 
         password_ok_flag=1;
       key_data=0;
     }
    if(key_data==0x05)
    {
       power_off();
       break;
     }
  LCD_Display(LCD_Cursor_Addr,LCD_Key_bar);
  }
}
//========================================================================================
//函数:void LCD_Display(unsigned char Cursor_Addr, unsigned char *LCD_data)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
//闪烁显示函数
void LCD_Display(unsigned char Cursor_Addr, unsigned char *LCD_data)
{
 unsigned char i; 
 for(i=0;i<LCD_NUM;i++)  
   {
     if(i==LCD_Cursor_Addr)
        DisplayNum((Cursor_Addr+1),LCD_data[Cursor_Addr],0,0); 
     else
       DisplayNum((i+1),LCD_data[i],0,0);
   }
     Delay(26500);
    for(i=0;i<LCD_NUM;i++)  
   {
     if(i==LCD_Cursor_Addr)
        DisplayNum((Cursor_Addr+1),LCD_data[Cursor_Addr],0,1);
     else
       DisplayNum((i+1),LCD_data[i],0,0);
   }    
     Delay(26500);
  
}
//========================================================================================
//函数:unsigned char get_key_bar(unsigned char *out_key_bar)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
unsigned char get_key_bar(unsigned char *out_key_bar)
{
 unsigned char flag;
////校正密码验证
    flag=0;
    if(key_data==0x02)
    {
      LCD_Cursor_Addr++;
     if(LCD_Cursor_Addr>=LCD_NUM) LCD_Cursor_Addr=0;
     key_data=0;
    } 
    if(key_data==0x03)
    {
      out_key_bar[LCD_Cursor_Addr]++;
      if(out_key_bar[LCD_Cursor_Addr]>=10) out_key_bar[LCD_Cursor_Addr]=0;
          key_data=0;    
    }
    if(key_data==0x01)
    {
      flag=1;       
       key_data=0;
     }
  LCD_Display(LCD_Cursor_Addr,out_key_bar);
  return flag;
}
//========================================================================================
//函数:void Save_key_data(unsigned long  *data,unsigned int EE_addr)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Save_key_data(unsigned long int*data,unsigned int EE_addr)
{
unsigned char i;    
   *data=0;   
   for(i=0;i<(LCD_NUM-1);i++)
      *data=(*data+(unsigned long)LCD_Key_bar[i])*10;
   *data=*data+(unsigned long)LCD_Key_bar[5];
   key_assignments=*data;
   Save_AD_Data(data,EE_addr);   
}
//========================================================================================
//函数:void rest_LCD_data(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void rest_LCD_data(void)
{
unsigned char i;
LCD_Cursor_Addr=0;
for(i=0;i<6;i++) 
  LCD_Key_bar[i]=0;

}
//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Open_AD_Sampling(void)
{  
   AD_num=0;
   Open_AD_Power();
   Delay(20);    
   adc_init();
   En_AD_DRDY_INT();
   _NOP();
  
   ad_flag=0; 
}

//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Close_AD_Sampling(void)
{ 
   EN_AD_Flag=0;
  Close_AD_Power();//关AD电源 
   Dis_AD_DRDY_INT(); //关中断
   
   //Delay(500);//消抖
   AD_num=0;
    ad_flag=0;
}
//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Open_WatchDog(void)
{
 WDTCTL =WDT_ADLY_1000;  //WDT_ADLY_250;//WDT_ADLY_1000;                  // WDT 1s/4 interval timer
 IE1 |= WDTIE;                             // Enable WDT interrupt    
}
//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Close_WatchDog(void)
{
 WDTCTL=WDTPW+WDTHOLD;//Stop WDT 
 
}
//========================================================================================
//函数:void Show_AD_Data(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Show_AD_Data(void)
{
unsigned char i;
 unsigned long int bar6;
AD_Sampling_num=4; 
    if(AD_num>(AD_Sampling_num-1))
       {         
         for(i=0;i<(AD_Sampling_num+1);i++)
           ad1240_test1[i]=ad1240_test[i+1];                      
         ad1240=0;        
         ad1240=AD_Data_Manage(ad1240_test1,AD_Sampling_num);       
         set_lcd_out();          
         I_VDisplay(6,ad1240);
         set_lcd_powdn();
         dataa=Hex_to_BCD(ad1240);        
         for(i=7;i>0;i--)
         {
           re_buffer1[i-1]=(dataa&0x0000000f);
           re_buffer1[i-1]=re_buffer1[i-1]+0x30;          
          dataa=dataa>>4;           
         }
         for(i=0;i<9;i++)
         {           
           sent_byte(re_buffer1[i]);           
         }      
         
         sent_byte(0x0D);
         sent_byte(0x0A);
         Zero_Sampling_AD=30800;
         Most_Sampling_AD=6723789;
         AD_num=0;
          Press_Data=(float)(ad1240-Zero_Sampling_AD);
         
         bar6=(Most_Sampling_AD-Zero_Sampling_AD);
         
         Press_Data=(Press_Data/((float)bar6));
         
         Press_Data=Press_Data*((float)Most_data);//((float)Most_data);
        
     
         
         
         
         
       }
  



}
//========================================================================================
//函数:void Save_AD_Data(unsigned long int*data,unsigned int EE_addr)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Save_AD_Data(unsigned long int*data,unsigned int EE_addr)
{
unsigned char char_bar,i;
unsigned long long_bar;  
   Dis_key_INT();
   long_bar=*data; 
   char_bar=(0x000000ff&long_bar);
   WriteWord((EE_addr),char_bar);
   long_bar=*data; 
   for(i=0;i<4;i++) 
   {        
      long_bar=long_bar>>8;
      char_bar=(unsigned char)(0x000000ff&long_bar);
      WriteWord((EE_addr+1+i),char_bar);
   }  
  En_key_INT();
}


void writetoreg(uchar ad_reg)
{  
 uchar i;

     for(i=8;i>=1;i--)
   {  P5OUT&=~BIT3;//SCLK=0
      if(ad_reg&0x80) P5OUT|=BIT1;//DIN=1
      else P5OUT&=~BIT1;//DIN=0
      _NOP();_NOP();_NOP();
      ad_reg=ad_reg<<1;
      P5OUT|=BIT3;//SCLK=1
      _NOP();_NOP();_NOP();
   }
   for(i=15;i>=1;i--) {;}
}

void power_off(void)
{
         P2OUT |= BIT5;// 关背光 
        back_light_flag=1;
        back_light_num=0;
        
        C_Power_Flag=0;
        WDTCTL=WDTPW+WDTHOLD;//Stop WDT   
        Dis_AD_DRDY_INT(); //关中断
        Close_AD_Power();//关AD电源  
        set_lcd_out();
        ClearRAM(ALL);      
         set_lcd_powdn();
        //set_lcd_powdoff();
         Dis_key_INT();
         P2IES|=BIT0;
         P2SEL&=~BIT0;
         P2IE|=BIT0;


}















⌨️ 快捷键说明

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