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

📄 pwm.c

📁 单片机实现多档次电压输出
💻 C
字号:
		 #define uchar unsigned char //定义一下方便使用 
#define uint  unsigned int 
#define ulong unsigned long 
#include <reg52.h>     //包括一个 52 标准内核的头文件 
 
sbit P10 = P1^0; //要控制的 LED灯
 sbit P11 = P1^1;

 
sbit zhi=P0^0; //用作指示灯,按键一次闪一次
 
uchar scale;//用于保存占空比的输出 0 的时间份额,总共 10 份
uchar code dis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳极数码管  
 
char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 
//模拟 PWM 输出控制灯的 10 个亮度级别
/************************************************/
	 void delay(void)
	 { 
	     uchar	i,j;
		 for(i=0;i<255;i++)
		 for(j=0;j<255;j++);
	  }
 
/***********************************************/  
void main(void) 
{
                   //仅作为调试时的输出标志,检验数码管显示情况
  uchar m;
  for(m=0;m<10;m++)
  {
  P2=dis[m];
  delay();
  }
  P2=dis[5]; 




 RCAP2H =0xF3;             //赋 T2 的预置值,溢出 1 次是 1/1200 秒钟 
 RCAP2L =0x98;  
 TR2=1;                     //启动定时器 
 ET2=1;                    //打开定时器 2 中断 
 EA=1;                    //打开总中断
 EX1=1;	                 //打开外部中断1
 EX0=1;	                //打开外部中断0
 scale=5;              //给定初值,从中间开始,方便调节
 
 while(1)  //程序循环 
 {  //主程序在这里就不断自循环,实际应用中,这里是做主要工作 

  ;  
 } 
}
/***********************************************/ 


/*****************1/1200 秒定时器 2 中断 ********/
  timer2() interrupt 5   
{ 
 static uchar tt; //tt 用来保存当前时间在一秒中的比例位置 
 TF2=0; 
 
 tt++; 
 if(tt==10) //每 1/120 秒整开始输出低电平 
 { 
  tt=0; 
 
  if(scale!=0) //这里加这一句是为了消除灭灯状态产生的鬼影 
   P10=0; 
     P11=0;
 } 
   
 if(scale==tt)  //按照当前占空比切换输出高电平 
  P10=1;
   P11=1;
    }


/*********两个中断自己写的****************/
  int1() interrupt 0  //0表示EA的第0位,对应外部中断0
{	 zhi=~zhi;
     if(scale<9)
	 scale++;
	 else
	 scale=9;
	 
	 P2=dis[9-scale];      //不用9减就会出现亮度和数值相反的情况
	 delay();
	 zhi=~zhi;		      //延时程序使中断完成,否则按键一次会中断很多次
	 

}
/*************************/
int0() interrupt 2 	   //2表示EA的第2位,对应外部中断1
{	   zhi=~zhi;
      
      if(scale>0)
	 scale--;
	  else 
	  scale=0;
	 
	  
	   P2=dis[9-scale];
	   delay();
	   zhi=~zhi;
	
}

⌨️ 快捷键说明

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