标题: 51单片机的红外遥控接收程序 为什么接收端没有显示? [打印本页]
作者: 梦想的方向 时间: 2022-11-20 14:16
标题: 51单片机的红外遥控接收程序 为什么接收端没有显示?
接收程序
#include<AT89X51.h>
#define uchar unsigned char
#define uint unsigned int
uchar data IRcode[4]; //定义一个4字节的数组用来存储代码
uchar CodeTemp; //编码字节缓存变量
uchar i,j,k; //延时用的循环变量
uchar dat=0;
uchar num;
uint time;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7
sbit IRsignal=P3^2; //HS0038接收头OUT端直接连P3.2(INT0)
void delay(uint z);
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=120;b>0;b--);
}
/**************************延时0.9ms子程序**********************/
void Delay0_9ms(void)
{uchar j,k;
for(j=18;j>0;j--)
for(k=20;k>0;k--) ;
}
/***************************延时1ms子程序**********************/
void Delay1ms(void)
{uchar i,j;
for(i=2;i>0;i--)
for(j=230;j>0;j--) ;
}
/***************************延时4.5ms子程序**********************/
void Delay4_5ms(void)
{uchar i,j;
for(i=10;i>0;i--)
for(j=225;j>0;j--) ;
}
/**************************** 延时子程序 ************************/
/************************中断0解码服务子程序**********************/
void int0(void) interrupt 0 using 2
{
EX0=0;
P3_0=!P3_0;
num=0;
for(k=0;k<4;k++)
{
Delay0_9ms();
if (IRsignal==1) //如果0.9ms后IRsignal=1,说明不是引导码
{
k=4;
break; //P0=0XFF;
}
else if(k==2) //如果持续了3×0.9ms=9ms的低电平,说明是引导码
{
//P0=0;
time=0;
num=0;
while(IRsignal==0);
//if(IRsignal==0)
// num+=1;
// P1=num;
// while(IRsignal==0);
while(time<100)
{
time++;
Delay0_9ms(); //跳过持续1ms的高电平
Delay0_9ms(); //跳过持续1ms的高电平
if(IRsignal==0)
{
P0=num;
num+=1;
//P1=num;
}
while(IRsignal==0);
}
if(num==1)
led1=!led1;
if(num==2)
led2=!led2;
if(num==3)
led3=!led3;
if(num==4)
led4=!led4;
if(num==5)
led5=!led5;
if(num==6)
led6=!led6;
if(num==7)
led7=!led7;
if(num==8)
led8=!led8;
break;
// delay(2);
}
}
EX0=1;
}
void init()// 定时器初始化
{
TMOD=0x11;
EA=1;
IT0=1; //INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
EX0=1; //外部中断INT0开, (1:开, 0:关 )
CodeTemp=0; //初始化红外编码字节缓存变量
}
main()
{
init();
while(1)
{
}
}
求求各位大佬看看我这个为什么接收端没有显示
-
51hei截图20221120141625.png
(169.78 KB, 下载次数: 78)
作者: 梦想的方向 时间: 2022-11-20 14:36
对于这个网上找了很久了 有点头大了
作者: taotie 时间: 2022-11-20 15:19
看看这语句末尾
sbit led8=P1^7 <———— 缺点什么?????
作者: 梦想的方向 时间: 2022-11-20 19:24
有点不太理解
作者: dyx811 时间: 2022-11-20 19:41
应该是解码环节出了问题。NEC编解码有点复杂。
但是你用单片机写发送码,哪跟编码还有一定关系。
编解码要一致。
我没有仔细研究过代码,但就这是这个思路。
作者: 51hei**1140 时间: 2022-11-20 20:53
1、晶振用的多少,是否合适
2、收发程序都发上来
3、用示波器观察波形,是怎样波形
作者: 梦想的方向 时间: 2022-11-20 22:45
晶振用的都是38KHZ 发射程序也放上来了 人都要麻了 发射那里波形出来 然后接收模块都不动的
作者: 梦想的方向 时间: 2022-11-20 22:47
作者: 145678 时间: 2022-12-6 13:24
sbit led8=P1^7 <—— 缺了一点什么
作者: 145678 时间: 2022-12-6 13:24
sbit led8=P1^7 <————缺一点什么

作者: 虚心的帅哥 时间: 2022-12-7 12:07
sbit led8=P1^7 <——缺点什么
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |