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

📄 main.c

📁 利用AVR单片机的I/O口来实现LED的亮灭
💻 C
字号:
#include "main.h"
int main()
{
	SPCR=0x51;//SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);主/使能/16分频
	DDRB=0x2C;//(1<<DDRB5)(1<<DDRB3)|(1<<PB2);PB2,PB3和PB5为输出;
	DDRC=0<<DDC3;
	PORTC=1<<PC3;
	while(1)
	{
		QDD();
		if(AJ==1)//按键
		{
			key++;
			show1();
		}
		else
		{
			show1();
		}
	}

}

 void QDD()//检测有键按下并去抖动
{
	char i,k;
	k=PINC;
	if((k&0x08)==0)//有键按下
	{
		for(i=0;i<10;i++)
		{
			if((k&0x08)!=0)//无键按下
			{
				AJ=0;
			  return;
			}
		}
       AJ=1;
	}
	else
	{
		AJ=0;
	}
}



 
  
void show1()
{   
    int i,j,k;
	k=(key%10);//0-9循环
	for(i=0;i<180;i++)
	{
		PORTB=PORTB&(~4);
		in(b[0]);//选择LED
		for(j=0;j<3;j++)
		{
			in(a[k]);//显示的数字
		}
		PORTB=PORTB|4;
		_delay_ms(1);
	}
}

void in(char data )
{
    SPDR=data;//传数据
	while(!(SPSR & (1<<SPIF)))//等待数据传完
	  ;
}

⌨️ 快捷键说明

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