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

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

QQ登錄

只需一步,快速開始

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

[求助]紅外尋線智能小車

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:32592 發(fā)表于 2011-10-20 20:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

#include<at89x51.h>//此為紅外線尋線小車程序 單片機(jī)為stc89c51rc 發(fā)射頻率為38.5mKz 電機(jī)驅(qū)動(dòng)芯片為L(zhǎng)298 

/
void delay_nus(unsigned int i)  //延時(shí):i>=12 ,i的最小延時(shí)單12 us
{
  i=i/10;
  while(--i);
}  

void delay_nms(unsigned int n)  //延時(shí)n ms
{
  n=n+1;
  while(--n) 
  delay_nus(900);         //延時(shí) 1ms,同時(shí)進(jìn)行補(bǔ)償
}

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

/************管腳定義********************/
 extern int abs(int val); //聲明abs函數(shù)

sbit ENA = P3^6; //左輪驅(qū)動(dòng)使能
sbit IN1 = P3^2; //左輪黑線
sbit IN2 = P3^3; //左輪紅線
sbit IN3 = P3^4; //右輪紅線
sbit IN4 = P3^5; //右輪黑線
sbit ENB = P3^7; //右輪驅(qū)動(dòng)使能
sbit L_scan=P0^2;    //傳感器掃描管腳
sbit R_scan=P0^3;
sbit L_led=P0^0;     //LED控制管腳
sbit R_led=P0^1;
 

//=============PWM================
#define PWM_COUST 100 //PWM細(xì)分等份
unsigned int MOTO_speed1; //左邊電機(jī)轉(zhuǎn)速
unsigned int MOTO_speed2; //右邊電機(jī)轉(zhuǎn)速
unsigned int PWM_abs1; //左邊電機(jī)取絕對(duì)值后占空比
unsigned int PWM_abs2; //左邊電機(jī)取絕對(duì)值后占空比
//uchar PWM_var1=20; //左邊電機(jī)直走速度 (不同的電機(jī),此參數(shù)不同)
//uchar PWM_var2=20; //右邊電機(jī)直走速度
unsigned int PWMAnd = 0; //PWM自增變量
/******************************************************************
名稱:motor(char speed1,char speed2);
功能:同時(shí)調(diào)節(jié)電機(jī)的轉(zhuǎn)速
參數(shù):speed1:電機(jī)1的PWM值;speed2:電機(jī)2的PWM值
speed>0.正轉(zhuǎn);speed<0.反轉(zhuǎn)(-100~100)
調(diào)用:extern int abs(int val); 取絕對(duì)值
返回:
******************************************************************/
void motor(unsigned int speed1,unsigned int speed2)
{
MOTO_speed1=speed1;
MOTO_speed2=speed2;
//==============左邊電機(jī)=============
if(speed1==0)
{
IN1 =0;IN2 =0;
}
if (speed1>0)
{
IN1 =0;IN2 =1;//正轉(zhuǎn)
}
else if (speed1<0)
{
IN1 =1;IN2 =0;//反轉(zhuǎn)
}
//==============右邊電機(jī)=============
if (speed2==0)
{
IN3 =0;IN4 =0;//不轉(zhuǎn)
}
if (speed2>0)
{
IN3 =1;IN4 =0;//正轉(zhuǎn)
}
else if (speed2<0)
{
IN3 =0;IN4 =1;//反轉(zhuǎn)
}
}
/******************************************************************
名稱:motor_PWM();
功能:PWM占空比輸出
參數(shù):無
調(diào)用:無
返回:無
******************************************************************/
void motor_PWM ()
{
PWM_abs1=abs(MOTO_speed1);
PWM_abs2=abs(MOTO_speed2);
if (PWM_abs1>PWMAnd) ENA=1; //左邊電機(jī)占空比輸出
else ENA=0;
if (PWM_abs2>PWMAnd) ENB=1; //右邊電機(jī)占空比輸出
else ENB=0;
if (PWMAnd>=PWM_COUST) PWMAnd=0; //PWM計(jì)數(shù)清零
else PWMAnd+=1;
}
/******************************************************************
名稱:void TIME_Init ();

功能:定時(shí)器初始化
指令:
調(diào)用:無
返回:無
******************************************************************/
void TIME_Init ()
{
//=========定時(shí)器T0初始化 PWM==================
EA=1;
// TCON = 0x10;
TMOD = 0x01;
TH0 = 0xff;
TL0 = 0x9B;
// TL0 = 0x47;
ET0 = 1; //定時(shí)器1中斷開
TR0 = 1; //PWM定時(shí)器開,PWM周期為10ms
}
/******************************************************************
名稱:void PWM_Time0 () interrupt 0
功能:T2中斷,PWM控制
參數(shù):
調(diào)用:motor_PWM();//PWM占空比輸出
返回:
******************************************************************/
void PWM_Time0 () interrupt 1
{
TR0 = 0;
//TF2 = 0;
ET0 = 0; //定時(shí)器0中斷禁止
TH0 = 0xff;
TL0 = 0x9B;
motor_PWM();//PWM占空比輸出
ET0 = 1; //定時(shí)中斷0開啟
TR0 = 1;
}


