|
視頻教程:
原理圖(工程文件可在本帖附件中下載)
stm8單片機(jī)源程序如下:
- #include"stm8s.h"
- #include"stm8s_clk.h"
- #include"stm8s_gpio.h"
- #include"Cry12864.h"
- #include"Time.h"
- #include"ir.h"
- uchar key_val,a=0,b=0,c=0,d=0;//定義鍵值
- extern uchar Ir_receive_ok;//紅外接收成功標(biāo)志
- void main(void)
- { CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//系統(tǒng)時(shí)鐘內(nèi)部時(shí)鐘1分頻
- IrInt(); //紅外初始化
- GPIO_Init(GPIOF, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST);//定義LED1的管腳的模式
- GPIO_Init(GPIOF, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST);//定義LED2的管腳的模式
- GPIO_Init(GPIOF, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);//定義LED3的管腳的模式
- GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_OUT_PP_HIGH_FAST);//定義繼電器1的管腳的模式
- GPIO_Init(GPIOA, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST);//定義繼電器1的管腳的模式
- GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST);//定義繼電器1的管腳的模式
- GPIO_Init(GPIOA, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);//定義繼電器1的管腳的模式
- Ini_Lcd();//液晶初始化
- TIM2_Config();//定時(shí)器2初始化
- DispString(0,0,"熒光燈:");
- DispString(1,0,"電視機(jī):");
- DispString(2,0,"電冰箱:");
- DispString(3,0,"電風(fēng)扇:");
- // DispString(0,6,"000");
- //DispString(1,6,"000");
- // DispString(2,6,"000");
- // DispString(3,6,"000");
-
-
- __enable_interrupt();//開啟總中斷
-
- while(1)
- {
- if( Ir_receive_ok == 1 ) //一幀紅外數(shù)據(jù)接收完成
- {
- key_val = Ir_Process();
- Ir_receive_ok=0;
- // Disp1Char(3,0,0x30+key_val/100);
- // Disp1Char(3,1,0x30+key_val%100/10);
- // Disp1Char(3,2,0x30+key_val%100%10);
-
- //不同的遙控器面板對應(yīng)不同的鍵值 0-9
- switch( key_val )
- { case 162: GPIO_WriteReverse(GPIOF, GPIO_PIN_5);
- GPIO_WriteReverse(GPIOA, GPIO_PIN_2);
- DispString(0,4,"開");
- DispString(0,6,"162");
- a++;
- if(a==2)
- {DispString(0,4,"關(guān)");
- //DispString(0,6,"162");
- a=0;
-
- }
- break;
-
- case 98: GPIO_WriteReverse(GPIOF, GPIO_PIN_6);
- GPIO_WriteReverse(GPIOA, GPIO_PIN_1);
- DispString(1,4,"開");
- DispString(1,6,"98");
- b++;
- if(b==2)
- {DispString(1,4,"關(guān)");
- //DispString(0,6,"162");
- b=0;
-
- }
- break;
- case 226: GPIO_WriteReverse(GPIOF, GPIO_PIN_7);
- GPIO_WriteReverse(GPIOA, GPIO_PIN_3);
- DispString(2,4,"開");
- DispString(2,6,"226");
- c++;
- if(c==2)
- {DispString(2,4,"關(guān)");
- //DispString(0,6,"162");
- c=0;
-
- }
- break;
- case 34: //GPIO_WriteReverse(GPIOF, GPIO_PIN_6);
- GPIO_WriteReverse(GPIOA, GPIO_PIN_4);
- DispString(3,4,"開");
- DispString(3,6,"34");
- d++;
- if(d==2)
- {DispString(3,4,"關(guān)");
- //DispString(0,6,"162");
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
STM8紅外解碼.rar
(1.16 MB, 下載次數(shù): 58)
2017-11-10 20:28 上傳
點(diǎn)擊文件名下載附件
|
評分
-
查看全部評分
|