久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2476|回復: 4
打印 上一主題 下一主題
收起左側

8051單片機制作紅外發射與接收

[復制鏈接]
跳轉到指定樓層
樓主
ID:21069 發表于 2018-12-6 11:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


///////////////////////////  紅外發射代碼  ///////////////////////////

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit rfot=P1^6;  //紅外線輸出

sbit akey=P1^2;  //A鍵輸入

sbit bkey=P1^3;  //B鍵輸入

sbit ckey=P1^4;  //C鍵輸入

sbit dkey=P1^5;  //D鍵輸入

void delay_ms(uint xms)              //延時子函數1ms*xms

{

     uint i,j;

     for(i=xms;i>0;i--)

           for(j=127;j>0;j--);

}

void delay_112()                 //紅外線延時函數,延時1.12毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=142;n>0;n--);



}

void delay_56()                 //紅外線延時函數,延時0.56毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=70;n>0;n--);



}

void delay_50()                 //紅外線延時函數,延時0.5毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=64;n>0;n--);



}

void bit_boot()

{

     rfot=0;      delay_ms(9);

     rfot=1;

     delay_ms(4);

     delay_50();

}

void a_key()           //A鍵編碼

{

     uint i;

     bit_boot();

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_56();

     }

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_112();

     }

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();

     rfot=0;      delay_56();

     rfot=1;

     delay_56();

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      //用戶碼



     rfot=0;

     delay_56();

     rfot=1;

     delay_112();

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();    //用戶反碼      

     rfot=0;

     delay_ms(1);

     rfot=1;      

}

void b_key()          //B鍵編碼

{

     uint i;

     bit_boot();

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_56();

     }

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_112();

     }

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;      delay_56();

     rfot=1;

     delay_56();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();        用戶碼



     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();          用戶反碼      

     rfot=0;

     delay_ms(1);

     rfot=1;   

}

void c_key()            //C鍵編碼

{

     uint i;

     bit_boot();

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_56();

     }

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_112();

     }

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;      delay_56();

     rfot=1;

     delay_56();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();        用戶碼



     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();          用戶反碼      

     rfot=0;

     delay_ms(1);

     rfot=1;

}

void d_key()                //D鍵編碼

{

     uint i;

     bit_boot();

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_56();

     }

     for(i=0;i<8;i++)

     {

         rfot=0;

         delay_56();

         rfot=1;

         delay_112();

     }

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;      delay_56();

     rfot=1;

     delay_56();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();        用戶碼



     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_112();      

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();        

     rfot=0;

     delay_56();

     rfot=1;

     delay_56();          用戶反碼      

     rfot=0;

     delay_ms(1);

     rfot=1;

}

void init()

{

     TMOD=0x01;

     TH0=(65536-50000)/256;

     TL0=(65536-50000)%256;

     EA=1;

     ET0=1;

}

void keyscan()        //鍵盤掃描程序

{

     if(akey==0)

     {

        delay_ms(5);

        if(akey==0)

        {

           a_key();

           while(!akey);   

        }

     }

      if(bkey==0)

     {

        delay_ms(5);

        if(bkey==0)

        {

           b_key();

           while(!bkey);   

        }

     }

     if(ckey==0)

     {

        delay_ms(5);

        if(ckey==0)

        {

           c_key();

           while(!ckey);   

        }

     }

     if(dkey==0)

     {         delay_ms(5);

        if(dkey==0)

        {

           d_key();

           while(!dkey);

           TR0=~TR0;   

        }

     }     

}

void main()                 //程序從這里開始

{

     init();



     while(1)

     {

         keyscan();

     }

}

void T0_time()interrupt 1

{

     TH0=(65536-50000)/256;

     TL0=(65536-50000)%256;   

}  



///////////////////////////  紅外接收代碼  ///////////////////////////
#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit rfin=P3^7;  //紅外線輸入

void delay_ms(uint xms)              //延時子函數1ms*xms

{

     uint i,j;

     for(i=xms;i>0;i--)

           for(j=127;j>0;j--);

}

void delay_112()                 //紅外線延時函數,延時1.12毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=142;n>0;n--);



}

