標題: 單片機熱釋電紅外自動門Proteus仿真程序 [打印本頁]

作者: jijkf    時間: 2020-4-28 15:33
標題: 單片機熱釋電紅外自動門Proteus仿真程序
話不多,直接看圖,本設計是模擬自動門效果,用電機顯示
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg51.h>



  2. sbit led=P0^0;//指示燈信號
  3. sbit k1=P1^2;//按鍵信號
  4. sbit k2=P1^3;//按鍵信號
  5. sbit IN1=P3^0;
  6. sbit IN2=P3^1;
  7. unsigned char flag,n;

  8. void delay(char x);   //延時程序
  9. void  motor_1(float a);
  10. void  motor_2(float a);
  11. void zhengzhuan();       
  12. void fanzhuan();   



  13. void key_process()

  14. {
  15.     if(k1==0)  
  16.          {
  17.                  delay(100); //延時100MS,按鍵必須延時消抖
  18.                 while(!k1);
  19.                  
  20. //    led=~led;
  21.      flag=1;
  22.                  zhengzhuan();//當有人時,正轉
  23.          }
  24.                  
  25.          if(k2==0)  //沒人時, 反轉
  26.          {
  27.                  delay(100);
  28.                  while(!k2);
  29.                  flag=0;
  30.                  fanzhuan();
  31.          }
  32.                  
  33. }


  34. void delay(char x)//延時程序
  35. {                          
  36.    char i;
  37.    while(x--)
  38.    {
  39.      for(i=0; i<120; i++);
  40.    }
  41. }




  42. void  motor_1(float a)//a即想要轉的圈數  //反轉
  43. {
  44.    unsigned char b;
  45.    unsigned int  c;
  46.    for (c=0; c<8*64*a; c++)  
  47.     {
  48.       for (b=0; b<8; b++)
  49.         {
  50.          
  51.                                         IN2=1;
  52.                                         IN1=0;
  53.          delay(1);
  54.          }
  55.     }
  56. }



  57. void  motor_2(float a)//a即想要轉的圈數  //正轉
  58. {
  59.    unsigned char b;
  60.    unsigned int  c;
  61.    for (c=0; c<8*64*a; c++)
  62.     {
  63.       for (b=0; b<8; b++)
  64.         {
  65.                  IN2=0;
  66.                                         IN1=1;
  67.          delay(1);
  68.                                        
  69.          }
  70.     }
  71. }


  72. void Timer0() interrupt 1
  73. {
  74.         TH0  = 0x3c; //每中斷都要重裝載,大概50MS中斷一次,十進制的15536,65536-15536=50000
  75.         TL0  = 0xb0;        
  76.   if(flag)  //表示有人燈亮
  77.         {
  78.                 led=0;
  79.         }
  80.         else    //表示沒人
  81.         {
  82.                 led=1;
  83.         }
  84.        
  85. }         


  86. void zhengzhuan()    //正轉
  87. {
  88.        
  89.        motor_2(0.04); //轉1圈(可以改動)         
  90.        delay(1);
  91.              P3=0XFF;                //防止電機發(fā)熱
  92. }


  93. void fanzhuan()    //正轉
  94. {
  95.        
  96.        motor_1(0.04); //轉1圈(可以改動)         
  97.        delay(1);
  98.              P3=0XFF;                //防止電機發(fā)熱
  99. }




  100. void intial()
  101. {
  102.        
  103.   TMOD = 0x11;//16位計數器
  104.         TH0  = 0x3c;
  105.         TL0  = 0xb0;        
  106.         ET0  = 1;  
  107.         TR0  = 1;
  108.         EA=1;
  109. }

  110. void main()//主程序
  111. {   

  112.          intial();
  113.             
  114.         while(1)
  115.         {
  116.                
  117.            key_process() ; //按鍵處理
  118.   
  119.                
  120.         }
  121. }
復制代碼

所有資料51hei提供下載:
熱釋電紅外自動門.rar (281.86 KB, 下載次數: 149)



作者: 22222546    時間: 2020-4-29 19:16
想問一下樓主,這個是什么

BP9AEAI346W`144WXX69~(L.png (3.27 KB, 下載次數: 60)

BP9AEAI346W`144WXX69~(L.png

作者: 周11111222    時間: 2020-5-11 07:07
仿真沒成功




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1