|
*本文及代碼參閱彭偉《單片機C語言程序設(shè)計實訓(xùn)100例》
一,打開文件(可以隨文下載放置在文檔中打開)。(如下圖1所示)
1.png (774.78 KB, 下載次數(shù): 73)
下載附件
2020-7-6 12:47 上傳
圖1
二,調(diào)整原理圖大小,適合可視,另存工程文件。(如下圖2,3,4所示)
2.png (236.05 KB, 下載次數(shù): 62)
下載附件
2020-7-6 12:47 上傳
圖2
3.png (268.29 KB, 下載次數(shù): 61)
下載附件
2020-7-6 12:47 上傳
圖3
4.png (331.56 KB, 下載次數(shù): 63)
下載附件
2020-7-6 12:47 上傳
圖4
三,點擊Source Code標(biāo)簽。(如下圖5所示)
5.png (157.34 KB, 下載次數(shù): 77)
下載附件
2020-7-6 12:47 上傳
圖5
四,編輯main.c Proteus8.9 VSM Studio WINAVR編譯器仿真ATmega16系列a18_正反轉(zhuǎn)可控步進(jìn)電機 (如下圖6所示)
6.png (168.12 KB, 下載次數(shù): 58)
下載附件
2020-7-6 12:47 上傳
圖6
五,Main.c 代碼:
//-----------------------------------------------------------------
// 名稱: 正反轉(zhuǎn)可控的步進(jìn)電機
//-----------------------------------------------------------------
// 說明: 本例運行過程,按下K1電機正轉(zhuǎn)3圈,按下K2反轉(zhuǎn)3圈,
// 按下K3時停止.在進(jìn)行相應(yīng)操作時,對應(yīng)LED將被點亮.
//
//-----------------------------------------------------------------
#include "myfunc01.h"
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
int main()
{
INT8U r= 3;
DDRB= 0xFF; PORTB= FFW[0];
DDRC= 0xFF; PORTC= 0xFF;
DDRD= 0x00; PORTD= 0xFF;
while(1) {
if(K1_DOWN()) {
while(K1_DOWN());
PORTC= 0xFE;
STEP_MOTOR_RUN(0, r);
}
if(K2_DOWN()) {
while(K2_DOWN());
PORTC= 0xFD;
STEP_MOTOR_RUN(1, r);
}
PORTC= 0xFB;
}
}
Myfunc01.h
//******************************************************************************************
#ifndef _MYFUNC01_H_
#define _MYFUNC01_H_
//#define F_CPU 2000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define INT8U unsigned char
#define INT16U unsigned int
//本例四相步進(jìn)電機工作于八拍方式
//正轉(zhuǎn)勵磁序列為A->AB->B->BC->C->CD->D->DA
static INT8U FFW[]= { 0x01, 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x09 };
//反轉(zhuǎn)勵磁序列為A->AD->D->CD->C->BC->B->AB
static INT8U REV[]= { 0x01, 0x09, 0x08, 0x0C, 0x04, 0x06, 0x02, 0x03 };
//按鍵定義
#define K1_DOWN() ((PIND & _BV(PD0))== 0x00)
#define K2_DOWN() ((PIND & _BV(PD1))== 0x00)
#define KX_DOWN() (PIND != 0xFF)
void STEP_MOTOR_RUN(INT8U Direction,INT8U n);
#endif
六,點擊構(gòu)建工程按鈕,編譯工程。(如下圖7所示)
7.png (199.25 KB, 下載次數(shù): 79)
下載附件
2020-7-6 12:47 上傳
圖7
七,點擊窗口左下方仿真按鈕,可見虛擬步進(jìn)電機運行。 (如下圖8,9,10所示)
8.png (342.02 KB, 下載次數(shù): 61)
下載附件
2020-7-6 12:47 上傳
圖8
9.png (343.02 KB, 下載次數(shù): 79)
下載附件
2020-7-6 12:47 上傳
圖9
10.png (334.7 KB, 下載次數(shù): 84)
下載附件
2020-7-6 12:47 上傳
圖10
八,選擇release,點擊構(gòu)建工程按鈕,編譯工程生成Hex文件。(如下圖11所示)
11.png (198.85 KB, 下載次數(shù): 81)
下載附件
2020-7-6 12:47 上傳
圖11
附件Proteus8.9 VSM Studio WINAVR編譯器仿真ATmega16系列a18_正反轉(zhuǎn)可控步進(jìn)電機在已安裝Proteus8.9的計算機文件夾中打開即可
需要進(jìn)一步了解,請加入QQ群:976235464
|
評分
-
查看全部評分
|