找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 630|回复: 4
收起左侧

请问我的单片机PWM波控制led亮度为什么led只会闪烁?

[复制链接]
ID:1116897 发表于 2024-4-25 12:17 | 显示全部楼层 |阅读模式
#include <reg52.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char Pwm_Duty =0;
unsigned char Pwm_Duty1 =0;  
unsigned char Pwm_Duty2 =0;  
unsigned char Pwm_Duty3 =0;  
unsigned char Pwm_Duty4 =0;  
unsigned char Pwm_Duty5 =0;  
unsigned char Pwm_Duty6 =0;  
unsigned char Pwm_Duty7 =0;  
unsigned char PWM_Cnt=0;
unsigned char p=0;
int i1=0;
int i2=0;
int i3=0;
int i4=0;
int i5=0;
int i6=0;
int i7=0;
int i8=0;

sbit rs = P2 ^ 6;
sbit rw = P2 ^ 5;
sbit en = P2 ^ 7;
sbit K1=P2^1;
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
sbit L5=P1^4;
sbit L6=P1^5;
sbit L7=P1^6;
sbit L8=P1^7;

void Delay(int i)
{ int  j,k;
    for(;i>0;i--)
    for(j=15;j>0;j--)
    for(k=11;k>0;k--);}
void Timer0Init(void)              
  //200微秒@12.000MHz

{
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x02;                //设置定时器模式
      TH0=240;//高八位
      TL0=240;                 //设置定时初始值
        TF0 = 0;                    //清除TF0标志
        ET0 = 1;
        EA = 1;
        TR0 = 1;                //定时器0开始计时

}






void timer0_Routine(void) interrupt 1   //T0中断程序
{

        TH0=240;//高八位
TL0=240;                         //重装始值
                               //重装始值
        PWM_Cnt++;
        if(PWM_Cnt>=100)      
        {
          PWM_Cnt=0;
        }

50f91d1cf76ec26d9115f8d30c639fa.png
回复

使用道具 举报

ID:1116897 发表于 2024-4-25 12:27 来自手机 | 显示全部楼层
用硬件做的也只会闪
回复

使用道具 举报

ID:123289 发表于 2024-4-25 15:34 | 显示全部楼层
是你的程序让它闪烁的。
回复

使用道具 举报

ID:883242 发表于 2024-4-25 15:39 | 显示全部楼层
如果是实物,那就是PWM频率太低,如果是仿真,也许是仿真软件故意让你看波形不连续。
回复

使用道具 举报

ID:11804 发表于 2024-4-25 17:46 | 显示全部楼层
你也没发完整程序,没看到怎么控灯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表