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

標(biāo)題: 基于89c51的紅外尋跡小車的制作 [打印本頁]

作者: dong12    時(shí)間: 2019-5-10 08:21
標(biāo)題: 基于89c51的紅外尋跡小車的制作
一、        總體分析        3
二、        材料清單:        4
三、        系統(tǒng)原理圖        5
1.        L298n電機(jī)驅(qū)動(dòng):        5
2.        紅外模塊:        6
3.        51單片機(jī):        6
4.        7805穩(wěn)壓        7
四、        模塊功能        8
1.        L298n電機(jī)驅(qū)動(dòng):        8
2.        紅外模塊:        8
3.        51單片機(jī):        8
4.        7805穩(wěn)壓:        9
五、        軟件編程        10
1.        程序1:        10
2.        程序2:        12



材料清單:
小車底盤(帶輪胎,直流減速馬達(dá),萬向輪);
紅外對(duì)管若干;
L9110和L298n電機(jī)驅(qū)動(dòng)模塊(推薦L298n);
51最小系統(tǒng)板(含51單片機(jī));
7805穩(wěn)壓芯片;
杜邦線若干;
銅柱若干;
18650電池(含電池盒);


系統(tǒng)原理圖
L298n電機(jī)驅(qū)動(dòng):



紅外模塊:

51單片機(jī):


7805穩(wěn)壓








模塊功能
L298n電機(jī)驅(qū)動(dòng):

L298N是ST公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片采用15腳封裝。主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載;采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動(dòng)電機(jī)可以控制兩路電機(jī)。
紅外模塊:

紅外傳感器黑線的檢測(cè)原理是紅外發(fā)射管發(fā)射光線到路面,紅外光遇到白底則被反射,接收管接收到反射光,經(jīng)施密特觸發(fā)器整形后輸出低電平;當(dāng)紅外光遇到黑線時(shí)則被吸收,接收管沒有接收到反射光
51單片機(jī):

AT89C51單片機(jī)是把那些作為控制應(yīng)用所必需的基本內(nèi)容都集成在一個(gè)尺寸有限的集成電路芯片上。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM)、并行I/O口(4個(gè)8位I/O口)、串行口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器。它們都是通過片內(nèi)單一總線連接而成,其基本結(jié)構(gòu)依舊是微處理器(CPU)加上外圍芯片的傳統(tǒng)結(jié)構(gòu)模式。但對(duì)各種功能部件的控制是采用特殊功能寄存器的集中控制方式,以實(shí)現(xiàn)不同的功能
7805穩(wěn)壓:
7805三端穩(wěn)壓集成電路,電子產(chǎn)品中,常見的三端穩(wěn)壓集成電路有正電壓輸出的78 ×× 系列和負(fù)電壓輸出的79××系列。顧名思義,三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。


軟件編程
程序1:

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit left1=P1^0;
sbit left2=P1^1;
sbit right1=P1^2;
sbit right2=P1^3; //
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;//紅外傳感
void delay(uint z)
{
uchar i;
while(z--)
{
for(i=0;i<121;i++);
}
} //延時(shí)函數(shù)}
void straight() //走直線函數(shù)
{
left1=0;
left2=1;
right1=0;
right2=1;
delay(3);
left1=0;
left2=0;
right1=0;
right2=0;
delay(14);
}
void turn_left() //左轉(zhuǎn)彎函數(shù)
{
left1=0;
left2=1;
right1=0;
right2=0;
delay(3);
left1=0;
left2=0;
right1=0;
right2=0;
delay(14);
}
void turn_right() //右轉(zhuǎn)彎函數(shù)
{

left1=0;
left2=0;
right1=0;
right2=1;
delay(3);
left1=0;
left2=0;
right1=0;
right2=0;
delay(14);
}
void tingzhi()//停止函數(shù)
{
left1=0;
left2=0;
right1=0;
right2=0;
left1=0;
left2=0;
right1=0;
right2=0;
}
void infrared() //循跡       
{
uchar flag;
{flag=3;}
else
if(led5==0&&(led3==1)&&(led2==1))                                                                          
{flag=4;}
else
if(led5==0&&(led1==1)&&(led4==1))                                  
{flag=4;}
else
if((led1==1)||(led2==1))
{flag=2;}
else
if((led3==1)||(led4==1))
{flag=1;}
else
flag=0;
switch (flag)
{
case 0: straight();
break;
case 2: turn_left();
break;
case 1: turn_right();
break;
case 3: straight();
break;
case 4: tingzhi();
break;
default: tingzhi();
break;
}
}
void main(void)
{
while(1)
{
infrared();
}
}

程序2:

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar pro_zuo,pro_you,i,j; //左右占空比標(biāo)志
sbit left1=P1^0;
sbit left2=P1^1;       
sbit right1=P1^2;
sbit right2=P1^3; //
sbit led1=P2^0;       
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3; //紅外傳感
sbit led5=P2^4;               
sbit en1=P0^1;      
sbit en2=P0^2;     
void delay(uint z)
{
uchar i;
while(z--)
{for(i=0;i<121;i++);}
}
void init()
{
/*led1=0; //白線位置
led2=0; //白線位置
led5=1; //黑線位置
led3=0; //白線位置
led4=0; //白線位置 */
TMOD=0X01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
en1=1;
en2=1;
}
void time0(void)interrupt 1
{
i++;
j++;
if(i<=pro_you) {en1=1;}
   else en1=0;
if(i==40) {en1=~en1;i=0;}
if(j<=pro_zuo) {en2=1;}
   else en2=0;
if(j==40) {en2=~en2;j=0;}
TH0=(65536-100)/256;
TL0=(65536-100)%256;
}
void straight() //走直線函數(shù)
{
pro_you=4;
pro_zuo=5;
left1=0;
left2=1;
right1=0;
right2=1;
}
void turn_left() //左轉(zhuǎn)彎函數(shù)
{
pro_you=0;
pro_zuo=5;
left1=0;
left2=1;
right1=0;
right2=1;
}
void turn_right() //右轉(zhuǎn)彎函數(shù)
{
pro_you=5;
pro_zuo=0;
left1=0;
left2=1;
right1=0;
right2=1;
}
void tingzhi()//停止函數(shù)
{
left1=0;
left2=0;
right1=0;
right2=0;
left1=0;
left2=0;
right1=0;
right2=0;
}
void infrared() //循跡       
{
uchar flag;
if(led5==1&&(led3==1)&&(led2==1))                                                                 
{flag=3;}
else
if(led5==0&&(led3==1)&&(led2==1))                                                                 
{flag=4;}
else
if(led5==0&&(led1==1)&&(led4==1))                                                                 
{flag=4;}
else
if((led1==1)||(led2==1))
{flag=2;}
else
if((led3==1)||(led4==1))
{flag=1;}
else
flag=0;
switch (flag)
{
case 0: straight();
break;
case 1: turn_left();
break;
case 2: turn_right();
break;
case 3: straight();
break;
case 4: tingzhi();
break;
default: tingzhi();
break;
}
}
void main(void)
{
init();
delay(1);
while(1)
{
   infrared();
}
}
void int0(void)interrupt 0
{
}
作者: admin    時(shí)間: 2019-5-10 18:20
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者: dong12    時(shí)間: 2019-5-19 17:07
好的,




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1