加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

7.8. 怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板

(2014-09-23 13:26:39)
标签:

51

arm

it

开发板

神舟

分类: 神舟51单片机开发板

7.8.1 实验说明

继续深入学习,这次实验搭建多个LED灯。普通的LED灯的工作电流在10~30mA众之间,如果低于这个值,有可能灯会不亮;如果超过这个值,灯可能会被烧坏,所以严格來讲,这里需要加一个合适的限流电阻,所以在这个电路中每个灯上都串联了1只470Ω的电阻,这是为了保护LED不被过高的电流烧坏而设计的。

电阻值计算公式是R=(Vcc-Va)/I,其中Vcc为电源电压,Va为LED正向驱动电压,I为LED正向工作电流,假定我们所用的正向驱动电压2V、工作电流希望保持10mA、则R=(5V-2V)/0.01A=300Ω,接近470Ω;一定需要接限流电阻吗?是的,不用限流电阻是不对的,因为不接限流电阻时,LED和单片机都承受着较高的电流,短时间没有问题,你有没有注意到如果不接限流电阻的话LED亮度过高呢?但如果长时间点亮,将有可能烧坏单片机,或者不烧坏也会减短单片机芯片的使用寿命。

7.8.2 实验原理图

自己搭建的流水灯,每个STM32的芯片管脚连接一个LED灯,每个LED灯连接一个470欧的电阻,详细的原理图如下图所示

http://s1/mw690/002aCJOcty6Mgs3XWJqc0&690怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板" TITLE="7.8. 怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板" />

STM32流水灯电路原理图

 

7.8.3 器件清单

品名

型号

位号

数量

备注

LED点灯电路

0805贴片电阻

470欧姆

R46

1

 

0805 LED灯

绿色LED灯

LED1

1

 

0805贴片电阻

470欧姆

R47

1

 

0805 LED灯

绿色LED灯

LED2

1

 

0805贴片电阻

470欧姆

R48

1

 

0805 LED灯

绿色LED灯

LED3

1

 

0805贴片电阻

470欧姆

R49

1

 

0805 LED灯

绿色LED灯

LED4

1

 

 

7.8.4 程序下载

使用JLINK将编译好的HEX文件下载下去。

7.8.5 代码分析

int main(void) //main是程序入口

{    

      RCC->APB2ENR |= RCC_APB2Periph_GPIOD;      

       GPIOA->CRL &=  0x0FF000FF;

       GPIOA->CRL |=  0x30033300;  

      while (1)

      {         

             GPIOD->BSRR = GPIO_Pin_2;      

              Delay(0x5FFFF);                          

             GPIOD->BSRR = GPIO_Pin_3;          

              Delay(0x5FFFF);                                

              GPIOD->BSRR = GPIO_Pin_4;            

              Delay(0x5FFFF);                                        

              GPIOD->BSRR = GPIO_Pin_7;            

              Delay(0x5FFFF);                                                                    

        

             GPIOD->BRR = GPIO_Pin_2;            

              Delay(0x5FFFF);                       

              GPIOD->BRR = GPIO_Pin_3;            

              Delay(0x5FFFF);                           

              GPIOD->BRR = GPIO_Pin_4;        

              Delay(0x5FFFF);                          

              GPIOD->BRR = GPIO_Pin_7;        

              Delay(0x5FFFF);                          

      }

}

       程序主要设计思路就是先将所有LED灯逐个经过延时后熄灭,然后再逐个被点亮,如此循环,形成LED流水灯。


 7.8.6 实验现象

http://s14/mw690/002aCJOcty6Mgs45L0V8d&690怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板" TITLE="7.8. 怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板" />

下载代码,并且按下【复位】键,在神舟IV号板上找到LED1LED2LED3LED4三个灯,可以看到这四个灯轮流闪烁,流水灯。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有