ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

51_PWM_呼吸灯

2022-01-27 21:03:25  阅读:165  来源: 互联网

标签:COUNT led UPDATA 51 呼吸 VALUE 占空比 PWM


 

 /**********************51单片机学习例程************************
*  平台:Keil U4 + STC89C52
*  名称:定时器0,方式2,输出PWM,周期2000us占空比每120ms改变5%,控制呼吸灯
*  编写:Tony
*  日期:2022-1-27
*   QQ : 674749794
*  晶体:12MHZ
*	 变更记录:无
******************************************************************/

#include <reg52.h>
unsigned char ZHOUQI_COUNT;    //进入中断的次数,满一个周期清零,计20次,周期2ms
unsigned char PWM_VALUE;       //当前高电平对应的定时次数 
unsigned int UPDATA_COUNT;     //占空比更新时间,计1200次,120ms更新一次占空比
bit direc_flag;				   //占空比更新方向,0增加,1减少
sbit led= P1^0;					  
void Timer0_Init();		   
/********************************************
定时器0初始化函数,8位定时器,0.1ms溢出一次,开启中断
********************************************/
void Timer0_Init()
{
    TMOD=0x02;  //模式设置,0b0000 0010,定时器0,工作模式2,8位定时器	  (M1=1,M0=0)
	ET0=1;    	//开启定时器0中断
	TH0=0x9c;	//0.1ms溢出
	TL0=0x9c;	//
	EA=1;		//开启总中断
	TR0=1;		//使能定时器0
}




void main()
{
    UPDATA_COUNT=0;
	ZHOUQI_COUNT=0;
	PWM_VALUE=10;
	direc_flag=0;
   	led=0;
	Timer0_Init();
	while(1);
}

void Timer0_In() interrupt 1
{
  	
	ZHOUQI_COUNT++;	//计数加1
	UPDATA_COUNT++;

	if(ZHOUQI_COUNT==PWM_VALUE) 	//判断是否到点亮led的时候
	   led=1;//亮led
    if(ZHOUQI_COUNT==20)//当前周期结束
	{
	   ZHOUQI_COUNT=0; //重新计时
	   led=0;			//熄灭led
	}
	if(UPDATA_COUNT==1200&&(direc_flag==0))	 //120ms
	{
	   UPDATA_COUNT=0;
	   PWM_VALUE++;			//占空比增加5%
	   if(PWM_VALUE==19)
	   {
	      direc_flag=1;		//占空比方向改变
	   }
	   
	}
	if(UPDATA_COUNT==1200&&(direc_flag==1)) 
     { 
	   UPDATA_COUNT=0;
	   PWM_VALUE--;			//占空比减少5%
	   if(PWM_VALUE==1)
	   {
	      direc_flag=0;
	   }
	 }
}

  

 

标签:COUNT,led,UPDATA,51,呼吸,VALUE,占空比,PWM
来源: https://www.cnblogs.com/54programer/p/15851225.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有