新聞中心

        51單片機(jī)wifi小車代碼

        作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
        51單片機(jī)wifi小車代碼

        #include

        本文引用地址:http://www.104case.com/article/201611/319843.htm

        #include

        #define uchar unsigned char

        #define uint unsigned int

        uchar Buffer =0; //從串口接收的數(shù)據(jù)

        uint i,j;

        uchar flag=0;

        uchar key_stime_counter,hight_votage=15,timeT_counter;

        bit key_stime_ok;

        sbit control_signal=P3^6;

        sbit StatusLight=P2^2;

        sbit MainLight=P2^3;

        /********************************************************************

        * 名稱 : Delay_1ms()

        * 功能 : 延時(shí)子程序,延時(shí)時(shí)間為 1ms * x

        * 輸入 : x (延時(shí)一毫秒的個(gè)數(shù))

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Delay_1ms(uint i)//1ms延時(shí)

        {

        uchar x,j;

        for(j=0;j

        for(x=0;x<=148;x++);

        }

        void Turn*****tatusLight()

        {

        StatusLight=0;

        }

        /********************************************************************

        * 名稱 : Com_Int()

        * 功能 : 串口中斷子函數(shù)

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Com_Int(void) interrupt 4

        {

        EA = 0;

        if(RI == 1) //當(dāng)硬件接收到一個(gè)數(shù)據(jù)時(shí),RI會(huì)置位

        {

        Buffer = SBUF-48; //這里減去48是因?yàn)閺碾娔X中發(fā)送過(guò)來(lái)的數(shù)據(jù)是ASCII碼。

        RI = 0;

        }

        EA = 1;

        }

        /********************************************************************

        * 名稱 : Com_Init()

        * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中斷

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Com_Init(void)

        {

        TMOD = 0x21;

        PCON = 0x00;

        SCON = 0x50;

        TH1 = 0xFd; //設(shè)置波特率 9600

        TL1 = 0xFd;

        TR1 = 1; //啟動(dòng)定時(shí)器1

        ES = 1; //開(kāi)串口中斷

        EA = 1; //開(kāi)總中斷

        IT0=0;

        EX0=1;

        }

        void TimerInit()

        {

        control_signal=0;

        EA=1; //開(kāi)總中斷

        ET0=1; //定時(shí)器0中斷允許

        TH0 = 0xFF; //定時(shí)器裝初值

        TL0 = 0xA3;

        TR0=0;

        }

        /********************************************************************

        * 名稱 :Moto_Forward()

        * 功能 : 電機(jī)1、2啟動(dòng),都是前進(jìn),整車表現(xiàn)為前進(jìn)。

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Moto_Forward()

        {

        P1= 0x06;

        Delay_1ms(100);

        }

        /********************************************************************

        * 名稱 :Moto_Backward()

        * 功能 : 電機(jī)1、2啟動(dòng),都是后退,整車表現(xiàn)為后退。

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Moto_Backward()

        {

        P1= 0x05;

        Delay_1ms(100);

        }

        /********************************************************************

        * 名稱 :Moto_TurnLeft()

        * 功能 : 電機(jī)1后退,電機(jī)2前進(jìn),整車表現(xiàn)為左轉(zhuǎn)。

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Moto_TurnLeft()

        {

        P1= 0x09;

        Delay_1ms(100);

        }

        /********************************************************************

        * 名稱 :Moto_TurnRight()

        * 功能 : 電機(jī)1前進(jìn),電機(jī)2后退,整車表現(xiàn)為右轉(zhuǎn)。

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Moto_TurnRight()

        {

        P1= 0x0A;

        Delay_1ms(100);

        }

        /********************************************************************

        * 名稱 :Moto_Stop()

        * 功能 : 電機(jī)1停止,電機(jī)2停止,整車表現(xiàn)為停止。

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void Moto_Stop()

        {

        P1= 0x00;

        Delay_1ms(100);

        }

        /********************************************************************

        * 名稱 :SteerEngineTurningUp()

        * 功能 : 舵機(jī)向上轉(zhuǎn)。

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void SteerEngineTurningUp()

        {

        ET0=1;

        TR0=1;

        Delay_1ms(40);

        hight_votage-=1;

        if(hight_votage<5)

        hight_votage=5;

        }

        /********************************************************************

        * 名稱 :SteerEngineTurningDown()

        * 功能 : 舵機(jī)向下轉(zhuǎn)。

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void SteerEngineTurningDown()

        {

        ET0=1;

        TR0=1;

        Delay_1ms(40);

        hight_votage+=1;

        if(hight_votage>20)

        hight_votage=20;

        }

        /********************************************************************

        * 名稱 : SteerEngine()

        * 功能 : 舵機(jī)PWM中斷

        * 輸入 : 無(wú)

        * 輸出 : 無(wú)

        ***********************************************************************/

        void SteerEngine() interrupt 1

        {

        TH0=0xFF;

        TL0=0xA3;

        if (++key_stime_counter>=200)

        {

        key_stime_counter=0;

        control_signal=1;

        key_stime_ok = 1; // 20ms到

        timeT_counter=0;

        }

        if (key_stime_ok&&(++timeT_counter>=hight_votage))

        {

        key_stime_ok=0;

        timeT_counter=0;

        control_signal=0; // hight_votage*0.1ms到

        }

        }

        void main()

        {

        MainLight=0;

        Delay_1ms(200);

        Com_Init();//串口初始化

        TimerInit();//舵機(jī)初始化

        while(1)

        {

        switch (Buffer) //根據(jù)鍵值不同,執(zhí)行不同的內(nèi)容

        {

        case 0:

        Moto_Stop();

        break;

        case 1:

        Moto_Forward();

        break;

        case 2:

        Moto_Backward();

        break;

        case 3:

        Moto_TurnLeft();

        break;

        case 4:

        Moto_TurnRight();

        break;

        case 5:

        SteerEngineTurningUp();

        break;

        case 6:

        SteerEngineTurningDown();

        break;

        case 8:

        MainLight=1;

        break;

        case 9:

        MainLight=0;

        break;

        default : TR0=0;TR2=0;

        break;

        }

        }

        }

        //紅外壁障

        void extern_int0(void) interrupt 0 using 0

        {

        EX0=0;

        Moto_TurnLeft();

        Buffer=0;

        EX0=1;

        IE0=0;

        }



        關(guān)鍵詞: 51單片機(jī)wifi小車代

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 浦城县| 丰城市| 临澧县| 东台市| 湄潭县| 甘洛县| 广灵县| 兴城市| 津市市| 天等县| 鄯善县| 永新县| 云阳县| 钟山县| 霍林郭勒市| 历史| 禹城市| 湘潭市| 沙田区| 华阴市| 乌恰县| 色达县| 武冈市| 绥芬河市| 泰兴市| 山阴县| 临沧市| 遂川县| 永嘉县| 永济市| 安乡县| 新竹县| 万安县| 军事| 商河县| 工布江达县| 瑞昌市| 江陵县| 乌拉特前旗| 高州市| 岑巩县|