久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
msp430單片機 ir.c紅外驅動文件
[打印本頁]
作者:
das
時間:
2015-4-18 03:30
標題:
msp430單片機 ir.c紅外驅動文件
/********************************************************************
//DM430-L型核心板紅外遙控器解碼參考程序,對遙控器按鍵進行識別,然后將鍵值顯示到數碼管上
//紅外遙控器為NEC編碼格式,38K調制,解碼時直接讀取鍵值,用戶碼00FF
//由于采取的是IO電平直接判斷方式讀取,會有不穩定的現象,按鍵時頻率不要過快
//鍵值直接顯示在LED燈上,二進制代碼的形式顯示,比如00,LED燈全亮,01,D1滅,其余全亮
//時間:2014.03.01
********************************************************************/
#include <msp430x16x.h>
#include "Config.h" //開發板配置頭文件,主要配置IO端口信息
#include"1602.c"
//***********************************************************************
// 遙控器鍵碼
//***********************************************************************
#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 prex 0x44 //電源
#define nex 0x40 //模式
#define play_pause 0x43 //靜音
#define ch_ 0x45 //模式
#define ch 0x46
#define cha 0x47 //模式
#define __ 0x07
#define _a 0x15
#define eq 0x09
#define _100a 0x19
#define _200a 0x0d
uchar KEY_VAL=0;
uchar code_value=0;
uchar key_code[4];
uchar x=5,y=0, code[21];
uchar a=5,b=5,c=5,d=0;
ulong shu;
//***********************************************************************
// MSP430IO口初始化
//***********************************************************************
void Port_Init1()
{
// LED8DIR = 0xFF; //設置IO口方向為輸出
// LED8 = 0xFF; //P2口初始設置為FF
RED_L;
RED_IN;
}
//*************************************************************************
// 遙控器鍵值賦功能值子程序
//*************************************************************************
void Key_Icode(void)
{void Display_Key1();
void Display_Key();
void find();
switch(key_code[2]) //第3個字節是數據,第4個字節是反碼
{ //為了更穩定,可以加上第4個字節數據的判斷
case KEY_0:KEY_VAL=0; Display_Key(KEY_VAL); break;
case KEY_1:KEY_VAL=1; Display_Key(KEY_VAL); break;
case KEY_2:KEY_VAL=2; Display_Key(KEY_VAL); break;
case KEY_3:KEY_VAL=3; Display_Key(KEY_VAL); break;
case KEY_4:KEY_VAL=4; Display_Key(KEY_VAL); break;
case KEY_5:KEY_VAL=5; Display_Key(KEY_VAL); break;
case KEY_6:KEY_VAL=6; Display_Key(KEY_VAL); ;break;
case KEY_7:KEY_VAL=7; Display_Key(KEY_VAL); break;
case KEY_8:KEY_VAL=8; Display_Key(KEY_VAL); break;
case KEY_9:KEY_VAL=9; Display_Key(KEY_VAL); break;
case prex:LCD_write_str(0,0,"prex:");break;
case nex :LCD_write_str(0,0,"next:");break;
case play_pause:LCD_init();break;
case ch_:code[5]='/';Display_Key1(code[5]); break;
case ch: code[5]='=';Display_Key1(code[5]);break;
case cha:code[5]='*';Display_Key1(code[5]);break;
case eq: LCD_init();LCD_write_str(0,0,"start");x=5;break;
case _a:code[5]='+';Display_Key1(code[5]);break;
case __:code[5]='-';Display_Key1(code[5]);break;
case _100a:code[5]=0xa2;LCD_write_str(x,y,"100+");x+=4;find();break;
case _200a:code[5]=0xa3;LCD_write_str(x,y,"200+");x+=4;find();break;
default:KEY_VAL=10;break;
}
}
void cauculate()
{if(a==0)a=5;
if(b==0)b=5;
if(c==0)c=5;
if(d==21)d=0;
}
//*************************************************************************
// 顯示采集到的數據到LED燈
//*************************************************************************
void Display_Key(uint data_KEY)
{
LCD_write_char(x,y,KEY_VAL+0x30); delay_ms(5); //鍵值顯示到LED燈上,二進制的形式顯示,只識別0~9
x++;
if((x==16)&(y==0))
{ x=0;y=1;}
if((x==16)&(y==1))
{x=5;y=0;LCD_init();
}
}
void Display_Key1(uint data_KEY)
{
LCD_write_char(x,y,code[5]); delay_ms(5); //鍵值顯示到LED燈上,二進制的形式顯示,只識別0~9
if((x==16)&(y==0))
{ x=0;y=1;}
if((x==16)&(y==1))
{x=5;y=0;LCD_init();
}
}
void find()
{if((x==16)&(y==0)){x=0;y=1;}
if((x==16)&(y==1)){x=5;y=0;}
}
//*************************************************************************
// 遙控器解碼子程序
//*************************************************************************
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 >= 7)
{
code_value|=0x80; //高電平時間大于0.56,則為數據1
}
k = 0; //計時清零
}
key_code[i]=code_value; //四個字節的數據
}
Key_Icode(); //調用賦值函數
// Display_Key(KEY_VAL); //顯示按鍵值
delay_ms(50);
}
//***********************************************************************
// 主程序
//***********************************************************************
void main(void)
{
WDT_Init(); //看門狗初始化
Clock_Init(); //時鐘初始化
Port_Init();
Port_Init1();
//端口初始化,用于控制IO口輸入或輸出
// ADC_Init(); //初始化ADC配置
delay_ms(100); //延時100ms
LCD_init(); //液晶參數初始化設置
LCD_clear(); //清屏
LCD_Desk();
_EINT();
while(1)
{
Red_Code(); //調用遙控器解碼子程序
}
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩视频一区二区
|
欧美一级免费看
|
www.夜夜草
|
羞羞视频网站免费观看
|
日本粉嫩一区二区三区视频
|
91精品久久久久久久久99蜜臂
|
一区二区三区成人
|
成人欧美一区二区三区在线播放
|
日本久久久久久久久
|
成人欧美一区二区三区黑人孕妇
|
二区高清
|
超碰在线播
|
婷婷综合久久
|
午夜男人的天堂
|
午夜精品一区二区三区在线观看
|
91免费观看视频
|
国产在线观看网站
|
中文字幕 在线观看
|
97成人精品
|
国产第一页在线观看
|
亚洲精品一区久久久久久
|
亚洲在线
|
中文成人在线
|
精品国产一区二区在线
|
国产精品免费在线
|
97人人超碰
|
伦理片97
|
日韩成人精品
|
国产欧美久久一区二区三区
|
aⅴ色国产 欧美
|
国产精品九九九
|
亚洲精品久久久久久一区二区
|
国产精品1区
|
亚洲精品丝袜日韩
|
97精品国产97久久久久久免费
|
亚洲视频免费在线播放
|
最新一级毛片
|
国产在线精品一区
|
中文字幕高清视频
|
精品一区二区三区在线视频
|
成人免费精品视频
|