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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1460|回復: 4
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
如題,開機閃一下然后才正常,找了半天也沒解決,請問是什么原因?



單片機源程序如下:
#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;    //占空比輸出        
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
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
回復

使用道具 舉報

5#
ID:1080935 發表于 2023-12-22 09:19 | 只看該作者
1、端口反相
2、換單片機
3、初始化(上電有延時,效果不理想)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色婷婷亚洲一区二区三区 | 久久久久国产精品一区二区 | 国产精品一区二区av | 精品国产第一区二区三区 | 国产精品射| 亚洲男人天堂av | 在线观看黄免费 | 国产精品久久久亚洲 | 成人精品在线观看 | 电影午夜精品一区二区三区 | 国产精品一区二区欧美黑人喷潮水 | 久久一区视频 | 久久久亚洲成人 | 日韩成人在线观看 | 国产欧美一区二区精品久导航 | 奇米久久 | 日日夜夜天天 | 亚洲国产欧美在线 | 一级毛片色一级 | 国产日本精品视频 | 亚洲精品久久久久久国产精华液 | 欧美日韩91 | 亚洲国产一区在线 | 国产中文字幕在线 | 日韩一级黄色毛片 | www.亚洲区 | 99热这里都是精品 | 午夜精品在线观看 | 亚洲国产精品日韩av不卡在线 | 夜色www国产精品资源站 | 大学生a级毛片免费视频 | av激情在线 | 午夜国产一级片 | 亚洲精品免费看 | 天天综合天天 | 三区在线观看 | 在线中文一区 | 欧美爱爱视频 | 日韩视频 中文字幕 | 操操日 | 毛片一区二区 |