资源简介
可以学习其他遥控器,这个不是记录脉冲的方式,而是用红外编码的方式进行学习。里面有原理图、pcb版图、c语言程序
代码片段和文件信息
/*********************************************************************/
// remote.c
// 学习型遥控器
// 使用keil c51 2004.10.12
/*********************************************************************/
//使用AT89C52单片机,12MHZ晶振,
//
//#pragma src(E:\remote.asm)
#include “reg51.h“
#include “intrins.h“ //_nop_();延时函数用
//
#define uchar unsigned char
#define uint unsigned int
//
sbit studylamp=P1^6; //学习状态指示灯
sbit lamp=P1^7; //发射指示灯
sbit studykey=P3^2; //学习键(中断口)
sbit remotein=P3^4; //遥控信号输入口
sbit remoteout=P3^5; // 遥控输出口
sbit txkey=P1^0 ; //发射键
//
//
uint ijm=255nks;
uchar idata remotedata[206];//存肪冲宽度数据用
uint head; //存起始位用
uint remdata;
//
//
////
/*********1毫秒延时程序**********/
delay1ms(uint t)
{
for(i=0;i for(j=0;j<120;j++)
;
}
//
//
/***********初始化函数**********/
clearmen()
{
studylamp=0; //关学习灯
lamp=0; //关发射指示
remoteout=0; //关遥控输出
remotein=1; //
for(i=0;i<206;i++) //清内存
{remotedata[i]=0x00;}
IE=0x00;
IP=0x01;
TMOD=0x22; //8位自动重装模式
PCON=0X00;
TH1=0xf3; //40KHZ初值
TL1=0xf3;
IT0=1;
EX0=1; //外中断允许
EA=1; //开总中断
}
//
//
/**********键功能函数************/
keywork()
{
if(txkey==0)
{
while(txkey==0); //等待键释放
ET1=1;TR1=1; //发起始位
for(i=head;i>0;i--){;}
remoteout=0;ET1=0;TR1=0;
n=0;
while(1)
{
if(remotedata[n]==0x00){delay1ms(10);break;}//数据为0结束
for(i=remotedata[n];i>0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
lamp=~lamp;n++;//偶地址不发脉冲
//
ET1=1;TR1=1; //奇地址发调制脉冲
for(i=remotedata[n];i>0;i--){;}
remoteout=0;ET1=0;TR1=0;n++;
}
}
}
//
//
/***********主函数***************/
main()
{
clearmen(); //初始化
while(1)
{
keywork(); //按键扫描
}
}
//
//
/*********40KHZ发生器***********/
//定时中断T1
void time_intt1(void) interrupt 3
{
remoteout=~remoteout;
}
//
//
/***********学习函数 ***********/
//外中断0
void intt0(void) interrupt 0
{
ET1=0;TR1=0;EX0=0;EA=0;
head=0;studylamp=1;lamp=0;
while(studykey==0); //等待键释放
while(remotein==1); //等待遥控码输入
head=0; //读入起始位
while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();head++;}
n=0;remdata=0x0000;
while(1)
{
while(remotein==1){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;}
if(remdata>m) //高电平>5毫秒退出
{remotedata[n]=0x00;EX0=1;EA=1;goto end;}
remotedata[n]=remdata;n++; //存高电平脉宽数据
remdata=0x0000; //脉宽计数器清零
while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15872 2002-01-15 10:48 学习型红外线遥控\元器件清单.xls
文件 131072 2002-01-12 09:12 学习型红外线遥控\原理图和PCB\PCB2.PcbDoc
文件 31515 2002-01-07 09:43 学习型红外线遥控\原理图和PCB\PCB_Project1.PrjPCB
文件 4096 2002-01-05 01:50 学习型红外线遥控\原理图和PCB\receiver.SchLib
文件 149504 2012-02-18 11:55 学习型红外线遥控\原理图和PCB\SHEET1.SCHDOC
文件 5632 2002-01-05 01:50 学习型红外线遥控\原理图和PCB\U1.SchLib
文件 329216 2012-02-18 10:44 学习型红外线遥控\原理图和PCB\学习型红外线遥控器.PcbDoc
文件 142336 2012-02-18 10:43 学习型红外线遥控\原理图和PCB\学习型红外线遥控器.SchDoc
文件 7551 2005-03-25 11:05 学习型红外线遥控\源程序\remote
文件 3447 2005-03-25 11:05 学习型红外线遥控\源程序\remote.c
文件 1930 2005-03-25 11:05 学习型红外线遥控\源程序\remote.hex
文件 60 2005-03-25 11:05 学习型红外线遥控\源程序\remote.lnp
文件 6354 2005-03-25 11:05 学习型红外线遥控\源程序\remote.LST
文件 10195 2005-03-25 11:05 学习型红外线遥控\源程序\remote.M51
文件 8237 2005-03-25 11:05 学习型红外线遥控\源程序\remote.OBJ
文件 1263 2005-03-25 11:05 学习型红外线遥控\源程序\remote.Opt
文件 1263 2005-03-25 11:05 学习型红外线遥控\源程序\remote.opt.bak
文件 394 2005-03-25 11:06 学习型红外线遥控\源程序\remote.plg
文件 1734 2005-03-25 11:05 学习型红外线遥控\源程序\remote.Uv2
文件 1734 2005-03-25 11:05 学习型红外线遥控\源程序\remote.Uv2.bak
文件 56644 2012-02-18 10:29 学习型红外线遥控\源程序\remote.uvopt
文件 13364 2012-02-18 10:29 学习型红外线遥控\源程序\remote.uvproj
文件 5115 2002-04-16 14:32 学习型红外线遥控\源程序\STARTUP.A51
文件 11675 2005-03-25 11:05 学习型红外线遥控\源程序\STARTUP.LST
文件 758 2005-03-25 11:05 学习型红外线遥控\源程序\STARTUP.OBJ
文件 146177 2012-03-02 17:09 学习型红外线遥控\照片 视频\照片1.jpg
文件 9983614 2013-04-19 09:01 学习型红外线遥控\照片 视频\自学习红外.avi
目录 0 2018-07-08 03:28 学习型红外线遥控\原理图和PCB
目录 0 2018-07-07 09:34 学习型红外线遥控\源程序
目录 0 2018-07-07 09:34 学习型红外线遥控\照片 视频
............此处省略4个文件信息
评论
共有 条评论