嵌入式学习小组
直播中

魏霖

7年用户 298经验值
私信 关注

如何使用AVR控制8位LED做到闪烁自如?

使用AVR控制8位LED,做到想闪就闪,不想闪就不闪,左闪右闪,拚命闪,演示AVR单片机之“点灯术”。



回帖(3)

李雷

2020-11-13 10:36:40
 系统功能
  使用AVR控制8位LED,做到想闪就闪,不想闪就不闪,左闪右闪,拚命闪,演示AVR单片机之“点灯术”。
  硬件设计
  关于AVR的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是AVR的I/O引脚配置表:
  
  虽然AVR的I/O口单独输出“1”时,可输出较大电流足已点亮一盏灯,但AVR总的I/O输出毕竟是有限的,所以,有经验的点灯者考虑到除了点灯外可能还有其它费劲的活儿要干,会将AVR的I/O口设计为输出“0”时点灯,输出“1”时熄灯。这种接法亦叫“灌电流接法”。
  
  
举报

萧持毅

2020-11-13 10:37:01
  软件设计
  下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
  //目标系统: 基于AVR单片机
  //应用软件: ICC AVR
  /*01010101010101010101010101010101010101010101010101010101010101010101
  ----------------------------------------------------------------------
  实验内容:
  点灯,让灯左闪右闪,拼命闪。
  ----------------------------------------------------------------------
  硬件连接:
  将PD口的LED指示灯使能开关切换到“ON”状态。
  ----------------------------------------------------------------------
  注意事项:
  (1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘
  (2)请详细阅读:光盘根目录下的“产品资料开发板实验板SMK系列SMK1632说明资料”
  ----------------------------------------------------------------------
  10101010101010101010101010101010101010101010101010101010101010101010*/
  #include 《iom16v.h》
  #include “D:ICC_HCmmICC.H”
  #define LED_DDR DDRD
  #define LED_PORT PORTD
  /*--------------------------------------------------------------------
  程序名称:
  程序功能:
  注意事项:
  提示说明:
  输 入:
  返 回:
  --------------------------------------------------------------------*/
  void main(void)
  {
  uint8 i,j;
  LED_DDR=0XFF;
  while(1)
  {
  for(i=0;i《4;i++)
  {
  LED_PORT^=0xFF; //我闪!拚命闪!
  delay50ms(10);
  }
  j=0x01;
  for(i=0;i《8;i++)
  {
  j《《=1;
  LED_PORT=j; //我左闪!
  delay50ms(10);
  }
  j=0x80;
  for(i=0;i《8;i++)
  {
  j》》=1;
  LED_PORT=j; //我右闪!
  delay50ms(10);
  }
  }
  }
举报

林立银

2020-11-13 10:37:39
  系统调试
  本节的目的在于学习AVR的IO输出功能,对于AVR来说,它和传统的51单片机不同,需要设置IO引脚方向。
  作如下调试:
  (1)改变IO方向,即将“LED_DDR=0XFF;”改为“0X00”,观察现象。
  (2)将语句:delay50ms(10);改为语句:delay50ms(1);可以看到LED闪的更快,眼都花了!
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分