SCM-infrared-decoding.zip

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2013-07-16 11:33
    上传日期
单片机红外解码程序 程序功能:将红外遥控的发射信号码解开
SCM-infrared-decoding.zip
  • SCM infrared decoding.c
    4KB
内容介绍
/*********************************************************** 文件名称:红外解码程序 程序功能:将红外遥控的发射信号码解开 ***********************************************************/ #include<msp430x14x.h> typedef unsigned int uint; typedef unsigned char uchar; uchar i; uchar irrec; uchar irrecok; uchar irtime; uchar startflag; uchar bitnum; uchar irdata[33]; uchar zhenzhi[4]; uchar disp2[8]; void delaym(uint m); void zhen_zhi(void); //将32位的客户码和数据码转换成数码管可以显示的16进制数 void disp(void); //将得到的数据通过8位LED数码管显示出来 void delay(void); //简单的延时函数 void xiaoche(void); void weizhi(void); //将红外遥控器的发射码的33位(2位引导码,16位客户码,16位数据码)每一位解出来,数据放进数组irdata[33] uint num[]={0xa0,0xf9,0x64,0x70,0x39,0x32,0x22,0xf8,0x20,0x30,0x28,0x23,0xa6,0x61,0x26,0x2e}; uint wei[]={BIT0,BIT1,BIT2,BIT3,BIT4,BIT5,BIT6,BIT7}; void main(void) { WDTCTL=WDT_MDLY_0_064; //设置看门狗定时器,定时大约0.5ms IE1 |=WDTIE; //允许看门狗定时器溢出中断 P1DIR =0X00; //将P1口设置为输出 P1SEL =0X00; //将P1口选作普通I/O口使用 P1IE =0XFF; //打开P1口的中断使能 P1IES =0Xff; //选择所有的P1口为中断接收端口 P1IFG =0X00; //使P1口的所有中断标志位软件清零,因为P1口不能自动将其清零 _EINT(); //允许全局中断 P5DIR=0xff; P6DIR=0xff; P6OUT=0x00; P3DIR =0XFF; P3OUT =0XFF; P2DIR =0XFF; P2OUT =0X00; while(1) //此循环类似于12864和1602的判忙方式,也是此程序的一个很重要的组成部分 { if(irrec==1) // { zhen_zhi(); irrec=0; } if(irrecok==1) { weizhi(); irrecok=0; } disp(); xiaoche(); } } #pragma vector=WDT_VECTOR //看门狗定时器中断函数 __interrupt void watchdog(void) { irtime++; } #pragma vector=PORT1_VECTOR __interrupt void p1_int(void) { if(P1IFG) { if(startflag==1) { if(irtime>140) { bitnum=0; } irdata[bitnum]=irtime; bitnum++; irtime=0; if(bitnum==33) { bitnum=0; irrec=1; } } else { startflag=1; irtime=0; } P1IFG=0X00; } } void zhen_zhi(void) { uchar value=0; uchar k=1; uchar i,j; for(j=0;j<4;j++) { for(i=0;i<8;i++) { value=value>>1; if(irdata[k]>22) { value=value | 0x80; } k++; zhenzhi[j]=value; } } irrecok=1; k=1; } void weizhi(void) { disp2[0]=zhenzhi[0]/16; disp2[1]=zhenzhi[0]%16; disp2[2]=zhenzhi[1]/16; disp2[3]=zhenzhi[1]%16; disp2[4]=zhenzhi[2]/16; disp2[5]=zhenzhi[2]%16; disp2[6]=zhenzhi[3]/16; disp2[7]=zhenzhi[3]%16; } void disp(void) { uint i; for(i=0;i<8;i++) { P3OUT=wei[i];P5OUT=num[disp2[i]];delay();P5OUT =0Xff; } } void delay(void) { uint i,j,k; for(i=0;i<100;i++); } void xiaoche(void) { uint i,j,k; if(disp2[7]==14) //ting 停 { //delaym(1); if(disp2[7]==14) { P2OUT =0x00; //delaym(10); } } if(disp2[7]==3) //jin 进 { P2OUT =0x96; //delaym(10); //P2OUT =0X00; } if(disp2[7]==2) //tui 退 { P2OUT =0x69; //delaym(10); //P2OUT =0X00; } if(disp2[7]==8) //zuo 左 { P2OUT =0xaa; // delaym(10); //P2OUT=0x00; } if(disp2[7]==9) //you 右 { P2OUT =0x55; // delaym(10); //P2OUT=0x00; } if(disp2[7]==15) //laba kai { P6OUT =0xff; delaym(10); } if(disp2[7]==7) //laba ting { P6OUT =0x00; delaym(10); } } void delaym(uint m) { uint i,j; for(i=0;i<m;i++) for(j=0;j<1;j++); }
评论
    相关推荐
    • Infrared.zip
      android红外线发射器例子,用于内置红外发射信号
    • infrared-receiver-module.rar
      红外接收模块的解码程序,可供同学们参考学习,
    • Infrared-transceiver.zip
      红外收发实验 指示灯 单片机 89c51
    • the infrared sensors.zip
      stc单片机 人体传感器检测模块的程序,我自己已经测试过,可以正常用。
    • infrared005.rar
      C语言编写的51MCU红外遥控接收器驱动,实际测试OK,可以解码除不同的红外码型
    • Arduino-Infrared4Arduino.zip
      Arduino-Infrared4Arduino.zip,ArduinoInfrared4Arduino的面向对象红外库,Arduino是一家开源软硬件公司和制造商社区。Arduino始于21世纪初,深受电子制造商的欢迎,Arduino通过开源系统提供了很多灵活性。
    • Infrared remote library
      Infrared remote library: send and receive infrared signals with multiple protocols. 红外IR应用必备参考; 可用于万用遥控器; 智能传感 IoT; 安卓平台适用
    • InfraRED-开源
      Java / J2EE应用程序性能监视工具。 功能:轻量级的探查器,基于AOP,列出API时间,JDBC / SQL统计信息,中央日志记录,集群支持,Web UI,调用树,可配置的监视级别。
    • f411-infrared.zip
      基于stm32f411单片机,硬件HS0038H红外接收头,使用infrared组件(hwtimer和pin组件)实现红外接收头的NEC数据解析
    • infrared.rar
      红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,