欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4114|回復(fù): 0
收起左側(cè)

單片機(jī)人體紅外傳感器驅(qū)動(dòng)步進(jìn)電機(jī)源程序 帶詳細(xì)的注釋

[復(fù)制鏈接]
ID:512281 發(fā)表于 2019-5-21 19:59 | 顯示全部樓層 |閱讀模式
本人剛學(xué)沒多久,求各位大佬幫忙看一下,看看有沒有錯(cuò)誤,歡迎大家指正
步進(jìn)電機(jī)驅(qū)動(dòng)模塊為ULN2003,人體紅外傳感器為HC-SR501

單片機(jī)源程序如下(有注釋):
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. /*********************
  5. +  ----  +4.5-20v  //正極輸入電壓在+4.5v到20v之間
  6. out ---  P10       //輸出接到P10端口
  7. -   ---  GND       //負(fù)極接地
  8. IN1 ---- P00       //IN1接 P00端口 (電機(jī)驅(qū)動(dòng)模塊)
  9. IN2 ---- P01       //IN2接 P01端口 (電機(jī)驅(qū)動(dòng)模塊)
  10. IN3 ---- P02       //IN3接 P02端口 (電機(jī)驅(qū)動(dòng)模塊)
  11. IN4 ---- P03       //IN4接 P03端口 (電機(jī)驅(qū)動(dòng)模塊)
  12. +   ---- +5V       //正極接正5v
  13. -   ---- GND       //負(fù)極接地
  14. *********************/
  15. sbit out=P2^0 ;        //對輸出out進(jìn)行位定義,定義單片機(jī)I/O口 P1.0的偽名稱叫out
  16. sbit led1=P1^3;
  17. sbit led2=P1^7;
  18. #define MotorData P0    //對步進(jìn)電機(jī)的控制接口進(jìn)行定義
  19. #define time 500        //控制正反轉(zhuǎn)的角度'

  20. uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正轉(zhuǎn) 電機(jī)導(dǎo)通相序 D-C-B-A
  21. uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反轉(zhuǎn) 電機(jī)導(dǎo)通相序 A-B-C-D

  22. //ms 延時(shí)函數(shù)封裝
  23. void Delay_xms(uint x)         //定義一個(gè)無符號(hào)整數(shù) x (x是什么?)  帶參函數(shù)
  24. {
  25.   uint i,j;                     //uint等價(jià)于unsigned int,無符號(hào)整數(shù) ;定義兩個(gè)無符號(hào)整數(shù) i和 j  
  26.   for(i=0;i<x;i++)              //令 i的初始值為 0,當(dāng) i<x的時(shí)候,i=i+1
  27.   for(j=0;j<112;j++);           //令 j的初始值為 0,當(dāng) i<112的時(shí)候,j=j+1
  28. }

  29. //順時(shí)針轉(zhuǎn)動(dòng)函數(shù)封裝
  30. void MotorCW(void)             //void MotorCW(void) 不能輸入?yún)?shù)
  31. {
  32.   uchar i;                      //定義一個(gè)無符號(hào)字符型 i
  33.   for(i=0;i<4;i++)              //令 i的初始值為 0,當(dāng) i<4的時(shí)候,執(zhí)行{}內(nèi)的程序段,然后進(jìn)行 i=i+1再禁入循環(huán)
  34.    {
  35.     MotorData=phasecw[i];       //步進(jìn)電機(jī)的控制接口輸出正轉(zhuǎn)且電機(jī)導(dǎo)通相序 D-C-B-A 的信號(hào)驅(qū)動(dòng)步進(jìn)電機(jī)工作
  36.     Delay_xms(4);               //延時(shí)函數(shù),調(diào)節(jié)轉(zhuǎn)速 (意思是延時(shí)4毫秒嗎?)
  37.    }
  38. }

  39. //逆時(shí)針轉(zhuǎn)動(dòng)函數(shù)封裝
  40. void MotorCCW(void)
  41. {
  42.   uchar i;                      //定義一個(gè)無符號(hào)字符型 i
  43.   for(i=0;i<4;i++)              //令 i的初始值為 0,當(dāng) i<4的時(shí)候,執(zhí)行{}內(nèi)的程序段,然后進(jìn)行 i=i+1再禁入循環(huán)
  44.    {
  45.     MotorData=phaseccw[i];      //步進(jìn)電機(jī)的控制接口輸出反轉(zhuǎn)且電機(jī)導(dǎo)通相序 A-B-C-D 的信號(hào)驅(qū)動(dòng)步進(jìn)電機(jī)工作
  46.     Delay_xms(4);               //延時(shí)函數(shù),調(diào)節(jié)轉(zhuǎn)速(意思是延時(shí)4毫秒嗎?)
  47.    }
  48. }

  49. //停止轉(zhuǎn)動(dòng)函數(shù)封裝
  50. void MotorStop(void)
  51. {
  52.   MotorData=0x00;               //步進(jìn)電機(jī)的控制接口輸出置 0信號(hào) ,使步進(jìn)電機(jī)停止工作
  53. }

  54. //程序主函數(shù)
  55. void main(void)
  56. {
  57.   uint i;                       //定義一個(gè)無符號(hào)整型 i
  58.   Delay_xms(50);                //延時(shí)函數(shù)(意思是延時(shí)4s嗎?)(目的是啥?等系統(tǒng)穩(wěn)定是嗎?)
  59.   while(1)                      // 不斷循環(huán)
  60. {
  61.       led1=1;
  62.       led2=1;
  63.    if(out == 1)                       //如果out等于1的話,那么執(zhí)行{}內(nèi)的程序
  64.   {   
  65.        for(i=0;i<time;i++)        //對于i=0,當(dāng)i<time值時(shí),執(zhí)行順時(shí)針轉(zhuǎn)動(dòng)函數(shù),然后i=i+1后重新進(jìn)入循環(huán)           
  66.    {
  67.           led1=0;
  68.     MotorCW();            //順時(shí)針轉(zhuǎn)動(dòng)函數(shù),驅(qū)動(dòng)步進(jìn)電機(jī)順時(shí)針轉(zhuǎn)動(dòng),直到i等于time值時(shí)結(jié)束循環(huán)
  69.          
  70.       }
  71.        MotorStop();               //停止轉(zhuǎn)動(dòng)函數(shù),是步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng)
  72.      
  73.     Delay_xms(1000);           //延時(shí)函數(shù),延時(shí)1000毫秒的意思是嗎?
  74.   
  75.     if(out == 0)               //如果out等于0的話,那么執(zhí)行{}內(nèi)的程序
  76.           {
  77.          for(i=0;i<time;i++)   //對于i=0,當(dāng)i<time值時(shí),執(zhí)行逆時(shí)針轉(zhuǎn)動(dòng)函數(shù),然后i=i+1后重新進(jìn)入循環(huán)
  78.            {
  79.              led2=0;
  80.        MotorCCW();       //逆時(shí)針轉(zhuǎn)動(dòng)函數(shù),驅(qū)動(dòng)步進(jìn)電機(jī)逆時(shí)針轉(zhuǎn)動(dòng),直到i等于time值時(shí)結(jié)束循環(huán)
  81.               }
  82.          MotorStop();          //停止轉(zhuǎn)動(dòng)函數(shù),使步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng)  
  83.        }
  84.         }
  85.    }
  86. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
無效樓層,該帖已經(jīng)被刪除
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表