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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

步進電機&ULN2003和直流電機&L298驅動與正反轉實驗,單片機代碼加仿真

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


步進電機和直流電機能夠單獨工作,仿真開始,兩個電機均不轉動,然后通過按鍵控制對應的點擊正反轉,代碼清晰,作者留有添加電機控速的代碼空間,并且可以很簡單的加入代碼控速模塊。
其中還有一些小細節,直流電機反轉的時候,無法對步進電機進行操作,即在直流電機反轉過程中,控制步進電機正反轉的按鈕無效。其余情況下,可隨意控制直流電機和步進電機的正反轉
系統還有工作指示燈,對應步進電機和直流電機工作情況。
此外,還提供了一個聲光報警系統,當單刀雙擲開關撥至阻塞時,電路報警,電路警示燈亮,蜂鳴器響,兩個電機立刻停止工作。

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #include<intrins.h>

  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sbit key1=P3^0;  //用戶按鍵
  7. sbit key2=P3^1;
  8. sbit key3=P3^5;
  9. sbit key4=P3^6;

  10. sbit danger=P3^2;

  11. sbit beez=P2^2;

  12. sbit PWM1=P3^3;
  13. sbit PWM2=P3^4;

  14. sbit led1=P2^0;
  15. sbit led2=P2^1;

  16. uchar code F_Rotation[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};  //步進電機驅動

  17. uchar i;
  18. uint flag1,flag2,flag3,flag4;
  19. /******************************************************************/
  20. /*                   延時函數Xms                                  */
  21. /******************************************************************/
  22. void delay(uint z)
  23. {
  24.         uint x,y;
  25.         for(x=z;x>0;x--)
  26.                 for(y=110;y>0;y--);
  27. }
  28. /******************************************************************/
  29. /*              獨立按鍵掃描函數                                  */
  30. /******************************************************************/
  31. void keyscan()  
  32. {        
  33.         P3=0xff;//拉高P3,以讀取P3口值
  34.         if(key1==0)//鍵1被按下
  35.         {
  36.                 delay(5);//延時消抖
  37.                 if(key1==0)
  38.                 {
  39.                         flag1++;
  40.                         flag1%=2;
  41.                 }
  42.                 while(!key1);
  43.                 delay(5);//延時消抖
  44.                 while(!key1);//松手檢測
  45.         }
  46.         if(key2==0)
  47.         {
  48.                 delay(5);
  49.                 if(key2==0)
  50.                 {
  51.                         flag2++;
  52.                         flag2%=2;
  53.                 }
  54.                 while(!key2);
  55.                 delay(5);
  56.                 while(!key2);
  57.         }
  58.         if(key3==0)
  59.         {
  60.                 delay(5);
  61.                 if(key3==0)
  62.                 {
  63.                         flag3++;
  64.                         flag3%=2;
  65.                 }
  66.                 while(!key3);
  67.                 delay(5);
  68.                 while(!key3);
  69.         }
  70.         if(key4==0)
  71.         {
  72.                 delay(5);
  73.                 if(key4==0)
  74.                 {
  75.                         flag4++;
  76.                         flag4%=2;
  77.                 }
  78.                 while(!key4);
  79.                 delay(5);
  80.                 while(!key4);
  81.         }
  82. }
  83. void main()
  84. {
  85.         TMOD=0x01;
  86.         EA=1;
  87.         EX0=1;
  88.         ET0=0;

  89.         TH0=(65536-(14648))/256;
  90.         TL0=(65536-(14648))%256;

  91.         TR0=0;
  92.        
  93.         while(1)
  94.         {
  95.                 //步進正轉
  96.                 keyscan();
  97.                 while(flag1==1)
  98.                 {
  99.                         led1=0;
  100.                         keyscan();
  101.                         if(!flag1){ led1=1; led2=1; break;}
  102.                         if(flag2){ led1=1; led2=1; flag1=0; break;}
  103.                         if(flag3){ led1=1; led2=1; flag1=0; break;}
  104.                         if(flag4){ led1=1; led2=1; flag1=0; break;}
  105.                         for(;i<8;i++)
  106.                         {
  107.                                 keyscan();
  108.                                 P1 = F_Rotation[i];
  109.                                 if(!flag1){ led1=1; led2=1; break;}
  110.                                 if(flag2){ led1=1; led2=1; flag1=0; break;}
  111.                                 if(flag3){ led1=1; led2=1; flag1=0; break;}
  112.                                 if(flag4){ led1=1; led2=1; flag1=0; break;}
  113.                                 delay(100);
  114.                         }
  115.                         i=0;
  116.                         led1=1;
  117.                 }
  118.                 //步進反轉
  119.                 keyscan();
  120.                 while(flag2==1)
  121.                 {
  122.                         led1=0;
  123.                         keyscan();
  124.                         if(flag1){ led1=1; led2=1; flag2=0; break;}
  125.                         if(!flag2){ led1=1; led2=1; break;}
  126.                         if(flag3){ led1=1; led2=1; flag2=0; break;}
  127.                         if(flag4){ led1=1; led2=1; flag2=0; break;}
  128.                         for(;i>0;i--)
  129.                         {
  130.                                 keyscan();
  131.                                 P1 = F_Rotation[i];
  132.                                 if(flag1){ led1=1; led2=1; flag2=0; break;}
  133.                                 if(!flag2){ led1=1; led2=1; break;}
  134.                                 if(flag3){ led1=1; led2=1; flag2=0; break;}
  135.                                 if(flag4){ led1=1; led2=1; flag2=0; break;}
  136.                                 delay(100);
  137.                         }
  138.                         i=8;
  139.                         led1=1;
  140.                 }
  141.                 //直流正轉
  142.                 keyscan();
  143.                 while(flag3==1)
  144.                 {
  145.                         led2=0;
  146.                         keyscan();
  147.                         if(flag1){ led1=1; led2=1; flag3=0; break;}
  148.                         if(flag2){ led1=1; led2=1; flag3=0; break;}
  149.                         if(!flag3){ led1=1; led2=1; break;}
  150.                         if(flag4){ led1=1; led2=1; flag3=0; break;}
  151.                         PWM1=0;
  152.                         PWM2=0;
  153.                         delay(100);
  154.                         PWM1=1;
  155.                         delay(100);
  156.                         led2=1;
  157.                 }
  158.                 //直流反轉
  159.                 keyscan();
  160.                 while(flag4==1)
  161.                 {
  162.                         led2=0;
  163.                         keyscan();
  164.                         if(flag1);
  165.                         if(flag2);
  166.                         if(flag3){ led1=1; led2=1; flag4=0; break;}
  167.                         if(!flag4){ led1=1; led2=1; break;}
  168.                         PWM1=0;
  169.                         PWM2=0;
  170.                         delay(100);
  171.                         PWM2=1;
  172.                         delay(100);
  173.                         led2=1;
  174.                 }
  175.         }

  176. }

  177. void int0(void) interrupt 0
  178. {
  179.         while(danger==0)
  180.         {
  181.                 beez=0;
  182.                 led1=1;
  183.                 led2=1;
  184.                 while(!danger);
  185.                 beez=1;
  186.         }
  187. }
