资源简介

proteus仿真电路 包括仿真电路,红外编码,解码显示

资源截图

代码片段和文件信息

#include 
#define TIMEH 12 //基于22.1184M时钟晶振,数字越大,时间越长
#define TIMEL 50 //基于22.1184M时钟晶振,数字越大,时间越长
#define ROW P3   //矩阵按键接口定义
#define LINE P2  //矩阵按键接口定义

extern void timer_init(void);
extern void delay(unsigned int);
extern unsigned char scan_key(void);

unsigned char irm_code;
sbit QD = P1^0;

void main()
{
unsigned char tmp;
irm_code=0xff;
timer_init();
while(1) {
tmp = scan_key();
if(tmp!=0xff) {
if(irm_code==0xff) {//一次键值发射完成后会将irm_code置为0xff
irm_code = tmp; //键值传递
TR0 = 1;  //启动定时器,完成编码发射
}
delay(10);//两次编码发射之间需要延时,连续发射会导致解码失败  
}
}  
}

void timer_init(void)
{
TMOD = 0x01;
TH0 = 0xff;
TL0 = 0xff;
EA = 1;
ET0 = 1;
TR0 = 0;
}

/*定时中断,红外编码*/
void timer_int(void) interrupt 1
{
static unsigned char i=0flag=0;
QD=~QD;
if(i<10) { //连续发射5个“0”引导码
TH0 = 255-TIMEH/2;
TL0 = 255-TIMEL/2;
i++;
}
else if(i<18) { //数据编码
if((irm_code & 0x80)==0x80) {
TH0 = 255-TIMEH;
TL0 = 255-TIMEL;
irm_code <<= 1;
i++;
}
else {
TH0 = 255-TIMEH/2;
TL0 = 255-TIMEL/2;
if(flag) {
irm_code <<= 1;
i++;
}
flag ^= 0x01;
}
}
else {
TR0 = 0;
i=0;
QD=1;
irm_code=0xff;
TH0 = 0xff;
TL0 = 0xff;   
}
}


void delay(unsigned int t)
{
unsigned char i;
while(t--) for(i=0;i<230;i++);
}

/*矩阵按键扫描*/
unsigned char scan_key(void)
{
unsigned char j; 
static unsigned char i=0;
ROW = 255-(1< if(LINE!=0xff) 
for(j=0;j<8;j++) 
if(LINE==(255-(1< i++; i&=0x03;
return(0xff);
}






 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        790  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_int.c

     文件        230  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_int.h

     文件       2584  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_int.LST

     文件       3737  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_int.OBJ

     文件       1017  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_pro.Opt

     文件       2491  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_pro.Uv2

     文件       1017  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_pro_Opt.Bak

     文件       2505  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\irm_pro_Uv2.Bak

     文件       7202  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main

     文件       1318  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main.c

     文件       1656  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main.hex

     文件         56  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main.lnp

     文件       3977  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main.LST

     文件       7702  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main.M51

     文件       4238  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main.OBJ

     文件        939  2010-03-29 21:34  一种红外遥控编解码仿真\解码显示\main.plg

     文件       4247  2010-03-29 21:34  一种红外遥控编解码仿真\红外编码\IRM编码

     文件       1267  2010-03-29 21:34  一种红外遥控编解码仿真\红外编码\IRM编码.hex

     文件         43  2010-03-29 21:34  一种红外遥控编解码仿真\红外编码\IRM编码.lnp

     文件       7084  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\IRM编码.M51

     文件        972  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\IRM编码.Opt

     文件        167  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\IRM编码.plg

     文件       2104  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\IRM编码.Uv2

     文件        971  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\IRM编码_Opt.Bak

     文件          0  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\IRM编码_Uv2.Bak

     文件       1775  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\main.c

     文件       5017  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\main.LST

     文件       4715  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\main.OBJ

     文件       3195  2010-03-29 21:35  一种红外遥控编解码仿真\红外编码\mainbak.c

     文件     238174  2010-03-29 21:35  一种红外遥控编解码仿真\仿真电路\Last Loaded 红外遥控器G328111仿真.DBK

............此处省略12个文件信息

评论

共有 条评论