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

標題: 步進電機仿真實驗,親測可用 [打印本頁]

作者: nz1    時間: 2016-1-14 15:02
標題: 步進電機仿真實驗,親測可用
1 2控制正反轉,加減控制轉速。親測可用

完整代碼和仿真文件下載:http://www.zg4o1577.cn/bbs/dpj-20399-1.html
  1. #include"reg51.h"
  2. #include"intrins.h"
  3. #include"math.h"
  4. #include"absacc.h"
  5. #define  PORTA  XBYTE[0x8500]
  6. #define  PORTB  XBYTE[0x8502]
  7. #define  PORTC  XBYTE[0x8504]
  8. #define  PORTC0 XBYTE[0x8506]
  9. #define nop _nop_()
  10. #define Right_RUN  1
  11. #define Left_RUN  0
  12. unsigned long RunSpeed=76;
  13. unsigned  char  RUNState=1;
  14. sbit  RS=P2^0;
  15. sbit  RW=P2^1;
  16. sbit  E=P2^2;
  17. sbit P17=P1^7;
  18. bit   flag=0;
  19. unsigned char xx[]="speed(n/min):";
  20. unsigned char SD[]="76";
  21. char  state[2][14]={"direction:cw","direction:ccw"};
  22. unsigned char  FLG,INMA=0;
  23. unsigned  char  t,s=0x01;
  24. unsigned  int   a;
  25. main()
  26. {
  27.   void  OPJIAN();
  28.   unsigned char JIAN();
  29.   unsigned char JIANZHI();
  30.    void  speed();
  31. void  SHOW_LCD();
  32. void  show_state();
  33. void  write1();
  34. void  writ2(unsigned char i);
  35. void  delay();
  36. void time();
  37. void  busy();
  38. unsigned  char  i;
  39.   i=0x90;
  40.   PORTC0=i;
  41.   i=0x01;
  42.   TMOD=i;
  43.   t=0x10;
  44.   a=0x0f;
  45.   TH0=0x10;
  46.   TL0=0x0f;
  47.   FLG=INMA;  
  48.   SHOW_LCD();
  49.   show_state();
  50.   EA=1;
  51.   ET0=1;
  52.   TR0=1;
  53. while(1)
  54. {
  55. i=JIAN();
  56.      if(i!=0)
  57. {
  58.    time();
  59.    time();
  60.   }
  61. i=JIAN();
  62. if(i!=0)
  63. {
  64. INMA=JIANZHI();
  65.    OPJIAN();
  66.   time();
  67. }
  68.   if(FLG!=INMA||flag==1)
  69.    {  FLG=INMA;
  70.   SHOW_LCD();
  71.       show_state();
  72.   flag=0;
  73.   }
  74.   }
  75.   }
  76. void SHOW_LCD()/*lcd設置程序*/
  77. {
  78.   P1=0x38;
  79.   write1();
  80.   delay();
  81.   P1=0x38;
  82.   write1();
  83.   delay();
  84.   P1=0x38;
  85.   write1();
  86.   delay();
  87.   P1=0x01;
  88.   write1();
  89. delay();
  90.   P1=0x0f;
  91.   write1();
  92. delay();
  93.   P1=0x06;
  94.   write1();
  95.   delay();
  96.   P1=0x0c;
  97.   write1();
  98.   
  99. }
  100. void  show_state()/*狀態顯示程序*/
  101.   {
  102.    unsigned char i=0;
  103.    P1=0x80;
  104. write1();
  105. while(xx[i]!='\0')
  106.    {
  107.      writ2(xx[i]);
  108.    i++;
  109.    delay();
  110.    }
  111.    i=0;
  112.   while(SD[i]!='\0')
  113.     {
  114.    writ2(SD[i]);
  115.    delay();
  116.    i++;
  117.   
  118.    }
  119.    P1=0xc0;
  120.   write1();
  121.   i=0;
  122.   if(RUNState==Right_RUN)
  123.   while(state[0][i]!='\0')
  124.     {
  125.     writ2(state[0][i]);
  126.     i++;
  127.    }
  128. else
  129.    if(RUNState==Left_RUN)
  130.     while(state[1][i]!='\0')
  131.      {
  132.      writ2(state[1][i]);
  133.       i++;
  134.     }
  135.    }
  136. void  write1()/*lcd寫控制字*/
  137. {
  138.    RS=0;
  139. RW=0;
  140. E=0;
  141. busy();
  142. E=1;
  143.   }
  144. void  writ2( unsigned char i)/*lcd寫數據*/
  145. { P1=i;
  146.    RS=1;
  147. RW=0;
  148. E=0;
  149.    busy();
  150. E=1;
  151. }

  152. void delay()/*延時程序*/
  153. {
  154.   unsigned char  i;
  155.   for(i=0;i<100;i++)
  156.     {
  157.     i=i;
  158.   }
  159.   
  160. }
  161. void time()
  162. { unsigned char i,j;
  163. for(i=0;i<100;i++)
  164. {
  165. for(j=0;j<30;j++)
  166. {
  167.    j=j;
  168.   }
  169.   }
  170. }
  171. void busy()         //判斷LCD是否忙
  172. {   
  173.   do
  174.   {
  175.   P1=0xff;
  176.    RS=0;
  177.      RW=1;
  178.      E=0;
  179.    nop;
  180.    E=1;
  181.    }while(P17==1);
  182.   
  183. }
  184. unsigned char JIAN()/*判斷是否有鍵按下*/
  185. {
  186.   unsigned char  i,j;
  187.      i=0xff;
  188.      PORTA=i;
  189.      time();
  190.      i=0x00;
  191.      PORTB=i;
  192.      j=PORTA;
  193.      j=~j;
  194.      j=j&(0x0f);
  195.      return  j;
  196. }
  197. unsigned char JIANZHI()/*讀鍵值程序*/
  198. {
  199.    unsigned i,j,d,k,m=1;
  200.   i=0xfe;
  201.   k=0x01;
  202.   do
  203.   {
  204.   PORTB=i;
  205.   j=PORTA;
  206.   m=j&(0x01);
  207.     if(m==0)
  208.     d=k/2;
  209.   else
  210.      {
  211.   m=j&(0x02);
  212.       if(m==0)
  213.      d=k/2+4;
  214.     else
  215.       {
  216.      m=j&(0x04);
  217.       if(m==0)
  218.       d=k/2+8;
  219.        else
  220.       {
  221.        m=j&(0x08);
  222.                   if(m==0)
  223.       d=k/2+12;
  224.       }
  225.          }
  226.        }
  227. k=k+2;
  228. i=i<<1;
  229. i=i|(0x01);
  230. }while(m!=0);
  231. return  d;
  232. }
  233. void OPJIAN() /* 鍵值處理程序*/
  234. {
  235.    switch(INMA)
  236. {
  237.    case 0x08:  {RUNState=Right_RUN;s=0xf7;}break;
  238.    case 0x09:  {RUNState=Left_RUN;s=0x01;}break;
  239.    case 0x0b:  {
  240.             flag=1;
  241.       t=t-2;
  242.       RunSpeed=5000000/(65536-t*256-a);
  243.       speed();}break;
  244.    case 0x0f:  {flag=1;
  245.                 t=t+2;
  246.                  RunSpeed=5000000/(65536-t*256-a);
  247.                  speed();}
  248. }
  249. }
  250. void speed()/*速度處理程序*/
  251. {
  252.   unsigned  char  i=0;
  253.   SD[0]=RunSpeed/100+48;
  254.   SD[1]=RunSpeed%100/10+48;
  255.   SD[2]=RunSpeed%10+48;
  256.   }
  257.   void time1(void) interrupt 1 using 2
  258.   {
  259.    TR0=0;
  260.    PORTC=s;
  261. if(RUNState==0)
  262. {
  263. s=(s<<1);
  264. if(s==0x10)
  265.    s=0x01;
  266. }
  267.    else
  268. {
  269.   s=s>>1;
  270. if(s==0x0f)
  271. s=0xf7;
  272.   }
  273.    TH0=t;
  274.   TL0=a;
  275.   TR0=1;
  276.   }
