标题:
求51单片机红外遥控的视频教程
[打印本页]
作者:
helloccz
时间:
2015-8-3 20:14
标题:
求51单片机红外遥控的视频教程
51单片机红外遥控的视频教程。希望大神帮帮忙
作者:
13530229009
时间:
2015-8-4 10:36
文件太大,上傳不了,你在網上搜霖鋒帶你征服嵌入式,Lesson 21 红外遥控原理和电视遥控器码值检测
作者:
helloccz
时间:
2015-8-4 21:15
13530229009 发表于 2015-8-4 10:36
文件太大,上傳不了,你在網上搜霖鋒帶你征服嵌入式,Lesson 21 红外遥控原理和电视遥控器码值检测
你好,我用你的方法搜了,但没搜到。你能提供一个百度云网盘的地址吗?谢谢你!
作者:
jessicamini55
时间:
2015-8-5 11:18
同求~~~~~~~~~~~~~~~~~~~~~~
作者:
h1314258
时间:
2015-8-6 15:53
文件太大,上傳不了,你在網上搜霖鋒帶你征服嵌入式
作者:
腾飞的龙
时间:
2015-8-6 16:43
这是我现在正常使用的解码程序
/***********************************************
功能:红外解码数码管显示
单片机:SRC12C5A60S2
晶振:11.0592M
作者:苏义江改编自网络
要感谢作者的无私分享
***********************************************/
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table_we[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar code table_du[]={0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xf8,0x80,0x90,0x88,
0x83,0xC6,0xA1,0x86,0x8E};
sbit ir=P3^3;
sbit a=P0^0;//LED或小车端口
sbit b=P0^1;//LED或小车端口
sbit c=P0^2;//LED或小车端口
sbit d=P0^3;//LED或小车端口
uchar irtime;//红外时间变量
uchar irdata[33];//
uchar bitnum;//第几位
uchar startflag;//起始标志位
uchar irok;//接收结束变量
uchar ircode[4];
uchar irprosok;
uchar disnum[4];
//uchar disnum[8];
sbit duan=P0^6;
sbit wei=P0^7;
void timer0init(void) //256*(1/12m)*12=0.256ms
{
TMOD=0x02;//方式2
TH0=0x00;
TL0=0x00;
ET0=1;
EA=1;
TR0=1;
}
void irpros(void) // 红外码值处理
{
uchar mun,k,i,j;
k=1;
for(j=0;j<4;j++)//读出4个码循环4次
{
for(i=0;i<8;i++)
{
mun=mun>>1;//右移7次
if(irdata[k]>7)//判断8次 大于7是高电平,小于7是低电平
{
mun=mun | 0x80;
}
k++;
}
ircode[j]=mun;
}
irprosok=1;
}
void irwork(void) // 红外码值转换
{
disnum[0]=ircode[0]/16;
disnum[1]=ircode[0]%16;
// disnum[2]=ircode[1]/16;
// disnum[3]=ircode[1]%16;
disnum[2]=ircode[2]/16;
disnum[3]=ircode[2]%16;
// disnum[6]=ircode[3]/16;
// disnum[7]=ircode[3]%16;
}
void delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
void display()//显示
{
P2=0xfe;
wei=1;
wei=0;
delay(5);
P2=table_du[disnum[0]];
delay(5);
duan=1;
duan=0;
P2=0xff;
P2=0xfd;
wei=1;
wei=0;
delay(5);
P2=table_du[disnum[1]];
delay(5);
duan=1;
duan=0;
P2=0xff;
P2=0xfb;
wei=1;
wei=0;
delay(5);
P2=table_du[disnum[2]];
delay(5);
duan=1;
duan=0;
P2=0xff;
P2=0xf7;
wei=1;
wei=0;
delay(5);
P2=table_du[disnum[3]];
delay(5);
duan=1;
duan=0;
P2=0xff;
}
void int0init(void)//外部中断初始化
{
IT1=1;//下降沿触发
EX1=1;//开外部中断
EA=1;//开总中断
}
void main()
{
timer0init();
int0init();
while(1)
{
if(irok==1)
{
irpros();
irok=0;
}
if(irprosok==1)
{
irwork();
irprosok=0;
}
display();
}
}
void int0 () interrupt 2 //外部0中断服务
{
if(startflag)
{
// if(irtime>32&&irtime<63) //8-16ms检测引导码
if(irtime>32)
{
bitnum=0;
}
irdata[bitnum]=irtime;
irtime=0;
bitnum++;
if(bitnum==33)//接收结束
{
bitnum=0;
irok=1;
}
}
else
{
startflag=1;
irtime=0;
}
}
void timer0 () interrupt 1//定时器0中断服务函数
{
irtime++;
}
复制代码
作者:
1678
时间:
2015-8-8 17:14
上边都有啊
作者:
xjh272935444
时间:
2017-4-17 15:15
同求啊
作者:
HxFor51
时间:
2017-4-17 20:33
目测上面的是可以用的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1