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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機控制步進電機正反轉

[復制鏈接]
跳轉到指定樓層
樓主
ID:522412 發表于 2019-6-11 10:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機控制電機正反轉及加減速控制

單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit dula = P2^6;//數碼管段選
  5. sbit wela = P2^7;//數碼管位選
  6. sbit key1 = P3^4;//啟動
  7. sbit key2 = P3^5;//正轉/反轉
  8. sbit key3 = P3^6;//加速
  9. sbit key4 = P3^7;//減速
  10. sbit pul = P2^0;//脈沖
  11. sbit dir = P2^1;//方向
  12. sbit ena = P2^2;//使能
  13. int flag=0;//計數、正反轉標志
  14. int V = 0;//速度
  15. uint T,ge,shi;
  16. uchar temp,key;
  17. uchar code display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數碼管顯示0-9
  18. //........................延時函數...........................//
  19. void delayms(uint xms)
  20. {
  21.         uint i,j;
  22.         for(i=xms;i>0;i--)
  23.                 for(j=110;j>0;j--);
  24. }
  25. //........................定時器0/1初始化函數...........................//
  26. void T0_T1_init()
  27. {
  28.         TMOD=0x01;//設置定時器為工作方式1
  29.         TH0=(65536-30000)/256;//定時器0定時30ms
  30.         TL0=(65536-30000)%256;
  31.         TH1=(65536-T)/256;//定時器1定時30ms
  32.         TL1=(65536-T)%256;
  33.         EA=1;  //開總中斷
  34.         ET0=1; //開定時器0中斷
  35.         ET1=1; //開定時器1中斷
  36.         TR0=1; //啟動定時器0
  37.         TR1=0; //啟動定時器1
  38.          
  39. }
  40. //........................按鍵函數...........................//
  41. void keys()
  42. {
  43.         if(key1 == 0)
  44.         {
  45.                 delayms(5);
  46.                 if(key1 == 0)//消抖
  47.                 {
  48.                         TR1=~TR1;//開啟定時器1
  49.                
  50.                 }
  51.                 while(!key1);
  52.         }
  53.         if(key2 == 0)
  54.         {
  55.                 delayms(5);
  56.                 if(key2 == 0)
  57.                 {
  58.                         dir=~dir;//正轉,反轉
  59.                         flag++;
  60.                         if(flag>1)flag=0;

  61.                 }
  62.                 while(!key2);
  63.         }
  64.          if(key3 == 0)
  65.         {
  66.                 delayms(5);
  67.                 if(key3 == 0)//消抖
  68.                 {
  69.                         V=V+5;
  70.                         if(V>60)V=60;//加速
  71.                
  72.                 }
  73.                 while(!key3);
  74.         }
  75.         if(key4 == 0)
  76.         {
  77.                 delayms(5);
  78.                 if(key4 == 0)//消抖
  79.                 {
  80.                    V=V-5;
  81.                    if(V<0)V=0;//減速
  82.                
  83.                 }
  84.                 while(!key4);
  85.         }

  86. }
  87. void main()
  88. {
  89.         T0_T1_init();
  90.         while(1)
  91.         {
  92.                 dula = 1;
  93.                 P0 = display[flag];//顯示正反轉
  94.                 dula = 0;
  95.                 P0 = 0xff;
  96.                 wela = 1;
  97.                 P0 = 0xfe;
  98.                 wela = 0;
  99.                 keys();
  100.                 T= 125000/V;       
  101.         }               
  102. }
  103. void T0_time()interrupt 1
  104. {
  105.         TH0=(65536-30000)/256;//定時器0定時30ms
  106.         TL0=(65536-30000)%256;
  107.         shi = V/10;
  108.         ge = V%10;
  109.         dula = 1;
  110.         P0 = display[shi]; //顯示速度十位
  111.         dula = 0;
  112.         P0 = 0xff;
  113.         wela = 1;
  114.         P0 = 0xfb;
  115.         wela = 0;
  116.         delayms(10);

  117.         dula = 1;
  118.         P0 = display[ge];//顯示速度個位
  119.         dula = 0;
  120.         P0 = 0xff;
  121.         wela = 1;
  122.         P0 = 0xf7;
  123.         wela = 0;
  124.         delayms(10);
  125. }
  126. //........................定時器1函數,控制電機頻率...........................//
  127. void T1_time()interrupt 3
  128. {
  129.         TH1 = (uint)(65536-T)/256;
  130.         TL1 = (uint)(65536-T)%256;
  131.         pul=~pul;//脈沖反轉       
  132. }
復制代碼

所有資料51hei提供下載:
伺服.rar (18.2 KB, 下載次數: 21)



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

使用道具 舉報

沙發
ID:1 發表于 2019-6-12 01:15 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品自产av一区二区三区 | 国产精品久久久亚洲 | 亚洲精品中文字幕 | 91亚洲国产 | 国产成人综合在线 | 成人午夜免费视频 | 风间由美一区二区三区在线观看 | 中文成人无字幕乱码精品 | 国产九九九 | 涩涩视频网站在线观看 | 自拍偷拍精品 | 精品国产91乱码一区二区三区 | 中文在线视频 | 成人午夜网 | 欧美精品一区久久 | 91精品国产91久久久久久吃药 | 国产一级淫片免费视频 | 天堂资源| 大象视频一区二区 | 午夜精品久久久久久久 | 一区二区三区四区视频 | 国产成人久久精品一区二区三区 | 日韩一区二区福利视频 | 久久99精品视频 | 黄网在线观看 | 搞av.com | 人人性人人性碰国产 | 日本特黄a级高清免费大片 成年人黄色小视频 | 日韩成人免费视频 | 99久久免费精品视频 | 少妇精品亚洲一区二区成人 | 在线视频 中文字幕 | 久热精品在线播放 | 亚洲精品一区二区久 | 日韩av成人在线 | 欧美激情国产日韩精品一区18 | 欧美v在线观看 | 美女视频黄的免费 | 伊人电影院av | 欧美日韩国产一区二区三区 | 美女在线视频一区二区三区 |