单片机
返回首页

ATMEGA32单片机控制步进电机程序

2013-12-12 来源:eefocus

/**************************************************************
          程序是调试通过的,可以直接使用,若单片机不一样,

          只需要修改IO接口部分就可以正常工作:开发软件 ICC AVR ************************************************************/



#include
#include


#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 & (1<    UDR=data;
}
/************************************************************
                             通过串口发送控制命令:安字母K启动
************************************************************/
uchar usart_getchar(void)
{
    while(!(UCSRA & (1<    return UDR;
}
/**************************************************************

                             延时函数
/**************************************************************
void delay(uint i)//延时函数
{
uint j,k;
for(j=0;jfor(k=0;k<100;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 |= ( 1<
/************************************************************
                             若硬件控制,可以屏蔽下面2行
************************************************************/
//PORTD &= ~( 1<//PORTD |= ( 1<
   //PORTA &= ~( 1<    PORTA |= ( 1<uart_init( );
  

while(1)
{
     //m = usart_getchar();
    // if( m == 'k' )
   //{  
      PORTA &= ~( 1<      for(n=0;n<200;n++)
    {
             PORTA |= (1<          delay(1);
          PORTA &= ~(1<          delay(1);
    }
    PORTA |= ( 1<  
    //m=0;
    //usart_putchar('o');
    //usart_putchar('k');
   //}
}
}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章