www.pudn.com > temp_control.rar > main.c


/*============================文件信息===========================*/ 
/*文   件   名:main.c                                           */ 
/*创   建   人:葛康                                             */ 
/*最后修改日期:2006年2月24日                                    */ 
/*文 件 描  述: 无                                              */ 
/*===============================================================*/ 
 
#include "AT91SAM7S64.h" 
#include "lib_AT91SAM7S64.h" 
 
extern void led_init(void); 
extern void led_show(unsigned short ad_data); 
extern void led_on(char led, char index); 
extern void led_delay(void); 
extern void pwm_init(void); 
extern void pwm_duty_update(unsigned int duty,unsigned int i); 
extern void pwm_period_update(unsigned int period,unsigned int i); 
extern void adc_init(void); 
extern unsigned short ad4_read(void); 
extern unsigned short ad6_read(void); 
extern unsigned short ad7_read(void);  
 
 
 
/*****************************************************************/ 
/*函数名称:delay                                                */ 
/*功能描述:延时函数                                             */ 
/*输入参数:i                                                    */ 
/*输出参数:无                                                   */ 
/*****************************************************************/ 
void delay(int time) 
{  
   int i; 
  for(i=time;i>0;i--); 
} 
 
 
 
/*****************************************************************/ 
/*函数名称:min                                                  */ 
/*功能描述:求两个数中的较小数                                   */ 
/*输入参数:x,y                                                  */ 
/*输出参数:无                                                   */ 
/*****************************************************************/ 
int min(int x,int y) 
{ 
  if(x<=y) return x; 
  else return y; 
} 
 
 
/*****************************************************************/ 
/*函数名称:main                                                 */ 
/*功能描述:主函数                                               */ 
/*输入参数:无                                                   */ 
/*输出参数:无                                                   */ 
/*****************************************************************/ 
void main(void) 
{ 
    int          ad_val[3],ad_value,k; 
    unsigned int pwm_buffer,pwm_period,pwm_duty; 
    char i; 
    //led_init(); 
    pwm_init(); 
    adc_init(); 
    for(i=0;i<3;i++) {ad_val[i]=0;} 
     
 while(1)	 
	{   
	AT91F_WDTRestart(AT91C_BASE_WDTC);          //看门狗复位 
	 
/**************************ADC部分*******************************/	 
 
	ad_val[0]=ad4_read();                          //读取AD值 
	ad_val[1]=ad6_read(); 
	ad_val[2]=ad7_read(); 
	 
    k=min(ad_val[0],ad_val[1]); 
    ad_value=min(k, ad_val[2]); 
 
 
/**************************PWM部分*******************************/ 
      
    pwm_period=3160; 
   
    pwm_buffer=ad_value/12; 
    pwm_buffer=pwm_buffer+5; 
    pwm_buffer=pwm_period*pwm_buffer; 
    pwm_duty=pwm_buffer/100; 
     
    delay(1800); 
    
 	pwm_duty_update(pwm_duty,0); 
	pwm_duty_update(pwm_duty,1); 
 
	                       
    } 
	    
}