亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rgbledplay.c

?? 基于stm32的MP3播放器
?? C
字號:
#include "COMM.h"
#define RGB_STATUS_ADDR	484
#define RGB_BKEN_ADDR	485
//#define MAX_Red 100//紅色的最大值

const u8 *RGBLEDmenu_F1[5]={"模式選擇","間隔時間設置","后臺執行","色彩調用","色彩保存"};//第1級父目錄目錄
const u8 *RGBLEDmenu_S1[3]={"普通模式","漸變模式","跳變模式"};//第1級子目錄
const u8 *RGBLEDmenu_S2[8]={"10毫秒","20毫秒","50毫秒","100毫秒","200毫秒","500毫秒","1000毫秒","2500毫秒"};
const u8 *RGBLEDmenu_S3[2]={"禁止","允許"};
const u8 *RGBLEDmenu_S4[8]={"色彩1","色彩2","色彩3","色彩4","色彩5","色彩6","色彩7","色彩8"};	  

const u8 time_table[8]={1,2,5,10,20,50,70,250};

u8 LED_SET_STATUS=0x00;//bit0~2:色彩;bit3~5:延時;bit6,7:模式
u8 BACK_PLAY=0;        //后臺執行使能標志
					 	  
u8 LED_STATUS=0x81;//燈的狀態 bit0:關閉/開啟  bit1:暫停,執行	 默認開啟 bit7:是否第一次進入這個函數

//RGB當前顏色寄存器
u8 Cur_RGB_Val[3]={255,125,36};	 
void Smooth_Show(void);//漸變模式

