网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月02日漏签0天
单片机吧 关注:212,035贴子:1,047,323
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 5回复贴,共1页
<<返回单片机吧
>0< 加载中...

PWM 我怎么就 写不对呢 ? 求大神 支招啊

  • 只看楼主
  • 收藏

  • 回复
  • happy回应life
  • 少尉
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<reg52.h>
#include <intrins.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit PWMOUT = P0^0;
unsigned char HighRH = 0;
unsigned char HighRL = 0;
unsigned char LowRH = 0;
unsigned char LowRL = 0;
void delay(unsigned int time);
void ConfigPWM(unsigned int fr, unsigned char dc);
void ClosePWM();
void main()
{
unsigned char i, t = 0;
EA = 1;
ENLED = 0;
ADDR0 = 0;
ADDR1 = 1;
ADDR2 = 1;
ADDR3 = 1;
while(1)
{
P0 = 0xff;
for(i=0; i<20; i++)
{
ConfigPWM(100, t);
delay(10000);
t += 5;
if(t >= 100);
t = 0;
}
ClosePWM();
delay(60000);
}
}
// fr 为周期频率 dc 为占空比
void ConfigPWM(unsigned int fr, unsigned char dc)
{
unsigned long tmp;
unsigned long High, Low;
tmp = (11059200/12)/fr;//周期计数值
High = (tmp*dc)/100;
Low = tmp - High;
High = 65536 - High + 12;
Low = 65536 - Low + 12;
HighRH = (unsigned char)(High >> 8);
HighRL = (unsigned char)High;
LowRH = (unsigned char)(Low >> 8);
LowRL = (unsigned char)Low;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = HighRH;
TL0 = HighRL;
ET0 = 1;
TR0 = 1;
PWMOUT = 1;
}
void ClosePWM()
{
ET0 = 0;
TR0 = 0;
}
void InterruptTimer0() interrupt 1
{
if(PWMOUT == 1)
{
TH0 = LowRH;
TL0 = LowRL;
PWMOUT = 0;
}
else
{
TH0 = HighRH;
TL0 = HighRL;
PWMOUT = 1;
}
}
void delay(unsigned int time)
{
static unsigned int x;
static unsigned int y;
for(x=time; x>0; x--);
for(y=10000; y>0; y--);
}
用 完 for 语句之后 小灯 总是闪烁 我也是醉了


  • 我一直在路上yy
  • 上尉
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没有原理图啊,大家看不懂


2025-08-02 11:39:54
广告
不感兴趣
开通SVIP免广告
  • happy回应life
  • 少尉
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
addr 的可以不用看 是使用 38 译码器选择的 led灯的 部分
就是在 while函数里面 我的led灯 总是在闪烁 不是在 PWM的呼吸效果


  • 向阳花开的春天
  • 少尉
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你没写WHILE。程序没进入中断。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示