pwm控制led灯显示pwm控制led灯显示
/**************************************************************************/
//-----------------直流电机PWM调速实验程序----------------//
//测试单片机:STC89C52RC
//晶振:11.0592M (外部)
//复位方式:内部复位
//调试环境:KEIL4
//硬件测试环境:使用“清翔电子”单片机开发板测试通过
//程序功能: PWM也就是脉宽调制,是指在周期脉冲信...
pwm控制led灯显示
/**************************************************************************/
//-----------------直流电机PWM调速实验程序----------------//
//测试单片机:STC89C52RC
//晶振:11.0592M (外部)
//复位方式:内部复位
//调试环境:KEIL4
//硬件测试环境:使用“清翔电子”单片机开发板测试通过
//程序功能: PWM也就是脉宽调制,是指在周期脉冲信号频率不变的情况下,改变高电平 //
// 和低电平的比例,也就是改变占空比。PWM在灯具调光,直流电机调速方面
//
// 有着广泛的应用。程序使用定时器0中断模拟PWM定时,S2、S3 两个独立按
//
// 键控制电机速度,为使演示结果明显,PWM输出
//
// 到整个P1接口,通过板上的LED灯可以看到亮度的变化。 //
/****************************************************************************/
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit down = P3^0;
sbit up = P3^1;
uint8 t = 0;
uint8 PWM_T = 0; //占空比控制变
void delay_1ms(uint16 t)
{
uint16 x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--); }
/****************************************************
主程序
****************************************************/
void main(void) {
TMOD = 0x02; //定时器0,工作模式2,8位定时模式
TH0=210; //写入预置初值(取值1-255,数越大PWM频率越高)
TL0=210; //写入预置值 (取值1-255,数越大PWM频率越高)
TR0=1; //启动定时器
ET0=1; //允许定时器0中断
EA=1; //允许总中断
P1=0xff; //初始化P1,输出端口
PWM_T=30;
while(1)
{
if(!up)
{
if(PWM_T<250)
{
PWM_T++;
}
delay_1ms(10);
}
if(!down)
{
if(PWM_T>0)
{
PWM_T--;
}
delay_1ms(10);
}
}
}
/****************************************************
/定时器0中断模拟PWM
****************************************************/
timer0() interrupt 1 {
t++; //每次定时器溢出加1
if(t==250) //PWM周期 100个单位
{
t=0; //使t=0,开始新的PWM周期
P1=0x00; //输出端口
}
if(PWM_T==t) //按照当前占空比切换输出为高电平
{
P1=0xff; //
}
}
本文档为【pwm控制led灯显示】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。