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

📄 adc.c

📁 AVR MEGA8 ADC 应用 程序源代码
💻 C
字号:
//使用内部RC振荡,PB6-G,PB7-DP短路块连接
//使用INT0/INT1按键切换ADC通道
#include <iom48v.h>
#include <macros.h>
#define osccal 0x9A//内部RC校正常数
#define Vref   500//参考电压值
extern const unsigned char seg_table[16];
extern unsigned char led_buff[4];
extern void delay_ms(unsigned int time);
extern void display(void);
unsigned int adc_rel;//AD转换结果
unsigned char adc_mux;//AD通道
//ADC初始化
void adc_init(void)
{
 DDRC=0x00;
 PORTC=0x00;
 ADCSRA = 0x00; //设置前,先关闭ADC
 ADMUX =(1<<REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准,单端输入口为ADC0
 ACSR  =(1<<ACD);//关闭模拟比较器,禁止位P148
 ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//ADC时钟64分频
}
//ADC完成中断
#pragma interrupt_handler adc_isr:22     
void adc_isr(void)
{
 adc_rel=ADC&0x3ff;
 ADMUX=(1<<REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准
 ADCSRA|=(1<<ADSC);//启动AD转换
}
//ADC结果转换成电压值
void ADCtoBCD(unsigned int temp)
 {
  unsigned char i;
  temp=(unsigned int)(((unsigned long)((unsigned long)temp*Vref))/0x3ff);
  for(i=0;i<4;i++)
  {
   led_buff[i]=seg_table[temp%10];
   temp=temp/10;
   }
  led_buff[2]&=0x7f; 
 }
//MAIN程序
void main(void)
{
 unsigned char i;
 unsigned int adc_old;
 DDRD=0xf0;
 PORTD=0xff;
 OSCCAL=osccal;//校正振荡频率
 adc_mux=0;
 adc_init();
 SEI();//使能全局中断
 
 for(i=0;i<4;i++)
  { 
   led_buff[i]=seg_table[8];
  }
 for(i=0;i<100;i++)
   display();

 adc_old=0;
 adc_rel=0; 
 while(1)
  {   
   if(adc_old!=adc_rel)
     {
	  adc_old=adc_rel;
	  ADCtoBCD(adc_old);
	 }
   display();

   i=PIND&0x0c;//判断按键
   if(i!=0x0c)
     {
	  display();//按键消抖
	  if(i==(PIND&0x0c))
	    {
		 CLI();
		 adc_rel=0;
		 adc_old=0;
		 if (i==0x08)//INT0键按下
		    {
			 if(adc_mux<3)
			    adc_mux++;//递增
		     else
			    adc_mux=0;		
			}
		 if (i==0x04)//INT1键按下
		    {
			 if(adc_mux>0)
			    adc_mux--;//递减
			 else
			    adc_mux=3;	
			}
	     led_buff[0]=seg_table[adc_mux];
		 led_buff[1]=0xbf;//-
		 led_buff[2]=0b10001001;//h
		 led_buff[3]=0b11000110;//C		
	     while((PIND&0x0c)!=0x0c)//检查按键释放
		    display(); 		
	     SEI();		 
		}
	 }

  
  }
}


⌨️ 快捷键说明

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