OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4485|回复: 1

PT2272L4+8051+步進電機驅動板+控制步進電機動作,求教啊!

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-11-12
在线时间
1 小时
发表于 2015-10-18 20:22:34 | 显示全部楼层 |阅读模式
5金钱
#define uchar unsigned char
#include <reg51.h>
                                        //PT2262發出訊號,PT2274L4接收D0-D3
                                        //D0-D3連接8051 P2.0-P2.3
                                        //收到P2.0 -P2.3的4位組合 P2.4或P2.5輸出=0 / 1       
                                        //P0 控制7劃管出字,P1控制位選,出0亮

sbit P24=P2^4;                //8051 輸出
sbit P25=P2^5;                //8051 輸出
sbit PUL=P2^6;                //頻率
sbit DIR=P2^7;                //方向
sbit EN=P3^7;       
/*******************************共陽LED段碼表*******************************/
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};

/*********************************端口定義**********************************/
char dat;                        //接收到的數據
//int Num;                        //步進數                        
/*********************************時間控制**********************************/

/*********************************延時控制**********************************/
void delay(unsigned int count)      /*定義延遲函數*/
{
        unsigned int m,n;
    for(m=0;m<count;m++)
                  for(n=0;n<9;n++);
}
/*********************************步數控制**********************************/                           
void Move(void)
{       
        PUL=1;
        delay(5);
        PUL=0;
        delay(5);
}       
void Forward (void)
{
        int i;
        DIR=1;
        for(i=0;i<100;i++)                        //
        Move();                       
}
void Backward (void)
{
        int i;
        DIR=0;
        for(i=0;i<98;i++)                //
        Move();
}

/******************************主程序**************************************/
void main(void)
{
        P1=0x00;                                                //端口初始化
          P0=0x00;                                                //端口初始化
        P2=0xff;                                                       //置輸入狀態
       
while(1)
{
        dat=(P2&0x0f);                                        //00001111       
        if(dat==0x08)                                        //先按A 顯示1 燈亮 通道 開        0000 1000
                {
                               
                        P0=tab[1];                                        //數碼顯示
                        P1=0xfe;                                        //1111 1110
                        P24=0;                                                 //燈亮       
                                Forward();
                                while (P2&0x08)
                                 {
                                 }       
                }
       
         if(dat==0x04)                                        //再按B建 顯示2 燈滅  通道 關         0000 0100
                {
                        P0=tab[2];                                        //數碼顯示
                        P1=0xfd;                                         //1111 1101
                        P24=1;                                                //關燈
                                Backward();
                                while (P2&0x04)
                                 {
                                }
                }
               
         if(dat==0x02)                                        //按C鍵 顯示3 燈亮 通道 開         0000 0010
                {
                        P0=tab[3];                                        //數碼顯示
                        P1=0xfb;                                        //1111 1011
                        P25=0;                                          //燈亮
                                Forward();
                                delay(1000);
                                Backward();
                                while(P2&0x02);
                                {
                                }
                               
                                               
                }
        if(dat==0x01)                                        //再按D鍵 顯示4 通道 關             0000 0001               
                {       
                        P0=tab[4];
                        P1=0xf7;                                          //1111 0111
                        P25=1;                                                //關燈
                                Forward();
                                delay(5000);
                                delay(5000);
                                delay(5000);
                                delay(5000);
                                Backward();
                                while(P2&0x01);
                                {
                                }
        }               
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-11-12
在线时间
1 小时
 楼主| 发表于 2015-10-18 20:23:00 | 显示全部楼层
在上述程序中,如按3或4鍵,做完往返動作後,想再按鍵再做動作,應該如何改寫呢???
因PT2272 L4是鎖存訊號,試過改用PT2272 M4非鎖存,一,二鍵又再按就做動作,這樣角度又錯了!!!
求教啊!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表