欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

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

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

單片機(jī)超聲波1602顯示程序,調(diào)速出了問(wèn)題,求大佬解決

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


這段程序是超聲波1602顯示+按鍵調(diào)速的,但一起執(zhí)行下面的調(diào)速就沒(méi)有用。如果把超聲波顯示給取消,調(diào)速就有用了。小白看了半天沒(méi)調(diào)出來(lái),希望有大佬可以幫下忙。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:781863 發(fā)表于 2020-7-2 23:45 | 只看該作者
求解決:在顯示距離同時(shí)可以按鍵調(diào)整小車(chē)速度
完整程序如下:
#include<reg52.h>
#include<1602.h>
#include<pwm.h>

sfr T2MOD=0XC9;


sbit Trig = P2^0;
sbit Echo = P2^1;


/*void UsartConfiguration();       
unsigned char i;                                 */

sbit IN1 = P3^7;                                                                                                                       
sbit IN2 = P3^6;
sbit IN3 = P3^5;
sbit IN4 = P3^4;
/************函數(shù)聲明**************/


void forword();
void back();
void right();
void left();
void stop();

unsigned char BiaoTi[]=" distance:   ";
unsigned char code ShuZiBiao[15] = {'0','1','2','3','4','5','6','7','8','9','.','C','M'};
unsigned char XianShi[7]    ={ 0,0,0,0,0,0,0};
//2、設(shè)定發(fā)送時(shí)間
void Delay10us()
{
    T2MOD = 0;                //---- --00  初始化模式寄存器  默認(rèn)向上計(jì)數(shù)
        T2CON = 0;                //0000 0000  初始化控制寄存器 一個(gè)中斷源,16位自動(dòng)重裝模式
        TL2 = (65536 - 10) / 256;                //設(shè)置定時(shí)初值
        TH2 = (65536 - 10) % 256;                //設(shè)置定時(shí)初值
        RCAP2L = (65536 - 10) / 256;                //設(shè)置定時(shí)重載值
        RCAP2H = (65536 - 10) % 256;                //設(shè)置定時(shí)重載值
        TR2 = 1;                //定時(shí)器2開(kāi)始計(jì)時(shí)
    IE = 0xA0;                //打開(kāi)全局中斷,定時(shí)器2中斷
        while(!TF2);
        TF2 = 0;

/* TMOD |= 0x01;
  TH0 = 0xFF;
  TL0 = 0xF6;
  TR0 = 1;
  while(!TF0);
  TF0 = 0;          */
}

void Rstart()  //啟動(dòng)超聲波模塊,初始化
{
  Trig=0;
  Trig=1;
  Delay10us();
  Trig=0;
}
//3、獲取時(shí)間和距離
int gettime()//獲取時(shí)間
{
unsigned int time = 0;
time = TH2<<8 | TL2;  //TH0*256+TL0
return time;
}
int Getdis(unsigned int time)  //獲取距離
{
unsigned int distance;//整型的原因是方便后續(xù)LCD1602屏顯示
distance = (int)time * 0.085;
TH2=0;
TL2=0;//清空計(jì)時(shí)器·
return distance;
}
void star()
{
TH2 = 0;
TL2 = 0;
TR2 = 1;
}
void end()
{
TR2 = 0;
}
void GetOnce()  //獲取一次超聲波測(cè)距模塊的距離
{
Rstart();
while(!Echo);//當(dāng)Echo為零時(shí)等待
star();
while(Echo);//當(dāng)Echo為1計(jì)數(shù)并等待
end();
}
void delay()
{
int i;
int j;
for(i=0;i<50;i++)
  for(j = 0;j<1000;j++);
}

void main()
{
   unsigned int time = 0;
   unsigned int i,j;
   unsigned int dis;

    timer0_init();
    delayxms(5);
/* UsartConfiguration();          //串口初始化           */

while(1)
{

  GetOnce();
  time = gettime();
  dis = Getdis(time);//單位毫米,后面會(huì)用厘米顯示
  XianShi[0]=dis/1000;//厘米的百位
  XianShi[1]=(dis/100)%10;//厘米的十位
  XianShi[2]=(dis/10)%10;//厘米的個(gè)位
  XianShi[3]=10;//顯示小數(shù)點(diǎn)
  XianShi[4]=dis%10;//厘米的小數(shù)點(diǎn)后一位
  XianShi[5]=11;//顯示‘C’
  XianShi[6]=12;//顯示'M'
  Lcd1602_init();   //初始化函數(shù)
  Lcd1602_WriteCom(0x80);  //0x80是第一行的第一個(gè)字符的地址
    for (i=0;i<11;i++)
    {
     Lcd1602_WriteData(BiaoTi[i]);
    }
     Lcd1602_WriteCom(0x80+0x40);   //0xc0是第二行的第一個(gè)字符的地址
    for (j=0;j<7;j++)
    {
     Lcd1602_WriteData(ShuZiBiao[XianShi[j]]);
    }
                   
  Motor_add_left();
  Motor_dec_left();
  Motor_add_right();
  Motor_dec_right();

  forword();

  /* if(dis < 150)
        {
        back();
        delay();
        right();
  
        }                                                                            
    else
    {forword();}                            */
              //           避障



  /* i = SBUF;
   RI = 0;
   if(i == 'q')
   {
   forword();
   }
   if(i == 'h')
   {
   back();
   }
    if(i == 'z')
   {
   left();
   }
   if(i == 'y')
   {
   right();
   }
   if(i == 't')
   {
   stop();
   }  */
    }                 


}
void forword()  //前進(jìn)函數(shù)
{

    //第一路電機(jī) 正轉(zhuǎn)
    IN1 = 0;
    IN2 = 1;

    //第二路電機(jī) 正轉(zhuǎn)
    IN3 = 0;
    IN4 = 1;
}

void back() //后退
{


    //第一路電機(jī)  反轉(zhuǎn)
    IN1 = 1;
    IN2 = 0;

    //第二路電機(jī)  反轉(zhuǎn)
    IN3 = 1;
    IN4 = 0;
}

void right()  //右轉(zhuǎn)
{


    // 第一路正轉(zhuǎn)
    IN1 = 0;
    IN2 = 1;
    // 第二路反轉(zhuǎn)
    IN3 = 0;
    IN4 = 0;

}

void left() //左拐函數(shù)
{
    IN1 = 1;
    IN2 = 0;
    IN3 = 0;
    IN4 = 1;

}

void stop()
{
    IN1 = 0;
    IN2 = 0;
    IN3 = 0;
    IN4 = 0;
}
  /***********定時(shí)器0初始化***********/

void timer0_init()

{

TMOD=0x01; //定時(shí)器0工作于方式1

TH0=(65536-10)/256;

TL0=(65536-10)%256;

EA = 1;

ET0=1;

TR0=1;




}


/**************定時(shí)0中斷處理******************/

void timer0_int() interrupt 1

{
TH0=(65536-10)/256;
TL0=(65536-10)%256;
  
TIME++;
m1 = countA;
m2 = countB;

if(TIME < m1) //count為占空比
{
  ENA = 1; //輸出高電平
}

else
{
  ENA = 0;       
  }

if(TIME < m2)
{
  ENB = 1;
}
else
{
ENB = 0;
}

if(TIME>=100)
{
TIME=0;
}


}
回復(fù)

使用道具 舉報(bào)

板凳
ID:739545 發(fā)表于 2020-7-3 09:13 | 只看該作者
哪就是超聲波顯示進(jìn)入死循環(huán)了,可以聯(lián)調(diào)的話(huà)加入聯(lián)調(diào)機(jī)制,查看一下哪一步走不下去了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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