⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm调led灯.c

📁 单片机PWM控制
💻 C
字号:
 /***********************************************************************************/
/*     程序名:PWM调LED灯亮暗                                                       */
/*                                                                                  */
/*     晶振:12.0 M                                        CPU型号:AT89S52         */
/*                                                                                  */                                             
/*                                                                                  */
/*     功能描述: 将实验板上的J12的跳线帽插上!                                     */
/*					                             									*/
/*                                                                                  */
/*     网址:http://www.mcu-arm.cn                                                  */
/*     邮箱:mcu-arm2007@163.com
/*     QQ技术群:2056101                                                            */
/*   													 					    	*/
/*                                                                                  */
/*                                                创灵电子工作室 版权所有           */                                 
/*                                                         2007-12-20               */
/************************************************************************************/
#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int
#define HI 0xf3					//定时器2的初值
#define LO 0x98
sbit D4=P1^4;
sbit P1_3 = P1^3;
sbit KEY = P3^4;

uchar Count;				    // 用于保存占空比中输出0的时间份额,总共10份

/********************************************************************************************
* 函数名称:Delay()
* 功    能:软件延时
* 入口参数:无符号的整型变量
* 出口参数:无
*********************************************************************************************/
void Delay(uint t)
{
   uchar i ;
   while(t--)
    {
	   for(i = 0;i <125;i++)
	    {;}
	}
}
/********************************************************************************************
* 函数名称:Timer2Init()
* 功    能:定时器初始化程序
* 入口参数:无 
* 出口参数:无
*********************************************************************************************/
void Timer2Init(void)  //初始化定时器2程序
{
 TH0=(65536-50)/256;
 TL0=(65536-50)%256;
  TR0=1;	                                     // 启动定时器2
  ET0=1;                                         // 打开定时器2中断
  EA=1;
}
/********************************************************************************************
* 函数名称:Timer2()
* 功    能:定时器2中断程序
* 入口参数:无 
* 出口参数:无
*********************************************************************************************/
void Time2() interrupt 1
{	static uchar time;
    TH0=(65536-50)/256;
    TL0=(65536-50)%256;

   

	time++;
	if(time == 10)
	{
	   time = 0;
	   if(Count != 0)
	      P1 = 0;
	 }
	if(Count == time)
	   P1 = 0xff;
}
/********************************************************************************************
* 函数名称:main()
* 功    能:主函数
* 入口参数:无 
* 出口参数:无
*********************************************************************************************/
void main(void)
{
  Timer2Init();
  
  while(1)
  {	
     if(KEY == 0)
	 {
	    Delay(10);
	    while(!KEY); //另一种键盘去抖动的方法
		Count++;
		if(Count == 10)
		{
		  Count = 0;
		}
	 }	 
  }  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -