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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機仿真步進電機設(shè)定旋轉(zhuǎn)度數(shù) 附源程序

[復(fù)制鏈接]
ID:197152 發(fā)表于 2020-11-16 20:26 | 顯示全部樓層 |閱讀模式
步進電機控制旋轉(zhuǎn)度數(shù),能控制開關(guān),以及液晶顯示,通過按鍵設(shè)定正反轉(zhuǎn)度數(shù)。能夠設(shè)置正反轉(zhuǎn)。
仿真運行如下圖所示!

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei圖片20201116202608.png

單片機源程序如下:
  1. #include <reg52.h>
  2. unsigned long beats=0;
  3. int set=0;
  4. sbit k2=P3^1;
  5. sbit k3=P3^2;
  6. sbit K1=P3^0;
  7. sbit k4=P3^3;
  8. #define                DATA        P0     //1602驅(qū)動端口
  9. int flag=0,flag2=0,flag3=0;
  10. int i;
  11. unsigned char S1,S2,S3;
  12. sbit                 RS=                P2^0;
  13. sbit                 RW=                P2^1;
  14. sbit                 E=                P2^2;
  15.         unsigned char tmp;
  16.         static unsigned char index=0;
  17.                           unsigned char phasefz[8] ={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//正轉(zhuǎn) 電機導(dǎo)通相序 D-C-B-A
  18.         unsigned char phasezz[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//反轉(zhuǎn) 電機導(dǎo)通相序 A-B-C-D
  19. //判斷忙指令
  20. void Busy()
  21. {
  22.         DATA = 0xff;
  23.         RS = 0;
  24.         RW = 1;
  25.            while(DATA & 0x80)
  26.            {
  27.                 E = 0;
  28.                    E = 1;
  29.            }
  30.            E = 0;
  31. }

  32. //寫指令程序
  33. void WriteCommand(unsigned char btCommand)
  34. {
  35.         Busy();
  36.         RS = 0;
  37.         RW = 0;
  38.         E = 1;
  39.         DATA = btCommand;
  40.         E = 0;
  41. }

  42. //寫數(shù)據(jù)程序
  43. void WriteData(unsigned char btData)
  44. {
  45.         Busy();
  46.         RS = 1;
  47.         RW = 0;
  48.         E = 1;
  49.         DATA = btData;
  50.         E = 0;
  51. }

  52. //清屏顯示
  53. void Clear()
  54. {
  55.         WriteCommand(1);
  56. }

  57. //初始化
  58. void Init()
  59. {
  60.         WriteCommand(0x0c);        //開顯示,無光標(biāo)顯示
  61.         WriteCommand(0x06);        //文字不動,光標(biāo)自動右移
  62.         WriteCommand(0x38);        //設(shè)置顯示模式:8位2行5x7點陣
  63. }

  64. //顯示單個字符
  65. void DisplayOne(bit bRow, unsigned char btColumn, unsigned char btData, bit bIsNumber)
  66. {
  67.         if (bRow)                 WriteCommand(0xc0 + btColumn);
  68.         else                      WriteCommand(0x80 + btColumn);

  69.         if (bIsNumber)         WriteData(btData + 0x30);
  70.         else                   WriteData(btData);
  71. }

  72. //顯示字符串函數(shù)
  73. void DisplayString(bit bRow, unsigned char btColumn, unsigned char *pData)
  74. {
  75.         while (*pData != '\0')
  76.            {
  77.                    if (bRow) WriteCommand(0xc0 + btColumn);        //顯示在第1行
  78.                    else            WriteCommand(0x80 + btColumn);        //顯示在第0行
  79.                 WriteData(*(pData++));                                                //要顯示的數(shù)據(jù)
  80.                 btColumn++;                                                                        //列數(shù)加一
  81.            }
  82. }


  83. void startmotor(unsigned long angle);
  84. void key()
  85. {
  86.         if(K1==0)
  87.         {
  88.          flag2++;
  89.                 while(K1==0);
  90.         }
  91.        
  92.        
  93. if(k2==0)
  94. {
  95. set++;
  96.          if(set>180) set=180;
  97.          while(k2==0);
  98. }


  99.   if(k3==0)
  100. {
  101. set--;
  102.          if(set<=0) set=0;
  103.          while(k3==0);
  104. }


  105. if(k4==0)
  106. {
  107.   flag++;
  108.          while(k4==0);
  109. }

  110. }
  111. void display()
  112. {
  113.         S1  = (unsigned char)set / 100;
  114.         S2  = (unsigned char)set % 100 / 10;
  115.         S3   = (unsigned char)set % 10;
  116.         DisplayOne(1,6,S1,1);
  117.         DisplayOne(1,7,S2,1);
  118.         DisplayOne(1,8,S3,1);
  119.                                                                 if(flag%2==0)  {DisplayString(1,5,"+");}
  120.                                               if(flag%2==1)  {DisplayString(1,5,"-");}

  121. }
  122. void main()
  123. {      
  124.         EA=1;
  125.         TMOD=0X01;
  126.         TH0=0XF8;//2ms
  127.         TL0=0XCD;
  128.         ET0=1;
  129.         TR0=1;
  130.              Init();
  131.         flag3=1;
  132.               DisplayString(0,2,"MOTOR: OOF");
  133.         while(1)
  134.         {   

  135.                 key();
  136.                    display();                 
  137.               if(flag2%2==1)
  138.                                 {
  139.                                 DisplayString(0,2,"MOTOR:  ON");
  140.                                 for(i=0;i<1;i++)
  141.      {                                       
  142.         startmotor(set);
  143.      }
  144.       
  145.                  flag2++;
  146.                                 }
  147.                
  148.                        
  149.                         }                       
  150.                        
  151. }
  152. void startmotor(unsigned long angle)
  153. {
  154.         EA=0;
  155.         beats=(angle*4076)/360;  //防止因為中斷導(dǎo)致計算錯誤,因為以后的中斷中需要使用到beats
  156.         EA=1;
  157. ……………………

  158. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
步進.zip (95.88 KB, 下載次數(shù): 100)

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:841557 發(fā)表于 2020-11-17 09:46 | 顯示全部樓層
大神,我做的 步進電機仿真里轉(zhuǎn),實物連線就沒有反應(yīng),可以 幫我看看程序嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜爽爽爽男女免费观看影院 | 99久久亚洲| 中文字幕一区二区三区精彩视频 | 国产精品一区二区电影 | 国产亚洲精品久久情网 | a级黄色网 | 在线观看免费黄色片 | 亚洲国产精品福利 | 国产目拍亚洲精品99久久精品 | 中文久久| 国产精品178页 | 99re在线视频观看 | 日本三级全黄三级三级三级口周 | 午夜精品久久久久久久99黑人 | 99精品视频免费观看 | 久久伊| 成人性生交大片 | 久久精品亚洲 | 中文字幕亚洲无线 | 国产精品污www一区二区三区 | 欧美寡妇偷汉性猛交 | 91精品国产一区二区三区香蕉 | 午夜精品一区二区三区在线观看 | 伊人影院99 | 欧美1区| 国产精品视频免费播放 | 精品国产精品国产偷麻豆 | 国产精品自产av一区二区三区 | 一区二区福利视频 | 日韩欧美亚洲一区 | 91亚洲精品在线 | 国产成人免费 | 精品日韩一区 | 亚洲精品中文在线观看 | 日韩av在线一区 | 国产日韩欧美 | 天天插天天操 | 天天干天天插天天 | www网站在线观看 | www.蜜桃av| 亚洲九九|