復制代碼

作者: 330266606    時間: 2017-5-4 00:24
樓主好人




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲视频二区 | 亚洲综合色丁香婷婷六月图片 | 色www精品视频在线观看 | 成人二区 | 欧美一级片免费看 | 欧美老妇交乱视频 | 久久里面有精品 | 国产成人一区二区三区电影 | 日韩黄a | 99精品免费视频 | 一区二区三区在线播放 | 日韩午夜在线观看 | 精品国产18久久久久久二百 | 四虎影院在线免费观看 | 午夜影院在线免费观看视频 | 成人黄视频在线观看 | 成人精品国产 | 国产电影一区二区在线观看 | 久久久福利 | 国产精品久久久久久久久婷婷 | 久久久国产一区二区三区 | 国产中文字幕亚洲 | 五月婷婷激情网 | 欧美亚洲国产一区 | av三级| 黄视频网站在线 | 久草青青 | 久久久美女 | 欧美日韩在线观看一区 | 夜夜骑首页 | 亚洲欧美一区二区三区在线 | 国产精品 欧美精品 | 日日噜噜噜夜夜爽爽狠狠视频, | 夜久久 | 久久久久久高潮国产精品视 | 欧美男人天堂 | 毛片一区二区三区 | 国产精品久久久久久影院8一贰佰 | 国产a视频 | 精品国产色 | 夜夜精品浪潮av一区二区三区 |