当前位置:   article > 正文

【C51单片机定时器控制LED灯】_怎么用定时器实现灯亮代码

怎么用定时器实现灯亮代码

一、功能实现

采用定时器1,工作方式2,软件启动。实现下述功能:有8个LED小灯,首先8个灯同时亮1s,灭0.5s,重复3次;然后从第一个灯开始依次点亮,实现流水灯功能,每个灯亮2s;往复循环上述功能。

二、 Proteus仿真

在这里插入图片描述

三、代码

#include<reg51.h>
//采用定时器1工作方式2实现1s定时
void delay1s( )
{
		unsigned int i;
		TMOD=0x20;
		TH1=256-250;     //250us,因51单片机频率12Mhz,一个机器周期1us,计数250次即为250微秒
		TL1=256-250;
		for(i=0;i<4000;i++)  //循环4000次即为250微秒X4000=1s
		{
			TR1=1;
			while(!TF1);
			TF1=0;
		}
}
//采用定时器1工作方式2实现0.5s定时,原理同上
void delay500ms( )
{
	unsigned int i;
	
		TMOD=0x20;
		TH1=256-250;
		TL1=256-250;
		for(i=0;i<2000;i++)
		{
			TR1=1;
			while(!TF1);
			TF1=0;
		}
}

void main()
{
	unsigned char j,k,w;
	while(1)
	{
		for(j=0;j<3;j++)//8个灯同时闪烁三次,闪烁时亮1s,灭0.5s
		{
			P1=0X00;
			delay1s( );
			P1=0Xff;
			delay500ms( );
		}
		//实现8个LED循环点亮,点亮时间为2s
		w=0x01;
		for(k=0;k<8;k++)
		{
			P1=~w;
			delay1s( );  
			delay1s( );
			w<<=1;
		}
	}	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/565762
推荐阅读