久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1584|回復: 4
收起左側

請教單片機PWM控制3W led燈珠,開機為什么要閃一下?

[復制鏈接]
ID:891876 發表于 2023-12-20 12:04 | 顯示全部樓層 |閱讀模式
如題,開機閃一下然后才正常,找了半天也沒解決,請問是什么原因?

123.JPG

單片機源程序如下:
#include <reg52.H>
#include<intrins.h>
#include"Delay.h"
unsigned char Pwm_Duty =0;   //定義一個占空比變量
unsigned char PWM_Cnt=0;    //200us的變量/50HZ的%分之一

sbit PWM = P1^0;   //PWM輸出

void Timer0Init(void)                //200微秒@12.000MHz
{
        TMOD &= 0xF0;                //設置定時器模式
        TMOD |= 0x01;                //設置定時器模式
        TL0 = 0x38;                  //設置定時初始值
        TH0 = 0xFF;                  //設置定時初始值
        TF0 = 0;                    //清除TF0標志
        ET0 = 1;
        EA = 1;
        TR0 = 1;                //定時器0開始計時

}
  void timer0_Routine(void) interrupt 1   //T0中斷程序
{
        
        TL0 = 0x38;                         //重裝始值
        TH0 = 0xFF;                         //重裝始值
        PWM_Cnt++;
        if(PWM_Cnt>=100)       //計滿100=20ms
        {
          PWM_Cnt=0;
        }

}
void Int0_Routine(void) interrupt 0
{
        static unsigned char PWM_KEY;  //static靜態變量,保持按鍵值
        IT0=0;
        if(INT0==0)
        {
                Delay(20);
        }
        while(INT0==0);
        Delay(20);        
        
        PWM_KEY++;        //按鍵加一
        switch(PWM_KEY)
        {
                case 1:Pwm_Duty=10;break;   //占空比10%
                case 2:Pwm_Duty=20;break;
                case 3:Pwm_Duty=30;break;
                case 4:Pwm_Duty=40;break;
                case 5:Pwm_Duty=50;break;
                case 6:Pwm_Duty=60;break;
                case 7:Pwm_Duty=70;break;
                case 8:Pwm_Duty=80;break;
                case 9:Pwm_Duty=90;break;
                case 10:Pwm_Duty=100;break;
                case 11:Pwm_Duty=0;
                PWM_KEY=0;IT0=1; break;
                default:break;  //default語句冒號后都執行break
        }
}
        void main()
{
  PWM =0;
        IT0=0;   //外部中斷電平觸發
        EX0=1;   //外部中斷0中斷允許位
        EA=1;
        Timer0Init();        //定時器初始化函數

        while(1)
  {
     if(PWM_Cnt<Pwm_Duty)   //小于或等于設置的占空比
             {
                       PWM = 1;   //占空比輸出
             }
                else
            PWM = 0;    //占空比輸出        
  }
}
回復

使用道具 舉報

ID:1004920 發表于 2023-12-20 14:31 | 顯示全部樓層
你這個是硬件的問題,上電單片機IO口默認高電平,然后單片機初始化,才轉為低電平。所以開機LED會亮一下。
回復

使用道具 舉報

ID:883242 發表于 2023-12-20 14:31 | 顯示全部樓層
AT89C52上電后,程序執行前,所有IO口都是高電平,當然讓LED點亮了。
回復

使用道具 舉報

ID:1062320 發表于 2023-12-22 09:05 | 顯示全部樓層
AT89c51上電初始化的時候 好像會使所有io高電平,如果要避免這個問題 要不試著讓單片機控地而不是VCC
回復

使用道具 舉報

ID:1080935 發表于 2023-12-22 09:19 | 顯示全部樓層
1、端口反相
2、換單片機
3、初始化(上電有延時,效果不理想)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲欧美 | 久久亚洲免费视频 | 中文字幕一区二区在线播放 | 51成人做爰www免费看网站 | 亚洲69视频 | 国产一区二区视频在线观看 | 成人a视频 | 日韩成人精品 | 天天曰天天干 | 一区二区三区影院 | 天天综合天天做天天综合 | 日韩在线不卡视频 | 日韩av网站在线观看 | 久久av中文字幕 | 黄色成人毛片 | 日韩欧美国产综合 | 双性呜呜宫交受不住了h | 精品久久久久久久久久久久久久久久 | 亚洲激情视频 | 91日韩在线| 国产中文 | 精品一区二区三区免费毛片 | 黄色三级视频在线观看 | 国产伦精品 | 在线亚洲天堂 | 精品欧美一区二区三区久久久 | 久久九九免费视频 | 天天操天天操 | 国产自偷自拍 | 天天操夜夜操 | 1级黄色大片 | 国产日本在线 | 9.1成人看片免费版 国产草草影院 | 日本一区二区三区四区五区 | 欧美精品入口蜜桃 | 日韩一级在线观看 | 久热精品在线 | 91成人精品一区在线播放 | 少妇一级淫片 | 亚洲精品一二三四区 | 九九色综合 |