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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4756|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

求大神看程序?qū)懸粋單片機(jī)控制步進(jìn)電機(jī)轉(zhuǎn)動的流程圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:303067 發(fā)表于 2018-5-10 17:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本程序是一個51單片機(jī)控制步進(jìn)電機(jī)轉(zhuǎn)動的程序,通過鍵盤設(shè)置轉(zhuǎn)的圈數(shù),電機(jī)能自動轉(zhuǎn)設(shè)置的圈數(shù),并且轉(zhuǎn)的圈數(shù)和已經(jīng)轉(zhuǎn)過的圈數(shù)都能在液晶上顯示出來。求大神幫忙寫個程序流程圖,先謝謝大佬們。以下是程序:

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "LCD1602.h"  //添加液晶頭文件
  4. #include "key.h"  //添加1602頭文件

  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
  8. uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

  9. unsigned char speed=2;   //檔位
  10. unsigned char speed_1=30;//速度延遲
  11. unsigned char key_X=0;          //0 運(yùn)行,1 設(shè)置

  12. unsigned char set=0;          //0 運(yùn)行,1 設(shè)置

  13. /********************************************************/
  14. /*                                                  
  15. /* 延時t毫秒
  16. /* 11.0592MHz時鐘,延時約1ms                                    
  17. /*                                                      
  18. /********************************************************/
  19. void delay(uint t)
  20. {                           
  21.    uint k;
  22.    while(t--)
  23.    {
  24.      for(k=0; k<125; k++)
  25.      { }
  26.    }
  27. }
  28. /********************************************************/
  29. /*
  30. /*步進(jìn)電機(jī)正轉(zhuǎn)
  31. /*
  32. /********************************************************/
  33. void  motor_ffw(uint n)
  34. {
  35.     uchar i;
  36.     uint  j;
  37.     for (j=0; j<n; j++)     //轉(zhuǎn)1×n圈
  38.     {
  39.       for (i=0; i<8; i++)     //一個周期轉(zhuǎn)30度
  40.         {
  41.           P1 = FFW[i];        //取數(shù)據(jù)
  42.           delay(30);          //調(diào)節(jié)轉(zhuǎn)速
  43.         }
  44.     }
  45. }
  46. /********************************************************/
  47. /*
  48. /*步進(jìn)電機(jī)反轉(zhuǎn)
  49. /*
  50. /********************************************************/
  51. void  motor_rev(uint n)
  52. {
  53.     uchar i;
  54.         uint  j;
  55.         for (j=0; j<n; j++)      //轉(zhuǎn)1×n圈
  56.       {
  57.         for (i=0; i<8; i++)    //一個周期轉(zhuǎn)30度
  58.         {
  59.           P1 = REV[i];         //取數(shù)據(jù)
  60.           delay(30);           //調(diào)節(jié)轉(zhuǎn)速
  61.         }
  62.       }
  63. }

  64. void disp()
  65. {
  66.         if(set==0)
  67.         {
  68.                 write_1602_c(0x87);
  69.                 write_1602_d(key_X/100+0x30);
  70.                 write_1602_d(key_X%100/10+0x30);
  71.                 write_1602_d('.');
  72.                 write_1602_d(key_X%10+0x30);

  73.                 write_1602_c(0xc8);
  74.                 write_1602_d(speed%10+0x30);
  75.         }

  76.         if(set==1)
  77.         {
  78.         }

  79. }

  80. unsigned char k=16;     //矩陣鍵盤值
  81. unsigned char k1=17;    //矩陣鍵盤值

  82. void main(){
  83.         unsigned char x1=0;         //光標(biāo)位置
  84.         unsigned char quan=0;       //圈數(shù)
  85.         unsigned char xiaoshudian=0;//小數(shù)點

  86.         unsigned char x2=0;         //整數(shù)
  87.         unsigned char x3=0;         //小數(shù)

  88.         LCD_init();

  89.         write_1602_c(0x80);
  90.         write_1602_d('M');
  91.         write_1602_d('O');
  92.         write_1602_d('T');
  93.         write_1602_d('O');
  94.         write_1602_d('R');
  95.         write_1602_d(' ');
  96.         write_1602_d(' ');
  97.         write_1602_c(0x8C);
  98.         write_1602_d(' ');
  99.         write_1602_d('0');
  100.         write_1602_d('.');
  101.         write_1602_d('0');

  102.         write_1602_c(0xC0);
  103.         write_1602_d('S');
  104.         write_1602_d('P');
  105.         write_1602_d('E');
  106.         write_1602_d('E');
  107.         write_1602_d('D');

  108.         while(1)
  109.         {

  110.                 k=scan();                                        //矩陣鍵盤

  111.                 if(k!=k1)                                       
  112.                 {
  113.                         if(set==1)
  114.                         if(k<10)                                    //數(shù)字
  115.                         {
  116.                                 if(x1==0)
  117.                                         x2=k;
  118.                                 if(x1==2)
  119.                                         x3=k;

  120.                                 write_1602_c(0x8D+x1);
  121.                                 write_1602_d(k+'0');
  122.                                 x1=x1+2;
  123.                                 write_1602_c(0x8D+x1);
  124.                                 write_1602_c(0x0f);//讓光標(biāo)閃爍
  125.                         }

  126.                         if(k==14)                                    //開閥
  127.                         {
  128.                                 set=0;
  129.                                 write_1602_c(0x0C);     //讓光標(biāo)停
  130.                                 key_X=key_X+(x2*10+x3);
  131.                                 disp();
  132.                                motor_rev(x2*10+x3);    //電機(jī)轉(zhuǎn)
  133.                         }

  134.                         if(k==15)                                    //關(guān)閥
  135.                         {
  136.                                 set=0;
  137.                                 write_1602_c(0x0C);     //讓光標(biāo)停
  138.                                 if(key_X>=(x2*10+x3))                                
  139.                                 {
  140.                                         key_X=key_X-(x2*10+x3);
  141.                                         disp();
  142.                                        motor_ffw(x2*10+x3);    //電機(jī)轉(zhuǎn)
  143.                                 }
  144.                         }

  145.                         if(k==10)                                    //設(shè)置鍵
  146.                         {
  147.                                 if(set==0)
  148.                                 {
  149.                                         set=1;
  150.                                         x1=0;
  151.                                         write_1602_c(0x8C);
  152.                                         write_1602_d(' ');
  153.                                         write_1602_d('0');
  154.                                         write_1602_d('.');
  155.                                         write_1602_d('0');
  156.                                         write_1602_c(0x8D);
  157.                                         write_1602_c(0x0f);//讓光標(biāo)閃爍
  158.                                 }
  159.                                 else
  160.                                 {
  161.                                         write_1602_c(0x0c);//讓光標(biāo)消失
  162.                                         set=0;
  163.                                 }
  164.                         }
  165.                         
  166.                         k1=k;
  167.                         if(k==12)                                    //按加速
  168.                         {
  169.                                 if(speed<4)
  170.                                 {
  171.                                         speed++;
  172.                                 }
  173.                                 if(speed==4)
  174.                                         speed_1=30;
  175.                                 if(speed==3)
  176.                                         speed_1=50;
  177.                                 if(speed==2)
  178.                                         speed_1=70;
  179.                                 if(speed==1)
  180.                                         speed_1=90;
  181.                         }
  182.                         if(k==13)                                    //按減速
  183.                         {
  184.                                 if(speed>1)
  185.                                 {
  186.                                         speed--;
  187.                                 }
  188.                                 if(speed==4)
  189.                                         speed_1=30;
  190.                                 if(speed==3)
  191.                                         speed_1=50;
  192.                                 if(speed==2)
  193.                                         speed_1=70;
  194.                                 if(speed==1)
  195.                                         speed_1=90;
  196.                         }

  197.                 }

  198.                 disp();

  199.         }
  200. }
