久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
STM8單片機(jī)+EV1527無(wú)線315&433通用遙控解碼程序
[打印本頁(yè)]
作者:
wxmlx
時(shí)間:
2021-7-18 11:13
標(biāo)題:
STM8單片機(jī)+EV1527無(wú)線315&433通用遙控解碼程序
STM8_無(wú)線315&433通用解碼
單片機(jī)源程序如下:
/*
*********************************************************************************************************
*
* 模塊名稱(chēng) : EV1527遙控解碼
*
上升沿觸發(fā) 觸發(fā)中斷后延時(shí)一段時(shí)間后檢測(cè)引腳電平從而判斷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]; //用來(lái)暫時(shí)存儲(chǔ)采集3次得到的值
//u8 EV1527_repeat; //重復(fù)觸發(fā)計(jì)數(shù)
u8 EV1527_check_level_bit; //外部中斷觸發(fā)(上升沿)標(biāo)志。有外部中斷觸發(fā)后則開(kāi)始檢測(cè)引腳電平是否有變化。
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ù)
開(kāi)始接收地址碼跟數(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;
/* 開(kāi)啟定時(shí)器 0 記錄低電平持續(xù)的時(shí)間,并檢測(cè)是否為同步碼 */
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í)。
/* 檢測(cè)是否為同步碼*/
if((TongBuMa_low>=5000)&&(TongBuMa_low<=38000)) //檢測(cè)前一個(gè)低電平時(shí)間,是否符合同步碼標(biāo)
//是同步碼 關(guān)閉外部中斷,并開(kāi)始接收地址碼跟數(shù)據(jù)碼
{
EV1527_ChuLi();
}
else //不是,則重新打開(kāi)中斷,繼續(xù)檢測(cè)同步碼
{
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說(shuō)明是有效電平
{
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;
EV1527_addTemp_low=EV1527_addTemp_low|0x01;
}
else if(EV1527_DataTemp[i]==0) //置零
{
EV1527_addTemp_low<<=1;
}
}
}
//解析數(shù)據(jù)
for(i=20;i<24;i++)
{
if(EV1527_DataTemp[i]==1) // 置一
{
EV1527_Data<<=1;
EV1527_Data=EV1527_Data|0x01;
}
else if(EV1527_DataTemp[i]==0) //置零
{
EV1527_Data<<=1;
}
}
}
EV1527_receive_ok=0;
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);
}
return EV1527_Data;
}
/*
解碼處理后的執(zhí)行函數(shù)
*/
void EV1527_Action()
{
EV1527_Receive_Handle();
u8 EV1527_buf=0;
EV1527_buf=EV1527_Process();
if(EV1527_buf)
{
GPIO_WriteReverse(GPIOD, GPIO_PIN_2);
for(u8 i=0;i<EV1527_buf;i++)
{
LED_Operation(GPIO_PIN_3,ON );
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
LED_Operation(GPIO_PIN_3,OFF );
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
}
//GPIO_WriteReverse(GPIOD, GPIO_PIN_3);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
Delay(6000);
}
}
復(fù)制代碼
所有資料51hei提供下載:
STM8解碼EV1527.7z
(397.25 KB, 下載次數(shù): 68)
2021-7-18 14:47 上傳
點(diǎn)擊文件名下載附件
STM8_無(wú)線315&433通用解碼
下載積分: 黑幣 -5
作者:
cba_cba
時(shí)間:
2021-7-27 17:51
這么多延時(shí),感到會(huì)有誤碼。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品国产成人国产三级
|
91精品国产91久久久久久吃药
|
午夜伦理影院
|
自拍视频一区二区三区
|
999久久久久久久
|
成人一区二区三区视频
|
国产精品一区二区三区四区
|
久久久中文
|
中文福利视频
|
亚洲精品一区二区
|
蜜桃一区二区三区
|
中文字幕三区
|
91成人午夜性a一级毛片
|
国产日韩一区二区
|
久久久久久天堂
|
亚洲国产精品久久久
|
久久综合狠狠综合久久综合88
|
91精品国产手机
|
久久精品免费
|
国产欧美日韩一区
|
91在线观看免费视频
|
欧美精品二区
|
久久久久久久久国产精品
|
亚洲精品久久久久中文字幕二区
|
伊人网99
|
亚洲日韩视频
|
午夜精品一区二区三区在线观看
|
国产美女视频黄a视频免费 国产精品福利视频
|
91精品国产高清一区二区三区
|
国产精品久久
|
av大片在线
|
羞羞视频网站在线观看
|
亚洲三区在线观看
|
波多野结衣一区二区
|
日日日视频
|
综合一区二区三区
|
精品久久久一区二区
|
亚洲免费网址
|
精品国产高清一区二区三区
|
毛片一级片
|
夜夜爽99久久国产综合精品女不卡
|