新聞中心

        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');
        //}
        }
        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 彭泽县| 剑河县| 鲁山县| 芮城县| 靖远县| 石棉县| 合水县| 平湖市| 上思县| 延寿县| 江油市| 永昌县| 崇信县| 鹤庆县| 海口市| 鱼台县| 德清县| 彰武县| 马公市| 克拉玛依市| 莒南县| 锡林郭勒盟| 维西| 洪江市| 常山县| 囊谦县| 高陵县| 讷河市| 望城县| 油尖旺区| 虹口区| 仁化县| 涞源县| 普宁市| 拉孜县| 长岛县| 泰安市| 罗定市| 巴青县| 称多县| 府谷县|