找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8508|回復(fù): 14
收起左側(cè)

基于單片機的pwm控制16*16led點陣亮度調(diào)節(jié)怎么做啊,

[復(fù)制鏈接]
ID:182903 發(fā)表于 2017-5-17 09:05 | 顯示全部樓層 |閱讀模式
100黑幣
我做了16*16的led點陣顯示,用的74hc595和74hc138做驅(qū)動,怎么添加可以調(diào)節(jié)led點陣的亮度啊,最好有原理圖和c程序,,謝謝謝謝謝了

相關(guān)帖子

回復(fù)

使用道具 舉報

ID:201851 發(fā)表于 2017-5-17 16:42 | 顯示全部樓層
調(diào)PWM的占空比呀
回復(fù)

使用道具 舉報

ID:201854 發(fā)表于 2017-5-17 17:38 | 顯示全部樓層
如果是所有LED的亮度一致地調(diào)的話,只需要在LED的供電電源處加一MOS管,MOS管的G極拉到單片機PWM控制就可以了。
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2017-5-17 20:41 | 顯示全部樓層
調(diào)節(jié)led的亮度就是調(diào)節(jié)流過它的電流,一般可減小它的限流電阻,注意最大電流不要超過40mA.
回復(fù)

使用道具 舉報

ID:182903 發(fā)表于 2017-5-18 12:01 | 顯示全部樓層
leeQuixote 發(fā)表于 2017-5-17 16:42
調(diào)PWM的占空比呀

具體怎么操作啊  ,有電路圖嗎
回復(fù)

使用道具 舉報

ID:182903 發(fā)表于 2017-5-18 12:07 | 顯示全部樓層
liangzz 發(fā)表于 2017-5-17 17:38
如果是所有LED的亮度一致地調(diào)的話,只需要在LED的供電電源處加一MOS管,MOS管的G極拉到單片機PWM控制就可以 ...

程序怎么編呢,基本不會
回復(fù)

使用道具 舉報

ID:157662 發(fā)表于 2017-5-18 19:19 | 顯示全部樓層
你只需要加一個電位器就可以了
回復(fù)

使用道具 舉報

ID:182903 發(fā)表于 2017-5-19 09:16 | 顯示全部樓層
1130555300 發(fā)表于 2017-5-18 19:19
你只需要加一個電位器就可以了

你好  請問電位器接在哪里呢  謝謝了
回復(fù)

使用道具 舉報

ID:157662 發(fā)表于 2017-5-19 15:43 | 顯示全部樓層
咕嚕咕嚕 發(fā)表于 2017-5-19 09:16
你好  請問電位器接在哪里呢  謝謝了

你把電路圖發(fā)上來看看也
回復(fù)

使用道具 舉報

ID:11676 發(fā)表于 2018-5-30 13:50 | 顯示全部樓層
1130555300 發(fā)表于 2017-5-18 19:19
你只需要加一個電位器就可以了

不要忽悠人家,加個電位器手工調(diào)整亮度么?
回復(fù)

使用道具 舉報

ID:11676 發(fā)表于 2018-5-30 13:52 | 顯示全部樓層
占空比應(yīng)該是軟件實現(xiàn)的。
回復(fù)

使用道具 舉報

ID:149389 發(fā)表于 2018-5-30 15:08 | 顯示全部樓層
16掃,1ms掃一行的話,刷新頻率1000/(16x1ms)=62.5Hz
1ms分拆,比如0.5顯示0.5不顯示屏幕亮度就會弱了。
回復(fù)

使用道具 舉報

ID:341406 發(fā)表于 2018-5-30 15:14 | 顯示全部樓層

#include <ioCC2530.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

#define uint  unsigned int
#define uchar unsigned char

//定義控制燈的端口
#define LED1 P1_0   //定義LED1為P10口控制
#define KEY1 P0_0      //KEY1為P00口控制

