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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機自動門程序調試問題 求指導。

[復制鏈接]
跳轉到指定樓層
樓主
500黑幣
本帖最后由 鄧鄧鄧 于 2020-4-1 11:40 編輯
  1. 我要用AT89C52做一個自動門,前后門分別有一個紅外傳感用P2.0開關代替,電機選用步進電機分成8步,每走一步檢查是否有信號,可使用遙控器遙控開關(用外部中斷代替)仿真圖如圖,程序大體如下。因為沒用過C語言,調試花了太多時間。請一位大神幫我調試一下,求指導。若能正常運行優先采納!非常感謝!
復制代碼

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. void delay(unsigned int x)                                    //        延遲函數
  6. {
  7. unsigned int i,j;
  8. for(i=x;i>0;i--)
  9. for(j=110;j>0;j--);
  10. }   
  11. void turnRight();          //開門,一步
  12. void turnLeft();           //關門,一步
  13. void init();               //系統初始化函數
  14. void wait();               //等待函數,等待行人走過
  15. void beep();              //喇叭響

  16. sbit PH1=P1^0 ;
  17. sbit PH2=P1^1 ;
  18. sbit I01=P1^2 ;
  19. sbit I11=P1^3 ;
  20. sbit I02=P1^4 ;
  21. sbit I12=P1^5  ;
  22. sbit BeepPort=P3^7;
  23. sbit out=P2^0  ;

  24. uchar ledTable[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  25. uchar flag=0;       //flag為0-7的數

  26. void main()                        
  27. {
  28. EA=0;
  29. EX0=1;
  30. IT0=0;
  31. EX1=1;
  32. IT1=0;
  33. init();
  34. EA=1;
  35. while (1)
  36. {
  37. EX1=0;
  38.   while(out == 0)   //無人,閃爍
  39.      {P0=0x01;
  40.          delay(50);
  41.          P0=0x00;
  42.          delay(50);
  43.          }
  44.          EX1=1;
  45.          if(out ==1)
  46.          {
  47.          delay(1);
  48.          if(out==1)
  49.           {
  50.                 //響,開門
  51.            for(flag=0;flag<8;flag++)
  52.            {
  53.             if(flag ==0)
  54.                   beep();
  55.                   P0=ledTable[flag]; //指示當前門的位置
  56.                   TurnRight();
  57.                   delay(100);
  58.                   }    //結束后flag=8,最后一次for循環多加一個1
  59.                    while(out ==1)
  60.                    {
  61.                    P0=0xff;
  62.                    delay(100);
  63.                    P0=0x00;
  64.                    delay(100);
  65.                    P0=0xff;
  66.                    delay(100);
  67.                    P0=0x00;
  68.                    delay(100);
  69.                    }         //有人,,一直閃爍等待
  70.                    wait();      //等待
  71.                    while(out==1);
  72.                    if(out ==0)  //還是沒人,開始關門
  73.                    {
  74.                    delay(2);
  75.                    beep();
  76.                    while((flag>0)&&(out ==0))
  77.                      {
  78.                            if(flag==8)
  79.                             beep();
  80.                                 flag--;  //0-7間flag才能用,要先自劍
  81.                                 P0=ledTable[flag];   //指示當前門的位置
  82.                                 turnLeft();        //每次循環關一步,8步關完
  83.                                 delay(100);
  84.                                 if(out==1)         //每關一步檢查熱電傳感器,檢查是否有人
  85.                                  {
  86.                                   beep();
  87.                                   for(;flag<8;flag++)  //  有人從當前位置開始逆向開門,是開特定步數,不是全部都開<8
  88.                                    {
  89.                                     P0=ledTable[flag]; //指示當前位置
  90.                                         turnRight();
  91.                                         delay(100);
  92.                                         }
  93.                                         wait();
  94.                                  continue;   //開門完,等待結束,跳到while循環開始位置
  95.                                    }
  96.                                    if((flag ==0))    //期間一直沒人,關門完畢。跳出循環回到程序起始位置
  97.                                          break;
  98.                                                            }
  99.                                                          }
  100.                                                         }
  101.                                                 }
  102.                                         }
  103.                                 }
  104.            
  105.            void int0() interrupt 0          //外部中斷0入口作為紅外遙控開門按鈕
  106.                 {
  107.                 uchar i;
  108.                 beep();
  109.                 P0=0xff;
  110.                 delay(100);
  111.                 P0=0x00;
  112.                 delay(20);
  113.            P0=0xff;
  114.            delay(100);
  115.            P0=0x00;
  116.            delay(20);   //中斷響應信號
  117.            i= flag;      //獲取當前位置,確定逆向凱特定步數的門
  118.            for (;i<8;i++)
  119.            {P0=ledTable[i];
  120.            turnRight();
  121.            delay(100);
  122.            }
  123.            wait()  ;
  124.            flag=8;   //開門后,門一定全開8步,所以flag=8
  125.            P0=0xf0;
  126.            delay(250);
  127.            delay(250);
  128.            P0=0x00;    //中斷完后信號
  129.            }
  130.            void int1()  interrupt 2;           //外部中斷1入口,作為遙控關門按鈕
  131.         {
  132.            uchar i;
  133.            beep();
  134.            P0=0xff;
  135.            delay(100);
  136.            P0=0x00;
  137.        delay(20);
  138.            P0=0xff;
  139.            delay(100);
  140.            P0=0x00;
  141.            delay(20); //中斷響應信號
  142.            i=flag;
  143.            for(;i>0;i--)
  144.           {
  145.             P0=ledTable[i];
  146.                 turnLeft();
  147.                 delay(100);
  148.                 }
  149.                 flag=0 ;  //關門以后,門一定全關8步,所以flag=0
  150.                 P0=0xf0;
  151.                 delay(250);
  152.                 delay(250);
  153.                 P0=0x00;    //中斷完成信號
  154.                 beep();
  155.                 }
復制代碼


程序.doc

24.5 KB, 下載次數: 4

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

使用道具 舉報

沙發
ID:715539 發表于 2020-4-1 08:45 | 只看該作者
使用的KEIL軟件編程,用的AT89C52芯片,若能解決追加500黑幣。很急。萬分感謝各位大佬。
回復

使用道具 舉報

板凳
ID:716703 發表于 2020-4-1 10:22 | 只看該作者
給你提供一個

51單片機的大樓自動門控制系統設計 源程序 電路圖.doc

27 KB, 下載次數: 25

回復

使用道具 舉報

地板
ID:715539 發表于 2020-4-1 11:10 | 只看該作者

兄弟你給的這個莫得程序和圖紙呀。請問能幫我看哈程序不.沒用過C語言,江湖救急!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久噜噜噜精品国产亚洲综合 | 成人福利在线 | 国产精品国产三级国产aⅴ原创 | 99久热 | 韩三级在线观看 | 亚洲三区在线播放 | 四虎影院免费在线播放 | 久久电影一区 | 亚洲视频中文字幕 | 天堂在线免费视频 | 99久久日韩精品免费热麻豆美女 | 亚洲 欧美 另类 综合 偷拍 | 日日操日日干 | 日韩av一区二区在线观看 | 亚洲成av人片在线观看无码 | 国产亚洲精品精品国产亚洲综合 | 在线看亚洲 | 亚洲a在线观看 | 精品香蕉一区二区三区 | 亚洲最大av网站 | 高清国产一区二区 | 久久夜视频 | 色综合视频 | 久久久久久亚洲 | 九九久视频| 中文字幕 在线观看 | 91精品国产91久久久 | 精品一区二区三区在线视频 | 免费成人高清在线视频 | 欧美日韩亚洲国产 | 亚洲在线一区二区三区 | 日日操操 | 国产网站在线免费观看 | 免费在线观看av的网站 | 欧美激情欧美激情在线五月 | 黄色一级特级片 | 精品毛片在线观看 | 午夜成人在线视频 | 五月婷亚洲 | 在线观看中文字幕dvd播放 | 九九视频在线观看视频6 |