• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > ATMEGA32單片機控制步進電機程序

    ATMEGA32單片機控制步進電機程序

    作者: 時間:2013-12-12 來源:網絡 收藏

    /**************************************************************
    程序是調試通過的,可以直接使用,若單片機不一樣,

    只需要修改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');
    //}
    }
    }



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 监利县| 绩溪县| 张北县| 永昌县| 锦屏县| 集贤县| 东兰县| 织金县| 承德市| 尼勒克县| 靖州| 青海省| 五大连池市| 张北县| 咸阳市| 巫溪县| 钟山县| 宣武区| 进贤县| 祁东县| 绥阳县| 乳源| 洛浦县| 阿克| 吉木乃县| 营口市| 河北区| 四子王旗| 米林县| 神木县| 龙州县| 松原市| 黄陵县| 全州县| 房产| 辽宁省| 安丘市| 合山市| 蒙阴县| 渑池县| 崇义县|