欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
DMAVR-L的紅外遙控器解碼通信實驗源程序,采用一體化紅外接收頭進行信號接收,查詢方式
[打印本頁]
作者:
1804181935
時間:
2019-7-24 20:21
標題:
DMAVR-L的紅外遙控器解碼通信實驗源程序,采用一體化紅外接收頭進行信號接收,查詢方式
//DMAVR-L的紅外遙控器解碼通信實驗源程序,采用一體化紅外接收頭進行信號接收,查詢方式
//按鍵值直接反應到LED燈上,比如按0鍵,鍵值為0,送入LED燈,8個全亮,按鍵1,亮7個,D1不亮,以此類推
//硬件相關的配置文件在Config.h里,自己建立項目時,需要復制到項目文件夾下
//系統時鐘16MHZ,設置熔絲位為外部高頻石英晶體振蕩,啟動時間4.1ms
//編譯環境 AVR Studio 4.19/AVR ToolChain V3.4
//***********************************************************************
// 包含文件
//***********************************************************************
#include <string.h>
#include <stdio.h>
#define F_CPU 16000000 // 單片機主頻為16MHz,用于延時子程序,熔絲位必須設置到外部高頻晶振才行
#include <util/delay.h>
#include <avr/io.h>
#include <avr/iom128.h>
#include <avr/interrupt.h> //中斷信號頭文件
#include <avr/pgmspace.h> //須增加的頭文件,用來將數據存放在flash中
#include "Config.h" //配置頭文件,與硬件相關的配置在這里更改
//***********************************************************************
// 定義變量區
//***********************************************************************
uchar key;
uint temp_value;
uint temp,A; //定義的變量,顯示數據處理
uchar code_value=0;
uchar key_code[4];
uint l,p;
//***********************************************************************
// 遙控器鍵碼
//***********************************************************************
#define KEY_0 0x16 //鍵0
#define KEY_1 0x0C //鍵1
#define KEY_2 0x18 //鍵2
#define KEY_3 0x5E //鍵3
#define KEY_4 0x08 //鍵4
#define KEY_5 0x1C //鍵5
#define KEY_6 0x5A //鍵6
#define KEY_7 0x42 //鍵7
#define KEY_8 0x52 //鍵8
#define KEY_9 0x4A //鍵9
#define KEY_POWER 0x45 //電源
#define KEY_MODE 0x46 //模式
#define KEY_SOUND 0x47 //靜音
//***********************************************************************
// IO端口初始化
//***********************************************************************
void system_init()
{
LED = 0xFF; //關LED
LEDDDR = 0xFF;
RED_SET;
RED_IN;
}
//*************************************************************************
// 顯示采集到的數據到LED燈
//*************************************************************************
void Display_Key(uint data_KEY)
{
LED = data_KEY; //鍵值顯示到LED燈上,二進制的形式顯示,只識別0~9
}
//*************************************************************************
// 遙控器鍵值賦功能值子程序
//*************************************************************************
void Key_Icode(void)
{
switch(key_code[2])
{
case KEY_0:key=0;break;
case KEY_1:key=1;break;
case KEY_2:key=2;break;
case KEY_3:key=3;break;
case KEY_4:key=4;break;
case KEY_5:key=5;break;
case KEY_6:key=6;break;
case KEY_7:key=7;break;
case KEY_8:key=8;break;
case KEY_9:key=9;break;
default:key=10;break;
}
}
//*************************************************************************
// 遙控器解碼子程序
//*************************************************************************
void Red_Code()
{
uchar i,j,k = 0;
for(i = 0;i < 19;i++)
{
delay_us(400); //延時400us
if(RED_R) //9ms內有高電平,則判斷為干擾,退出處理程序
{
return;
}
}
while(!RED_R); //等待9ms低電平過去
for(i=0;i<5;i++) //是否連發碼
{
delay_us(500);
if(!RED_R)
{
return;
}
}
while(RED_R); //等待4.5ms高電平過去
for(i = 0;i < 4;i++) //接收4個字節的數據
{
for(j = 0;j < 8;j++) //每個字節的數據8位
{
while(!RED_R); //等待變高電平
while(RED_R) //計算高電平時間
{
delay_us(100);
k++;
if(k >= 22) //高電平時間過長,則退出處理程序
{
return; //
}
}
code_value>>=1; //接受一位數據
if(k >= 8)
{
code_value|=0x80; //高電平時間大于0.56,則為數據1
}
k = 0; //計時清零
}
key_code[i]=code_value; //四個字節的數據
}
Key_Icode(); //調用賦值函數
Display_Key(key); //顯示按鍵值
}
//*************************************************************************
// 主程序
//*************************************************************************
int main(void)
{
system_init(); //系統初始化
while(1)
{
Red_Code(); //調用遙控器解碼子程序
}
}
復制代碼
iRED.zip
2019-7-24 20:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
22.75 KB, 下載次數: 12, 下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1