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

📄 led.c

📁 AVR单片机开发版资料测试程序里的源程序
💻 C
字号:
/*******************************************
  文件:LED.C
  环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10 
  硬件:ATMEGA16芯片
  日期:2006年12月10日 
  功能:驱动开发板上的LED。1. 流水灯 2.闪烁指定的LED
  备注:参考《AVR系列单片机C语言编程与应用实例》(清华大学出版社)
/******************************************/
#include <iom16v.h>			//包含型号头文件
#include <macros.h>			//包含"位"操作头文件
#include <stdio.h>			//标准输入输出头文件
#include <AVR_PQ1A.h>		//包含自定义常量头文件

/*******************************************
函数名称: One_led
功    能: 点亮或者熄灭指定的LED
参    数: number--指定的LED
	  	  light--为TRUE的时候为点亮LED,为FALSE的时候为熄灭LED
返回值  : 无
/********************************************/
void One_led(uchar number,uchar light)
{uchar i;
 if(light==TRUE)		   //点亮操作
 {
  PORTB&=~BIT(number);	   //输出数据
  PORTA|=BIT(LEDLK);	   //更新数据
  Delayms(5);			   //调整时序
  PORTA&=~BIT(LEDLK);	   //锁存数据
 }
 else
 {
  PORTB|=BIT(number);	   //输出数据
  PORTA|=BIT(LEDLK);	   //更新数据
  Delayms(5);			   //调整时序
  PORTA&=~BIT(LEDLK);	   //锁存数据
 }
}
/*******************************************
函数名称: All_led
功    能: 点亮或者熄灭全部LED
参    数: light--为TRUE的时候为点亮全部LED,为FALSE的时候为熄灭全部LED
返回值  : 无
/********************************************/
void All_led(uchar light)
{
 if(light)
 {
  PORTB&=~ALLLED;  		 //ALLLED=0xFF,使全部LED都亮
  PORTA|=BIT(LEDLK);	 //输出数据
  Delayms(5);			 //调整时序
  PORTA&=~BIT(LEDLK);	 //锁存数据
 }
 else
 {
  PORTB|=ALLLED;		 //ALLLED=0xFF,使全部LED都灭
  PORTA|=BIT(LEDLK);	 //输出数据
  Delayms(5);			 //调整时序
  PORTA&=~BIT(LEDLK);	 //锁存数据
 }
}
/*******************************************
函数名称: Flow_led
功    能: 流水灯(循环一次)
参    数: MS--点亮相邻LED的时间间隔,单位是毫秒
返回值  : 无
/********************************************/
void Flow_LED(uchar MS)
{
 uchar i;
 for(i=0;i<8;i++)	//循环8次,8个LED依次点亮
 {
  All_led(FALSE);	//全部熄灭
  One_led(i,TRUE);	//点亮指定的LED
  Delayms(MS);		//延时指定的时间
 } 
}
/*******************************************
函数名称: Flash_led
功    能: 闪烁指定的LED(循环一次)
参    数: number--指定的LED
	  	  MS--LED闪烁的时间间隔
返回值  : 无
/********************************************/
void Flash_LED(uchar number,uchar MS)
{
 One_led(number,TRUE);		//点亮指定的LED
 Delayms(MS);				//延时指定的时间
 All_led(FALSE);			//熄灭所有的LED
 Delayms(MS);				//延时指定的时间
 One_led(number,FALSE);		//熄灭指定的LED 
}
/*******************************************
函数名称: main
功    能: 1. 流水灯 2.闪烁指定的LED
参    数: 无
返回值  : 无
/********************************************/
void main(void)
{	 
 uchar i,bit;
 i=0;  	   					//i=0时为流水灯,i=1时为闪烁灯
 bit=0;						//bit指定闪烁的LED
 Board_init( );	   			//初始化开发板
 while(1)
 {
  switch(i)
  {
   case 0:
  	   Flow_LED(200);		//i=0,以流水灯的方式显示
	   break;
   case 1:	 				
   	   Flash_LED(bit,100);	//i=1,以闪烁灯的方式显示
  }
 }  
}

⌨️ 快捷键说明

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