标题: 51单片机弄一个闪烁LED灯 [打印本页]

作者: 小呀嘛小菜鸟    时间: 2018-10-13 15:30
标题: 51单片机弄一个闪烁LED灯
现在的灯都能亮起来,自己做的也能闪,但是闪一下就灭了,想要的是能一直闪,希望各位大神能帮忙敲个小小的代码,就一段关于LED灯一直闪的代码就行,麻烦各位了!!!另本人是个菜鸟,希望大神能敲的简单点,麻烦能不能在代码后加上注释,非常感谢!!!

作者: angmall    时间: 2018-10-13 17:22
我给你来个程序试试

  1. /**************************************************************************************
  2. *                              LED闪烁实验                                                                                                  *
  3. 实现现象:下载程序后D1指示灯闪烁
  4. 注意事项:无                                                                                                                                                                  
  5. ***************************************************************************************/

  6. #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
  7. typedef unsigned int u16;          //对数据类型进行声明定义
  8. typedef unsigned char u8;


  9. sbit led=P2^0;                 //将单片机的P2.0端口定义为led

  10. /*******************************************************************************
  11. * 函 数 名         : delay
  12. * 函数功能                   : 延时函数,i=1时,大约延时10us
  13. *******************************************************************************/
  14. void delay(u16 i)
  15. {
  16.         while(i--);       
  17. }

  18. /*******************************************************************************
  19. * 函 数 名       : main
  20. * 函数功能                 : 主函数
  21. * 输    入       : 无
  22. * 输    出             : 无
  23. *******************************************************************************/
  24. void main()
  25. {
  26.         while(1)
  27.         {
  28.                 led=0;
  29.                 delay(50000); //大约延时450ms
  30.                 led=1;
  31.                 delay(50000); //大约延时450ms       
  32.         }               
  33. }
复制代码

作者: hu_821    时间: 2018-10-13 18:02
初次到来,请大家关照
作者: 灌溉梦想    时间: 2018-10-13 21:40
加到while循环里面就会一直闪烁
作者: 西北荒野大镖客    时间: 2018-10-13 21:52
while(1)
{P0=1;
延时100mm;
P0=0;
延时100mm
}
作者: asd1230    时间: 2018-10-13 23:59
新手刚入门,多多关照


作者: 1523YHJ    时间: 2018-10-14 02:18
一个高电平一个低电平中间家延时
作者: yuyifengle    时间: 2018-10-14 02:48
循环啊,否则程序只走一次
作者: zmc419    时间: 2018-10-14 07:46
用for或while
作者: 秋叶归尘    时间: 2018-10-14 08:03
把你闪烁的程序用循环抱起来
作者: xuanlu    时间: 2018-10-14 10:02
  1. void main()
  2. {
  3.     while(1);
  4. {
  5. led=1;
  6. delay(50000)
  7. led=0;
  8. delay(50000)
  9. }
  10. }
复制代码

作者: 猫sir    时间: 2018-10-14 10:11
加循环和延时,让程序一直走
作者: qwer58    时间: 2018-10-14 12:20
循环和延时
作者: aqs1028    时间: 2018-10-14 13:46
五楼正解
作者: yin...    时间: 2018-10-14 14:47
加个while(1)一直循环
作者: 小呀嘛小菜鸟    时间: 2018-10-14 15:39
angmall 发表于 2018-10-13 17:22
我给你来个程序试试

非常感谢,对我很有帮助,能学到东西,再次感谢
作者: yzwzfyz    时间: 2018-10-14 21:51
不管是哪个灯,它总是对应在一个CPU的端口上的!
只要让这个端口闪是完成闪烁了!
方案:
1、用定时器做一个定时中断,每次中断将一个闪烁标记F求反。例0.5秒中断一次,中断时让F=!F.
2、输出驱动LED的段时,如:驱动A段,让A=A*F再输出,A就闪烁了。
是不是很简单。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1