求HT6221的C语言解码程序
答案:1 悬赏:20 手机版
解决时间 2021-04-24 02:48
- 提问者网友:送舟行
- 2021-04-23 20:15
我的板是52系列的
最佳答案
- 五星知识达人网友:英雄的欲望
- 2021-04-23 20:51
你好,很高兴回答你的问题
Ht6221红外遥控C语言解码//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
//★HT6221标准红外C语言解码程序 ★
//★CPU AT89S51 晶振12MHz 接口 P.7 ★
//★ht6221 资料: ★
//★Designed by pufan ★
//★日期2006-06-14 ★
//★Email: zicosh@163.com ★
//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
#include<reg51.h>
#define UINT8 unsigned char
#define UINT16 unsigned int
#define UINT32 unsigned long
UINT8 IRCommandData;
UINT8 da[4]={0,0,0,0};
UINT8 table[18]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa7,0x26,0xa1,0xb1,0x34,0xab};
sbit IR=P3^7;
//============主程序====================================================
void delay(UINT16 cnt)
{
while(--cnt);
}
void d870us(void)
{
delay(108);//12M
}
void d1000us(void)
{
delay(125);//12M
}
void d4740us(void)
{
delay(593);//12M
}
//----------------------------------------------------
//-----------------------------------------------
// ht6221解码程序
//-----------------------------------------------
UINT8 IRDecode(void)
{
UINT8 i,m,n;
for(i=0;i<10;i++)
{
d870us();
if(IR) goto exit;
}
while(!IR);
d4740us();
//开始解码
for(m=0;m<4;m++){
for(n=0;n<8;n++){
while(!IR);
d870us();
if(IR)
{
d1000us();
da[m]=da[m]>>1;
da[m]=da[m]|0x80;
}
else
{
da[m]=da[m]>>1;
da[m]=da[m]|0;
}
//while(IR);
//while(!IR);
}
}
if((da[0]==0x0)&&(da[1]==0xFF))
{
if(da[2]==(~da[3]))
return da[2];
}
exit:
return 0;
}
void SendData(UINT8 c)
{
P0=c;
}
void main(void)
{
P2=0xFD;//选通一位数码管
P0=0xff;
while(1)
{
if(!IR)
{
IRCommandData=IRDecode();
switch(IRCommandData)
{
case 0x10:SendData(table[1]);break;
case 0x03:SendData(table[2]);break;
case 0x01:SendData(table[3]);break;
case 0x06:SendData(table[4]);break;
case 0x09:SendData(table[5]);break;
case 0x1d:SendData(table[6]);break;
case 0x1f:SendData(table[7]);break;
case 0x0d:SendData(table[8]);break;
case 0x19:SendData(table[9]);break;
default:break;
}
}
}
}
谢谢采纳。
Ht6221红外遥控C语言解码//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
//★HT6221标准红外C语言解码程序 ★
//★CPU AT89S51 晶振12MHz 接口 P.7 ★
//★ht6221 资料: ★
//★Designed by pufan ★
//★日期2006-06-14 ★
//★Email: zicosh@163.com ★
//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
#include<reg51.h>
#define UINT8 unsigned char
#define UINT16 unsigned int
#define UINT32 unsigned long
UINT8 IRCommandData;
UINT8 da[4]={0,0,0,0};
UINT8 table[18]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa7,0x26,0xa1,0xb1,0x34,0xab};
sbit IR=P3^7;
//============主程序====================================================
void delay(UINT16 cnt)
{
while(--cnt);
}
void d870us(void)
{
delay(108);//12M
}
void d1000us(void)
{
delay(125);//12M
}
void d4740us(void)
{
delay(593);//12M
}
//----------------------------------------------------
//-----------------------------------------------
// ht6221解码程序
//-----------------------------------------------
UINT8 IRDecode(void)
{
UINT8 i,m,n;
for(i=0;i<10;i++)
{
d870us();
if(IR) goto exit;
}
while(!IR);
d4740us();
//开始解码
for(m=0;m<4;m++){
for(n=0;n<8;n++){
while(!IR);
d870us();
if(IR)
{
d1000us();
da[m]=da[m]>>1;
da[m]=da[m]|0x80;
}
else
{
da[m]=da[m]>>1;
da[m]=da[m]|0;
}
//while(IR);
//while(!IR);
}
}
if((da[0]==0x0)&&(da[1]==0xFF))
{
if(da[2]==(~da[3]))
return da[2];
}
exit:
return 0;
}
void SendData(UINT8 c)
{
P0=c;
}
void main(void)
{
P2=0xFD;//选通一位数码管
P0=0xff;
while(1)
{
if(!IR)
{
IRCommandData=IRDecode();
switch(IRCommandData)
{
case 0x10:SendData(table[1]);break;
case 0x03:SendData(table[2]);break;
case 0x01:SendData(table[3]);break;
case 0x06:SendData(table[4]);break;
case 0x09:SendData(table[5]);break;
case 0x1d:SendData(table[6]);break;
case 0x1f:SendData(table[7]);break;
case 0x0d:SendData(table[8]);break;
case 0x19:SendData(table[9]);break;
default:break;
}
}
}
}
谢谢采纳。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