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

QQ登錄

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

搜索
查看: 2437|回復(fù): 0
收起左側(cè)

請(qǐng)高手幫我看下這個(gè)程序步進(jìn)電機(jī)的

[復(fù)制鏈接]
ID:67129 發(fā)表于 2014-10-9 11:35 | 顯示全部樓層 |閱讀模式
這個(gè)是用89C52單片機(jī)做的一個(gè)驅(qū)動(dòng)步進(jìn)電機(jī)和LED發(fā)光管的程序 在用電位器調(diào)節(jié)AD取值電壓的時(shí)候 LED獲取的信號(hào)是正常的 步進(jìn)電機(jī)為什么一直轉(zhuǎn)啊轉(zhuǎn)的  我用P1口的值在做比較  if語(yǔ)句不滿足條件 應(yīng)該沒(méi)有脈沖信號(hào)給步進(jìn)電機(jī)呀  為什么還是循環(huán)在轉(zhuǎn),請(qǐng)高手幫我解答下吧。

#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit adrd=P3^7;                          //IO口定義
sbit adwr=P3^6;
sbit diola=P2^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar j,k,adval;
uint num,num1,i;
uchar code F_Rotation[4]={0x20,0x10,0x08,0x04};
void delay(unsigned char i)                //延時(shí)程序
{
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

void main()                //        主程序
{


    while(1)
  {
        P1=0xff;   //首先給P1口一個(gè)值
        num=P1;                        //把這個(gè)P1口的值賦給num變量作為比較
        delay(10);
    wela=1;
    P0=0;                       //選通ADCS
    adwr=0;                        //AD寫入(隨便寫個(gè)什么都行,主要是為了啟動(dòng)AD轉(zhuǎn)換)
    _nop_();
    adwr=1;
    P0=0xff;                    //關(guān)閉ADCS
    delay(10);
    wela=0;                     //關(guān)閉有AD片選信號(hào)鎖存器的鎖存端以防止在操作數(shù)碼管時(shí)使AD的片選發(fā)生變化
    delay(20);
     wela=1;                   //重新打開(kāi)有AD片選信號(hào)鎖存器的鎖存端
    // P1=0xff;                    //讀取P1口之前先給其寫全1
     P0=0;                       //選通ADCS
     adrd=0;                     //AD讀使能
     num1=P1;                        //AD數(shù)據(jù)讀取
     adrd=1;
     P0=0xff;                     //關(guān)閉ADCS
     adwr=0;   
     P1=num1;                //同時(shí)把AD的值送八個(gè)發(fā)光二極顯示
         if(num!=num1)     //如果P1口的值發(fā)生了變化
                {        dula=1;                        //數(shù)碼管關(guān)閉
                        P0=0;
                        dula=0;
                        delay(20);
                        num=num1;   //把num1賦值給num
                       
                        for(i=0;i<4;i++)      //4相
                     {
                             P0=F_Rotation[i];  //輸出對(duì)應(yīng)的相 可以自行換成反轉(zhuǎn)表格
                             delay(20);        //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大
                         }
                }
                

   }
}


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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