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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

步進(jìn)電機(jī)仿真實(shí)驗(yàn),親測可用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
1 2控制正反轉(zhuǎn),加減控制轉(zhuǎn)速。親測可用

完整代碼和仿真文件下載: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設(shè)置程序*/
  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()/*狀態(tài)顯示程序*/
  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寫數(shù)據(jù)*/
  145. { P1=i;
  146.    RS=1;
  147. RW=0;
  148. E=0;
  149.    busy();
  150. E=1;
  151. }

  152. void delay()/*延時(shí)程序*/
  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.   }
復(fù)制代碼

評(píng)分

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

查看全部評(píng)分

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:196313 發(fā)表于 2017-5-4 00:24 | 只看該作者
樓主好人
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产美女福利在线观看 | 超碰人人91| 金莲网| 久久综合久久久 | 91在线色视频 | 日韩一区在线观看视频 | 99精品国产一区二区青青牛奶 | 欧美精品二区 | 久久国产成人午夜av影院武则天 | 2019精品手机国产品在线 | 久久精品视频网站 | 日本黄色不卡视频 | 亚洲精品久久嫩草网站秘色 | 成人一级毛片 | 成人在线视频网 | 国产精品永久免费观看 | 中文字幕一区二区三区四区不卡 | 亚洲在线视频 | 欧美日韩精品免费观看 | 日韩精品免费在线观看 | 91欧美激情一区二区三区成人 | 国产午夜精品久久久久免费视高清 | 在线免费亚洲视频 | 91网站在线观看视频 | 色婷婷av一区二区三区软件 | 国产欧美精品一区二区三区 | 91久久久久久久久 | 精品自拍视频 | 久久久久久国产精品 | 在线播放亚洲 | 日韩精品视频在线 | 亚洲一区二区三区在线 | 精品久久久久久久久亚洲 | 国产精品99久久久久久久vr | 麻豆av在线免费观看 | 精品国产免费人成在线观看 | 夜夜骑天天干 | 国产精品国产精品国产专区不片 | 亚洲欧美日韩精品久久亚洲区 | a视频在线观看 | 午夜91|