<p id="5vvtt"><ruby id="5vvtt"><mark id="5vvtt"></mark></ruby></p><p id="5vvtt"></p>

    <p id="5vvtt"></p>
    <ruby id="5vvtt"><b id="5vvtt"></b></ruby>

          <ruby id="5vvtt"></ruby>

          <ruby id="5vvtt"><mark id="5vvtt"></mark></ruby>
            1
            收藏
            微博
            微信
            復制鏈接

            基于單片機的門控系統設計(紅外遙控步進電機源碼和電路)

            基于單片機的門控系統電路原理圖如下:
            電路圖圖片格式的.jpg

            制作出來的實物圖如下:
            0.png 0.jpg 0.jpg 0.jpg
            元件清單:
            單片機*1
            11.0592晶振*1
            瓷片電容22*2
            電阻10k*1
            電解電容10μF*2
            四腳按鍵*3
            DC電源座(3.5mm)*1、
            LED紅燈(3mm)*1
            電阻1k*3
            DIP16底座*1
            ULN2003AN芯片*1
            步進電機*1
            紅外人體傳感器*1
            LED紅燈(5mm)*1
            LED綠燈(5mm)*1
            排針*9
            杜邦線*7
            洞洞板*1
            焊接跳線(不計)
            焊錫絲(不計)

            單片機源程序如下:

            1. #include
            2. #define uint unsigned int
            3. #define uchar unsigned char
            4. unsigned char code RUN1[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//正轉
            5. unsigned char code RUN2[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//反轉

            6. sbit led1=P0^1;           //綠色的
            7. sbit led2=P0^0;           //紅色的

            8. sbit hongwai=P1^0;

            9. sbit kaibtn=P1^1;
            10. sbit guanbtn=P1^2;

            11. uint ji=0;
            12. uint miao=0;


            13. uint ji2=0;
            14. uint miao2=0;

            15. bit flag=1;
            16. bit flag2=0;


            17. /******延時函數****************/
            18. void delay(unsigned int t)
            19. {                           
            20.    unsigned int k;
            21.    while(t--)
            22.    {
            23.      for(k=0; k<60; k++)//用for的空循環延長程序的執行時間
            24.      { }
            25.    }
            26. }

            27.           //步進電機驅動         正轉
            28. void  zz()
            29. {
            30.    unsigned char i;
            31.   
            32.       for (i=0; i<8; i++)       //一個周期轉3.75*8=30度
            33.         {
            34.           P2 = RUN1[i]&0x1f;     //取數據
            35.           delay(2);             //調節轉速
            36.         }


            37.   }
            38.   //步進電機驅動  反轉
            39. void  fz()
            40. {
            41.    unsigned char i;
            42.   
            43.       for (i=0; i<8; i++)       //一個周期轉3.75*8=30度
            44.         {
            45.           P2 = RUN2[i]&0x1f;     //取數據
            46.           delay(2);             //調節轉速
            47.         }

            48.   }


            49.          void dingshi1()
            50.          {
            51.          TMOD=0x01;
            52.          TH0=(65536-50000)/256;
            53.          TL0=(65536-50000)%256;
            54.           TH1=(65536-50000)/256;
            55.          TL1=(65536-50000)%256;
            56.          EA=1;
            57.          ET0=0;
            58.          TR0=0;
            59.                   ET1=0;
            60.          TR1=0;
            61.          }
            62. void main()
            63. {       
            64.   dingshi1();
            65.        
            66. while(1)
            67. {

            68.                            if(kaibtn==0)
            69.                            {
            70.                                       fz();

            71.                            }

            72.                            if(guanbtn==0)
            73.                            {
            74.                            zz();
            75.                            }
            76.                  
            77.                  if(flag==1)
            78.                  {

            79.                    if(hongwai==1||kaibtn==0) //檢測到有人的情況下 打開門
            80.                    {
            81.        
            82.                                    ET0=1;
            83.                                    TR0=1;
            84.                                    fz();
            85.                                    led1=0;
            86.                                    led2=1;
            87.                    }
            88.                 }                                                               
            89.                        
            90.                        
            91.                        
            92.                 if(flag2==1)
            93.                         {
            94.                         if(hongwai==0||guanbtn==0)  //檢測到無人的情況下
            95.                         {
            96.        
            97.                                    ET1=1;
            98.                                    TR1=1;
            99.                                    zz();
            100.                                    led1=1;
            101.                                    led2=0;
            102.                         }       
            103.                 }
            104.                                
            105.                                   
            106.                                     if(miao==5)        //
            107.                                  {
            108.                              miao=0;
            109.                                  P2=0x00;
            110.                                  ET0=0;
            111.                                  TR0=0;
            112.                                  flag=0;
            113.                                  flag2=1;
            114.                                  led1=1;
            115.                              led2=1;
            116.                                  }               

            117.                                  if(miao2==30) //停止的時間調節的地方-具體時間可以自己實際操作計時計算
            118.                                  {
            119.                                  miao2=0;
            120.                                  ET1=0;
            121.                                  TR1=0;
            122.                              flag2=0;
            123.                                  flag=1;
            124. led1=1;
            125. led2=1;
            126.                                  }



            127.                  





            128. }
            129. }


            130. void timer0() interrupt 1
            131. {
            132.          TH0=(65536-50000)/256;
            133.          TL0=(65536-50000)%256;
            134.          ji++;
            135.          if(ji==20)
            136.          {
            137.          ji=0;
            138.          miao++;
            139.          }
            140. }

            141. void timer1() interrupt 3
            142. {
            143.          TH1=(65536-50000)/256;
            144.          TL1=(65536-50000)%256;
            145.          ji2++;
            146.          if(ji2==20)
            147.          {
            148.          ji2=0;
            149.          miao2++;
            150.          }
            151. }
            復制代碼


            收藏 239 0 1
            粉絲
            0
            關注
            0
            主題
            4
            你好有沒有完整的電路原理圖
            0

            回答于 · 2024-01-14 11:38

            亚洲精品免费看>>在线免费观看视频>>亚洲精品免费看