找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3438|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STM32戰(zhàn)艦迷你板的紅外實(shí)驗(yàn)加了蜂鳴器 附程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:562896 發(fā)表于 2019-6-15 12:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
紅外遙控是一種無(wú)線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成
本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來(lái)越多的應(yīng)用到計(jì)
算機(jī)系統(tǒng)中。
由于紅外線遙控不具有像無(wú)線電遙控那樣穿過(guò)障礙物去控制被控對(duì)象的能力,所以,在設(shè)
計(jì)紅外線遙控器時(shí),不必要像無(wú)線電遙控器那樣,每套(發(fā)射器和接收器)要有不同的遙控頻率
或編碼(否則,就會(huì)隔墻控制或干擾鄰居的家用電器),所以同類(lèi)產(chǎn)品的紅外線遙控器,可以有
相同的遙控頻率或編碼,而不會(huì)出現(xiàn)遙控信號(hào)“串門(mén)”的情況。這對(duì)于大批量生產(chǎn)以及在家用
電器上普及紅外線遙控提供了極大的方面。由于紅外線為不可見(jiàn)光,因此對(duì)環(huán)境影響很小,再
由紅外光波動(dòng)波長(zhǎng)遠(yuǎn)小于無(wú)線電波的波長(zhǎng),所以紅外線遙控不會(huì)影響其他家用電器,也不會(huì)影
響臨近的無(wú)線電設(shè)備。
紅外遙控的編碼方式目前廣泛使用的是:PWM(脈沖寬度調(diào)制)的 NEC 協(xié)議和 Philips
PPM(脈沖位置調(diào)制) 的 RC-5 協(xié)議的。ALIENTEK MiniSTM32 開(kāi)發(fā)板配套的遙控器使用的是
NEC 協(xié)議,其特征如下:
1、8 位地址和 8 位指令長(zhǎng)度;
2、地址和命令 2 次傳輸(確?煽啃裕
3、PWM 脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1”;
4、載波頻率為 38Khz;
5、位時(shí)間為 1.125ms 或 2.25ms;
NEC 碼的位定義:一個(gè)脈沖對(duì)應(yīng) 560us 的連續(xù)載波,一個(gè)邏輯 1 傳輸需要 2.25ms(560us
脈沖+1680us 低電平),一個(gè)邏輯 0 的傳輸需要 1.125ms(560us 脈沖+560us 低電平)。而遙控
接收頭在收到脈沖的時(shí)候?yàn)榈碗娖,在沒(méi)有脈沖的時(shí)候?yàn)楦唠娖剑@樣,我們?cè)诮邮疹^端收到
的信號(hào)為:邏輯 1 應(yīng)該是 560us 低+1680us 高,邏輯 0 應(yīng)該是 560us 低+560us 高。
NEC 遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼
由一個(gè) 9ms 的低電平和一個(gè) 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是
8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕ǹ?br /> 用于校驗(yàn))。
我們遙控器的按鍵▽按下時(shí),從紅外接收頭端收到的波形如圖
紅外遙控是一種無(wú)線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成
本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來(lái)越多的應(yīng)用到計(jì)
算機(jī)系統(tǒng)中。
由于紅外線遙控不具有像無(wú)線電遙控那樣穿過(guò)障礙物去控制被控對(duì)象的能力,所以,在設(shè)
計(jì)紅外線遙控器時(shí),不必要像無(wú)線電遙控器那樣,每套(發(fā)射器和接收器)要有不同的遙控頻率
或編碼(否則,就會(huì)隔墻控制或干擾鄰居的家用電器),所以同類(lèi)產(chǎn)品的紅外線遙控器,可以有
相同的遙控頻率或編碼,而不會(huì)出現(xiàn)遙控信號(hào)“串門(mén)”的情況。這對(duì)于大批量生產(chǎn)以及在家用
電器上普及紅外線遙控提供了極大的方面。由于紅外線為不可見(jiàn)光,因此對(duì)環(huán)境影響很小,再
由紅外光波動(dòng)波長(zhǎng)遠(yuǎn)小于無(wú)線電波的波長(zhǎng),所以紅外線遙控不會(huì)影響其他家用電器,也不會(huì)影
響臨近的無(wú)線電設(shè)備。
紅外遙控的編碼方式目前廣泛使用的是:PWM(脈沖寬度調(diào)制)的 NEC 協(xié)議和 Philips
PPM(脈沖位置調(diào)制) 的 RC-5 協(xié)議的。ALIENTEK MiniSTM32 開(kāi)發(fā)板配套的遙控器使用的是
NEC 協(xié)議,其特征如下:
1、8 位地址和 8 位指令長(zhǎng)度;
2、地址和命令 2 次傳輸(確?煽啃裕
3、PWM 脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1”;
4、載波頻率為 38Khz;
5、位時(shí)間為 1.125ms 或 2.25ms;
NEC 碼的位定義:一個(gè)脈沖對(duì)應(yīng) 560us 的連續(xù)載波,一個(gè)邏輯 1 傳輸需要 2.25ms(560us
脈沖+1680us 低電平),一個(gè)邏輯 0 的傳輸需要 1.125ms(560us 脈沖+560us 低電平)。而遙控
接收頭在收到脈沖的時(shí)候?yàn)榈碗娖剑跊](méi)有脈沖的時(shí)候?yàn)楦唠娖,這樣,我們?cè)诮邮疹^端收到
的信號(hào)為:邏輯 1 應(yīng)該是 560us 低+1680us 高,邏輯 0 應(yīng)該是 560us 低+560us 高。
NEC 遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼
由一個(gè) 9ms 的低電平和一個(gè) 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是
8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕ǹ?br /> 用于校驗(yàn))。
我們遙控器的按鍵▽按下時(shí),從紅外接收頭端收到的波形如圖