//本程序占用EEPROM地址 460~483 共24個字節
//后面還要占用兩個 484存放LED_SET_STATUS 485 存放 BACK_PLAY 
//num:0~7 代表色彩1~8 
void Save_RGB_Info(u8 num)
{				  
	FM24C16_WriteOneByte(460+num*3,Cur_RGB_Val[0]);//保存R
	FM24C16_WriteOneByte(461+num*3,Cur_RGB_Val[1]);//保存G
	FM24C16_WriteOneByte(462+num*3,Cur_RGB_Val[2]);//保存B		 
}
//num:0~7 代表色彩1~8 
void Read_RGB_Info(u8 num)
{		 
	Cur_RGB_Val[0]=FM24C16_ReadOneByte(460+num*3);//讀取R
	Cur_RGB_Val[1]=FM24C16_ReadOneByte(461+num*3);//讀取G
	Cur_RGB_Val[2]=FM24C16_ReadOneByte(462+num*3);//讀取B		 
}
//預覽圖標,在LCD上的
void Draw_Prev(void)
{
	float ftemp;
	u16 temp,previewcolor;
	ftemp=(float)255/MAX_Red; 
	temp=ftemp*Cur_RGB_Val[0];//得到紅色分量  	 
	temp>>=3;
	temp<<=11;	  
	previewcolor=temp;
	temp=Cur_RGB_Val[1];//得到綠色分量	 
	temp>>=2;
	temp<<=5;
	previewcolor+=temp;
	temp=Cur_RGB_Val[2];//得到藍色分量	  
	previewcolor+=temp>>3;	  
	TFT_Fill(108,44,132,68,previewcolor);//填充預覽部分	    
	LED_R=Cur_RGB_Val[0];
	LED_G=Cur_RGB_Val[1];
	LED_B=Cur_RGB_Val[2]; 
}
//rgb值轉換到按鍵值,并更新到顯示上
void RGB_TO_KEY(void)
{
	float temp=0;
	u8 t;
	temp=(float)170/MAX_Red;  
	t=temp*Cur_RGB_Val[0];					 
	RGB_Bottom(0,t);  
	temp=(float)170/255;
	t=temp*Cur_RGB_Val[1];
	RGB_Bottom(1,t);  
	t=temp*Cur_RGB_Val[2];
	RGB_Bottom(2,t);  
}
//按鍵值轉換為RGB值,保存在Cur_RGB_Val里面
void KEY_TO_RGB(u8 rgb,u8 keyval)
{
	float temp;	    
	temp=(float)255/170;
	if(!rgb)temp=(float)MAX_Red/170;//紅色	 	 
	Cur_RGB_Val[rgb]=temp*keyval;	   
}	 
//把鍵值兌換成數字	 
u8 RGBLED_Key_To_Num(void)
{					 
	if(Is_In_Area(19,47,53,65))return 1;//暫停按鈕被按下     
	else if(Is_In_Area(187,47,221,65))return 2;//開始按鈕被按下 			   
	else if(Is_In_Area(0,300,40,319))return 3;//選項按鈕被按下
	else if(Is_In_Area(200,300,239,319))return 4;//返回按鈕被按下	    
	return 0;//按鍵無效	   
}
//滑動鍵值獲取
u8 Glide_Key_Val(u8 *area)
{
	if(Is_In_Area(25,93,55,293))*area=0;//紅色區域   
	else if(Is_In_Area(105,93,135,293))*area=1;//綠色區域	    												   
	else if(Is_In_Area(185,93,215,293))*area=2; //藍色區域
	else return 0xff;//按鍵不在這個區域內
	Pen_Point.Key_LSta=1;//使能下次按鍵進入

	if(Pen_Point.Y>278)return 0;
	else if(Pen_Point.Y<108)return 170;
	return 278-Pen_Point.Y;//返回0~170的值
}	 
//LED相關參數的設置
void RGBLED_Set(void)
{
	u8 selx=0;	 
	u8 temp=0;
	while(1)
	{
		selx=Load_Fun_Sel(RGBLEDmenu_F1,"彩燈設置","確定",5,temp);
		temp=selx;
		if(selx==8)return;//返回
		else
		{
			switch(selx)
			{
				case 0://模式設置
					selx=Load_Fun_Sel(RGBLEDmenu_S1,RGBLEDmenu_F1[0],"確定",3,(LED_SET_STATUS>>6)&0X03);
					if(selx<3)
					{
						LED_SET_STATUS&=0X3F;//清空上次數值
						LED_SET_STATUS|=selx<<6; 
						FM24C16_WriteOneByte(RGB_STATUS_ADDR,LED_SET_STATUS);//保存模式
						return;
					}
					break;
				case 1://間隔時間設置
					selx=(LED_SET_STATUS>>3)&0x07;	  	   									 
					selx=Load_Fun_Sel(RGBLEDmenu_S2,RGBLEDmenu_F1[1],"確定",8,selx);
					if(selx<8)
					{
						LED_SET_STATUS&=0xC7;//清空上次數值
						LED_SET_STATUS|=selx<<3;//0~5,搜索級別
						FM24C16_WriteOneByte(RGB_STATUS_ADDR,LED_SET_STATUS);//保存時間間隔	 
						return;
					}
					break;
				case 2://后臺播放設置		    
					selx=Load_Fun_Sel(RGBLEDmenu_S3,RGBLEDmenu_F1[2],"確定",2,BACK_PLAY);	 
					if(selx<2)
					{			    
						BACK_PLAY=selx;
						FM24C16_WriteOneByte(RGB_BKEN_ADDR,BACK_PLAY);//保存背景播放	 
						return;
					}
					break;
				case 3://效果調用	  
					selx=LED_SET_STATUS&0x07;	  	   									 
					selx=Load_Fun_Sel(RGBLEDmenu_S4,RGBLEDmenu_F1[3],"確定",8,selx); 
					if(selx<8)
					{
						LED_SET_STATUS&=0xF8;//清空上次數值
						LED_SET_STATUS|=selx; 
						Read_RGB_Info(selx); //從EEPROM讀取信息	   
						return;
					}
					break;
				case 4://效果保存	  
					selx=LED_SET_STATUS&0x07;	  	   									 
					selx=Load_Fun_Sel(RGBLEDmenu_S4,RGBLEDmenu_F1[4],"確定",8,selx); 
					if(selx<8)
					{
						LED_SET_STATUS&=0xF8;//清空上次數值
						LED_SET_STATUS|=selx; 
						FM24C16_WriteOneByte(RGB_STATUS_ADDR,LED_SET_STATUS);//保存效果	
						Save_RGB_Info(selx);//保存信息到EEPROM 
						return;
					}
					break;
			} 
		}
	}	   
}
//暫停,開啟,按鈕顯示
//包括使能輸出的控制
void On_Off_Show(void)
{
	u8 temp=(LED_SET_STATUS>>6)&0X03;
	POINT_COLOR=BLUE;
	BACK_COLOR=WHITE;
	if(temp==0)Show_Str_Mid(0,22,"普通模式",0x00,240); //疊加模式,非自動換
	else if(temp==1)Show_Str_Mid(0,22,"漸變模式",0x00,240); //疊加模式,非自動換
	else Show_Str_Mid(0,22,"跳變模式",0x00,240); //疊加模式,非自動換

	POINT_COLOR=BLACK;
	BACK_COLOR=GRAY;
    if(LED_STATUS&0x02)Show_Str(20,48,"運行",0x00);//疊加模式,非自動換行   
	else Show_Str(20,48,"暫停",0x00);  
    if(LED_STATUS&0x01)Show_Str(188,48,"關閉",0x00);  
 	else Show_Str(188,48,"開啟",0x00); 
	ENRGB(LED_STATUS&0x01);	 
} 

