标题:
基于51单片机和Proteus的PWM输出程序
[打印本页]
作者:
染落莫a
时间:
2020-5-14 17:17
标题:
基于51单片机和Proteus的PWM输出程序
共有10个级别的脉冲宽度波形,可以通过观察LED的亮暗时间的变化,或者通过虚拟示波器观察P0.0脚输出脉冲宽度不断变化的十个级别。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png
(15.42 KB, 下载次数: 65)
下载附件
2020-5-16 04:35 上传
单片机源程序如下:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar PWM_T=0; //占空比控制变量
sbit PWM_OUT=P0^0;
void main()
{
bit flag=1; //控制LED灯渐亮渐熄方式
uint n;
TMOD=0x02; //定时器T0,8位方式2定时模式
TH0=241; //15μs溢出一次(11.0592M)
TL0=241;
TR0=1;
ET0=1;
EA=1;
PWM_OUT=1;
while(1)
{
for (n=0;n<30000;n++); //延时,将响应定时器T0中断
if (flag==1)
PWM_T++;
else
PWM_T--;
if (PWM_T>=10)
flag=0;
if (PWM_T==0)
flag=1;
}
}
timer0()interrupt 1 using 2
{
static uchar t; //用t保存当前时间在1s的比例位置
t++; //每15μs增1
if (t==10) //1.5ms的周期
{
t=0;
PWM_OUT=0;
}
if (PWM_T==t)
PWM_OUT=1;
}
复制代码
所有资料51hei提供下载:
51PWM.rar
(45.65 KB, 下载次数: 67)
2020-5-14 17:17 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1