紅外遙控是一種無(wú)線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成
本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來(lái)越多的應(yīng)用到計(jì)
算機(jī)系統(tǒng)中。
由于紅外線遙控不具有像無(wú)線電遙控那樣穿過(guò)障礙物去控制被控對(duì)象的能力,所以,在設(shè)
計(jì)紅外線遙控器時(shí),不必要像無(wú)線電遙控器那樣,每套(發(fā)射器和接收器)要有不同的遙控頻率
或編碼(否則,就會(huì)隔墻控制或干擾鄰居的家用電器),所以同類(lèi)產(chǎn)品的紅外線遙控器,可以有
相同的遙控頻率或編碼,而不會(huì)出現(xiàn)遙控信號(hào)“串門(mén)”的情況。這對(duì)于大批量生產(chǎn)以及在家用
電器上普及紅外線遙控提供了極大的方面。由于紅外線為不可見(jiàn)光,因此對(duì)環(huán)境影響很小,再
由紅外光波動(dòng)波長(zhǎng)遠(yuǎn)小于無(wú)線電波的波長(zhǎng),所以紅外線遙控不會(huì)影響其他家用電器,也不會(huì)影
響臨近的無(wú)線電設(shè)備。
紅外遙控的編碼方式目前廣泛使用的是:PWM(脈沖寬度調(diào)制)的 NEC 協(xié)議和 Philips
PPM(脈沖位置調(diào)制) 的 RC-5 協(xié)議的。ALIENTEK MiniSTM32 開(kāi)發(fā)板配套的遙控器使用的是
NEC 協(xié)議,其特征如下:
1、8 位地址和 8 位指令長(zhǎng)度;
2、地址和命令 2 次傳輸(確?煽啃裕
3、PWM 脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1”;
4、載波頻率為 38Khz;
5、位時(shí)間為 1.125ms 或 2.25ms;
NEC 碼的位定義:一個(gè)脈沖對(duì)應(yīng) 560us 的連續(xù)載波,一個(gè)邏輯 1 傳輸需要 2.25ms(560us
脈沖+1680us 低電平),一個(gè)邏輯 0 的傳輸需要 1.125ms(560us 脈沖+560us 低電平)。而遙控
接收頭在收到脈沖的時(shí)候?yàn)榈碗娖,在沒(méi)有脈沖的時(shí)候?yàn)楦唠娖,這樣,我們?cè)诮邮疹^端收到
的信號(hào)為:邏輯 1 應(yīng)該是 560us 低+1680us 高,邏輯 0 應(yīng)該是 560us 低+560us 高。
NEC 遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼
由一個(gè) 9ms 的低電平和一個(gè) 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是
8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕ǹ?br /> 用于校驗(yàn))