//返回得到的按鍵值
//返回0,則代表按下了退出按鍵
//返回1,代表按下了其他按鍵
u8 LED_Key_Pro(void)
{
	u8 key;	 
	u8 RGBKEY; 

	key=0; 
	if((Pen_Point.Key_Sta==Key_Down||NPEN)&&Pen_Point.Key_LSta)key=Touch_Key_Pro(1);//得到按鍵值	  
	if(PEN)//按鍵松開了,狀態改變(狀態機)
	{
		Pen_Point.Key_LSta=1;	 
		Pen_Point.Key_Sta=Key_Up;
	}   
	if(key&CLICK_POINT) //有單點按鍵按下
	{  	 
		Pen_Point.Key_LSta=0;	
		key=RGBLED_Key_To_Num();   
		switch(key)
		{
			case 1://暫停
				if(((LED_SET_STATUS>>6)&0x03)==0x00)break;//對普通模式,不存在暫停
				if(LED_STATUS&0x02)LED_STATUS&=0xFD;//取反
				else LED_STATUS|=0x02; 
				On_Off_Show();			 
				break;
			case 2://啟動按鈕
				if(LED_STATUS&0x01)LED_STATUS&=0xFE;//取反
				else LED_STATUS|=0x01; 
				On_Off_Show();	
				break;							   
			case 3://選項
				RGBLED_Set();
				Load_Gui_RGBLED();	

				RGB_TO_KEY();//把RGB值轉換為按鍵值顯示
				On_Off_Show();
				Draw_Prev();//更新預覽	  								  	   	  
				break;
			case 4://返回按鈕按下了	
				if(!BACK_PLAY)ENRGB(0);//不準后臺運行		   			 
				return 0;//退出		  	 
		}
		if(!key)//對無效按鍵要檢查是不是按在滑動區域里面
		{
			key=Glide_Key_Val(&RGBKEY);//得到0~170的鍵值
			if(key!=0xff)
			{
				RGB_Bottom(RGBKEY,key);  
				KEY_TO_RGB(RGBKEY,key);//把RGB值更新到RGB寄存器里面
				Draw_Prev();//更新預覽								   
			}
		}		  	 
	}
	return 1;
}
//在漸變模式下使用  
//延時控制,包括鍵值處理.
//返回0,退出
//返回1,繼續    
u8 delay_time(u8 rgb)
{  	  				 
    u8 t=0;  
	u8 dtime; 
	float ftemp;
	if(rgb<3)//正常的
	{	 
		if(rgb)ftemp=(float)170/255;  //變換把0~255變換到0~170 
		else ftemp=(float)170/MAX_Red;//變換把0~MAX_Red變換到0~170  
	
		ftemp*=Cur_RGB_Val[rgb]; 
		RGB_Bottom(rgb,(u8)ftemp);//更新到按鍵 
	}			    
	dtime=(LED_SET_STATUS>>3)&0x07;  			 
    for(t=0;t<time_table[dtime];)//延時控制
    {	    
  		if(!LED_Key_Pro())return 0;	
        if((LED_STATUS&0x02)==0)t++;//沒有暫停 	  
		delay_ms(10);
    }  				 
	Draw_Prev();
    return 1;//成功操作,繼續
}