//掃描傳感器狀態(tài)
unsigned char scan(void)
{
    unsigned char i,result,temp1,temp2;
    for(i=38;i>0;i--)    //LED發(fā)送38次脈沖
    {
        L_led=0;
        delay_nus(12);
        L_led=1;
        delay_nus(12);
    }
    temp1=L_scan;    //記錄傳感器狀態(tài)
    for(i=38;i>0;i--) //另一側(cè)發(fā)脈沖
    {
        R_led=0;
        delay_nus(12);
        R_led=1;
        delay_nus(12);
    }
    temp2=R_scan;    //記錄傳感器狀態(tài)
    if(temp2==1&&temp1==1)  //兩側(cè)都掃描到黑邊
        result=1;
    if(temp1==0&&temp2==1) //左側(cè)掃描到白線
        result=0;
    if(temp1==1&&temp2==0) //右側(cè)掃描到白線
        result=2;
    if(temp1==0&&temp2==0)  //兩側(cè)都掃描到白線
        result=3;
    return result;
}
unsigned char result;

void main()
{
    while(1)
    {
        result=scan();
        if(result==1)  //直走
        { 
unsigned int i=0;
unsigned int y=0;
TIME_Init () ;
motor(100,100);//電機(jī)的轉(zhuǎn)速

 

        }
        else if(result==0)//左轉(zhuǎn),左輪停止
        {
          unsigned int i=0;
   unsigned int y=0;
   TIME_Init () ;
   motor(0,100);//電機(jī)的轉(zhuǎn)速
   while(1);
        }
        else if(result==2)//右轉(zhuǎn),右輪停止
        {
          unsigned int i=0;
   unsigned int y=0;
   TIME_Init () ;
   motor(100,0);//電機(jī)的轉(zhuǎn)速
  
        }
        else if(result==3)//兩邊都沒有返回的狀態(tài)(比如小車懸空)~自己定吧,這里停車
        {   unsigned int i=0;
   unsigned int y=0;
   TIME_Init () ;
   motor(0,0);//電機(jī)的轉(zhuǎn)速
   
        }
        delay_nms(200);//延時(shí)200ms
     }
   } 
 求高手指點(diǎn)程序中錯(cuò)誤

[此貼子已經(jīng)被作者于2011-10-20 20:25:46編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:45329 發(fā)表于 2012-10-9 13:37 | 只看該作者

才接觸,看不懂!

回復(fù)

使用道具 舉報(bào)

板凳
ID:52704 發(fā)表于 2013-8-6 11:49 | 只看該作者
沒錯(cuò)誤吧,挺好的
回復(fù)

使用道具 舉報(bào)

地板
ID:52999 發(fā)表于 2013-8-16 12:37 | 只看該作者
我想知道你用的什么紅外傳感器
回復(fù)

使用道具 舉報(bào)

5#
ID:121114 發(fā)表于 2016-5-18 23:06 | 只看該作者
學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲天堂 | 久久婷婷av | 欧美成人自拍视频 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 亚洲一区二区av | 特黄小视频 | 国产成人精品久久二区二区91 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲色图综合 | 国产高清视频一区 | 精品久久久久久久人人人人传媒 | 日韩免费在线 | 午夜一级做a爰片久久毛片 精品综合 | 亚洲精品在线播放 | av黄色在线 | www.888www看片 | 久久亚洲综合 | 国产视频久久 | 国产一级片在线观看视频 | 人人鲁人人莫人人爱精品 | 久久久久网站 | 综合久久色 | 亚洲欧美一区二区三区在线 | 青娱乐av | 99热成人在线 | 黑人巨大精品欧美一区二区免费 | 黄色三级在线播放 | 国产精品96久久久久久 | 久草网站 | 国产高清一区二区三区 | 精品国产一区二区三区性色av | 久草.com| 欧美一区二不卡视频 | 一本久久a久久精品亚洲 | xx视频在线 | h片在线看 | 国产重口老太伦 | 久久久久成人精品免费播放动漫 | 久久99蜜桃综合影院免费观看 | 国产成人在线视频免费观看 | 国产成人自拍一区 |