标题:
单片机PWM调试LED灯显示经典例程源代码
[打印本页]
作者:
heartbe
时间:
2018-5-10 12:45
标题:
单片机PWM调试LED灯显示经典例程源代码
pwm调试led灯显示单片机源程序如下:
/**************************************************************************/
//-----------------直流电机PWM调速实验程序----------------//
//测试单片机:STC89C52RC
//晶振:11.0592M (外部)
//复位方式:内部复位
//调试环境:KEIL4
//硬件测试环境:使用“清翔电子”单片机开发板测试通过
//程序功能: PWM也就是脉宽调制,是指在周期脉冲信号频率不变的情况下,改变高电平
//
// 和低电平的比例,也就是改变占空比。PWM在灯具调光,直流电机调速方面
//
// 有着广泛的应用。程序使用定时器0中断模拟PWM定时,S2、S3 两个独立按
//
// 键控制电机速度,为使演示结果明显,PWM输出
//
// 到整个P1接口,通过板上的LED灯可以看到亮度的变化。
//
/****************************************************************************/
#include <reg51.h>
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; //
}
}
复制代码
所有资料51hei提供下载:
PWM调试LED灯显示.rar
(794.62 KB, 下载次数: 32)
2018-5-10 12:45 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
a710ren
时间:
2019-4-22 17:30
少东西的吗 执行起来 没反应
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1