<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      玩轉單片機之智能車小露——七彩LED呼吸燈

      如果LED閃爍(玩轉單片機之智能車小露——LED閃爍實戰)不能滿足你,那么七彩LED呼吸燈絕對可以給你帶來足夠的樂趣。
      七彩LED呼吸燈一般都需要PWM進行調光,所以編程有無限的靈活性。本文七彩呼吸燈可以實現彩虹單色顯示、RGB任意顏色顯示、單色亮度呼吸、七彩顏色轉換呼吸:

      //呼吸燈模式:關閉呼吸、單色呼吸、七彩轉換呼吸
      #define	BLED_MODE_OFF			0X00
      #define	BLED_MODE_SINGLE		0X01
      #define	BLED_MODE_COLOR			0X02
      
      //顏色:關閉及RGB組合彩虹顏色
      #define	BLED_COLOR_OFF			0X00
      #define	BLED_COLOR_RED			0X01
      #define	BLED_COLOR_ORANGE		0X02
      #define	BLED_COLOR_YELLOW		0X03
      #define	BLED_COLOR_GREEN		0X04
      #define	BLED_COLOR_CYAN			0X05
      #define	BLED_COLOR_BLUE			0X06
      #define	BLED_COLOR_PURPLE		0X07
      #define	BLED_COLOR_WHITE		0X08
      
      //亮度:0x0100~0x1000;
      #define BLED_BRIGHT				0x0fff
      
      void BLEDTurnOn(unsigned char color);
      void BLEDDisplayColor(unsigned char red,unsigned char green,unsigned char blue);
      void BLEDBreath(unsigned char mode,unsigned char color);
      void BLEDTurnOff(void);
      

      STC32G單片機PWM初始化

      控制七彩LED前先要初始化PWM(GPIO設置、PWM設置、端口切換):

      void BLEDInit(void){
      	GPIO_InitTypeDef gpio;
      	PWMx_InitDefine pwm;
      	
      	gpio.Mode = GPIO_OUT_PP;
      	gpio.Pin = GPIO_Pin_LOW;
      	
      	GPIO_Inilize(GPIO_P2,&gpio);
      
      	pwm.PWM_Mode = CCMRn_PWM_MODE1;
      	pwm.PWM_Duty = 0x0000;
      	pwm.PWM_EnoSelect = ENO5P;
      	PWM_Configuration(PWM5, &pwm);
      	
      	pwm.PWM_EnoSelect = ENO6P;
      	PWM_Configuration(PWM6, &pwm);
      	
      	pwm.PWM_EnoSelect = ENO7P;
      	PWM_Configuration(PWM7, &pwm);
      	
      	pwm.PWM_Period = 0x1000; 
      	pwm.PWM_DeadTime = 0;
      	pwm.PWM_MainOutEnable= ENABLE;
      	pwm.PWM_CEN_Enable   = ENABLE; 
      	PWM_Configuration(PWMB, &pwm);
      	
      	PWM5_SW(PWM5_SW_P20);
      	PWM6_SW(PWM6_SW_P21);
      	PWM7_SW(PWM7_SW_P22);
      	
      	NVIC_PWM_Init(PWMB,DISABLE,Priority_0);
      }
      

      彩虹單色顯示

      為簡化代碼,彩虹顏色的顯示使用二維數組記錄RGB占空比,通過color參數直接定位到ColorRaw數組中對應顏色的占空比。

      unsigned char BLEDBreathMode;
      unsigned char BLEDColor;
      unsigned int BLEDScanCycle;
      
      unsigned int code ColorRaw[9][3] = {
      	{0x0000,0x0000,0x0000},					//OFF
      	{BLED_BRIGHT,0x0000,0x0000},			//RED
      	{BLED_BRIGHT,BLED_BRIGHT >> 2,0x0000},	//ORANGE
      	{BLED_BRIGHT,BLED_BRIGHT,0x0000},		//YELLOW
      	{0x0000,BLED_BRIGHT,0x0000},			//GREEN
      	{0x0000,BLED_BRIGHT,BLED_BRIGHT},		//CYAN
      	{0x0000,0x0000,BLED_BRIGHT},			//BLUE
      	{BLED_BRIGHT,0x0000,BLED_BRIGHT},		//PURPLE
      	{BLED_BRIGHT,BLED_BRIGHT,BLED_BRIGHT}};	//WHITE
      	
      void BLEDTurnOn(unsigned char color){
      	unsigned int *pDuty;
      	
      	BLEDColor = color;
      	BLEDBreathMode = BLED_MODE_OFF;
      	pDuty = ColorRaw[color];
      
      	PWMB_Duty5(pDuty[0]);
      	PWMB_Duty6(pDuty[1]);
      	PWMB_Duty7(pDuty[2]);
      }
      

      RGB任意顏色顯示

      RGB任意顏色顯示也很簡單,將RGB顏色三個分量參數(0x00~0xFF)縮放到占空比量程后直接輸出:

      void BLEDDisplayColor(unsigned char red,unsigned char green,unsigned char blue){
      	BLEDBreathMode = BLED_MODE_OFF;
      	
      	PWMB_Duty5((unsigned int)red << 4);
      	PWMB_Duty6((unsigned int)green << 4);
      	PWMB_Duty7((unsigned int)blue << 4);
      }
      

      單色亮度呼吸和七彩顏色轉換呼吸

      呼吸思路仍然是在定時中斷中按呼吸相應的呼吸規律更新RGB三種顏色的PWM占空比。
      單色亮度呼吸熄滅效果不佳所以呼吸周期內只降低到最低亮度(0x0100)不會全熄。
      七彩顏色轉換呼吸按紅->黃->綠->青->藍->紫->紅...依次循環轉換。

      void BLEDBreath(uint8 mode,uint8 color){
      	BLEDColor = color;
      	BLEDBreathMode = mode;
      	BLEDScanCycle = 0;
      }
      
      //Systick callback(20ms)
      void SystickCallbackBLED(void){
      	unsigned int *pDuty;
      	
      	if(BLEDBreathMode == BLED_MODE_SINGLE){			//單色亮度呼吸
      		pDuty = ColorRaw[BLEDColor];
      		
      		if(++BLEDScanCycle > 128)
      			BLEDScanCycle = 0;
      		if(BLEDScanCycle < 64){
      			PWMB_Duty5(pDuty[0] - min(pDuty[0],(((BLED_BRIGHT - 0x0100) >> 6) * BLEDScanCycle)));
      			PWMB_Duty6(pDuty[1] - min(pDuty[1],(((BLED_BRIGHT - 0x0100) >> 6) * BLEDScanCycle)));
      			PWMB_Duty7(pDuty[2] - min(pDuty[2],(((BLED_BRIGHT - 0x0100) >> 6) * BLEDScanCycle)));
      		}
      		else{
      			PWMB_Duty5(pDuty[0] - min(pDuty[0],(((BLED_BRIGHT - 0x0100) >> 6) * (128 - BLEDScanCycle))));
      			PWMB_Duty6(pDuty[1] - min(pDuty[1],(((BLED_BRIGHT - 0x0100) >> 6) * (128 - BLEDScanCycle))));
      			PWMB_Duty7(pDuty[2] - min(pDuty[2],(((BLED_BRIGHT - 0x0100) >> 6) * (128 - BLEDScanCycle))));
      		}
      	}
      	else if(BLEDBreathMode == BLED_MODE_COLOR){		//七彩顏色轉換呼吸
      		if(++BLEDScanCycle > 448)
      			BLEDScanCycle = 0;
      		if(BLEDScanCycle < 64){
      			PWMB_Duty5(BLED_BRIGHT);
      			PWMB_Duty6((BLED_BRIGHT >> 6) * BLEDScanCycle);
      			PWMB_Duty7(0x0000);
      		}
      		else if(BLEDScanCycle < 128){
      			PWMB_Duty5(BLED_BRIGHT - (BLED_BRIGHT >> 6) * (BLEDScanCycle-64));
      			PWMB_Duty6(BLED_BRIGHT);
      			PWMB_Duty7(0x0000);
      		}
      		else if(BLEDScanCycle < 192){
      			PWMB_Duty5(0x0000);
      			PWMB_Duty6(BLED_BRIGHT);
      			PWMB_Duty7((BLED_BRIGHT >> 6) * (BLEDScanCycle-128));
      		}
      		else if(BLEDScanCycle < 256){
      			PWMB_Duty5(0x0000);
      			PWMB_Duty6(BLED_BRIGHT - (BLED_BRIGHT >> 6) * (BLEDScanCycle-192));
      			PWMB_Duty7(BLED_BRIGHT);
      		}
      		else if(BLEDScanCycle < 320){
      			PWMB_Duty5((BLED_BRIGHT >> 6) * (BLEDScanCycle-256));
      			PWMB_Duty6(0x0000);
      			PWMB_Duty7(BLED_BRIGHT);
      		}
      		else if(BLEDScanCycle < 384){
      			PWMB_Duty5(BLED_BRIGHT);
      			PWMB_Duty6(0x0000);
      			PWMB_Duty7(BLED_BRIGHT - (BLED_BRIGHT >> 6) * (BLEDScanCycle-320));
      		}
      	}
      	else
      		BLEDScanCycle = 0;
      }
      
      • 本文采用的單片機為STC32G系列,感興趣的朋友可以參考測試,或去Gitee上下載例程。
      • 下載地址:https://gitee.com/loganxiang/lgxsmartcar ,參考breathled.h/breathled.c。
      posted @ 2025-10-24 22:48  芥子的世界  閱讀(23)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本一卡二卡3卡四卡网站精品| 99精品人妻少妇一区| 波多野结衣久久一区二区| 国产在线无码视频一区二区三区 | 野花社区www视频日本| 国产尤物AV尤物在线看| 国产人妻精品无码av在线| 90后极品粉嫩小泬20p | 久久精品亚洲精品国产区| 亚洲一区二区三区播放| 夜夜爽77777妓女免费看| 一本大道久久东京热AV| 通河县| 日韩av高清在线看片| 少妇又爽又刺激视频| 亚洲www永久成人网站| 中文天堂资源| 国产精品免费看久久久| 亚洲一区二区精品另类| 国产高颜值不卡一区二区| 亚洲国产精品毛片在线看| 99国产欧美另类久久久精品| 麻豆tv入口在线看| 人妻中文字幕精品系列| 亚洲欧洲无码av电影在线观看| 亚洲乱码中文字幕小综合| 狠狠躁夜夜躁人人爽天天5| 亚洲精品中文字幕无码蜜桃| 国产内射xxxxx在线| 久久99国产精品尤物| 青河县| 欧美综合区自拍亚洲综合绿色| 国产午夜福利小视频合集| 午夜男女爽爽影院在线| 日本精品成人一区二区三区视频| 亚洲国产成人久久精品软件| 国产一区二区三区在线观看免费| 国产成人精品一区二区三区免费| 久久婷婷丁香五月综合五| 国产办公室秘书无码精品99| 黑人猛精品一区二区三区|