历史上的今天
今天是:2024年10月23日(星期三)
2019年10月23日 | 51单片机红外接收代码加解码
2019-10-23 来源:51hei
头文件 stc12c5a.h下载: http://www.51hei.com/mcu/2564.html
头文件 1602.h 下载: http://www.51hei.com/bbs/dpj-24671-1.html
///*redPC838.c文件
* 红外接收数据,中断方式,并通过串口发送
* 晶振:11.0592M*/
#include #include<1602.h> typedef unsigned char uint8; sbit Ir_Pin = P3^3; uint8 Ir_Buf[4]; //用于保存解码结果 extern int keynum=1; void int1_init(void) { IT1 = 1; //下降沿有效 EX1 = 1; EA = 1; TMOD = 0x01; } /*获取低电平时间*/ unsigned int Ir_Get_Low() { TL0 = 0; TH0 = 0; TR0 = 1; while (!Ir_Pin && (TH0&0x80)==0); TR0 = 0; return (TH0 * 256 + TL0); } /* 获取高电平时间*/ unsigned int Ir_Get_High() { TL0 = 0; TH0 = 0; TR0 = 1; while (Ir_Pin && (TH0&0x80)==0); TR0 = 0; return (TH0 * 256 + TL0); } //******************************************* void PC838() { int1_init(); } void int1_isr() interrupt 2 { unsigned int temp; char i,j; temp = Ir_Get_Low(); if ((temp < 7833) || (temp > 8755)) //引导脉冲低电平8500~9500us return; temp = Ir_Get_High(); if ((temp < 3686) || (temp > 4608)) //引导脉冲高电平4000~5000us return; for (i=0; i<4; i++) //4个字节 { for (j=0; j<8; j++) //每个字节8位 { temp = Ir_Get_Low(); if ((temp < 184) || (temp > 737)) //200~800us return; temp = Ir_Get_High(); if ((temp < 184) || (temp > 1843)) //200~2000us return; Ir_Buf[ i] >>= 1; if (temp > 1032) //1120us Ir_Buf[ i] |= 0x80; } } if( Ir_Buf[2]=~ Ir_Buf[3]) //验证键数据码和其反码是否相等,一般情况下不必验证用户码 { if(Ir_Buf[2]==0x16) keynum=0; //a[0]=00h;a[1]=ffh if(Ir_Buf[2]==0x0c) keynum=1; //a[0]=00h;a[1]=ffh if(Ir_Buf[2]==0x18) keynum=2; //a[0]=00h;a[1]=ffh if(Ir_Buf[2]==0x5E) keynum=3; if(Ir_Buf[2]==0x08) keynum=4; if(Ir_Buf[2]==0x1C) keynum=5; if(Ir_Buf[2]==0x5A) keynum=6; if(Ir_Buf[2]==0x42) keynum=7; if(Ir_Buf[2]==0x52) keynum=8; if(Ir_Buf[2]==0x4A) keynum=9; if(Ir_Buf[2]==0x45) keynum=10; //ON/OFF if(Ir_Buf[2]==0x46) keynum=11; //MODE if(Ir_Buf[2]==0x47) keynum=12; //静音 if(Ir_Buf[2]==0x44) keynum=13; //暂停 if(Ir_Buf[2]==0x40) keynum=14; //下一曲 if(Ir_Buf[2]==0x43) keynum=15; //上一曲 if(Ir_Buf[2]==0x07) keynum=16; //EQ if(Ir_Buf[2]==0x15) keynum=17; //VOL- if(Ir_Buf[2]==0x09) keynum=18; //VOL+ if(Ir_Buf[2]==0x19) keynum=19; //RPT if(Ir_Buf[2]==0x0D) keynum=20; //U/SD // beep(); //蜂鸣器响一声 提示解码成功 } } //******************8redPC838.h文件 #ifndef _redPC838_ #define _redPC838_ #define uchar unsigned char #define uint unsigned int void PC838(); extern int keynum; #endif
史海拾趣
|
作为汽车产业与电子产业的完美结合,汽车电子业的发展相对于汽车市场而言更加迅猛。据估计,近几年的年增长率均超过50%,是拉动汽车工业发展的重要因素。到目前为止,绝大多数国外大型的跨国汽车电子企业已在中国设厂。为了进一步扩大在中国的市场 ...… 查看全部问答> |
|
艾克赛尔(Axelwave)无线网络――无线监控在高速公路的应用 近年来中国经济的飞速发展,使中国的公路建设,尤其是高速公路的建设上了一个新台阶。而随着现代化高速公路的建设,新一代高速公路视频监控系统,日益成为高速公路监管的重要手段。无线监控凭借其简便、快速、受环境影响小的特点,也逐步成为高速公 ...… 查看全部问答> |
|
在基于软件无线电的某无线通信信号侦收平台的设计中,天线接收到的信号经过变频器处理和A/D变换之后,经过高速通道把采集的信号送入主控板进行数据分发处理。系统的结构框图如图1所示。 图1 主控板的系统结构框图 主控板的硬件核 ...… 查看全部问答> |
|
wince提供的api只能录制成wave吧? 录成mp3需要使用开源的lame库? 我现在在模拟器上能录制成wave, 调用lame库把wave转成mp3不成功,似乎是lame库内存异常了. 哪位大侠有CE5.0下能用的lame库? 或者还有其它方式能直接录成mp3? 我的邮箱:victor_20 ...… 查看全部问答> |
|
signal abc: std_logic_vector(5 downto 0):=(others=>\'0\');困扰很久,一直不明白。哪位大侠能给详解一下?谢谢!… 查看全部问答> |
|
【有圖有真相】基于MSP430 LaunchPad 和2.4G RF Module 的聊天室 前段時間在論壇的活動中拿了MSP430 LaunchPad,總要起點作用吧。 就做了這個史上最無聊,最無用的聊天工具。辦公室的工程師每人分一塊LaunchPad,接上我們公司常用的2.4G RF Module 用VB寫了個上位機軟件 然后就可以大家一起吹水了。 史上最 ...… 查看全部问答> |




