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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1538|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人久久免费 | 精品视频在线观看 | com.色.www在线观看 | 日韩欧美精品在线 | 亚洲国产成人精品女人久久久 | 香蕉国产在线视频 | 国产亚洲区 | 人人射人人插 | 亚洲精品国产综合区久久久久久久 | 国产精品视频在线免费观看 | 国产视频二区在线观看 | 日韩二区| 日本免费网| 91精品国产91久久久久久吃药 | 亚洲日本中文字幕在线 | a在线免费观看 | 欧美一区二区三区高清视频 | 国产激情视频在线免费观看 | 午夜精品久久久久久久久久久久 | 少妇精品亚洲一区二区成人 | 中文字幕亚洲视频 | 久久精品欧美一区二区三区不卡 | 亚洲欧美综合精品另类天天更新 | 国产精品久久 | 成人免费淫片aa视频免费 | 国产高清美女一级a毛片久久w | 国产一二区视频 | 天天操天天操 | 国产亚洲精品精品国产亚洲综合 | 无码一区二区三区视频 | 97精品超碰一区二区三区 | 一区在线观看 | 高清免费在线 | 99精品免费久久久久久久久日本 | 久久久蜜桃一区二区人 | 国产午夜视频 | 日韩免费一区二区 | 国产精品一区久久久久 | 日日操夜夜操天天操 | 丝袜美腿一区二区三区 | 天天综合永久入口 |