这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » shangziyun MCU DIY进程帖【红外编解码串口显示】

共82条 8/9 |‹ 4 5 6 7 8 9 跳转至
专家
2011-12-30 15:20:38     打赏
71楼

电脑开不了机了,一开机就自动断电,过维修期了,没钱啊,只好自己修,修了一天,没办法,想省钱就得花时间,终于找出毛病来了,原来内存条松了,还好硬件没毛病,要不又得出血了!


专家
2011-12-30 15:25:29     打赏
72楼

进入正题,上5110液晶显示图






专家
2011-12-30 15:32:24     打赏
73楼


不经意间发现的,呵呵。
2011即将过去

专家
2011-12-31 13:46:06     打赏
74楼
红外编解码,串口显示

专家
2011-12-31 20:26:04     打赏
75楼
优酷视频转码迟迟不能完成,看来视频今天是发不上来了,再等等吧

专家
2012-01-02 22:58:17     打赏
76楼

等了N多天,优酷不知怎么搞的,视频迟迟不能发布,现在分享我的源程序

/***********************************************************
实验名称:红外发射编码
程序说明:红外发射管产生38K的方波
***********************************************************/
#include<reg52.h>   

sbit LED=P3^6;        //红外发射

sbit key=P3^7;
bit Flag;

void Init_Timer0(void)
{
 TMOD |= 0x01;       
 TH0=0xf0;                
 TL0=0x00;
 EA=1;                     
 ET0=1;                    
 TR0=1; 
}


/******************************************************************/
/*                    定时器0初始化                               */
/******************************************************************/
void Timer0_isr(void) interrupt 1 using 1
{
 TH0=0x0f;  /* Init value */
 TL0=0x00;
 Flag=!Flag;
}

/******************************************************************/
/*                    主函数                                      */
/******************************************************************/
main()
{

 unsigned int j;
 Init_Timer0();    //定时器初始化

 while(!key)
 {

  
 if(Flag)
    {
     for(j=0;j<27;j++)//大约38KHz
     {
      LED=!LED;    //发射管输出
      }
     }
   }
}




/***********************************************************
红外接收,串口显示
***********************************************************/

#include <REG52.h>
#define uchar unsigned char
uchar data    IRcode[4];   
uchar     CodeTemp;   
uchar     i,j,k;    
sbit     IRsignal=P3^2;    
/**************************延时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--) ;
}

/**************************** 延时子程序 ************************/
void Delay(void)
{uchar i,j,k;
for(i=200;i>0;i--) 
   for(j=200;j>0;j--)
      for(k=3;k>0;k--) ;
}


/************************中断0解码服务子程序**********************/
void int0(void) interrupt 0 using 2      
{
EA=0;
for(k=0;k<10;k++)
   {Delay0_9ms();
    if (IRsignal==1)        
   {k=10;break;}
    else if(k==9)           
      {while(IRsignal==0);
         Delay4_5ms();        //跳过持续4.5ms的高电平

      for(i=0;i<4;i++)       //分别读取4个字节
         {for(j=1;j<=8;j++)      //每个字节8个bit的判断
                { while(IRsignal==0);       //等待上升沿
                  Delay0_9ms();      
                  if(IRsignal==1)     //如果IRsignal是"1",则向右移入一位"1"
                    {Delay1ms();
                   CodeTemp=CodeTemp|0x80;
                   if(j<8) CodeTemp=CodeTemp>>1;
                  }
                  else
      if(j<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0"
                 }
              IRcode[i]=CodeTemp;
              CodeTemp=0;
         }
    for(i=0;i<4;i++)        //通过串口将代码发出
             {
     SBUF=IRcode[i];
     while(!TI);       //等待一个字节发送完毕
     TI=0;
             }
   Delay();
       }
   }
EA=1;
}

/***********************串口初始化程序*********************/
void initUart(void)

TMOD|=0x20;
SCON=0x50;
PCON|=0x80;
TH1=0xff;     //57600bps @ 11.0592MHz
TL1=0xff;
TR1=1;
}

/**************************主程序*************************/
void main()
{ initUart();
IT0=1;    
EX0=1;   
EA=1;    //开所有中断
CodeTemp=0;    
Delay();
while(1);
}


专家
2012-01-06 12:43:19     打赏
77楼
晚上回家了,没得网上,下学期见EEPW...

助工
2012-04-07 16:56:55     打赏
78楼
经典呀,看了一下午

高工
2013-05-25 22:56:57     打赏
79楼
重温了。。。。

菜鸟
2014-11-10 20:34:49     打赏
80楼
没法拍

共82条 8/9 |‹ 4 5 6 7 8 9 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]