标题: 用带ADC的avr单片机做的一款电压检测表 [打印本页]

作者: jinsheng7533967    时间: 2018-12-7 20:15
标题: 用带ADC的avr单片机做的一款电压检测表


电路原理图如下:


单片机源码:
#include <iom16v.h>
#include <macros.h>

#define  uchar  unsigned char
#define  uint   unsigned int

void delayms(uint mS)        //微秒                  
{
        uint i,j;
        for( i=0;i<mS;i++)
                for(j=0;j<200;j++);        
}

unsigned char disp[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
                        0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

uint ADC_Value;

void port_init(void)
{
   DDRD = 0xff;
   PORTD= 0x00;
   DDRE = 0xff;
   PORTE= 0x00;
   DDRF = 0x00;
   PORTF= 0x00;
}

void adc_init(void)
{
   ADMUX = 0x00;
   ADCSRA= 0x00;
   ACSR  =1<<ACD;   
   ADMUX =(1<<REFS0);  
   ADCSRA=(1<<ADEN)|(0<<ADFR)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
}

uint ADC_read(void)
{
   uint ADC_L,ADC_H,temp;
   ADCSRA |= (1<<ADSC);
   ADC_L = ADCL;
   ADC_H = ADCH;
   temp  = (ADCH<<8)|ADC_L;
   return temp;
}

uint  convert(uint data)
{
   long temp1;
   uint temp2;
   temp1 = ((500 * (long)data)>>10);
   temp2 = (uint)temp1;
   return temp2;
}

void main(void)  
  {
     uint voltage;
     uchar n;
     port_init();
     adc_init();
        
         DDRA=0XFF;
         PORTA=0XFF;
        
         DDRC=0XFF;                        
         PORTC=0X00;
         
         DDRF|=0X0E;
         PORTF|=0X0E;
         PORTF&=0xF7;                     
                           
         PORTA=0X00;                       
         
         DDRB |=0X10;                     
         PORTB|=0X10;                     

    while(1)   
    {
       ADC_Value = ADC_read();         //读取AD寄存器中的数值
       voltage   = convert(ADC_Value); //计算实际的输入电
       for(n=0;n<50;n++)
           display(voltage);               //显示
   }


全部源码在附件中,以上只是部份源码
用带ADC单片机做的一款电压检测表源码.rar (966 Bytes, 下载次数: 53)
用带ADC单片机做的一款电压检测表原理图.rar (182.17 KB, 下载次数: 49)



作者: 51单片机1234    时间: 2019-1-21 09:49
很不错,学习了
作者: 51单片机1234    时间: 2019-1-26 11:31
谢谢楼主的分享
作者: 子不语呢    时间: 2019-4-23 11:12
建议用定时器延时,建议多次测量取平均值。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1