復(fù)制代碼

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区av | 91在线精品秘密一区二区 | 黄色一级免费 | 精品国产91乱码一区二区三区 | 亚洲女人天堂成人av在线 | 国产欧美日韩精品在线观看 | 日韩在线观看一区二区三区 | 国产综合久久久久久鬼色 | 日日夜夜天天 | 青青草一区二区三区 | 亚洲影音 | 日韩在线播放一区 | 中文字幕在线一区二区三区 | 日韩欧美国产精品一区二区 | 偷拍亚洲色图 | 午夜小电影 | 亚洲午夜精品一区二区三区他趣 | 国产精品一区一区 | 欧美精品一区二区三区视频 | 亚洲一区二区在线视频 | 日韩精品在线一区 | 黄色国产| 中文一区二区 | 一级毛片视频 | 欧美a区 | 97国产在线观看 | 免费在线国产视频 | 91在线观| 国产在线视频一区二区 | 国产97在线看 | 成人高清网站 | 在线免费观看a级片 | 亚洲成人国产综合 | 特黄色一级毛片 | 欧美极品在线播放 | 精品乱码一区二区三四区视频 | aaaaaa大片免费看最大的 | 天天天天操 | 日韩成人免费视频 | 亚洲色片网站 | 国产午夜精品久久久 |