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

QQ登錄

只需一步,快速開(kāi)始

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

Proteus步進(jìn)電機(jī)控制模塊不能控制,求大神指教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:299677 發(fā)表于 2021-3-19 10:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式

這個(gè)是源碼,源碼和仿真都在附件

#include"reg51.h"
#include"intrins.h"
#include"absacc.h"     
#define busy 0x80
#define uchar unsigned char
#define uint unsigned int

sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
sbit KEY1=P3^1;
sbit KEY2=P3^0;
sbit KEY3=P3^2;
uchar code tab[8]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};



uchar temp;
void delay(uchar k)
{
uint i,j;
for(i=0;i<k;i++)
{
  for(j=0;j<60;j++)
  {;}
}
}

void test_1602busy()
{
   P0=0xFF;
      E=1;
      RS=0;
      RW=1;
   _nop_();
   _nop_();   
   while(P0&busy)
     { E=0;
       _nop_();
       E=1;
       _nop_();
       }
       E=0;
    }         
    void write_1602Command(uchar co)
    {
     test_1602busy();
     RS=0;
     RW=0;
     E=0;
_nop_();
     P0=co;
_nop_();
     E=1;
_nop_();
     E=0;
    }   
    void write_1602Data(uchar Data)
    {
     test_1602busy();
     P0=Data;
     RS=1;
     RW=0;
     E=1;
_nop_();
     E=0;
    }     
    void init_1602(void)
    {
     write_1602Command(0x38);
     delay(5);
     write_1602Command(0x01);
     delay(5);
     write_1602Command(0x06);
     delay(5);
     write_1602Command(0x0F);
     delay(5);
    write_1602Command(0x0C);
    }

    void DisplayOneChar(uchar X,uchar Y,uchar DData)
    {
    Y&=1;
    X&=15;
    if(Y)X|=0x40;
    X|=0x80;
    write_1602Command(X);
    write_1602Data(DData);
    }

    void display_1602(uchar *DData,X,Y)
    {
    uchar ListLength=0;
    Y&=0x01;
    X&=0x0F;
    while(X<16)
    {
    DisplayOneChar(X,Y,DData[ListLength]);
    ListLength ++;
    X++;
    }
    }
    void main()
    {
    uchar i=0;
    uchar delay_v=100;
    uchar flag=0;
    P1=0xFF;
    P2=0xFF;
    init_1602();
    display_1602("STA: SPD:",0,0);
       display_1602("RUN:     ",0,1);
    while(1)
    {
    if(KEY2==1)DisplayOneChar(4,0,'Z');
    else DisplayOneChar(4,0,'F');
    if(KEY3==0)
    {
    i++;
    i=i%3;
    while(KEY3==0)
    {;}
    }
    switch(i)
    {
    case 0:delay_v=100;DisplayOneChar(13,0,'1');break;
    case 1:delay_v=75;DisplayOneChar(13,0,'2');break;
       case 2:delay_v=50;DisplayOneChar(13,0,'3');break;
    }
    if(KEY1==0)
    {
    display_1602("  RUN:on  ",0,1);
    if(flag==0)
    {
    if(KEY2==1)
    {temp=0;
    P1=tab[temp];
    flag=1;
    delay(delay_v);
    }
    if(KEY2==0)
    {
    temp=6;
    P1=tab[temp];
    flag=1;
    delay(delay_v);
    }
    }
    if(KEY2==1)
    {temp++;
    if(temp==8)
    {temp=0;}
    P1=tab[temp];
    delay(delay_v );
    }
    if(KEY2==0)
    {temp--;
    if(temp==0xFF)
    {temp=7;}
    P1=tab[temp];
    delay(delay_v);
    }
    }
    else display_1602("  RUN:off  ",0,1);
    }
    }

























   

























   

步進(jìn)電機(jī).rar

89.93 KB, 下載次數(shù): 3

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表