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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2399|回復: 15
收起左側

單片機按鍵控制步進電機正反轉程序,怎么不行呀

[復制鏈接]
ID:949074 發表于 2021-12-19 17:12 | 顯示全部樓層 |閱讀模式
#include <REGX51.H>
sbit key1=P1^0;
sbit key2=P1^1;
#define uchar unsigned char
#define uint unsigned int
uchar j;
uchar code steptr[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
uchar code steptl[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar *p;
void delayms(j)
{
        unsigned char i;
        TMOD=0X01;
        for(i=0;i<j;i++)
        {
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                TR0=1;
                while(!TF0);
                        TF0=0;
        }
}

void key11()
{
        int flag=0;
                if(key1==0&&flag==0)
                {
                        flag=1;
                }
                        if(key1==1&&flag==1)
                        {
                                p=steptr;
                                flag=0;
                        }
}

void key22()
{
        int flag1=0;
                if(key2==0&&flag1==0)
                {
                        flag1=1;
                }
                        if(key2==1&&flag1==1)
                        {
                                p=steptl;
                                flag1=0;
                        }
}

void stepper()
{
        int i=0;
                for(i=0;i<8;i++,p++)
        {
                P2=*p;
                delayms(10);
        }
}

void main()
{
        while(1)
        {
                key11();
                key22();
                stepper();
        }
}

回復

使用道具 舉報

ID:993066 發表于 2021-12-19 19:26 | 顯示全部樓層
/**************************************************************************************
*                         步進電機                                                                                  *

硬件連接:
           P0 -->矩陣鍵盤
                                         DOUT = P3^7;          //輸出
                                         CLK  = P3^6;          //時鐘
                                         DIN  = P3^4;          //輸入
                                         CS   = P3^5;          //片選
                                         P10   = INA
                                         P11  =  INB
                                         P12  =  INC
                                         P13  =  INB
                                         
                                         OUT A+ A- B+ B-  連接電機  
                                         
                                         矩陣鍵盤:
                                         0      1      2       3
                                         
                                         4      5      6       7
                                         
                                       
注意事項:無                                                                                                                                                                  
***************************************************************************************/

#include "reg52.h"                       //此文件中定義了單片機的一些特殊功能寄存器
#include "lcd.h"
#include "key.h"
#include "XPT2046.h"
#include "42Motor.h"

#define u16 unsigned int           //對數據類型進行聲明定義
#define u8 unsigned char


/*****************************************************************************/
void Display_rate();
/**************************************************************************

/*****************************************************************************/

u8 key_num;
u16 speed;
/*******************************************************************************/
bit dir,m_run;


/*******************************************************************************
* 函 數 名       : main
* 函數功能                 : 主函數
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{       



       
        while(1)
                                {       
                                                        key_num=KeyDown();                    //讀取鍵值
                                                        switch(key_num)
                                                                {
                                                                        case 0: m_run=~m_run; break;    //開/關
                                                                        case 1: dir=0;        break;    //正轉
                                                                        case 2: dir=1;        break;                //反轉
                                                                }
                                       
                                                        speed=Read_AD_Data(0x94)/4;       //取ad值
                                                        if(speed>200)      speed-=200;     
                                                        else               speed=1;        //
                                                               
                                                        if(m_run)                 Motor_Run(dir,speed);  //電機運行
                               
                                }       
                               
}
         
/*****************************************************************************/
/*32*/
/*******************************************************************************/
回復

使用道具 舉報

ID:979299 發表于 2021-12-19 20:01 | 顯示全部樓層
是什么不行啊,程序看上去沒什么問題,配上電路圖大家好分析啊
回復

使用道具 舉報

ID:949074 發表于 2021-12-19 20:25 | 顯示全部樓層
興安xa 發表于 2021-12-19 20:01
是什么不行啊,程序看上去沒什么問題,配上電路圖大家好分析啊

電路圖沒問題,p1.0,p1.1接按鍵接0v,p2.0-2.3接電機啟動信號
回復

使用道具 舉報

ID:824490 發表于 2021-12-19 21:05 | 顯示全部樓層
這個代碼的結構,我坦白,我看不明白。。。

回復

使用道具 舉報

ID:949074 發表于 2021-12-19 21:35 | 顯示全部樓層
akesking 發表于 2021-12-19 19:26
/**************************************************************************************
*                         ...

ok,謝謝
回復

使用道具 舉報

ID:883242 發表于 2021-12-19 22:43 | 顯示全部樓層
硬件怎么接的?沒硬件軟件就是無根之草。
回復

使用道具 舉報

ID:739610 發表于 2021-12-19 23:03 | 顯示全部樓層
p2.0-2.3是直接驅動步進電機么?需要加驅動電路的  沒有電路圖  沒法具體分析  有條件的話用示波器看一下波形
回復

使用道具 舉報

ID:949074 發表于 2021-12-19 23:13 來自觸屏版 | 顯示全部樓層
00云夢澤00 發表于 2021-12-19 23:03
p2.0-2.3是直接驅動步進電機么?需要加驅動電路的  沒有電路圖  沒法具體分析  有條件的話用示波器看一下波 ...

有驅動的,程序沒問題吧
回復

使用道具 舉報

ID:949074 發表于 2021-12-19 23:14 來自觸屏版 | 顯示全部樓層
Hephaestus 發表于 2021-12-19 22:43
硬件怎么接的?沒硬件軟件就是無根之草。

電路圖沒問題,p1.0,p1.1接按鍵接0v,p2.0-2.3接電機驅動信號,接驅動板,控制步進電機
回復

使用道具 舉報

ID:799986 發表于 2021-12-19 23:28 | 顯示全部樓層
有驅動的,程序沒問題吧
回復

使用道具 舉報

ID:883242 發表于 2021-12-19 23:29 | 顯示全部樓層
l156613673 發表于 2021-12-19 23:14
電路圖沒問題,p1.0,p1.1接按鍵接0v,p2.0-2.3接電機驅動信號,接驅動板,控制步進電機

電機驅動信號又是個啥?
回復

使用道具 舉報

ID:844772 發表于 2021-12-20 08:58 | 顯示全部樓層
這程序是哪里抄來的啊,至少有2個問題。
1。 void key11()  int flag=0;  // 這個flag變量要改成 static ,否則按鍵無效的。另外的一個也要改。
2。 void stepper()
{
        int i=0;
                for(i=0;i<8;i++,p++) //刪掉p++
        {
                P2=*p; // 改為 P2=*(p+i); 否則只能走8步。
                delayms(10);
        }
}
回復

使用道具 舉報

ID:979299 發表于 2021-12-20 14:02 | 顯示全部樓層
電路沒問題也可以用下面的程序試試
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code FFW[]=
{
        0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
};

uchar code REV[]=
{
        0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
};

sbit K1 = P1^0;
sbit K2 = P1^1;

void DelayMS(uint ms)
{
        uchar i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}

void SETP_MOTOR_FFW(uchar n)
{
        uchar i,j;
        for(i=0;i<5*n;i++)
        {
                 for(j=0;j<8;j++)
                {
                        P2 = FFW[j];
                        DelayMS(25);
                }
        }
}

void SETP_MOTOR_REV(uchar n)
{
        uchar i,j;
        for(i=0;i<5*n;i++)
        {
                 for(j=0;j<8;j++)
                {
                        P2 = REV[j];
                        DelayMS(25);
                }
        }
}

void main()
{
        uchar N = 3;
        while(1)
        {
                 if(K1 == 0)
                {
                         P2 = 0xfe;
                        SETP_MOTOR_FFW(N);
                }
                else if(K2 == 0)
                {
                         P2 = 0xfd;
                        SETP_MOTOR_REV(N);
                }
        }
}
回復

使用道具 舉報

ID:994053 發表于 2021-12-24 14:01 | 顯示全部樓層
這個程序看不明白
回復

使用道具 舉報

ID:407019 發表于 2021-12-25 14:18 | 顯示全部樓層
void stepper()
{
        int i=0;
                for(i=0;i<8;i++,p++)
        {
                P2=*p;
                delayms(10);
        }
}


修改一下

void stepper()
{
        int i=0;
                for(i=0;i<8;i++)
        {
                P2=*p;
                 p++;
                delayms(5);
        }
}

嘗試一下   
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜资源 | 日韩一区二区三区在线观看视频 | 国内精品99| 999精品在线观看 | 一区二区三区欧美 | 久久精品成人 | 网站黄色在线免费观看 | 91精品国产91久久久久久吃药 | 99精品欧美一区二区蜜桃免费 | 日韩毛片免费视频 | 日日日日日日bbbbb视频 | 国产精品一区在线观看你懂的 | 日本超碰 | 欧美一级淫片免费视频黄 | 欧美性网 | 男人天堂99 | 日本中文字幕视频 | 欧美日韩高清在线一区 | www.日韩| 美女三区| 一区二区三区四区免费视频 | 黄网站在线播放 | 日韩免费网站 | 一区二区免费 | 亚洲日本激情 | 日韩中文字幕一区二区三区 | 日本二区 | 91久久国产综合久久 | 精品久久久一区二区 | 免费国产成人av | 亚洲午夜av久久乱码 | 97人澡人人添人人爽欧美 | 欧美亚洲国产精品 | 成人在线免费观看 | 中文字幕一区二区三区不卡在线 | 亚洲视频1区 | 91精品国产乱码久久久久久久 | 精品国产乱码久久久久久图片 | 亚洲精品一区二区三区中文字幕 | 国产在线一区二区 | heyzo在线|