版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、./* * stm32F103VET6 紅外驅(qū)動【遙控器解碼實驗程序】 * * 遙控器 :42位編碼 * */ #include "stm32f10x.h" #include "exti.h" #include "beep.h" #include "SysTick.h" #define
2、0; LED1_0 GPIOD->BRR = 0x00000100 /LED低電平 #define LED2_0 GPIOD->BRR = 0x00000200 #define LED3_0 GPIOD->BRR = 0x00000400 #define L
3、ED4_0 GPIOD->BRR = 0x00000800 #define LED1_1 GPIOD->BSRR = 0x00000100 /LED高電平 #define LED2_1 GPIOD->BSRR = 0x00000200 #define L
4、ED3_1 GPIOD->BSRR = 0x00000400 #define LED4_1 GPIOD->BSRR = 0x00000800 #define IR_Hongwai_0 GPIOE->BRR = 0x00000004 /紅外數(shù)據(jù)低電平 #define
5、 IR_Hongwai_1 GPIOE->BSRR = 0x00000004 /紅外數(shù)據(jù)高電平 #define IR_Hongwai_x GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2) /讀取紅外電平狀態(tài) unsigned char TimeByte; unsigned int IR_Tireafg4; unsigned int IR_xidw
6、rit8 = 0, 0, 0, 0, 0, 0 ,0, 0; /* * GPIO端口配置子函數(shù) */ void GPIO_InitStructReadtempCmd(void) GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; /配置GPIO管腳 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
7、0;/配置管腳為輸入上拉 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; /配置管腳速率50MHZ GPIO_Init(GPIOE, &GPIO_InitStruct); /初始化指定端口 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; /配置管腳陪推挽式輸出 GPIO_InitStruct.GPIO_Sp
8、eed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStruct)
9、; /* * 配置外設(shè)時鐘子函數(shù) */ void RCC_APB2PeriphReadtempyCmd(void) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /打開GPIOB外設(shè)時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); /打開GPIOE外設(shè)時鐘 RCC_APB2Periph
10、ClockCmd(RCC_APB2Periph_GPIOD, ENABLE); /打開GPIOD外設(shè)時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE); /打開AFIO復用功能外設(shè)時鐘 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); /* * 計算低脈寬持續(xù)時間Count1 * 10us */ unsigned int IR_Hongw
11、aiRead_LSB_Cmd() unsigned int Count1 = 0; /定義時間變量 IR_Hongwai_0; /紅外數(shù)據(jù)低電平 do /進入循環(huán)體 Count1+; /時間變量加1 Delay_10us(1); /延時10us while(IR_Hongwai_x = 0); /判斷條件如果讀出來的紅外數(shù)據(jù)為高電平跳出循
12、環(huán)體 return(Count1); /返回時間變量積數(shù) /* * 計算高脈寬持續(xù)時間Count2 * 10us */ unsigned int IR_HongwaiRead_MSB_Cmd() unsigned int Count2 = 0; /定義時間變量 IR_Hongwai_1; /紅外數(shù)據(jù)高電平 do /進入循環(huán)體
13、160;Count2+; /時間變量加1 Delay_10us(1); /延時10us while(IR_Hongwai_x = 1); /判斷條件如果讀出來的紅外數(shù)據(jù)為低電平跳出循環(huán)體 return(Count2); /* * 函數(shù)主體 */ int main(void) SystemInit(); /初始化系統(tǒng)時鐘進入72M主頻 SY
14、STICK_InitStructReadTCmd(); /初始化SysTick配置器寄存器 RCC_APB2PeriphReadtempyCmd(); /初始化外設(shè)時鐘配置寄存器 GPIO_InitStructReadtempCmd(); /初始化GPIO端口配置寄存器 EXTI_InitStructReadtempCmd(); /初始化EXTI外部線路寄存器 NVIC_InitStructReadtempCmd(); /初始化NVIC
15、中斷配置寄存器 while(1) /* * EXTI外部中斷線服務程序 */ void EXTI2_IRQHandler(void) unsigned char i = 0; unsigned char flag = 1; / unsigned char flag1 = 1; unsigned int Countline2 = 0; IR_Hongwai_1; Countlin
16、e2 = IR_HongwaiRead_LSB_Cmd(); /低電平引導碼 9ms判斷 if(Countline2 < 850) | (Countline2 > 950) /小于8694us 大于9272us 一直循環(huán)否則跳出 return; Countline2 = IR_HongwaiRead_MSB_Cmd(); /高電平引導碼 4.5ms判斷 if(Countline2 < 400) | (Countline2 > 450) /小于4195
17、us 大于4712us 一直循環(huán)否則跳出 return; TimeByte = 0; for(i = 1; i < 14; i+) TimeByte = TimeByte >> 1; Countline2 = IR_HongwaiRead_LSB_Cmd(); /低電平延時0.56 判斷 if(Countline2 < 40) | (Countline2 > 85)/小于425us 大于851us 一直循環(huán)否則跳出 retu
18、rn; Countline2 = IR_HongwaiRead_MSB_Cmd(); /高電平延時0.56判斷 if(Countline2 < 40) | (Countline2 > 200)/小于425us 大于1793us 一直循環(huán)否則跳出 return; if( Countline2 > 130) /高電平延時大于1300us寫1否則寫0 TimeByte |= 0x80; /寫1 &
19、#160;IR_Tireafg0 = TimeByte; TimeByte = 0; for(i = 14; i < 27; i+) TimeByte = TimeByte >> 1; Countline2 = IR_HongwaiRead_LSB_Cmd(); if(Countline2 < 40) | (Countline2 > 85) return; Countline2 = IR_HongwaiRead_MSB_Cmd(); if(Count
20、line2 < 40) | (Countline2 > 200) return; if( Countline2 > 130) TimeByte |= 0x80; IR_Tireafg1 = TimeByte; TimeByte = 0; for(i = 27; i < 35; i+) TimeByte = TimeByte >> 1; Countline2 = IR_HongwaiRead_LSB_Cmd()
21、; if(Countline2 < 40) | (Countline2 > 85) return; Countline2 = IR_HongwaiRead_MSB_Cmd(); if(Countline2 < 40) && (Countline2 > 200) return; if( Countline2 > 130) TimeByte |= 0x80; IR_Tireafg2 = Ti
22、meByte; TimeByte = 0; for(i = 35; i < 43; i+) TimeByte = TimeByte >> 1; Countline2 = IR_HongwaiRead_LSB_Cmd(); while(Countline2 < 40) | (Countline2 > 85) return; Countline2 = IR_HongwaiRead_MSB_Cmd(); while(Countline2 < 40)
23、| (Countline2 > 200) return; if( Countline2 > 130) TimeByte |= 0x80; IR_Tireafg3 = TimeByte; /*判斷用戶正碼和反碼*/ do if(IR_Tireafg0 = 0x08 & IR_Tireafg1 = 0xF7 ) flag = 0; while(flag = 1); &
24、#160; /*判斷按鍵正碼和反碼*/ /* do if(IR_Tireafg2 = IR_Tireafg3) flag1 = 0; while(flag1 = 0); */ /*按下鍵碼對應LED點亮*/ switch (IR_Tireafg2) case
25、;0x00: /按鍵 0 LED1_1; LED2_0; LED3_0; LED4_0; break; case 0x01: /按鍵 1 LED1_0; LED2_1; LED3_0; LED4_0; break; case 0x02: /按鍵 2 LED
26、1_0; LED2_0; LED3_1; LED4_0; break; case 0x03: /按鍵 3 LED1_0; LED2_0; LED3_0; LED4_1; break; case 0x04: /按鍵 4 LED1_0; LED2_0; LED3_1; LED4_0; break;
27、case 0x05: /按鍵 5 LED1_0; LED2_1; LED3_0; LED4_0; break; case 0x06: /按鍵 6 LED1_1; LED2_0; LED3_0; LED4_0; break; case 0x07:
28、60;/按鍵 7 LED1_1; LED2_0; LED3_1; LED4_0; break; case 0x08: /按鍵 8 LED1_0; LED2_0; LED3_0; LED4_0; break; case 0x09: /按鍵 9 LED1_0; LED2_1; LED3_0; LED4_1;&
29、#160;break; case 0x15: /靜音鍵 LED1_0; LED2_1; LED3_1; LED4_0; break; case 0x1C: /開機鍵 LED1_1; LED2_0; LED3_0; LED4_1; break; case &
30、#160; 0x14: /OSD鍵 LED1_1; LED2_1; LED3_0; LED4_0; break; case 0x0E: /RECALL鍵 LED1_0; LED2_0; LED3_1; LED4_1; break; case 0x19: /
31、SLEEP鍵 LED1_1; LED2_1; LED3_1; LED4_0; break; case 0x0A: /A/C鍵 LED1_0; LED2_1; LED3_1; LED4_1; break; case 0x0F: /TV/AV鍵 LED1_1; LED2_1; LED3_1; LED4_1; break; case 0x13: /PP鍵 LED1_1; LED2_0; LED3_1; LED4_0; break;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離婚協(xié)議書起草與跨國婚姻解除服務合同3篇
- 2024年船舶照明安裝協(xié)議3篇
- 2024年食品供應鏈合作合同標準模板一
- 2024版?zhèn)€人借款協(xié)議含第三方擔保條款版B版
- 2025年度影視基地場地租賃及拍攝制作服務協(xié)議3篇
- 2024生物醫(yī)藥研發(fā)過程中數(shù)據(jù)共享協(xié)議
- 2024年金融衍生品期貨交易合同規(guī)范文本3篇
- 2024年虛擬展覽開發(fā)合同3篇
- 2024年綠色金融融資居間服務合同范本3篇
- 2024年集裝箱房屋買賣法律合同書樣本版B版
- 2024年山東省淄博市中考數(shù)學試卷(附答案)
- 合作社股權(quán)轉(zhuǎn)讓協(xié)議書參考
- 車輛火災應急處置
- 食品安全與傳染病預防
- 《濟南聯(lián)通公司成本管理問題及解決策略7000字論文》
- 191118-鋰離子電池專業(yè)術(shù)語英語對照大全
- 2024全新網(wǎng)絡與數(shù)據(jù)安全培訓
- 2023年貴州黔東南州州直機關(guān)遴選公務員筆試真題
- 心腦血管疾病預防課件
- DB35T 1036-2023 10kV及以下電力用戶業(yè)擴工程技術(shù)規(guī)范
- 中國移動自智網(wǎng)絡白皮書(2024) 強化自智網(wǎng)絡價值引領(lǐng)加速邁進L4級新階段
評論
0/150
提交評論