//跳變顯示
void Jump_Show(void)
{
	u8 t=0;
	while(1)
	{
		Read_RGB_Info(t);
		t++;
		if(t>7)t=0;//循環顯示八個色彩	    
	  	if(!delay_time(3))return;//延時處理	  
		if(((LED_SET_STATUS>>6)&0x03)!=2)return;//選擇了其他模式    
		RGB_TO_KEY();//更新到按鍵上
	}	
}

//顏色列表   
const u8 colour[18][3]={
{MAX_Red,0,0},{MAX_Red,190,204},{MAX_Red,70,0},{118,255,241},{114,255,255},{MAX_Red,255,0},
{MAX_Red,98,0},{61,42,42},{90,144,144},{0,0,255},{11,23,112},{63,204,237},
{0,255,255},{0,255,0},{0,200,88},{22,139,88},{77,33,241},{105,163,223},
};	  
//漸變顯示									  
void Smooth_Show(void)
{ 
    u8 nextred,nextgreen,nextblue;    
    u8 i;  
    Cur_RGB_Val[0]=Cur_RGB_Val[1]=Cur_RGB_Val[2]=0;//全部清掉 
	while(1)
	{   
		for( i=0;i<18;i++)//遍歷十八種顏色
		{
			Cur_RGB_Val[0]=colour[i][0];
			Cur_RGB_Val[1]=colour[i][1];
			Cur_RGB_Val[2]=colour[i][2];  
			if(i==17)
			{
				nextred=colour[0][0];
				nextgreen=colour[0][1];
				nextblue=colour[0][2];  
			}else 
			{  
				nextred=colour[i+1][0];
				nextgreen=colour[i+1][1];
				nextblue=colour[i+1][2];   
			} 
			while(Cur_RGB_Val[0]!=nextred)//紅色逼近
			{ 
				if (Cur_RGB_Val[0]<nextred) Cur_RGB_Val[0]++;
				else Cur_RGB_Val[0]--; 		    
				if(!delay_time(0))return;
				if(((LED_SET_STATUS>>6)&0x03)!=1)return;//選擇了其他模式    
			}  
			while(Cur_RGB_Val[1]!=nextgreen)//綠色逼近
			{ 
				if (Cur_RGB_Val[1]<nextgreen) Cur_RGB_Val[1]++;
				else Cur_RGB_Val[1]--;	  
				if(!delay_time(1))return;
				if(((LED_SET_STATUS>>6)&0x03)!=1)return;//選擇了其他模式
			}
			while(Cur_RGB_Val[2]!=nextblue)//藍色逼近
			{
				if (Cur_RGB_Val[2]<nextblue) Cur_RGB_Val[2]++;
				else Cur_RGB_Val[2]--;	  
				if(!delay_time(2))return;
				if(((LED_SET_STATUS>>6)&0x03)!=1)return;//選擇了其他模式
			}
		} 
	} 
}  
//LED 模式控制
//返回0,則退出;
//返回1,則繼續 
u8 Mode_Control(void)
{
	u8 temp;
	temp=(LED_SET_STATUS>>6)&0x03;
	switch(temp)
	{
		case 0://普通模式
			break;
		case 1://漸變模式
			Smooth_Show();
			if(((LED_SET_STATUS>>6)&0x03)==1)return 0;//退出
			break;
		case 2://跳變模式
			Jump_Show();						  
			if(((LED_SET_STATUS>>6)&0x03)==2)return 0;//退出	 
			break;
		case 4:
			break;
	}
	return 1;
}
//彩燈控制主程序
void RGBLED_Play(void)
{  				  	    		  	 	  
	Load_Gui_RGBLED();													  
	LED_SET_STATUS=FM24C16_ReadOneByte(RGB_STATUS_ADDR);//讀取狀態
	if(LED_SET_STATUS>0XBF)//未初始化
	{	//初始化
		LED_SET_STATUS=0X00;
		BACK_PLAY=0;
		FM24C16_WriteOneByte(RGB_STATUS_ADDR,LED_SET_STATUS);//保存效果	 
		FM24C16_WriteOneByte(RGB_BKEN_ADDR,BACK_PLAY);//保存背景播放	 	 
	}else BACK_PLAY=FM24C16_ReadOneByte(RGB_BKEN_ADDR);//讀取背景播放 	
	
	if(LED_STATUS&0x80)//檢查是不是開機后第一次進入這個函數
	{
		LED_STATUS&=0x7F;//去掉標志位
		Read_RGB_Info(LED_SET_STATUS&0x07);//讀取上次的色彩
	}
	RGB_TO_KEY();//把RGB值轉換為按鍵值顯示
	On_Off_Show();	
	Draw_Prev();//更新預覽	     												 	   			 
	while(1)
	{   
		if(!Mode_Control())return; 
		else
		{
			On_Off_Show();	
			Draw_Prev();//更新預覽	 
		}
		if(!LED_Key_Pro())return; 	      
	}
}


				   







