新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ATMEGA32單片機(jī)控制步進(jìn)電機(jī)程序

ATMEGA32單片機(jī)控制步進(jìn)電機(jī)程序

作者: 時(shí)間:2013-12-12 來源:網(wǎng)絡(luò) 收藏

/**************************************************************
程序是調(diào)試通過的,可以直接使用,若單片機(jī)不一樣,

只需要修改IO接口部分就可以正常工作:開發(fā)軟件 ICC AVR ************************************************************/



#include stdio.h>
#include iom16v.h>


#define uchar unsigned char
#define uint unsigned int

//#define M2 PD6 //M1、M2: 00 表示工作在整步方式, 10 為半步方式,
//#define M1 PD5 // 01 為1/ 4 細(xì)分方式, 11 為1/ 8 細(xì)分方式;
#define CK1 PA2
#define CW_CWW PA1
#define ENABLE_L PA0


/***********************************************************
串口輸出顯示
************************************************************/
void usart_putchar(uchar data)
{
if(data=='')
{
usart_putchar('');
}
while(!(UCSRA (1UDRE)));
UDR=data;
}
/************************************************************
通過串口發(fā)送控制命令:安字母K啟動(dòng)
************************************************************/
uchar usart_getchar(void)
{
while(!(UCSRA (1RXC)));
return UDR;
}
/**************************************************************

延時(shí)函數(shù)
/**************************************************************
void delay(uint i)//延時(shí)函數(shù)
{
uint j,k;
for(j=0;ji;j++)
for(k=0;k100;k++);
}
/**************************************************************
串口初始化
*********************************************************/

void uart_init(void) //UART初始化
{ //DDRD = 0x02;
DDRD = 0xaf;
PORTD = 0xff;

UCSRA = 0x02; /*無倍速*/
UCSRB = 0x18; /*允許接收和發(fā)送*/
UCSRC = 0x06; /*8位數(shù)據(jù),1位停止位,無校驗(yàn)*/
UBRRH = 0x00;
UBRRL = 12; /*9600*/

}



int main(void)
{
uchar m;
uint n;

DDRA = 0x7;
PORTA |= ( 1ENABLE_L );

/************************************************************
若硬件控制,可以屏蔽下面2行
************************************************************/
//PORTD = ~( 1M2);
//PORTD |= ( 1M1 );

//PORTA = ~( 1CW_CWW);//反轉(zhuǎn)
PORTA |= ( 1CW_CWW );//正轉(zhuǎn)
uart_init( );


while(1)
{
//m = usart_getchar();
// if( m == 'k' )
//{
PORTA = ~( 1ENABLE_L );
for(n=0;n200;n++)
{
PORTA |= (1CK1);
delay(1);
PORTA = ~(1CK1);
delay(1);
}
PORTA |= ( 1ENABLE_L );

//m=0;
//usart_putchar('o');
//usart_putchar('k');
//}
}
}



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