HT6221发送红外HS0038解码程序

1 可以用 , 要弄懂的话就要去看看HT6221的时序图 。
2
3 C51的红外解码程序 , 可以根据需要自己修改:
4 /////////////////////////////////////////////
5 //12Mhz
6 //根据自己的接线来改
7 sbit IRIN = P3^2;//红外接收器数据线
8 /////////////////////////////////////////////
9
10 ////////////////////////////////////////////
11 //定义数组IRCOM , 分别装解码后得到的数据
12 //IRCOM[0]低8位地址码
13 //IRCOM[1]高8位地址码
14 //IRCOM[2]8位数据码
15 //IRCOM[3]8位数据码的反码
16 /////////////////////////////////////////////
17 uchar IRCOM[4]=0;
18
19 #define uchar unsigned char
20 #define uint unsigned int
21 /********************************************/
22 void delay014ms(unsigned char x);//x*0.14MS
23 void IR_init(void);
24 void IR_CODE(void);
25
26 void delay014ms(unsigned char x)//x*0.14MS
27 {
28 unsigned char i;
29while(x--)
30 {
31for (i = 0; i<13; i++) {}
32 }
33 }
34
35 ///////////////////////////////////////
36 //初始化
37 //////////////////////////////////////
38 void IR_init(void)
39 {
40EX0=1;//允许总中断中断,使能 INT0 外部中断
41TCON = 0x01;//触发方式为脉冲负边沿触发
42IRIN=1;//I/O口初始化
43 }
44
45 /////////////////////////////////////
46 //解码过程
47 /////////////////////////////////////
48 void IR_CODE(void)
49 {
50 unsigned char j,k,N=0;
51EX0 = 0;
52delay014ms(15);
53if (IRIN==1)
54{ EX0 =1;
55return;
56}//确认IR信号出现
【HT6221发送红外HS0038解码程序】57while (!IRIN)//等IR变为高电平 , 跳过9ms的前导低电平信号 。
58{delay014ms(1);}
59
60 for (j=0;j<4;j++)//收集四组数据
61 {
62for (k=0;k<8;k++)//每组数据有8位
63{
64while (IRIN)//等 IR 变为低电平 , 跳过4.5ms的前导高电平信号 。
65{delay014ms(1);}
66while (!IRIN)//等 IR 变为高电平
67{delay014ms(1);}
68while (IRIN)//计算IR高电平时长
69{
70delay014ms(1);
71N++;
72if (N>=30)
73{ EX0=1;
74return;}//0.14ms计数过长自动离开 。
75}//高电平计数完毕
76IRCOM[j]=IRCOM[j] >> 1;//数据最高位补“0”
77if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1”
78N=0;
79}
80 }
81if (IRCOM[2]!=~IRCOM[3]) //不等的话表示解码失败
82{
83 IRCOM[4]=0;
84 EX0=1;
85return;
86}
87
88 pro();//解码成功后运行的程序
89 EX0=1;
90 return;
91 }


所谓解码就是能用单片机把以不同宽度的脉冲区别开来 , 一种比较好思路就是计算两次下降沿间隔时间 , 当单片机外部中断1口有下降沿时中断一次 , 并启动定时器 , 定时器定50us,当下次下降沿到来时我们计算定时器中断的次数 , 这样我们就能很好的区分不同宽度的脉冲了 。实际上 , 我们红外接收头收到的信号的是有毛刺的 , 在下降沿中断触发后 , 要做延时去抖处理 。


    推荐阅读