紅外遙控是一種無線、非接觸控制技術,具有抗干擾能力強,信息傳輸可靠,功耗低,成
本低,易實現(xiàn)等顯著優(yōu)點,被諸多電子設備特別是家用電器廣泛采用,并越來越多的應用到計
算機系統(tǒng)中。
由于紅外線遙控不具有像無線電遙控那樣穿過障礙物去控制被控對象的能力,所以,在設
計紅外線遙控器時,不必要像無線電遙控器那樣,每套(發(fā)射器和接收器)要有不同的遙控頻率
或編碼(否則,就會隔墻控制或干擾鄰居的家用電器),所以同類產品的紅外線遙控器,可以有
相同的遙控頻率或編碼,而不會出現(xiàn)遙控信號“串門”的情況。這對于大批量生產以及在家用
電器上普及紅外線遙控提供了極大的方面。由于紅外線為不可見光,因此對環(huán)境影響很小,再
由紅外光波動波長遠小于無線電波的波長,所以紅外線遙控不會影響其他家用電器,也不會影
響臨近的無線電設備。
紅外遙控的編碼方式目前廣泛使用的是:PWM(脈沖寬度調制)的 NEC 協(xié)議和 Philips
PPM(脈沖位置調制) 的 RC-5 協(xié)議的。ALIENTEK MiniSTM32 開發(fā)板配套的遙控器使用的是
NEC 協(xié)議,其特征如下:
1、8 位地址和 8 位指令長度;
2、地址和命令 2 次傳輸(確保可靠性)
3、PWM 脈沖位置調制,以發(fā)射紅外載波的占空比代表“0”和“1”;
4、載波頻率為 38Khz;
5、位時間為 1.125ms 或 2.25ms;
NEC 碼的位定義:一個脈沖對應 560us 的連續(xù)載波,一個邏輯 1 傳輸需要 2.25ms(560us
脈沖+1680us 低電平),一個邏輯 0 的傳輸需要 1.125ms(560us 脈沖+560us 低電平)。而遙控
接收頭在收到脈沖的時候為低電平,在沒有脈沖的時候為高電平,這樣,我們在接收頭端收到
的信號為:邏輯 1 應該是 560us 低+1680us 高,邏輯 0 應該是 560us 低+560us 高。
NEC 遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼
由一個 9ms 的低電平和一個 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是
8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕ǹ?br />
用于校驗)。
我們遙控器的按鍵▽按下時,從紅外接收頭端收到的波形如圖
紅外遙控是一種無線、非接觸控制技術,具有抗干擾能力強,信息傳輸可靠,功耗低,成
本低,易實現(xiàn)等顯著優(yōu)點,被諸多電子設備特別是家用電器廣泛采用,并越來越多的應用到計
算機系統(tǒng)中。
由于紅外線遙控不具有像無線電遙控那樣穿過障礙物去控制被控對象的能力,所以,在設
計紅外線遙控器時,不必要像無線電遙控器那樣,每套(發(fā)射器和接收器)要有不同的遙控頻率
或編碼(否則,就會隔墻控制或干擾鄰居的家用電器),所以同類產品的紅外線遙控器,可以有
相同的遙控頻率或編碼,而不會出現(xiàn)遙控信號“串門”的情況。這對于大批量生產以及在家用
電器上普及紅外線遙控提供了極大的方面。由于紅外線為不可見光,因此對環(huán)境影響很小,再
由紅外光波動波長遠小于無線電波的波長,所以紅外線遙控不會影響其他家用電器,也不會影
響臨近的無線電設備。
紅外遙控的編碼方式目前廣泛使用的是:PWM(脈沖寬度調制)的 NEC 協(xié)議和 Philips
PPM(脈沖位置調制) 的 RC-5 協(xié)議的。ALIENTEK MiniSTM32 開發(fā)板配套的遙控器使用的是
NEC 協(xié)議,其特征如下:
1、8 位地址和 8 位指令長度;
2、地址和命令 2 次傳輸(確保可靠性)
3、PWM 脈沖位置調制,以發(fā)射紅外載波的占空比代表“0”和“1”;
4、載波頻率為 38Khz;
5、位時間為 1.125ms 或 2.25ms;
NEC 碼的位定義:一個脈沖對應 560us 的連續(xù)載波,一個邏輯 1 傳輸需要 2.25ms(560us
脈沖+1680us 低電平),一個邏輯 0 的傳輸需要 1.125ms(560us 脈沖+560us 低電平)。而遙控
接收頭在收到脈沖的時候為低電平,在沒有脈沖的時候為高電平,這樣,我們在接收頭端收到
的信號為:邏輯 1 應該是 560us 低+1680us 高,邏輯 0 應該是 560us 低+560us 高。
NEC 遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼
由一個 9ms 的低電平和一個 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是
8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕ǹ?br />
用于校驗)。
我們遙控器的按鍵▽按下時,從紅外接收頭端收到的波形如圖
紅外遙控是一種無線、非接觸控制技術,具有抗干擾能力強,信息傳輸可靠,功耗低,成
本低,易實現(xiàn)等顯著優(yōu)點,被諸多電子設備特別是家用電器廣泛采用,并越來越多的應用到計
算機系統(tǒng)中。
由于紅外線遙控不具有像無線電遙控那樣穿過障礙物去控制被控對象的能力,所以,在設
計紅外線遙控器時,不必要像無線電遙控器那樣,每套(發(fā)射器和接收器)要有不同的遙控頻率
或編碼(否則,就會隔墻控制或干擾鄰居的家用電器),所以同類產品的紅外線遙控器,可以有
相同的遙控頻率或編碼,而不會出現(xiàn)遙控信號“串門”的情況。這對于大批量生產以及在家用
電器上普及紅外線遙控提供了極大的方面。由于紅外線為不可見光,因此對環(huán)境影響很小,再
由紅外光波動波長遠小于無線電波的波長,所以紅外線遙控不會影響其他家用電器,也不會影
響臨近的無線電設備。
紅外遙控的編碼方式目前廣泛使用的是:PWM(脈沖寬度調制)的 NEC 協(xié)議和 Philips
PPM(脈沖位置調制) 的 RC-5 協(xié)議的。ALIENTEK MiniSTM32 開發(fā)板配套的遙控器使用的是
NEC 協(xié)議,其特征如下:
1、8 位地址和 8 位指令長度;
2、地址和命令 2 次傳輸(確保可靠性)
3、PWM 脈沖位置調制,以發(fā)射紅外載波的占空比代表“0”和“1”;
4、載波頻率為 38Khz;
5、位時間為 1.125ms 或 2.25ms;
NEC 碼的位定義:一個脈沖對應 560us 的連續(xù)載波,一個邏輯 1 傳輸需要 2.25ms(560us
脈沖+1680us 低電平),一個邏輯 0 的傳輸需要 1.125ms(560us 脈沖+560us 低電平)。而遙控
接收頭在收到脈沖的時候為低電平,在沒有脈沖的時候為高電平,這樣,我們在接收頭端收到
的信號為:邏輯 1 應該是 560us 低+1680us 高,邏輯 0 應該是 560us 低+560us 高。
NEC 遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼
由一個 9ms 的低電平和一個 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是
8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕ǹ?br />
用于校驗)
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "lcd.h"
- #include "remote.h"
- #include "ds18b20.h"
- #include "beep.h"
- void ds18b20(void)
- {
- u8 t=0;
- short temperature;
- while(DS18B20_Init()) //DS18B20初始化
- {
- LCD_ShowString(60,130,200,16,16,(u8*)"DS18B20 Error");
- delay_ms(200);
- LCD_Fill(60,130,239,90+16,WHITE);
- delay_ms(200);
- }
- POINT_COLOR=BLUE;//設置字體為藍色
- LCD_ShowString(60,130,200,16,16,(u8*)"Temp: . C");
- if(t%10==0)//每100ms讀取一次
- {
- temperature=DS18B20_Get_Temp();
- if(temperature<0)
- {
- LCD_ShowChar(60+40,130,'-',16,0); //顯示負號
- temperature=-temperature; //轉為正數(shù)
- }else LCD_ShowChar(60+40,130,' ',16,0); //去掉負號
- LCD_ShowNum(60+40+8,130,temperature/10,2,16); //顯示正數(shù)部分
- LCD_ShowNum(60+40+32,130,temperature%10,1,16); //顯示小數(shù)部分
- }
- delay_ms(10);
- t++;
- }
- int main(void)
- {
- u8 key;
- u8 *str=0;
- delay_init(); //延時函數(shù)初始?
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優(yōu)先級分組2
- uart_init(9600); //串口初始化為9600
- LED_Init(); //初始化與LED連接的硬件接口
- LCD_Init();
- Remote_Init(); //紅外接收初始化
- BEEP_Init();//蜂鳴器初始化
- POINT_COLOR=RED;//設置字體為紅色
- LCD_ShowString(60,50,200,16,16,(u8*)"Mini STM32");
- LCD_ShowString(60,70,200,16,16,(u8*)"REMOTE TEST");
- LCD_ShowString(60,90,200,16,16,(u8*)"KEYVAL:");
- LCD_ShowString(60,110,200,16,16,(u8*)"SYMBOL:");
- while(1)
- {
- key=Remote_Scan();
- if(key)
- {
- LCD_ShowNum(116,90,key,3,16); //顯示鍵值
- switch(key)
- {
- case 0:str=(u8*)"ERROR";break;
- case 162:str=(u8*)"POWER",NVIC_SystemReset();break; //復位
- case 98:str=(u8*)"UP",LED1=0;break; //DS1點亮
- case 2:str=(u8*)"PLAY",ds18b20();break; //DS1熄滅
- case 226:str=(u8*)"ALIENTEK",play();break;
- case 194:str=(u8*)"RIGHT",LED0=0;break; //DS0點亮
- case 34:str=(u8*)"LEFT",LED0=1;break; //DS0熄滅
- case 224:str=(u8*)"VOL-",LCD_Fill(10,200,230,300,LGRAY);break;
- case 168:str=(u8*)"DOWN",LED1=1;break;
- case 144:str=(u8*)"VOL+",LCD_Fill(10,200,230,300,BROWN);break;
- case 104:str=(u8*)"1",LCD_Fill(10,200,230,300,WHITE);break;
- case 152:str=(u8*)"2",LCD_Fill(10,200,230,300,BLACK);break;
- case 176:str=(u8*)"3",LCD_Fill(10,200,230,300,BLUE);break;
- case 48:str=(u8*)"4",LCD_Fill(10,200,230,300,RED);break;
- case 24:str=(u8*)"5",LCD_Fill(10,200,230,300,MAGENTA);break;
- case 122:str=(u8*)"6",LCD_Fill(10,200,230,300,GREEN);break;
- case 16:str=(u8*)"7",LCD_Fill(10,200,230,300,CYAN);break;
- case 56:str=(u8*)"8",LCD_Fill(10,200,230,300,YELLOW);break;
- case 90:str=(u8*)"9",LCD_Fill(10,200,230,300,BRRED);break;
- case 66:str=(u8*)"0",LCD_Fill(10,200,230,300,GRAY);break;
- case 82:str=(u8*)"DELETE",LCD_Fill(60,130,239,130+16,WHITE);;break;
- }
- LCD_Fill(116,110,116+8*8,110+16,WHITE); //清除之前的顯示
- LCD_ShowString(116,110,200,16,16,str); //顯示SYMBOL
- }else delay_ms(10);
-
- }
- }
復制代碼
所有資料51hei提供下載:
紅外遙控器實驗.rar
(380.46 KB, 下載次數(shù): 16)
2019-6-15 12:05 上傳
點擊文件名下載附件
戰(zhàn)艦迷你板
|