标题:
单片机学习红外遥控程序,求指导
[打印本页]
作者:
zhy123654
时间:
2019-10-22 13:36
标题:
单片机学习红外遥控程序,求指导
学习红外线遥控好几天,看了很多教程,感觉还是一头雾水,最后自己估摸着写了一个最小发射程序,不出意外,没有任何动静,请大家帮忙看一下,这个程序错在哪儿,如果错的实在太多,能不能麻烦帮忙写一个这样的小程序,让我学习一下,谢谢!(不要写大的遥控器程序,我的智商,根本看不懂)
单片机源程序如下:
#include <stc52.h>
#include <intrins.h>
#define u8 unsigned char
#define u16 unsigned int
sbit plflag=P1^0; //定义红外发射口
sbit key=P1^1; //定义一个发射开关
void time_init(); //定时器初始化,
void s0(); //发射一位0,
void s1(); //发射一位1,
void main()
{
plflag=0; //P1.0口先置0,
time_init();
while(1)
{
if(key==0)
{
TL1 = 0x9A; //定时器1延时9毫秒设定,
TH1 = 0xDF; //
TR0 = 1; //打开定时器0,
TR1 = 1; //打开定时器1,
while(!TF1); //等待9毫秒
TR0 = 0; //关闭定时器0
TR1 = 0; //关闭定时器1,
plflag=0; //P1.0口归0,
TL1 = 0xCD; //定时器一延时4.5毫秒,
TH1 = 0xEF; //
TF1 = 0; //清空定时器1标志位,
TR1 = 1; //打开定时器1,
while(!TF1); //等待4.5毫秒,
TR1 = 0; //关闭定时器1,
s0();s0();s0();s0();s0();s0();s0();s0(); //测试写三个字节,0x00,0xff,0xff
s1();s1();s1();s1();s1();s1();s1();s1();
s1();s1();s1();s1();s1();s1();s1();s1();
}
}
}
void s0() //写一位0的函数,
{
TL1 = 0xFC; //定时560微秒设置,
TH1 = 0xFD;
TF1 = 0;
TR0 = 1;
TR1 = 1;
while(!TF1);
TR0 = 0;
TR1 = 0;
plflag=0;
TL1 = 0xFC;
TH1 = 0xFD;
TF1 = 0;
TR1 = 1;
while(!TF1);
TR1 = 0;
}
void s1() //写一位1的函数,
{
TL1 = 0xFC; //定时560微秒设置,
TH1 = 0xFD;
TF1 = 0;
TR0 = 1;
TR1 = 1;
while(!TF1);
TR0 = 0;
TR1 = 0;
plflag=0;
TL1 = 0xEF; //定时器1.685毫秒设置,
TH1 = 0xF9;
TF1 = 0;
TR1 = 1;
while(!TF1);
TR1 = 0;
}
void time_init() 定时器初始化函数,定时器零产生38khz
{
TMOD = 0x11; //定时器0定时器1,设置为工作模式1,
TL0 = 0xF4; //
TH0 = 0xFF;
TF0 = 0;
TF1 = 0;
ET0 = 1;
EA = 1;
}
void Timer0() interrupt 1 //定时器0中断服务函数
{
TL0 = 0xf4;
TH0 = 0xFF;
plflag=~plflag;
}
作者:
没耐心
时间:
2019-10-22 17:11
红外遥控的话,你具体想实现什么功能,比如要控制一款空调的开关,你要先让程序学习他的编码,然后发送正确的指令(包括格式和指令的内容),才能实现
作者:
cuihaodianzi
时间:
2019-10-22 19:21
谁来接收?要在接收端看数据啊,加个接收的,然后再串口里看数据
作者:
zhy123654
时间:
2019-10-22 20:37
兄弟们我是问这个程序问题在什么地方,接收是连在电脑串口上自动的,现在接收不到数据
作者:
世客
时间:
2019-11-27 11:27
没耐心 发表于 2019-10-22 17:11
红外遥控的话,你具体想实现什么功能,比如要控制一款空调的开关,你要先让程序学习他的编码,然后发送正确 ...
我想要做一个电视的遥控器怎么做?
作者:
pcbboy
时间:
2019-11-27 17:56
找个例程看看,正点原子也有,金沙滩哪个也不错。
作者:
SroneBridge
时间:
2019-11-27 18:04
首先,引导码后面需要4个字节才能构成一个完整的数据(引导码 地址码 地址反码 数据码 数据反码)。
作者:
SroneBridge
时间:
2019-11-27 18:07
首先,一个完整的数据帧应该是 引导码 地址码 地址反码 数据码 数据反码。你引导码后面只发送3个字节,接收端无法检验是否有数据错误,会被抛弃。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1