|
想利用单片机制作一个红外遥控遥控 波形有了 始终 不能遥控 电视 求大神给看看哪里出了问题
为了产生38KHZ 的波形 晶振 我更改成了 24M 的 另外附上示波器 波形 大神也给看看 波形有杂波是怎么出来的 而且杂波不是在固定位置 用电视配套的遥控器 就没有杂波 示波器是刚买的 不太会用 如果不对 大神给个提示重新给上图片
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit LED = P0^0;
sbit KEY= P2^7;
uchar code dat[4]={0x00,0xBF,0X00,0XFF};
void delay8us(void) //误差 0us
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=4;a>0;a--);
}
void delay10ms(void) //误差 0us
{
unsigned char a,b;
for(b=215;b>0;b--)
for(a=45;a>0;a--);
_nop_(); //if Keil,require use intrins.h
_nop_(); //if Keil,require use intrins.h
}
void IR_Send(uint i)
{
while(i--)
{
LED = 1;
delay8us();
LED = 0;
delay8us();
delay8us();
}
}
void IR_NO_Send(uint i)
{
while(i--)
{
LED = 0;
delay8us();
delay8us();
delay8us();
}
}
void IR_Send_NEC_1()
{
IR_Send(21);
IR_NO_Send(55);
}
void IR_Send_NEC_0()
{
IR_Send(21);
IR_NO_Send(21);
}
void Send_Data()
{
uchar i,j,data1;
IR_Send(300);
IR_NO_Send(150);
for(j=0;j<4;j++)
{
data1 = dat[j];
for(i=0;i<8;i++)
{
if(data1&0x01)
IR_Send_NEC_1();
else
IR_Send_NEC_0();
data1>>=1;
}
}
IR_Send_NEC_0();
}
void key_pros()
{
if(KEY==0)
{
delay10ms();
if(KEY==0)
{
while(!KEY);
Send_Data();
}
}
}
void main()
{
LED = 0;
while(1)
{
key_pros();
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|