久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機履帶車程序求助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:231793 發(fā)表于 2020-7-30 16:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人單片機新手,做了一個履帶車,必須七個遙控功能,前進(jìn),后退,加速,減速,左轉(zhuǎn),右轉(zhuǎn)還有停車。使用PT2272M6最多六個通道,設(shè)想在pt2262遙控的前進(jìn)鍵用軟件(51單片機)實現(xiàn)按一下前進(jìn),再按一下停車,按說很簡單的程序我就是弄不好,哪位專業(yè)師傅給幫我弄一下,不勝感謝。下面是源程序,K1是前進(jìn)鍵,K5是停止鍵。

單片機源程序如下:
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

//L298N????
sbit ena = P0^0;
sbit in1 = P0^1;
sbit in2 = P0^2;
sbit in3 = P0^3;
sbit in4 = P0^4;
sbit enb = P0^5;

//??
sbit key1 = P3^3;    //????
sbit key2 = P3^4;         //????
sbit key3 = P3^6;         //????
sbit key4 = P3^7;
sbit key5 = P2^0;
sbit key6 = P2^1;
sbit key7 = P2^2;
sbit key8 = P2^3;
sbit relay = P2^4;//????

u16 MA = 0,MB = 0;      //pwm???

u16 SpeedA = 20; //50%???
u16 SpeedB = 20;

u8 flag;                 //??,1????,0????
         //???????sbuf


void delay(u16 z);        //??????

//??
void forward()
{
flag = 1;                 //??????
in1=1;                    //l298n??
in2=0;  
in3=1;  
in4=0;
}


//??
void fallback()
{
flag = 0;                //??????
in1=0;  
in2=1;  
in3=0;  
in4=1;
}


//??
void quick()
{
SpeedA += 1;  //???1
if(SpeedA >= 40)        //??40
{
SpeedA = 40;
}
SpeedB += 1;
if(SpeedB >= 40)
{
SpeedB = 40;
}
}


//??
void slow()
{
SpeedA -= 1;        //???1
if(SpeedA <= 5)//??5
{
SpeedA = 5;
}
SpeedB -= 1;
if(SpeedB <= 5)
{
SpeedB = 5;
}
}


//??
void move_left()   

{
in1=1;  
in2=0;  
in3=0;  
in4=0;
}





void move_right()

{
in1=0;  
in2=0;  
in3=1;  
in4=0;
}



//??
void stop()
{
in1=0;  
in2=0;  
in3=0;  
in4=0;
}

void delay(u16 z)
{  
u16 x,y;  
for(x=z;x>0;x--)   
for(y=125;y>0;y--);
}   




void main()
{   
//????? ???T0
TMOD = 0x21;  //T0?????????,T1?????????
//PCON = 0x00;  //???????,???
//SCON = 0x50;                 //???????,???????,????
        TH1 = 0xFD;                   //????
        TL1 = 0xFD;                   //????
//TR1 = 1;                          //?????T1


TH0 = 0xF4;                    //????
TL0 = 0x48;          //????
TR0 = 1; //?????T0


//ES = 1;//??????
//PS = 1;                         //??????
//PT0 = 1;                 //???0????
ET0 = 1;//?????T0??
EA = 1;//?????

//??????
while(1)
{
if(key1 == 0)
{
delay(10);
if(key1 == 0)
{
forward();

}
while(key1 == 0);
}
if(key2 == 0)
{
delay(10);
if(key2 == 0)
{
fallback();

}
while(key2 == 0);
}
if(key3 == 0)
{
delay(10);
if(key3 == 0)
{
quick();

}
while(key3 == 0);
}
if(key4 == 0)
{
delay(10);
if(key4 == 0)
{
slow();

}
while(key4 == 0);
}
if(key5 == 0)
{
delay(10);
if(key5 == 0)
{
stop();
}
while(key5 == 0);
}
if(key6 == 0)
{
delay(10);
if(key6 == 0)
{
move_left();
}
while(key6 == 0);
}
if(key7 == 0)
{
delay(10);
if(key7 == 0)
{
move_right();
}
while(key7 == 0);
}
if(key8 == 0)
{
delay(10);
if(key8 == 0)
{
relay=~relay;
}
while(!key8);
}
}
}


