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

📄 ad_number_led.c

📁 ATMEGA8-ad-number-led-学习AVR的朋友们挺多的
💻 C
字号:
//:rc:8M
//ic atmegal 8l

#include <avr/io.h>
#include <avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char time=0,onedata=0,twodata=0,count=0;
const unsigned char led[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};
void delay(unsigned int x)
     {
      while(x)x--;	  
	 }

void adc_init(void)		//ADC初始化
{
 DDRC=0xf0;
 PORTC=0xf0;
 ADCSRA =0x00; 		
 ADMUX|=(1<<REFS0); 
 ACSR=(1<<ACD);    
 ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);	
}

SIGNAL(SIG_OVERFLOW1)
      {
	  TCNT1=61712;
       
	time++;

		   	
		   if(time==01)
		     {           
			  PORTB=~led[onedata];
			  PORTC=PORTC&0xef;  //开一
			  PORTC=PORTC|0x20;//关2

			  }
			if(time==9)
			  {
			  PORTC=PORTC|0x10;//关1
			  PORTC=PORTC|0x20;//关2

			  }			   
			 if(time==10)
		     {           
			  PORTB=~led[twodata];
	          PORTC=PORTC|0x10;//关1
	          PORTC=PORTC&0xdf;//开二
			  }
			if(time==19)
			  {
			  PORTC=PORTC|0x10;//关1
			  PORTC=PORTC|0x20;//关2
			  }
			if(time==20)
			    {
				time=0;
				}


	  }




int main (void)
{
	unsigned int adc_rel; 		//AD转换结果
    DDRB=0xff;
	PORTB=0Xff;//1111,1111
    DDRC=0xf0;
	PORTC=0Xf0;//1111,1111	
	 sei();
	 TCCR1A=0X00;
	 TCCR1B=(1<<CS10);
	 TIMSK|=(1<<TOIE1);
     TCNT1=61712;
adc_init();

while(1)
    {
	onedata=count%10;
    twodata=count/10;

   delay(50000);
   ADCSRA|=(1<<ADSC);                                  //启动ADC转换
   while(ADCSRA& (1<<ADSC));                           //判断ADC转换是否结束
   adc_rel=ADC; 
   count=adc_rel*10/102;
	}
	
	return (0); 
}


⌨️ 快捷键说明

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