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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機紅外線遙控開關實驗 Proteus仿真加源程序

[復制鏈接]
跳轉到指定樓層
樓主
單片機用紅外線來遙控一個開關實驗的仿真原理圖(proteus工程文件可到本帖附件下載):


單片機源程序:


  1. //----------------------------------------------------------------------------------------------------------------------------------
  2. //程序名:  HW6-3.c
  3. //程序功能:紅外線遙控開關程序
  4. // --------------------------------------------------------------------------------------------------------------------------------

  5. #include<reg51.h>                                                   //頭文件
  6. sbit IRIN=P3^2;                                                       //定義紅外IR信號輸入位
  7. sbit SPK=P0^0;                                     //定義蜂鳴器接口
  8. sbit RELAY=P2^7;                                   //定義繼電器接口
  9. unsigned char IRDATA[7];                                   //定義數組,存儲紅外接收到的數據
  10. void delay(unsigned char x);
  11. void fs_d ( );       
  12. //-------------------------------------- 主函數 --------------------------------------
  13. void main()
  14. {
  15.         EA=1;                                          // 允許總中斷
  16.     EX0=1;                                         // 允許外部中斷INT0中斷
  17.         IT0=1;                                         // 外部中斷INT0采用脈沖觸發方式
  18.         SPK=1;                                         // 設置SPK初始值
  19.         IRIN=1;                                        // IR 輸入位設置為高電平
  20.         while(1);                                      // 無限循環
  21. }

  22. //--------------------------------------- 延時函數  ------------------------------------

  23. void delay(unsigned char x)                               //延時約x*0.1ms  
  24. {                                                                                         
  25.         unsigned char i;                                                                
  26.         while(x--)                                                           
  27.         {for(i=0;i<10;i++){}}                                
  28. }

  29. //-------------------------------------  發聲函數  -------------------------------------

  30. void fs_d ( )                                                  
  31. {                                                                                                                   
  32.         unsigned char i;                                               
  33.         for(i=0;i<100;i++)
  34.          {
  35.            delay(4);                                                     
  36.            SPK=~SPK;
  37.          }                                                                        
  38.         SPK=1;
  39. }

  40. //-------------------------------------  中斷解碼函數   -----------------------------------


  41. void IR_IN() interrupt 0 using 0                           //外部中斷INT0函數
  42. {
  43. unsigned char j,k,n=0;                                               //先定義變量,且n=0
  44.     EX0=0;                                                                               //暫時先關中斷
  45.         delay(20);                                                           //延時0.10ms*20=2ms
  46.         if(IRIN==1)                                                   //如果IRIN出現高電平,是干擾信號
  47.          {                                                                    
  48.            EX0=1;
  49.            return;                                      //返回                 
  50.          }
  51.         while(!IRIN){delay(1);}                                    //避開9ms前導低電平信

  52.    for(j=0;j<4;j++)                                                        //一共有4組數據
  53.      {       
  54.           for(k=0;k<8;k++)                                                //每組數據有8位
  55.          {
  56.    while(IRIN){delay(1);}                                // 避開4.5ms高電平
  57.    while(!IRIN){delay(1);}                                 
  58. // 開始接收數據         
  59.    while(IRIN)                                                 
  60.          {
  61.            delay(1);                                                //延時0.1ms
  62.        n++;                                                                //每過0.1ms時n就加1
  63.            if(n>=30)                                            //如果超過30,放棄
  64.                 {                                                              
  65.                   EX0=1;
  66.                   return;}                                  //返回
  67.                 }
  68.                   
  69.               IRDATA[j]=IRDATA[j]>>1;                   //右移1位
  70.           if(n>=8){IRDATA[j]=IRDATA[j]|0x80;}                                                                   
  71.               n=0;                                            //n清0
  72.             }
  73.      }
  74. //檢查接收的數據和數據反碼是否相反          
  75.     if(IRDATA[2]!=~IRDATA[3])                            //判斷數據碼和數據反碼是不是相反
  76.            {                                                                            //否則就放棄
  77.              EX0=1;
  78.              return;
  79.            }       
  80. //執行語句                  
  81.        if(IRDATA[2]==0x01) RELAY=0;                //接通繼電器
  82.            fs_d ( );                                   

  83. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼




該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共25個項目):http://www.zg4o1577.cn/bbs/dpj-79328-1.html

本例程下載(含proteus仿真工程文件與源碼):
6-3單片機紅外線遙控開關實驗.rar (74.52 KB, 下載次數: 105)


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

使用道具 舉報

沙發
ID:197189 發表于 2017-5-6 09:44 | 只看該作者
好資料。
回復

使用道具 舉報

板凳
ID:225259 發表于 2017-8-6 18:16 | 只看該作者
呵呵,怎么沒人頂!看不懂叫喔!
回復

使用道具 舉報

地板
ID:440585 發表于 2019-12-9 10:03 | 只看該作者
謝謝樓主分享  正需要一個遙控開關程序   
回復

使用道具 舉報

5#
ID:440585 發表于 2019-12-10 08:20 | 只看該作者
樓主忽悠人呀 ,沒有發射程序  ,接收程序也不全  能真誠點不
回復

使用道具 舉報

6#
ID:540262 發表于 2019-12-10 09:39 來自觸屏版 | 只看該作者
不錯不錯 要是可以直接下載就好啦
回復

使用道具 舉報

7#
ID:728172 發表于 2020-4-24 11:03 | 只看該作者
多向前輩學習,這么好的資料!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品自拍视频 | 久艹av | 日韩一二三区视频 | 日日夜夜草| 国产精品久久99 | 99视频在线免费观看 | 精品二三区| 高清欧美性猛交 | 91热爆在线观看 | 99久久婷婷国产综合精品首页 | 伊久在线| 国产三级日本三级 | 日本午夜视频 | 黄色片免费在线观看 | 久久精品视频网站 | 美女视频一区二区三区 | 久久99视频这里只有精品 | 日韩精品一区二区三区视频播放 | 国产精品欧美精品日韩精品 | 亚洲欧美一区二区在线观看 | 国产综合久久久久久鬼色 | 日韩国产高清在线观看 | 欧美激情综合 | 一区二区三区视频在线 | 一区二区三区不卡视频 | 四虎影视1304t| 夜夜摸天天操 | 国产精品揄拍一区二区 | 美女视频一区 | 麻豆91精品91久久久 | 久久精品国产久精国产 | 日韩在线中文字幕 | 一区二区三区国产精品 | 久久大| 一区二区三区四区在线 | 久久一区| 大香网伊人 | 久久高清国产视频 | 国产视频导航 | 日韩成人免费视频 | h视频免费在线观看 |