找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1534|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

接線如圖所示,程序如下,求大佬指點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
/*********引腳定義**********/
#include "reg51.h"
typedef unsigned int uint;
typedef unsigned char uchar;

#define Duty_cycle   35                      //占空比
#define Cycle                  100                                //PWM周期

sbit Sensor_1 = P1^1;                                        //紅外檢測(cè)
sbit Sensor_2 = P1^2;

sbit Motor_1H = P0^0;                                        //電機(jī)控制
sbit Motor_1L = P0^1;
sbit Motor_2H = P0^2;
sbit Motor_2L = P0^3;
sbit Motor_3H =        P0^4;
sbit Motor_3L =        P0^5;
sbit Motor_4H =        P0^6;
sbit Motor_4L = P0^7;

sbit En_pwm1 = P1^4;                                        //使能信號(hào) (PWM)
sbit En_pwm2 = P1^5;
sbit En_pwm3 = P1^6;
sbit En_pwm4 = P1^7;

uchar timer1;                                                        //定義變量

/*********主函數(shù)**********/
void main ()
{
         Time1Config();                                                //定時(shí)器初始化

        while(1)
        {
                if (Sensor_1 == 1 && Sensor_2 == 1)                        //狀態(tài):軌跡居中
                        Go_Straighe();                                                        //方向:前進(jìn)
                else if (Sensor_1 == 1 && Sensor_2 == 0)          //狀態(tài):偏左
                        Turn_Righr();                                                        //方向:右轉(zhuǎn)
                else if (Sensor_1 == 0 && Sensor_2 == 1)        //狀態(tài):偏右
                        Turn_Left();                                                        //方向:左轉(zhuǎn)
                else if (Sensor_1 == 0 && Sensor_2 == 0)        //狀態(tài):偏離軌跡
                        Stop();                                                                        //方向:停止
                else Go_Straight();                                                        //其他情況:前進(jìn)       
        }
}

/**********設(shè)置定時(shí)器**********/
void Time1Config()
{
        TMOD = 0x10;                                                                        //設(shè)置定時(shí)器計(jì)數(shù)器T1工作在模式1
        /**********定時(shí)器賦初值*********/
        TH1 = 0xFE;
        TL1 = 0x0c;

        ET1 = 1;                                                                                //開(kāi)啟定時(shí)器1中斷
        EA = 1;
        TR1 = 1;                                                                                //開(kāi)啟定時(shí)器
}

/**********定時(shí)器1的中斷函數(shù)**********/
void Time1(void) interrupt 3                                                 //3 為定時(shí)器的中斷信號(hào)
{
        Time1++;
        if (Timer1 > Cycre)                                                                //PWM周期
        {
                Time1 = 0;
        }
        if (Timer1 < Duty_cycle)                                                   //改變Duty_cycle 這個(gè)值,可以改變直流電機(jī)的速度
        {
                En_pwm1 = 1;
                En_pwm2 = 1;
                En_pwm3 = 1;
                En_pwm4 = 1;
        }
        else
        {
                En_pwm1 = 0;
                En_pwm2 = 0;
                En_pwm3 = 0;
                En_pwm4 = 0;
        }
        TH1 = 0xFE;                                                                                //重新賦值
        TL1 = 0x0C;
}

IMG_20180523_200006.jpg (3.75 MB, 下載次數(shù): 37)

IMG_20180523_200006.jpg

IMG_20180523_200138.jpg (3.9 MB, 下載次數(shù): 39)

IMG_20180523_200138.jpg

IMG_20180523_200144.jpg (3.99 MB, 下載次數(shù): 45)

IMG_20180523_200144.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表