復制代碼

所有資料51hei提供下載:
步進電機加直流電機.rar (69.73 KB, 下載次數: 42)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人一级黄色毛片 | 亚洲一区二区视频在线观看 | 久久国产精品视频免费看 | 国产精品久久久久久久7电影 | 久久久蜜桃一区二区人 | 日韩中文字幕视频在线 | 成人在线精品 | 亚洲日本欧美日韩高观看 | 欧美精品一区三区 | 国产高清免费在线 | 欧美一区二区 | 一区二区三区欧美 | 久久久蜜桃 | 涩涩鲁亚洲精品一区二区 | 伊人av在线播放 | 久久日本 | 在线免费小视频 | 呦呦在线视频 | 中文字幕一页二页 | 久久免费视频在线 | 狠狠色综合欧美激情 | 久久中文字幕一区 | 久久精品视频在线观看 | 亚洲视频在线观看 | 99日韩| 污书屋 | 亚洲一区久久 | 免费在线色| 亚洲精品在线看 | 久久久久久久久综合 | 99热精品在线 | 有码一区 | 免费在线精品视频 | 国产乱码精品一区二区三区五月婷 | www312aⅴ欧美在线看 | 成人伊人| 中文字幕在线一区 | 国产a区| 欧美日韩中文字幕在线播放 | 一级黄色裸片 | 福利网站导航 |