?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
94色蜜桃网一区二区三区| 成+人+亚洲+综合天堂| 看片的网站亚洲| 成人app软件下载大全免费| 久久久精品国产免费观看同学| 亚洲一区欧美一区| 粉嫩aⅴ一区二区三区四区 | 亚洲另类中文字| 韩国欧美国产一区| 91精品久久久久久蜜臀| 夜夜嗨av一区二区三区四季av| 粉嫩av一区二区三区| 中文字幕一区三区| 丁香一区二区三区| 伊人性伊人情综合网| 91超碰这里只有精品国产| 精品一区二区三区免费观看| 91精品国产aⅴ一区二区| 亚洲一区二区三区三| 91精品国产综合久久久久| 国产麻豆午夜三级精品| 日韩免费性生活视频播放| 日韩电影在线观看一区| 欧美日本一区二区在线观看| 亚洲小少妇裸体bbw| 91久久精品一区二区| 一区二区三区欧美| 日韩视频在线你懂得| 久久99精品久久久久久国产越南 | 亚洲综合一区二区三区| 欧美精品自拍偷拍| 日韩和欧美的一区| 欧美一级欧美三级| 成人av动漫网站| 日韩精品每日更新| 国产精品成人一区二区三区夜夜夜| 精品视频免费看| 1024成人网色www| 日韩欧美一区二区不卡| 99精品国产99久久久久久白柏| 亚洲成人免费电影| 欧美一区二区三区四区五区| 成人自拍视频在线| 亚洲欧美另类小说视频| 91成人在线精品| 国产精品中文字幕欧美| 国产精品高清亚洲| 欧美草草影院在线视频| 国产黄色精品视频| 亚洲日本在线a| 欧美日韩一卡二卡三卡| 成人伦理片在线| 久久草av在线| 视频一区视频二区中文| 中文字幕佐山爱一区二区免费| 久久亚洲春色中文字幕久久久| 国产成人免费视频精品含羞草妖精| 图片区小说区国产精品视频| 精品88久久久久88久久久| 成年人国产精品| 国产精品白丝av| 国产在线视频一区二区三区| 三级亚洲高清视频| 亚洲一区二区三区四区在线观看| 亚洲欧美中日韩| 日本一区二区久久| 欧美三片在线视频观看| 一本到三区不卡视频| 强制捆绑调教一区二区| 国产精品女人毛片| 欧美顶级少妇做爰| 欧美中文字幕一区二区三区 | 911精品国产一区二区在线| 色偷偷久久一区二区三区| 99久久99久久精品国产片果冻| 国产中文字幕一区| 国产美女精品一区二区三区| 久久丁香综合五月国产三级网站 | 精品欧美一区二区三区精品久久 | 免费精品视频最新在线| 亚洲妇熟xx妇色黄| 亚洲午夜免费福利视频| 亚洲自拍与偷拍| 天天爽夜夜爽夜夜爽精品视频| 午夜精品福利视频网站| 五月天丁香久久| 男女激情视频一区| 国产永久精品大片wwwapp| 精品一区二区免费视频| 国产乱码精品一区二区三区忘忧草| 国产在线观看免费一区| 国产成人啪午夜精品网站男同| 成人在线综合网站| 91老师片黄在线观看| 国产一区二区导航在线播放| 国产精品一线二线三线精华| 成人综合婷婷国产精品久久蜜臀| 96av麻豆蜜桃一区二区| 欧美性色综合网| 91香蕉视频黄| 欧美另类videos死尸| 日韩一级黄色大片| 国产欧美精品国产国产专区 | 亚洲免费观看高清| 亚欧色一区w666天堂| 麻豆91精品91久久久的内涵| 亚洲第一福利视频在线| 美女网站一区二区| 福利电影一区二区三区| 91福利社在线观看| 日韩欧美另类在线| 国产精品不卡在线| 午夜精品成人在线| 国产经典欧美精品| 欧美专区日韩专区| 久久亚洲捆绑美女| 亚洲综合免费观看高清完整版| 免费成人av资源网| 波多野结衣中文字幕一区二区三区| 欧美性猛交一区二区三区精品| 欧美sm极限捆绑bd| 亚洲女人的天堂| 精品一区二区免费视频| 色婷婷激情综合| 日韩久久久久久| 亚洲精品第一国产综合野| 精油按摩中文字幕久久| 色噜噜狠狠色综合欧洲selulu| 精品久久久久久久久久久久久久久久久 | 欧美日韩一卡二卡三卡 | 国产成人aaaa| 3d动漫精品啪啪| 亚洲日本一区二区三区| 国产乱国产乱300精品| 欧美日韩另类一区| 精品一区二区在线免费观看| 97精品电影院| 久久久午夜精品| 欧美aaaaaa午夜精品| 色呦呦一区二区三区| 久久久国产精华| 免费在线观看不卡| 欧美日韩精品系列| 亚洲精品高清在线观看| 不卡的av在线播放| 久久九九久精品国产免费直播| 国产婷婷一区二区| 日韩电影网1区2区| 91久久精品网| 亚洲欧洲综合另类| 不卡av电影在线播放| 久久精品人人做人人爽人人| 久久精品国产77777蜜臀| 欧美日韩一区二区在线观看| 国产精品福利一区二区| 国内精品国产成人国产三级粉色| 制服丝袜av成人在线看| 亚洲一区二区三区精品在线| 91污片在线观看| 亚洲欧洲av在线| 91同城在线观看| 亚洲欧洲韩国日本视频| 国产成人av在线影院| 久久在线观看免费| 国内成+人亚洲+欧美+综合在线| 日韩午夜激情av| 美日韩一级片在线观看| 日韩午夜在线观看| 久久av中文字幕片| 精品国产3级a| 国产精品18久久久久久久久久久久| 精品国产a毛片| 国产精品一品视频| 国产精品三级电影| 成人av免费在线播放| 亚洲人精品午夜| 欧美写真视频网站| 五月激情综合网| 欧美成人官网二区| 国产一区在线精品| 国产精品欧美一级免费| fc2成人免费人成在线观看播放 | 欧美电视剧在线看免费| 久久精品国产99| 国产三级精品在线| 91社区在线播放| 亚洲动漫第一页| 欧美mv日韩mv亚洲| 国产成人综合亚洲网站| 国产精品电影一区二区三区| 欧美亚洲国产bt| 蜜臀av一区二区在线观看| 久久影院视频免费| 91在线观看地址| 日本亚洲三级在线| 国产精品美女一区二区三区| 色视频欧美一区二区三区| 天天综合日日夜夜精品| 亚洲精品一区二区在线观看| 91在线观看一区二区|