九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
單片機(jī)控制步進(jìn)電機(jī)程序+視頻
完善二 
源程序:
/*-----------------------------------------------------------------------------
工作板源程序
-----------------------------------------------------------------------------*/
#include <REG52.H> //各個(gè)特殊功能寄存器地址定義
#include <intrins.h>
/*-----------------------------------------------------------------------------
用于串行輸入SPI的數(shù)據(jù)接收口
-----------------------------------------------------------------------------*/
volatile  unsigned int  data zd0; //功能1的時(shí)候調(diào)整蜂鳴器時(shí)間
volatile  unsigned char data SPI_DH,SPI_DL;//串行口高位和低位高位用于識別功能指令和地址指令,低位用于數(shù)據(jù)傳輸
volatile  unsigned char data  SPI_ZL,SPI_DZ,SPI_SJ;
volatileunsigned   int data  m,z;
/*-----------------------------------------------------------------------------
三變量用于默認(rèn)的速度,寬度,高度。
-----------------------------------------------------------------------------*/
volatile  unsigned char data b=100;    //單位是rpm/min
volatile unsigned char data  BBZ;
volatile  unsigned char data c=1;          //       寬度單位是毫米
volatile unsigned char data  CBZ;
volatile  unsigned char data d=4;              //         高度單位是毫米
volatile unsigned char data  DBZ;
/*-----------------------------------------------------------------------------
三變量用于速度,寬度,高度的翻譯中間變量
-----------------------------------------------------------------------------*/
unsigned char data  e;//  用于速度
unsigned char data  f; //用于寬度
unsigned  char data g;//用高度
/*-------------------------------------------------------------
P0引腳定義: P0口有5種定義,每種定義根據(jù)P2口給定功能不同而不同。
每種功能不能同時(shí)實(shí)現(xiàn),否則會出現(xiàn)混亂。
-------------------------------------------------------------*/
sbitCLK1=P0^0;       //步進(jìn)電機(jī)1脈沖
sbit CW1    =P0^1; //步進(jìn)電機(jī)1方向
sbitEW1=P0^2; //步進(jìn)電機(jī)1使能
sbitCLK2    =P0^3; //步進(jìn)電機(jī)2脈沖
sbitCW2    =P0^4;      //步進(jìn)電機(jī)2方向
sbitEW2    =P0^5;      //步進(jìn)電機(jī)2使能
sbitEN1    =P0^6;      //角度電機(jī)使能
sbitIN1    =P0^7;    //角度電機(jī)脈沖
/*-------------------------------------------------------------
P1引腳定義 :P1口為限位檢測口。
-------------------------------------------------------------*/
sbit LED_SD    =P1^0;
sbit    LED_KD    =P1^2;
sbit    LED_GD=P1^3;
sbit    LED_YX=P1^4;
sbit    LED_FW=P1^5;
sbit    CLK        =P1^6;      //角度限位右  。當(dāng)高電平表示有限位
sbitDATAS    =P1^7;      //角度電機(jī)輸入2
/*-------------------------------------------------------------
P2引腳定義 :
-------------------------------------------------------------*/
sbit    VSW     = P2^0;
sbit    FXXWZ   = P2^1;
sbitFXXWY=P2^2;  //  驅(qū)動(dòng)控制,=0該為Q=D.=1時(shí)為高阻態(tài)。
sbitZXWX=P2^3;  //鍵盤控制,該位=0時(shí)為跟隨變化Q=D,=1時(shí)為高阻態(tài)。
sbitZXWS=P2^4; //指示燈LED控制該位=0時(shí)為保持,=1時(shí)為數(shù)據(jù)Q=D
sbit    XXWZ=P2^5; //數(shù)碼管個(gè)位控制該位=0時(shí)為保持,=1時(shí)為數(shù)據(jù)Q=D
sbit XXWY=P2^6; //數(shù)碼管十位控制該位=0時(shí)為保持,=1時(shí)為數(shù)據(jù)Q=D
sbitIN2    =P2^7;  //角度電機(jī)脈沖
/*-------------------------------------------------------------
P3引腳定義:P3口為主軸電機(jī)調(diào)速端口和
主軸編碼方向編碼,還有鍵盤中斷。
-------------------------------------------------------------*/
sbit    STB_IO  =P3^2 ;
sbit    JT      =P3^3 ;
sbitZZZD=P3^4;
sbitFXMC=P3^5;
sbitPOWSW=P3^7;
/*-----------------------------------------------------------------------------
函數(shù)功能 : MS 毫秒 延遲函數(shù)
-----------------------------------------------------------------------------*/
void Delay(unsigned int i)
{
unsigned int j;
for(i;i>0;i--)
{
for(j=0;j<125;j++)
{;}
}
}
unsigned char code table[]=
{
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,
0x71,0x00,0x40,0x00
};
/*-----------------------------------------------------------------------------
函數(shù)功能 : us 微秒 延遲函數(shù)
-----------------------------------------------------------------------------*/
void MyDelay(unsigned int time)
{
while(time--)
{
_nop_();
}
}
/*-----------------------------------------------------------------------------
函數(shù)功能 : us 微秒 精確US延遲 12MHZ延遲6us
-----------------------------------------------------------------------------*/
void MyDelay2()
{
_nop_();
}
/*-----------------------------------------------------------------------------
函數(shù)功能 :X軸電機(jī)驅(qū)動(dòng)脈沖
-----------------------------------------------------------------------------*/
void XZDJQD()
{
CLK1=0;
MyDelay2();
CLK1=1;
Delay(1);
}
/*-----------------------------------------------------------------------------
函數(shù)功能 :Z軸電機(jī)驅(qū)動(dòng)脈沖
-----------------------------------------------------------------------------*/
void ZZDJQD()
{
CLK2=0;
MyDelay2();
CLK2=1;
Delay(1);
}
/*-----------------------------------------------------------------------------
函數(shù)功能 :機(jī)構(gòu)復(fù)位程序 復(fù)位x軸z軸以及角度軸。
-----------------------------------------------------------------------------*/
void jgfw ( )
{
unsigned int g=0; //中點(diǎn)計(jì)數(shù)中間變量
EX0=0;//關(guān)閉鍵盤中斷等待復(fù)位完成。
EW1=0;
CW1=1;
while(XXWZ==0)
{
CW1=1;
XZDJQD();
}
CW1=0;
while (XXWY==0)
{
CW1=0;
XZDJQD();
g=g+1;
}
g=g/2;
CW1=1;
while (g>0)
{
CW1=1;
XZDJQD();
g=g-1;
}
P2=0XF0;
EX0=1;
}
/*-----------------------------------------------------------------------------
函數(shù)功能 :運(yùn)行狀態(tài)中X軸和Z軸角度軸的控制。
-----------------------------------------------------------------------------*/
void YXQD ( )
{
f=c*20;
while(f>0)
{
XZDJQD();
f=f-1;
if(XXWZ==1)CW1=0;
if(XXWY==1)CW1=1;
if(XXWZ==1||XXWY==1)
{
g=d*5;
while(g>0)
{
ZZDJQD();
g=g-1;
}
}
}
}
/*-----------------------------------------------------------------------------
函數(shù)功能 :運(yùn)行狀態(tài)電機(jī)參數(shù)送出(串行方式)
-----------------------------------------------------------------------------*/
void Control(unsigned char cmd)
{
unsigned char i;
STB_IO = 0;//拉低片選
Delay(20);
for(i=0;i<8;i++)
{
CLK = 0;
//這里大約是100us
if(cmd & 0x80)DATAS = 1;//把datas的參數(shù)與16進(jìn)制數(shù)8000進(jìn)行位與運(yùn)算把結(jié)果給datas(如果有數(shù)則DAT=1
else DATAS = 0;//否則DAT=0
MyDelay(200) ;
CLK = 1;
MyDelay(200) ;//這里大約是100us
cmd <<= 1;
}
DATAS = 1;
STB_IO = 1;
CLK = 1;
}
/*-----------------------------------------------------------------------------
函數(shù)功能 : 主函數(shù)
-----------------------------------------------------------------------------*/
void main(void)
{
unsigned char YSJS=5 ;
EX0=1;//開中斷0
EA=1; //開總中斷
IT0=1; //設(shè)定中斷0方式為下降沿觸發(fā)。
while (1)
{
if   (SPI_ZL==0)   {POWSW=1;LED_SD=1;LED_KD=1;LED_GD=1;LED_YX=1;LED_FW=1;}       //  關(guān)閉電源狀態(tài)
while(SPI_ZL==0){;  }
if   (SPI_ZL==1){VSW=0; POWSW=0;}                                                                  //啟動(dòng)電源的狀態(tài)。
while(SPI_ZL==1)   {LED_SD=~LED_SD;LED_KD=~LED_KD;LED_GD=~LED_GD;LED_YX=~LED_YX;LED_FW=~LED_FW;Delay(300); }
if   (SPI_ZL==2){  LED_SD=1;LED_KD=1;LED_GD=1;LED_YX=1;LED_FW=0;                      }   //復(fù)位狀態(tài)
while(SPI_ZL==2){;}
if   (SPI_ZL==3){    LED_SD=0;LED_KD=1;LED_GD=1;LED_YX=0;LED_FW=1; VSW=1; POWSW=0;                             }       //運(yùn)行狀態(tài)
while(SPI_ZL==3)
{
if(BBZ!=b)
{
LED_SD=1;
LED_KD=1;
LED_GD=1;
while(--YSJS){LED_SD=~LED_SD;Delay(100);}
LED_SD=0 ;
BBZ=b;
YSJS=5 ;
}
if(CBZ!=c)
{
LED_SD=1;
LED_KD=1;
LED_GD=1;
while(--YSJS){LED_KD=~LED_KD;Delay(100);}
LED_KD=0;
CBZ=c;
YSJS=5 ;
}
if(DBZ!=d)
{
LED_SD=1;
LED_KD=1;
LED_GD=1;
while(--YSJS){LED_GD=~LED_GD;Delay(100);}
LED_GD=0;
DBZ=d;
YSJS=5 ;
}
}
if   (SPI_ZL==4)                                                                       //暫停狀態(tài)
{
LED_SD=0;LED_KD=1;LED_GD=1;LED_YX=0;LED_FW=1; POWSW=1;
}
while (SPI_ZL==4)                                                                               //參數(shù)調(diào)整
{
if(BBZ!=b)
{
LED_SD=1;
LED_KD=1;
LED_GD=1;
while(--YSJS){LED_SD=~LED_SD;Delay(100);}
LED_SD=0 ;
BBZ=b;
YSJS=5 ;
}
if(CBZ!=c)
{
LED_SD=1;
LED_KD=1;
LED_GD=1;
while(--YSJS){LED_KD=~LED_KD;Delay(100);}
LED_KD=0;
CBZ=c;
YSJS=5 ;
}
if(DBZ!=d)
{
LED_SD=1;
LED_KD=1;
LED_GD=1;
while(--YSJS){LED_GD=~LED_GD;Delay(100);}
LED_GD=0;
DBZ=d;
YSJS=5 ;
}
LED_YX=~LED_YX;
Delay(100);
}
}
}
/*-----------------------------------------------------------------------------
函數(shù)功能 : 串行中斷接收
-----------------------------------------------------------------------------*/
void SPI_IO(void) interrupt 0
{
IE0=0;
m=0;
if(STB_IO==0)
{
for(m=0;m<16;m++)
{
while(CLK==1){;}
if(CLK==0)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
if(DATAS==1){ z|=1;}
else{ z|=0;}
}
zd0=z;
z=z<<1;
while(CLK==0){;}
}
SPI_DL=zd0;
zd0>>=8;
SPI_DH=zd0;
if(SPI_DH==0)
{
SPI_ZL  =   SPI_DL;
}
if(SPI_DH==0xf1)
{
c       =   SPI_DL;
}
if(SPI_DH==0xf0)
{
b       =   SPI_DL;
}
if(SPI_DH==0xf2)
{
d       =   SPI_DL;
}
}
IE0=0;
}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SPI協(xié)議在51單片機(jī)上的驅(qū)動(dòng)實(shí)現(xiàn)—AVR單片機(jī),SPI,AT45DB161D
SPI模擬編程《51例子》
調(diào)試51+nrf905無線模塊,可以保證穩(wěn)定的收發(fā),正在完善中。。 (www.ouravr...
ISD4002語音芯片C程序 - wangxing的日志 - 網(wǎng)易博客
學(xué)51單片機(jī)-基于PCF8591的AD采樣和DA輸出【實(shí)際應(yīng)用篇】
1602顯示程序
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服