ATMEGA32单片机控制步进电机程序
/**************************************************************
程序是调试通过的,可以直接使用,若单片机不一样,
只需要修改IO接口部分就可以正常工作:开发软件 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 细分方式, 11 为1/ 8 细分方式;
#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;
}
/************************************************************
通过串口发送控制命令:安字母K启动
************************************************************/
uchar usart_getchar(void)
{
while(!(UCSRA (1RXC)));
return UDR;
}
/**************************************************************
延时函数
/**************************************************************
void delay(uint i)//延时函数
{
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; /*允许接收和发送*/
UCSRC = 0x06; /*8位数据,1位停止位,无校验*/
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);//反转
PORTA |= ( 1CW_CWW );//正转
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');
//}
}
}
- ATmega32外部中断嵌套(11-10)
- 基于OPenWrt开源系统的无线视频监控智能车设计(10-29)
- OTG技术在存储测试中的应用(09-07)
- 家用机器人设计方案汇总,包括清扫、保健、灭火等方面(05-11)
- 基于ATmega32的便携式车门压力测试仪设计(04-20)
- 一种基于双MCU的安全光幕设计方案(04-08)