日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]學習了單片機在的基本輸入輸出和在數(shù)據(jù)采集領域的應用,接著學習了單片機在控制領域的應用。在控制系統(tǒng)中,通常要控制機械部件的平移和轉(zhuǎn)動,這些機械部件的驅(qū)動大都采用交流電機、直流電機和步進電機等,其中步進電機最適合與數(shù)字控制。因此在了解單片機在控制系統(tǒng)中的應用時,首先了解了單片機控制步進電機的設計。

學習了單片機在的基本輸入輸出和在數(shù)據(jù)采集領域的應用,接著學習了單片機在控制領域的應用。在控制系統(tǒng)中,通常要控制機械部件的平移和轉(zhuǎn)動,這些機械部件的驅(qū)動大都采用交流電機、直流電機和步進電機等,其中步進電機最適合與數(shù)字控制。因此在了解單片機在控制系統(tǒng)中的應用時,首先了解了單片機控制步進電機的設計。

主要器件:

1、 AT89C52單片機芯片,用與接受鍵盤輸入和控制步進電機。

2、 4相步進電機驅(qū)動芯片STK672-040,內(nèi)含有硬件脈沖分配電路和功率驅(qū)動動能。

3、 4×4行列式鍵盤。

試驗流程圖:

 

試驗電路圖:

 

試驗程序代碼:

//Stepper.h程序

#ifndef _STEPPER_H // 防止Stepper.h被重復引用

#define _STEPPER_H

#include

#define uchar unsigned char

#define uint unsigned int

#define T 10000 // 10ms定時常量宏定義

sbit M1=P2^0;

sbit M2=P2^1;

sbit M4=P2^2;

sbit M5=P2^3;

sbit EN=P2^4;

sbit CWB=P2^5;

sbit RET=P2^6;

sbit CLK=P2^7;

#endif

//Stepper.c 程序

#include "Stepper.h"

/* 定時器0服務子程序 */

void time0() interrupt 1 using 1 // 用定時器0中斷來產(chǎn)生CLK時鐘

{

/* 定時10ms,產(chǎn)生20ms周期的時鐘,也就是50Hz的時鐘 */

TH0 = -T/256;

TL0 = -T%256;

CLK = ~CLK;

}

/* 鍵消抖延時函數(shù) */

void delay(void)

{

uchar i;

for (i=300;i>0;i--);

}

/* 鍵掃描函數(shù) */

uchar keyscan(void)

{

uchar scancode,tmpcode;

P1 = 0xf0; // 發(fā)全0行掃描碼

if ((P1&0xf0)!=0xf0) // 若有鍵按下

{

delay(); // 延時去抖動

if ((P1&0xf0)!=0xf0) // 延時后再判斷一次,去除抖動影響

{

scancode = 0xfe;

while((scancode&0x10)!=0) // 逐行掃描

{

P1 = scancode; // 輸出行掃描碼

if ((P1&0xf0)!=0xf0) // 本行有鍵按下

{

tmpcode = (P1&0xf0)|0x0f;

/* 返回特征字節(jié)碼,為1的位即對應于行和列 */

return((~scancode)+(~tmpcode));

}

else scancode = (scancode<<1)|0x01; // 行掃描碼左移一位

}

}

}

return(0); // 無鍵按下,返回值為0

}

/* 主程序 */

void main()

{

uchar key;

TMOD = 0x01; // 設置定時器0工作模式

EA = 1;

ET0 = 1;

/* 設置為2相激勵 */

M1 = 0;

M2 = 0;

/* 設置為環(huán)形轉(zhuǎn)向軌跡 */

M4 = 1;

M5 = 1;

EN = 0; // 切斷驅(qū)動輸出

RET = 0; // 歸位輸入無效

CWB = 1; // 初始設置為順時針方向

while(1)

{

key = keyscan(); // 調(diào)用鍵盤掃描函數(shù)

switch(key)

{

case 0x11: // 0行0列,啟動鍵

EN = 1; // 打開驅(qū)動輸出

TH0 = -T/256; // 改變T可以改變步進電機轉(zhuǎn)動速度

TL0 = -T%256;

TR0 = 1; // 定時器0開始計數(shù)

break;

case 0x21: // 0行1列,停止鍵

TR0 = 0; // 定時器0停止計數(shù)

EN = 0; // 切斷驅(qū)動輸出

break;

case 0x41: // 0行2列,切換轉(zhuǎn)向按鍵

CWB = ~CWB;

break;

case 0x81: // 0行3列,歸位鍵

RET = 1;

delay();

RET = 0;

break;

default:break;

}

}

}

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