//函數(shù)聲明
void Delay(unsigned int t); //函數(shù)聲明
void InitIO(void);      //初始化LED控制IO口函數(shù)
void InitKey();

/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main (void)
{                  
  unsigned int CYCLE=1000,PWM_LOW=0;//定義周期并賦值
  InitIO();
  InitKey();
  while (1)         //主循環(huán)
  {

    if(KEY1==0)
    {
      //S1按下,一直按著哦。
      PWM_LOW++;
      if(PWM_LOW>CYCLE)
      {
        PWM_LOW=CYCLE-1;
      }
    }
    else
    {
      PWM_LOW--;
      if(PWM_LOW<1)
      {
        PWM_LOW=1;
      }
    }

    if(PWM_LOW==1)
    {
      LED1=0;
    }
    else if(PWM_LOW==CYCLE)
    {
      LED1=1;
    }
    else if(CYCLE>PWM_LOW)
    {
      LED1=1;
      Delay(PWM_LOW);
      LED1=0;
      Delay(CYCLE-PWM_LOW);
    }
  }

}
/*------------------------------------------------
延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值
unsigned int 是定義無符號整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(t)
{
   t--;
   t++;
   t--;
}
}

/****************************
//初始化IO口程序
*****************************/
void InitIO(void)
{
    P1DIR |= 0x01;  //P10定義為輸出
}


/****************************
     按鍵初始化函數(shù)
*****************************/
void InitKey()
{
  P0SEL &= ~0x01; //設(shè)置P0.0為普通IO口
  P0DIR &= ~0X01; //按鍵接在P00口上,設(shè)P00為輸入模式
  P0INP &= ~0x01; //打開P00上拉電阻
}
回復(fù)

使用道具 舉報

ID:341406 發(fā)表于 2018-5-30 15:19 | 顯示全部樓層
#include <ioCC2530.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義  #define uint  unsigned int #define uchar unsigned char   //定義控制燈的端口 #define LED1 P1_0   //定義LED1為P10口控制 #define KEY1 P0_0      //KEY1為P00口控制  //函數(shù)聲明 void Delay(unsigned int t); //函數(shù)聲明 void InitIO(void);      //初始化LED控制IO口函數(shù) void InitKey();  /*------------------------------------------------                     主函數(shù) ------------------------------------------------*/ void main (void) {                     unsigned int CYCLE=1000,PWM_LOW=0;//定義周期并賦值   InitIO();   InitKey();   while (1)         //主循環(huán)   {      if(KEY1==0)     {       //S1按下,一直按著哦。       PWM_LOW++;       if(PWM_LOW>CYCLE)       {         PWM_LOW=CYCLE-1;       }     }     else     {       PWM_LOW--;       if(PWM_LOW<1)       {         PWM_LOW=1;       }     }      if(PWM_LOW==1)     {       LED1=0;     }     else if(PWM_LOW==CYCLE)     {       LED1=1;     }     else if(CYCLE>PWM_LOW)     {       LED1=1;       Delay(PWM_LOW);       LED1=0;       Delay(CYCLE-PWM_LOW);     }   }  } /*------------------------------------------------  延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值  unsigned int 是定義無符號整形變量,其值的范圍是  0~65535 ------------------------------------------------*/ void Delay(unsigned int t) {  while(t)  {    t--;    t++;    t--;  } }  /**************************** //初始化IO口程序 *****************************/ void InitIO(void) {     P1DIR |= 0x01;  //P10定義為輸出 }   /****************************      按鍵初始化函數(shù) *****************************/ void InitKey() {   P0SEL &= ~0x01; //設(shè)置P0.0為普通IO口   P0DIR &= ~0X01; //按鍵接在P00口上,設(shè)P00為輸入模式   P0INP &= ~0x01; //打開P00上拉電阻 }
回復(fù)

使用道具 舉報

ID:341441 發(fā)表于 2018-5-30 15:43 | 顯示全部樓層
占空比也可以,或者用其他的方案也行
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表