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

📄 ad.c

📁 AtMega169的ADC功能的测试C语言程序
💻 C
字号:
// **************************************************************
// *** 		         广 州 天 河 双 龙 电 子 公 司 	          ***
// ***                   http://www.sl.com.cn                 ***
// ***                   实验:ADC转换		                   ***
// ***                  作者:zxy@sl.com.cn                   ***
// ***                       2006年3月28日                    ***
// ***         目标MCU:MEGA169    晶振:内部(INT)8MHZ         ***
// **************************************************************
//用跳线短接J3的ADC2,调节可变电阻R7,LED显示将发生变化 
#include <iom169v.h>
#include <macros.h>
#define Vref   3212//参考电压值,注意不同环境下的Vref不相同

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转换结果

//ADC初始化
void adc_init(void)
{
 ADCSRA = 0x00; //设置前,先关闭ADC
 ADMUX =(1<<REFS0)|(1<<MUX0);//选择内部AVCC为基准,单端输入口为ADC1
 ACSR  =(1<<ACD);//关闭模拟比较器,禁止位P148
 ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);//ADC时钟64分频
}

//ADC完成中断
#pragma interrupt_handler adc_isr:20 
//AD 中断  

void adc_isr(void)
{ 

 adc_rel = ADC&0x3ff;
 //ADMUX =(1<<REFS0)|(1<<MUX0);
 ADCSRA|=(1<<ADSC);//启动AD转换
}

//ADC结果转换成电压值
void ADCtoBCD(unsigned int temp)
 {
  unsigned char i;
  temp=(unsigned int)(((unsigned long)((unsigned long)temp*Vref))/1024);//ADC结果转换成电压值
  for(i=0;i<4;i++)
  {
   led_buff[i]=seg_table[temp%10];//结果存入显示缓存
   temp=temp/10;
   }
  led_buff[3]&=0x7f; 
 }

void main(void)
{ 
 unsigned int adc_old;
    adc_init();//AD初始化
	  
	  DDRE=0xff;//E口初始化
	  PORTE=0xff;//E口初始化
	  DDRB|=0xf0;//B口初始化
	  PORTB|=0xf0;//B口初始化
	  SEI();//使能全局中断
    while(1)
    { 
	   if(adc_old!=adc_rel)
            {
	            adc_old=adc_rel;  //AD转换结果
	            ADCtoBCD(adc_old);//进制转换
	          }	   	
	   display();	//显示函数
	        			 
	}
}				          
		
				
	           
         

 
 
 
 

⌨️ 快捷键说明

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