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

📄 code.c

📁 AVR单片机内部AD变换 AVR内部ADC转换原理: AVR单片机内部的ADC转换为10位逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接
💻 C
字号:
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <inttypes.h>
#define vref 496       
uint8_t ledcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /*LED译码*/
uint8_t ledbuff[6];                              /*显示缓冲*/
void delay(uint16_t time)                        /*延时*/
{
   while(time>0)
   time--;
 }
void leddisplay(void)                            /*数码管显示函数*/
{
  uint8_t i;
  for (i=0;i<6;i++)
  {   
   PORTB=ledbuff[i];                           /*需要显示缓冲区数据送到PORTB*/
   PORTD=~(1<<i);                                      
   delay(10);                                   /*每一位显示保持一定时间*/
   PORTD|=(1<<i);                              /*关 闭显示*/  
   }
} 
INTERRUPT(SIG_ADC)                             /*AD变换完成中断处理程序*/
{  
  unsigned int i,temp;
  unsigned int lo_val, hi_val;					/*转换寄存器的低位与高位*/
  unsigned long val;
  lo_val=ADCL;                                    /*读出AD变换结果*/
  hi_val=ADCH;
  val=(((unsigned long)hi_val)<<8)|((unsigned long)lo_val); /*低8位和高8位数据合成16位*/
  temp=(unsigned int)((unsigned long)(val*vref)/1024);      /*AD变换结果转换为电压值*/
  for(i=0;i<3;i++)                                    /*分位显示*/
    {
	  ledbuff[i]=ledcode[temp%10];
	  temp=temp/10;
	}
  ledbuff[2]|=0x80;                                   /*显示小数点*/  
  ADCSR|=(1<<ADSC);                               /*启动下一次AD转换 */
  leddisplay();
}
int main( void )
{
 DDRD=0x3f;
 PORTD=0xff; 
 DDRB=0xff;
 PORTB=0xff;                                      /*I/O口初始化*/
 uint8_t i; 
 for(i=0;i<3;i++)                                     /*清空缓冲区数据 */
 ledbuff[i]=ledcode[0];
 ledbuff[3]=0x00;                                    
 ledbuff[4]=0x5e;                                     /*显示'd'*/
 ledbuff[5]=0x77;                                     /*显示'A' */
 ADMUX =0x00;                                     //ADC寄存器初始化
 ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0X06;      
 sei();
 for(;;){};
}

⌨️ 快捷键说明

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