單片機(jī)源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "remote.h"  
  7. #include "ds18b20.h"  
  8. #include "beep.h"

  9. void ds18b20(void)
  10. {
  11. u8 t=0;        
  12. short temperature;
  13.                 while(DS18B20_Init())        //DS18B20初始化        
  14.         {
  15.                 LCD_ShowString(60,130,200,16,16,(u8*)"DS18B20 Error");
  16.                 delay_ms(200);
  17.                 LCD_Fill(60,130,239,90+16,WHITE);
  18.                  delay_ms(200);
  19.         }               
  20. POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
  21.          LCD_ShowString(60,130,200,16,16,(u8*)"Temp:   . C");        
  22. if(t%10==0)//每100ms讀取一次
  23.                 {                                                                          
  24.                         temperature=DS18B20_Get_Temp();        
  25.                         if(temperature<0)
  26.                         {
  27.                                 LCD_ShowChar(60+40,130,'-',16,0);                        //顯示負(fù)號(hào)
  28.                                 temperature=-temperature;                                        //轉(zhuǎn)為正數(shù)
  29.                         }else LCD_ShowChar(60+40,130,' ',16,0);                        //去掉負(fù)號(hào)
  30.                         LCD_ShowNum(60+40+8,130,temperature/10,2,16);        //顯示正數(shù)部分            
  31.                            LCD_ShowNum(60+40+32,130,temperature%10,1,16);        //顯示小數(shù)部分                    
  32.                 }                                   
  33.                  delay_ms(10);
  34.                 t++;
  35. }

  36. int main(void)
  37. {
  38.         u8 key;
  39.         u8 *str=0;         
  40.         delay_init();                     //延時(shí)函數(shù)初始?
  41.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2         
  42.         uart_init(9600);                 //串口初始化為9600
  43.         LED_Init();                                  //初始化與LED連接的硬件接口
  44.          LCD_Init();
  45.         Remote_Init();                        //紅外接收初始化        
  46.         BEEP_Init();//蜂鳴器初始化                        
  47.          POINT_COLOR=RED;//設(shè)置字體為紅色
  48.                 LCD_ShowString(60,50,200,16,16,(u8*)"Mini STM32");        
  49.                 LCD_ShowString(60,70,200,16,16,(u8*)"REMOTE TEST");        
  50.            LCD_ShowString(60,90,200,16,16,(u8*)"KEYVAL:");               
  51.            LCD_ShowString(60,110,200,16,16,(u8*)"SYMBOL:");
  52.         while(1)
  53.         {
  54.                 key=Remote_Scan();        
  55.                 if(key)
  56.                 {         
  57.                         LCD_ShowNum(116,90,key,3,16);                //顯示鍵值         
  58.                         switch(key)
  59.                         {
  60.                                 case 0:str=(u8*)"ERROR";break;                           
  61.                                 case 162:str=(u8*)"POWER",NVIC_SystemReset();break;         //復(fù)位   
  62.                                 case 98:str=(u8*)"UP",LED1=0;break; //DS1點(diǎn)亮   
  63.                                 case 2:str=(u8*)"PLAY",ds18b20();break;        //DS1熄滅         
  64.                                 case 226:str=(u8*)"ALIENTEK",play();break;                  
  65.                                 case 194:str=(u8*)"RIGHT",LED0=0;break;         //DS0點(diǎn)亮  
  66.                                 case 34:str=(u8*)"LEFT",LED0=1;break;         //DS0熄滅
  67.                                 case 224:str=(u8*)"VOL-",LCD_Fill(10,200,230,300,LGRAY);break;                  
  68.                                 case 168:str=(u8*)"DOWN",LED1=1;break;                  
  69.                                 case 144:str=(u8*)"VOL+",LCD_Fill(10,200,230,300,BROWN);break;                    
  70.                                 case 104:str=(u8*)"1",LCD_Fill(10,200,230,300,WHITE);break;                  
  71.                                 case 152:str=(u8*)"2",LCD_Fill(10,200,230,300,BLACK);break;           
  72.                                 case 176:str=(u8*)"3",LCD_Fill(10,200,230,300,BLUE);break;            
  73.                                 case 48:str=(u8*)"4",LCD_Fill(10,200,230,300,RED);break;                    
  74.                                 case 24:str=(u8*)"5",LCD_Fill(10,200,230,300,MAGENTA);break;                    
  75.                                 case 122:str=(u8*)"6",LCD_Fill(10,200,230,300,GREEN);break;                  
  76.                                 case 16:str=(u8*)"7",LCD_Fill(10,200,230,300,CYAN);break;                                                                  
  77.                                 case 56:str=(u8*)"8",LCD_Fill(10,200,230,300,YELLOW);break;         
  78.                                 case 90:str=(u8*)"9",LCD_Fill(10,200,230,300,BRRED);break;
  79.                                 case 66:str=(u8*)"0",LCD_Fill(10,200,230,300,GRAY);break;
  80.                                 case 82:str=(u8*)"DELETE",LCD_Fill(60,130,239,130+16,WHITE);;break;                 
  81.                         }
  82.                         LCD_Fill(116,110,116+8*8,110+16,WHITE);        //清除之前的顯示
  83.                         LCD_ShowString(116,110,200,16,16,str);        //顯示SYMBOL
  84.                 }else delay_ms(10);         
  85.                
  86.         }
  87. }
復(fù)制代碼

所有資料51hei提供下載:
紅外遙控器實(shí)驗(yàn).rar (380.46 KB, 下載次數(shù): 16)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:656093 發(fā)表于 2019-12-4 17:05 | 只看該作者
添加蜂鳴器功能,怎么不響呢,上邊代碼并不是蜂鳴器的,還請(qǐng)大神請(qǐng)教
回復(fù)

使用道具 舉報(bào)

板凳
ID:657755 發(fā)表于 2019-12-6 19:56 | 只看該作者
蜂鳴器代碼怎么寫(xiě)啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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