void delay_56()                 //紅外線延時函數,延時0.56毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=70;n>0;n--);



}

void delay_50()                 //紅外線延時函數,延時0.5毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=64;n>0;n--);



}



void delay_35()                 //紅外線延時函數,延時0.35毫秒

{      uint m,n;

     for(m=1;m>0;m--)

        for(n=60;n>0;n--);



}

void delay_30()                 //紅外線延時函數,延時0.30毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=41;n>0;n--);



}

void delay_25()                 //紅外線延時函數,延時0.25毫秒

{

     uint m,n;

     for(m=1;m>0;m--)

        for(n=26;n>0;n--);



}

void main()

{

     uchar i,j,k,temp,m;

     uchar usercode,user_code,datecode,date_code;

     //k=0;

     //temp=0;

     //rfin=0;

  if(rfin==0)

     {

         for(m=0;m<10;m++)     //跳過9mS引導區

         {

            if(rfin==0)

            {

               delay_56();

               delay_30();

            }

         }

         if(rfin==1)                //跳過4.5mS引導區

         {

             delay_ms(4);

             delay_50();

         }

         if(rfin==0);

         {              delay_56;

             delay_56;

             delay_30;

         }

             for(i=0;i<4;i++)   

             {

                   temp=0;
                   k=1;   

                for(j=0;j<9;j++)

                {

                    if(rfin==0)

                    {

                       k=0;

                    }

                     else  

                       if(rfin==1)

                       {

                       k=1;

                       }                             

                    temp=(temp<<1)|k;

                       if(rfin==0)

                       {  

                           delay_25();

                           if(rfin==1);

                           delay_56();

                           delay_30();

                        }

                        else

                        {   

                           if(rfin==1)

                           {  

                              delay_35();

                              if(rfin==1);

                              delay_56();

                              delay_30();

                           }

                         }

                  }

                  switch (i)

                  {

                     case 0: usercode=temp;        //用戶碼數據寄存器

                      break;

                     case 1: user_code=temp;       //用戶反碼數據寄存器

                      break;                      case 2: datecode=temp;         //數據碼數據寄存器

                      break;

                     case 3: date_code=temp;        //數據反碼數據寄存器

                      break;

                  }      

             }

         P1=datecode;                    //將數據碼送入P1端口點亮LED

      }

}







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-12-6 16:44 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:21069 發表于 2018-12-6 18:15 | 只看該作者
明明放了原理圖的,怎么就沒了呢
回復

使用道具 舉報

地板
ID:21069 發表于 2018-12-6 20:55 | 只看該作者
8051單片機制作紅外發射與接收電路圖.rar (73.76 KB, 下載次數: 51)
回復

使用道具 舉報

5#
ID:654774 發表于 2020-4-17 01:17 來自觸屏版 | 只看該作者
源程序怎么下載呀
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美大片一区二区 | 成人精品一区二区三区中文字幕 | 久久久久久国产精品 | 日本精品视频一区二区 | a欧美| 国产精品久久久久久久久久免费看 | 中文字幕精 | 久久国内精品 | 色欧美片视频在线观看 | 99精品国产一区二区青青牛奶 | av国产精品 | 91色网站| 日本久久精品 | 欧美成人精品在线观看 | 精品久久久一区二区 | 亚洲国产高清高潮精品美女 | 91精品国产91久久久久久不卞 | 中文字幕在线视频网站 | 男女羞羞视频在线看 | 欧美一级高清片 | 色婷婷av一区二区三区软件 | 亚州av| 自拍 亚洲 欧美 老师 丝袜 | 日韩中文字幕在线观看视频 | 中文字幕三区 | 国产成人aⅴ | 亚洲综合中文字幕在线观看 | 久久www免费视频 | 九九热在线观看 | 影视先锋av资源噜噜 | av大全在线观看 | 尤物视频在线免费观看 | 国产欧美精品一区二区 | 九九久久久 | 国产精品a久久久久 | 久久国产精品99久久久大便 | 日韩欧美在线观看 | 久久男人| 亚洲人人 | 99久9 | 天天拍天天操 |