求助-89C51红外发射程序
http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_583934D8M4EF.jpg发射电路图 (原文件名:F08FA415-E4D2-43D3-89BA-AAEA476B4ADA.jpg)
程序:
#include "regx52.h"
#define IR_OUT P3_4
#define _MHz_ 12
//T1 13us产生一次中断 用于产生38K载波
//T0 方式1 16位用于定时
void Init_Timer(void)
{
TMOD=0x21; //T0 mode 1 T1 mode 2
TH1=256-(1000*_MHz_/38.0/12)/2+0.5;
TL1=TH1;
ET1=1;
EA=1;
}
//发送引导码发送方:9ms高电平 4.5ms低电平
void Send_Start_Bit(void) //TR1的值=发送的电平
{
//9ms 0
TH0=(65536-9000/12*_MHz_)/256;
TL0=(65536-9000/12*_MHz_)%256;
TR0=1;
TR1=0;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
//4.5ms 1
TH0=(65536-4500/12*_MHz_)/256;
TL0=(65536-4500/12*_MHz_)%256;
TR0=1;
TR1=1;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
}
//发送0
void Send_Bit_0(void)
{
//0.565ms 0
TH0=(65536-565/12*_MHz_)/256;
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=0;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
//0.565ms 1
TH0=(65536-565/12*_MHz_)/256;
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=1;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
}
//发送1
void Send_Bit_1(void)
{
//1.685ms 0
TH0=(65536-1685/12*_MHz_)/256;
TL0=(65536-1685/12*_MHz_)%256;
TR0=1;
TR1=0;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
//0.565ms 1
TH0=(65536-565/12*_MHz_)/256;
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=1;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
}
//发送一字节 8位
void Send_Char(unsigned char ir_data)
{
unsigned char i,j;
j=ir_data;
Send_Start_Bit();
for(i=0;i<8;i++)
{
if(j&0x80)
Send_Bit_1();
else
Send_Bit_0();
j<<=1;
}
}
void Delay10ms(void)
{
TH0=(65536-10000/12*_MHz_)/256;
TL0=(65536-10000/12*_MHz_)%256;
TR0=1;
while(!TF0);
TF0=0;
}
void main(void)
{
Init_Timer();
while(1)
{
Send_Char(0x55);
Delay10ms();
}
}
//-----------------------------------------------------------------------
//T1 ISR
void T1_ISR(void) interrupt TF1_VECTOR using 1
{
IR_OUT=!IR_OUT;
}
这是我用遥控器 在学习板上解的码
http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_583935N85GP5.jpg
(原文件名:图像11.jpg)
现在我把板子焊好了 结果 学习板上就 是接受不到数据 .板子检查过了 线路没有问题
我想应该是没有错的 在仿真上用示波器可以发射的到 有波形出来的 现在很迷茫不知道 哪里出错了
各位大虾 帮忙看看 电路图和程序有没有错 谢谢! 那位大虾能救救小弟阿 ..小弟感激不尽 ! 把8050 发射极电阻挪到集电极去。 mark 下程序 1.检查发射部分的程序,载波信号约为38KHZ,不要偏差太大。
2.检查一下红外发射管是否有输出红外信号,这个很简单,找一个数码相机(手机上的相机也行),镜头对着红外管,如果有红外光射出,相机画面中红外管的位置会出现很亮的现象。
3.检查一下接收管是否有问题,发射管对着接收管一直发射红外线,用示波器观察接收管引脚的信号。
4.检查接收部分程序。 现在怎么样了楼主,成功了吗? 可以的 楼主好了么,我也正需要用单片机发射红外的程序!!!嘻嘻!!! 在参考楼主的代码下,我改动了一些东西(例如编码方式),现在实现了!大家可以参考一下!!!
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4945774&bbs_id=9999
页:
[1]