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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1385|回復: 2
打印 上一主題 下一主題
收起左側(cè)

此程序下載到單片機后為什么電機會亂轉(zhuǎn)?

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:334234 發(fā)表于 2020-4-5 16:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
預想功能:按下按鍵,電機反轉(zhuǎn)5S后,延時一會,再以相同速度正轉(zhuǎn)5S,停止
現(xiàn)在的現(xiàn)象:下載程序后電機亂轉(zhuǎn)的,求求大佬了
單片機源程序如下:
  1. #include"reg51.h"
  2. #define uint16 unsigned int
  3. #define uint8  unsigned char
  4. #define GPIO_MOTOR P1


  5. sbit k1=P3^1;



  6. unsigned char code FFS[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//·′×a
  7. unsigned char code FFN[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//Õy×a
  8. typedef unsigned int u16;

  9. unsigned char Direction,Speed;
  10. void Delay(unsigned int t);
  11. void Motor();

  12. void Motor()
  13. {
  14.   unsigned char i;
  15.         for(i=0;i<8;i++)
  16.         {
  17.     if(Direction==1)
  18.                         GPIO_MOTOR=FFS[i]&0x1f;
  19.      if(Direction==0)
  20.                         GPIO_MOTOR=FFN[i]&0x1f;
  21.                  Delay(Speed);
  22.                
  23. }

  24. }

  25. void Delay(unsigned int t)//t=5000Ñó3ù4s
  26. {
  27.    unsigned int k;
  28.          while(t--)
  29.    {
  30.     for(k=0;k<80;k++)
  31.     {}
  32. }


  33. }


  34. void main(void)
  35. {

  36.         
  37.           TMOD=0x10;
  38.            TH1=0x3C;
  39.            TL1=0xB0;
  40.            EA=1;
  41.            ET1=1;
  42.            TR1=0;
  43.         
  44.         
  45.          while(1)
  46.          {
  47.    if(k1==1)
  48.    {
  49.     Delay(1);
  50.                  if(k1==1)
  51.                  {
  52.                        TR1=1;
  53.         Direction=1;
  54.                            Speed=10;  
  55.          
  56. }  


  57. }
  58. else
  59.         {
  60.                
  61.                 Delay(5000);
  62.     TR1=0;
  63.         
  64. }
  65.         
  66. }

  67. }


  68. void timer()  interrupt 3
  69. {
  70. static u16 i;
  71.            TH1=0x3C;
  72.            TL1=0xB0;
  73.      i++;
  74.         

  75.   if(i==100)
  76.         {
  77.                   Delay(5000);
  78.                    Delay(5000);
  79.                   Delay(5000);
  80.                   Direction=0;
  81.                    Speed=10;
  82.                   i=0;
  83.                
  84. }
  85.                         Motor();

  86. }
復制代碼

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

使用道具 舉報

沙發(fā)
ID:68468 發(fā)表于 2020-4-5 21:15 | 只看該作者
從程序看,你的電機是一個步進電機,F(xiàn)FS[]、FFN[]數(shù)組分別是正反轉(zhuǎn)數(shù)組;我暫時還不知道電機為什么會亂轉(zhuǎn),但從程序本身來看還是有點問題的。首先,我看不出程序是怎么實現(xiàn)“電機反轉(zhuǎn)5S后,延時一會,再以相同速度正轉(zhuǎn)5S,停止”的;其次,在中斷服務函數(shù)中不應有Delay(5000)這樣的長延時函數(shù)。
從我的角度來處理,我會先把程序最小化,只在主函數(shù)中保留 Motor()函數(shù),其他的按鍵、定時中斷均先屏蔽掉, Motor()函數(shù)也只留FFS數(shù)組,單獨試電機是否能正轉(zhuǎn),再換成FFN數(shù)組,試電機能否反轉(zhuǎn),再加入按鍵功能,延時正反轉(zhuǎn)功能。最終實現(xiàn)既定功能。
回復

使用道具 舉報

板凳
ID:487821 發(fā)表于 2020-4-7 00:06 | 只看該作者
這代碼寫得也太亂了吧,你自己改延時函數(shù)應該 就行了,
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线视频91 | 精品亚洲二区 | 欧美 日韩 中文 | av永久免费 | 亚洲人成人一区二区在线观看 | 久久久久国产精品 | 久久久久久久久国产成人免费 | 欧产日产国产精品视频 | 欧美一区视频 | 国产91丝袜在线播放 | 成人欧美一区二区三区 | 最新中文字幕在线 | 在线观看中文字幕 | 美女黄网站 | 日韩国产一区二区三区 | 操久久| 国产成人午夜高潮毛片 | 四虎影视1304t | 国产精品一区二区视频 | 欧美一级一区 | 夜夜骑av | 国产综合久久 | 国产二区在线播放 | 国产成人精品区一区二区不卡 | av色站| 91佛爷在线观看 | 日韩精品一区二区三区中文在线 | 亚洲一区在线日韩在线深爱 | 国产98色在线 | 日韩 | 天天爱爱网 | 综合色播 | 国产精品国产精品国产专区不卡 | 日韩中文字幕第一页 | 一本一道久久a久久精品蜜桃 | 久久久91| 久久国产精彩视频 | 亚洲欧美精品 | 国产精品欧美一区二区三区不卡 | 日韩一区二区不卡 | 欧美极品少妇xxxxⅹ免费视频 | 色噜噜狠狠色综合中国 |