新聞中心

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 嘉黎县| 嫩江县| 施秉县| 化隆| 山东省| 临澧县| 兴隆县| 玉林市| 正蓝旗| 桓台县| 梅州市| 八宿县| 湾仔区| 富川| 沈阳市| 分宜县| 丰城市| 利辛县| 庆云县| 铜陵市| 虎林市| 台安县| 竹北市| 福贡县| 揭阳市| 海安县| 西丰县| 林芝县| 连城县| 青浦区| 弥渡县| 瑞金市| 黎平县| 高邮市| 松潘县| 长宁区| 新宁县| 神木县| 东光县| 清徐县| 定南县|