STM8_無線315&433通用解碼
/*
*********************************************************************************************************
*
*模塊名稱 : EV1527遙控解碼
*上升沿觸發(fā) 觸發(fā)中斷后延時(shí)一段時(shí)間后檢測引腳電平從而判斷0 1
采集上升沿觸發(fā)后第6 10 14 個(gè)振蕩周期時(shí)的引腳電平 RF98
PT2262 連續(xù)觸發(fā)是每個(gè)周期的間隔在15MS左右
EV1527 寬電平時(shí)間 500US 窄 250us 同步碼 5.7MS
*********************************************************************************************************
*/
#include "EV1527.h"
#include "led.h"
#include "tim1.h"
u8 EV1527_Status=0; //接收處理狀態(tài)
u8 EV1527_Receive_Count=0; //接收數(shù)據(jù)位計(jì)數(shù)
Receive_Data EV1527_Receive_Data[48]; //24位的脈沖
u8 EV1527_receive_ok=0; //接收完成標(biāo)志
//u8 EV1527_gather_count=3; //每個(gè)碼位采集3次
//u8 EV1527_code[3]; //用來暫時(shí)存儲(chǔ)采集3次得到的值
//u8 EV1527_repeat; //重復(fù)觸發(fā)計(jì)數(shù)
u8 EV1527_check_level_bit; //外部中斷觸發(fā)(上升沿)標(biāo)志。有外部中斷觸發(fā)后則開始檢測引腳電平是否有變化。
u16 Interval_tim_high=0; //上升沿觸發(fā)后高電平時(shí)間
u16 Interval_tim_low=0; //上升沿觸發(fā)后低電平時(shí)間
u8 EV1527_pin_state_buf; //引腳定義緩存
u16 EV1527_time_out_buf; //定時(shí)器超時(shí)時(shí)間緩存
u16 TongBuMa_low=0;
u16 a_count=0;
bool LearningModel=FALSE; //學(xué)習(xí)模式
bool INT_bit=FALSE;
// 定時(shí)器2配置函數(shù)
void EV1527_TIM1_Config(void)
{
TIM1_TimeBaseInit(8,TIM1_COUNTERMODE_UP,50000,0); //8分頻,定時(shí)50MS,1uS的分辨率
TIM1_ARRPreloadConfig(ENABLE);
TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);
TIM1_Cmd(ENABLE);//DISABLE
}
/*
初始化
*/
void EV1527_Init()
{
/* 輸入模式 */
GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PU_IT); //配置浮空輸入。
/* 將GPIOD端口設(shè)置為下降沿觸發(fā)中斷-*/
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);//下降沿觸發(fā)。
GPIO_Init(LED_PORTD, (LED_2|LED_3), GPIO_MODE_OUT_PP_HIGH_FAST );
EV1527_TIM1_Config();
}
/*
********************************************************************************
定時(shí)器溢出中斷內(nèi)處理
********************************************************************************
*/
void EV1527_TIM_IT_Updata_Handdle(void)
{
TIM1_SetCounter(0);
EV1527_Status=0;
EV1527_Receive_Count=0;
//EV1527_repeat=0;
//EV1527_Receive_Data=0;
Interval_tim_low=0;
EV1527_time_out_buf=0;
// TIM1_Cmd(DISABLE);
TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
}
/*
外部中斷觸發(fā)函數(shù)
開始接收地址碼跟數(shù)據(jù)碼
*/
void EV1527_ChuLi(void)
{
//for(EV1527_Receive_Count=0;EV1527_Receive_Count<48;EV1527_Receive_Count++)
EV1527_Receive_Count=0;
while(EV1527_Receive_Count<48)
{
while((EV1527_port->IDR &EV1527_pin)&&(EV1527_Status==1)); //如果是高電平就等待
Interval_tim_high=TIM1_GetCounter(); //記錄高電平時(shí)間
TIM1_SetCounter(0);
EV1527_Receive_Data[EV1527_Receive_Count].Width=Interval_tim_high;
EV1527_Receive_Data[EV1527_Receive_Count].Level=1; //保存到數(shù)組中
EV1527_Receive_Count++;
while(!(EV1527_port->IDR &EV1527_pin)&&(EV1527_Status==1)); //如果是低電平就等待
Interval_tim_low=TIM1_GetCounter(); //記錄高電平時(shí)間
TIM1_SetCounter(0);
EV1527_Receive_Data[EV1527_Receive_Count].Width=Interval_tim_low;
EV1527_Receive_Data[EV1527_Receive_Count].Level=0; //保存到數(shù)組中
EV1527_Receive_Count++;
if(EV1527_Status==0)
{
EV1527_Receive_Count=49;//超時(shí)退出
}
}
if(EV1527_Status==0)
{
EV1527_receive_ok=0;
EV1527_Receive_Count=0;
GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PU_IT);//配置上啦輸入。
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);//下降沿觸發(fā)。
TIM1_SetCounter(0);
}
else
{
EV1527_receive_ok=1;
}
}
void EV1527_Receive_Handle(void)
{
if(INT_bit==TRUE)
{
INT_bit=FALSE;
/* 開啟定時(shí)器 0 記錄低電平持續(xù)的時(shí)間,并檢測是否為同步碼 */
a_count=0;
TongBuMa_low=0;
EV1527_Status=1;
while(!(EV1527_port->IDR &EV1527_pin)&&(EV1527_Status==1)); //如果是低電平就等待
if(EV1527_Status==TRUE) TongBuMa_low=TIM1_GetCounter(); //記錄低電平時(shí)間
TIM1_SetCounter(0); //從新計(jì)時(shí)。
/* 檢測是否為同步碼*/
if((TongBuMa_low>=5000)&&(TongBuMa_low<=38000)) //檢測前一個(gè)低電平時(shí)間,是否符合同步碼標(biāo)
//是同步碼 關(guān)閉外部中斷,并開始接收地址碼跟數(shù)據(jù)碼
{
EV1527_ChuLi();
}
else //不是,則重新打開中斷,繼續(xù)檢測同步碼
{
EV1527_Status=0;
EV1527_Receive_Count=0;
GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PU_IT); //配置上啦輸入。
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);//下降沿觸發(fā)。
TIM1_SetCounter(0); //定時(shí)器計(jì)數(shù)值清零
}
}
}
/*
數(shù)據(jù)處理
*/
u8 EV1527_Process()
{
u8 EV1527_Data=0;
if(EV1527_receive_ok>=1)
{
u8 i=0;
u8 beishu=0;
u8 EV1527_DataTemp[24]={0};
u8 EV1527_addTemp_high=0;
u8 EV1527_addTemp_low=0;
// High_Low Level_0,Level_1; //電平
u16 Width_0,Width_1; //寬度
while(i<48)
{
// Level_0= EV1527_Receive_Data[i].Level;
Width_0=EV1527_Receive_Data[i].Width;
i++;
// Level_1= EV1527_Receive_Data[i].Level;
Width_1=EV1527_Receive_Data[i].Width;
beishu=(Width_0>Width_1)?(Width_0/Width_1):(Width_1/Width_0);
if(beishu>=2)//如果兩個(gè)寬度的倍數(shù)大于等于2說明是有效電平
{
EV1527_DataTemp[i/2]= (Width_0>Width_1)?1:0;
}
else
{
i=50;
}
i++;
// if(i>=46)
// {
// Level_0= EV1527_Receive_Data[i].Level;
// }
}
if(i<49)
{
//解析地址
for(i=0;i<20;i++)
{
if(i<10)//解析高位 EV1527_address_high
{
if(EV1527_DataTemp[i]==1) // 置一
{
EV1527_addTemp_high<<=1;
EV1527_addTemp_high=EV1527_addTemp_high|0x01;
}
else if(EV1527_DataTemp[i]==0) //置零
{
EV1527_addTemp_high<<=1;
}
}
else //解析低位
{
if(EV1527_DataTemp[i]==1) // 置一
{
EV1527_addTemp_low<<=1;
上一篇:STM8S005K6單片機(jī)點(diǎn)亮流水燈程序
下一篇:STM8單片機(jī)+EV1527無線315&433通用遙控解碼程序
推薦閱讀
史海拾趣
經(jīng)過多年的發(fā)展,Alpha Semiconductor已經(jīng)成為一家高性能標(biāo)準(zhǔn)、半標(biāo)準(zhǔn)模擬和混合信號(hào)IC制造商。公司在這一領(lǐng)域的制造實(shí)力得到了業(yè)界的廣泛認(rèn)可。Alpha Semiconductor的產(chǎn)品廣泛應(yīng)用于通信、計(jì)算機(jī)、消費(fèi)電子等領(lǐng)域,為電子行業(yè)的發(fā)展做出了重要貢獻(xiàn)。
進(jìn)入90年代,超霸電池開始拓展內(nèi)地市場,先后在北京、上海、廣州等十多個(gè)主要城市設(shè)立銷售點(diǎn)。與此同時(shí),公司業(yè)務(wù)也逐步向多元化發(fā)展,除了電池生產(chǎn)外,還涉足電纜、汽車配線、揚(yáng)聲器等領(lǐng)域。這一時(shí)期,超霸電池推出了可循環(huán)再用的鎳氫充電電池和充電器,滿足了市場對(duì)環(huán)保、高效電池產(chǎn)品的需求,進(jìn)一步鞏固了其在電池行業(yè)的領(lǐng)先地位。
1962年,F(xiàn)utaba推出了無線電控制設(shè)備和沖壓金屬模用部件,旨在提升工業(yè)品質(zhì)并縮短模具開發(fā)周期。這一舉措不僅解決了當(dāng)時(shí)工業(yè)控制領(lǐng)域中的供應(yīng)商問題,還引領(lǐng)了模具制造行業(yè)的標(biāo)準(zhǔn)。隨著技術(shù)的不斷進(jìn)步,F(xiàn)utaba開始涉足無線電傳輸模組(R/C)的生產(chǎn)和銷售,并逐漸在無線遙控領(lǐng)域嶄露頭角。特別是高頻無線展頻通訊技術(shù)的實(shí)現(xiàn),使Futaba的無線遙控技術(shù)在工業(yè)用機(jī)器人和工業(yè)控制設(shè)備上得到了廣泛應(yīng)用,進(jìn)一步鞏固了其在該領(lǐng)域的領(lǐng)先地位。
隨著科技的不斷發(fā)展,得力公司意識(shí)到智能化是未來辦公的重要趨勢(shì)。于是,得力開始研發(fā)智能辦公產(chǎn)品,如智能會(huì)議設(shè)備、云考勤、智能攝像頭等。這些產(chǎn)品不僅提高了辦公效率,也為用戶帶來了更加便捷、智能的辦公體驗(yàn)。得力通過整合全球資源,不斷創(chuàng)新和優(yōu)化產(chǎn)品,逐漸在智能辦公領(lǐng)域樹立了領(lǐng)先地位。
Cantherm公司一直把產(chǎn)品質(zhì)量放在首位。在一次產(chǎn)品質(zhì)量檢測中,公司發(fā)現(xiàn)某批次產(chǎn)品存在微小瑕疵,盡管這些瑕疵并不會(huì)影響產(chǎn)品的正常使用,但公司仍然決定召回該批次產(chǎn)品并進(jìn)行全面檢查。這一舉動(dòng)雖然給公司帶來了一定的經(jīng)濟(jì)損失,但卻贏得了消費(fèi)者的信任和好評(píng),進(jìn)一步鞏固了公司在電子行業(yè)中的地位。
急!求助:關(guān)于philips FM 芯片TEA5767自動(dòng)搜臺(tái)的問題 現(xiàn)在已有產(chǎn)品上掛一收音機(jī)模塊,采用philips Tea5767hn,采用3-wire模式。 手動(dòng)搜臺(tái)已實(shí)現(xiàn),但自動(dòng)搜臺(tái)不能實(shí)現(xiàn)。不知是相關(guān)控制沒設(shè)置好,還是時(shí)序的問題。 相關(guān)代碼: radio_write_ ...… 查看全部問答∨ |
|
我在FET仿真時(shí)用的是msp430f449,但實(shí)際中的硬件電路是用的 msp430f149,那我應(yīng)該怎樣修改軟件中的時(shí)鐘設(shè)置呢?請(qǐng)高手指點(diǎn) 代碼如下: void uart_init(void) { char temp; FLL_CTL0 &= 0XBF; UCTL0 |= SWRST; UCTL0 |= CH ...… 查看全部問答∨ |
|
#include \"msp430g2553.h\"#define CON 3#define MAX 100#define MIN 30char de=1,j=20;unsigned int con=0,osc=0,i=0;void delay(unsigned i){while(i--);}int main( void ){WDTCTL = WDTPW + WDTHOLD;P3DIR|=BIT4;P1IE |= BIT4; P1IES |= BIT4; ...… 查看全部問答∨ |
我想搭建產(chǎn)生2M的方波電路去驅(qū)動(dòng)場管,我就知道LC、專用函數(shù)發(fā)生器、幾個(gè)非門構(gòu)成... 我想搭建產(chǎn)生2M的方波電路去驅(qū)動(dòng)場管,我就知道LC、專用函數(shù)發(fā)生器、幾個(gè)非門構(gòu)成的震蕩、不知道還有那些方案?。靠刹豢梢杂镁д癜??… 查看全部問答∨ |
熱敏打印機(jī)的電磁泄漏接收與還原(任務(wù)獎(jiǎng)金詳談) 獨(dú)立的電腦板連接熱敏打印機(jī)(不連網(wǎng),也不帶無線發(fā)射)需要通過無線設(shè)備 或軟件近距離接收(3-10米當(dāng)然越遠(yuǎn)越好)思路;可以通過電磁泄漏的信息還原接收 也可以通過解譯打印機(jī)通訊協(xié)議,打印格式 做個(gè)軟件接口接收!或是可以接收到打印頻率信息 在另 ...… 查看全部問答∨ |
最近在學(xué)習(xí)XC2000的 串口 有幾個(gè)問題 很迷惑 1,如果我通過串口助手 發(fā)送6個(gè)字符 例如 發(fā)送 qwaszx 單片機(jī)是如何接收數(shù)據(jù)的?? 2,單片機(jī)將接收到的 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- BOE(京東方)越南智慧終端二期項(xiàng)目提前量產(chǎn) 構(gòu)建一體化產(chǎn)業(yè)生態(tài)
- 億緯鋰能擬赴港上市,動(dòng)力電池出貨量全球領(lǐng)先
- 自動(dòng)駕駛技術(shù)測試有哪些?
- 車端網(wǎng)絡(luò)攻擊及檢測的框架/模型
- 三星與英飛凌、恩智浦達(dá)成合作 共同研發(fā)下一代汽車芯片解決方案
- 中國企業(yè)避免人工智能基礎(chǔ)設(shè)施投資失利的三大路徑
- TDK為汽車應(yīng)用推出更高電壓和更高電容的3端子濾波器
- 科思創(chuàng)推出抬頭顯示器薄膜解決方案 可增強(qiáng)安全性和沉浸式駕駛體驗(yàn)
- 小鵬G7全球首發(fā)圖靈AI芯片,明日登場
- 眾擎機(jī)器人公布人形機(jī)器人直膝行走專利
- EEWORLD 示波器問卷有獎(jiǎng)大調(diào)查
- 不可錯(cuò)過的一次邂逅,TTI攜TE傳感器樣片與你相見!免費(fèi)樣片申請(qǐng)活動(dòng)開始啦~
- 有獎(jiǎng)直播 | 與英飛凌一同革新您的電動(dòng)汽車溫控系統(tǒng):集成熱管理系統(tǒng)(低壓側(cè))
- 有獎(jiǎng)直播 | ST25 NFC新產(chǎn)品及應(yīng)用方案介紹 報(bào)名中
- 電源情報(bào)站 MPS小程序干貨推薦,下載有好禮!3月活動(dòng)開始啦~
- TTI&TE直播:傳感器在工業(yè)電機(jī)里的發(fā)展及最新應(yīng)用
- 【摸黑搶樓】贏大禮,關(guān)于示波器的狂想曲!正式開搶!!!
- VISHAY工業(yè)電源主題月 幸運(yùn)闖關(guān)贏大獎(jiǎng)!
- 有獎(jiǎng)直播 | 德州儀器 C2000™ 系列培訓(xùn)會(huì)
- 紅外典型應(yīng)用*技術(shù)分享*趣味尋圖,帶你走進(jìn)紅外世界
- 用兩次團(tuán)購的板子做的東西
- 關(guān)于STM8S的蜂鳴器
- 筆記本電腦
- wince.net 5.0 異常:0xC0000005
- 求教,程序Down進(jìn)2812后,運(yùn)行時(shí)CPU自動(dòng)復(fù)位?
- 大家覺得電子血壓計(jì)靠譜嗎?
- ZSTACK 2.5.1a的sampleapp寫串口透傳的時(shí)候,最多只能發(fā)送98個(gè)字節(jié)的數(shù)據(jù)包
- 【是德征文】初步接觸是德科技示波器
- 請(qǐng)問36V DC轉(zhuǎn)5V DC和3V DC用哪款穩(wěn)壓器效率比較高?效率大概是多少呢?
- 硬件工程師試題