void time0_int() interrupt 1   //T = 3ms * 40 = 120ms
{  
TR0 = 0;      
TH0 = 0xF4;
TL0 = 0x48; //3000;  3ms
MA++;         
if(MA < SpeedA)  
{   
ena = 1;  
}  
else
  ena = 0;  
if(MA == 40)
{   
  MA = 0;  
}  

MB++;         
if(MB < SpeedB)  
{   
enb = 1;  
}  
else
  enb = 0;  
if(MB == 40)
{   
  MB = 0;  
}  
TR0 = 1;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:808485 發(fā)表于 2020-7-30 17:34 | 只看該作者
我假設(shè)你車輛控制程序都正常了,只是這個按鍵邏輯搞不定,給出如下建議:
設(shè)計檔位概念,共 5 檔:前進(jìn)2檔,前進(jìn)1檔,停車0檔,后退-1檔,后退-2檔
key1 升檔, key2 降檔,key3/key4空閑,key5停車保留
可以通過連續(xù)按 key1 從-2檔一直升到+2檔,key2同理
代碼如下:

while(1)
{
        static char speed=0;
        if(key1 == 0)
        {
                delay(10);
                if(key1 == 0)
                {
                        if(++speed > 2)speed = 2;
                }
                while(key1 == 0);
        }
        if(key2 == 0)
        {
                delay(10);
                if(key2 == 0)
                {
                        if(--speed < -2)speed = -2;
                }
                while(key2 == 0);
        }
        if(key3 == 0)
        {
                delay(10);
                if(key3 == 0)
                {
                }
                while(key3 == 0);
        }
        if(key4 == 0)
        {
                delay(10);
                if(key4 == 0)
                {
                }
                while(key4 == 0);
        }
        if(key5 == 0)
        {
                delay(10);
                if(key5 == 0)
                {
                        stop();
                }
                while(key5 == 0);
        }
        if(key6 == 0)
        {
                delay(10);
                if(key6 == 0)
                {
                        move_left();
                }
                while(key6 == 0);
        }
        if(key7 == 0)
        {
                delay(10);
                if(key7 == 0)
                {
                        move_right();
                }
                while(key7 == 0);
        }
        if(key8 == 0)
        {
                delay(10);
                if(key8 == 0)
                {
                        relay=~relay;
                }
                while(!key8);
        }
        //根據(jù)速度代碼輸出
        switch( speed )
        {
                case 2:
                //高速前進(jìn)
                        quick();
                break;
                case 1:
                //低速前進(jìn)
                        forward();
                        slow();
                break;
                case 0:
                //停車
                        stop();
                break;
                case -1:
                //低速后退
                        fallback();
                        slow();
                break;
                case -2:
                //高速后退
                        quick();
                break;
                default:
                        speed=0;
                break;
        }
}
回復(fù)

使用道具 舉報

板凳
ID:231793 發(fā)表于 2020-7-30 20:33 | 只看該作者
gbchang 發(fā)表于 2020-7-30 17:34
我假設(shè)你車輛控制程序都正常了,只是這個按鍵邏輯搞不定,給出如下建議:
設(shè)計檔位概念,共 5 檔:前進(jìn)2檔 ...

謝謝這么快就回復(fù)了,你的這個思路和程序很好,我馬上調(diào)試程序,再次謝謝!謝謝!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久久毛片 | 久久久久亚洲精品 | 亚洲麻豆 | 日韩一区二区三区视频在线播放 | 免费高潮视频95在线观看网站 | 日韩精品一二三 | 国产高清精品一区二区三区 | 久久精品青青大伊人av | 国产精品精品视频一区二区三区 | 国产专区视频 | 国产成人在线一区二区 | 久久中文字幕在线 | www.国产精品 | 日韩在线中文字幕 | 国产福利91精品 | 91视频在线网站 | xxxxx黄色片| 久久99久久 | 久久久成人一区二区免费影院 | 少妇黄色| 在线中文字幕国产 | 99精品视频一区二区三区 | 福利视频二区 | 欧美freesex黑人又粗又大 | 亚洲精品视频在线观看视频 | 在线色网 | 黄色精品 | 一级一级毛片免费看 | 久久精品国产一区二区电影 | 精品国产精品国产偷麻豆 | 在线视频国产一区 | 伊伊综合网 | 亚洲最色视频 | 亚洲精彩视频 | 亚洲精品一区二区三区在线 | 999免费观看视频 | 一区二区三区国产好 | 偷拍第一页 | 免费在线观看成年人视频 | 韩国精品在线 | 亚洲欧美精品在线观看 |