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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4435|回復: 2
收起左側

基于89c51的紅外尋跡小車的制作

[復制鏈接]
ID:479983 發表于 2019-5-10 08:21 來自觸屏版 | 顯示全部樓層 |閱讀模式
一、        總體分析        3
二、        材料清單:        4
三、        系統原理圖        5
1.        L298n電機驅動:        5
2.        紅外模塊:        6
3.        51單片機:        6
4.        7805穩壓        7
四、        模塊功能        8
1.        L298n電機驅動:        8
2.        紅外模塊:        8
3.        51單片機:        8
4.        7805穩壓:        9
五、        軟件編程        10
1.        程序1:        10
2.        程序2:        12



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


系統原理圖
L298n電機驅動:



紅外模塊:

51單片機:


7805穩壓








模塊功能
L298n電機驅動:

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

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

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


軟件編程
程序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++);
}
} //延時函數}
void straight() //走直線函數
{
left1=0;
left2=1;
right1=0;
right2=1;
delay(3);
left1=0;
left2=0;
right1=0;
right2=0;
delay(14);
}
void turn_left() //左轉彎函數
{
left1=0;
left2=1;
right1=0;
right2=0;
delay(3);
left1=0;
left2=0;
right1=0;
right2=0;
delay(14);
}
void turn_right() //右轉彎函數
{

left1=0;
left2=0;
right1=0;
right2=1;
delay(3);
left1=0;
left2=0;
right1=0;
right2=0;
delay(14);
}
void tingzhi()//停止函數
{
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; //左右占空比標志
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() //走直線函數
{
pro_you=4;
pro_zuo=5;
left1=0;
left2=1;
right1=0;
right2=1;
}
void turn_left() //左轉彎函數
{
pro_you=0;
pro_zuo=5;
left1=0;
left2=1;
right1=0;
right2=1;
}
void turn_right() //右轉彎函數
{
pro_you=5;
pro_zuo=0;
left1=0;
left2=1;
right1=0;
right2=1;
}
void tingzhi()//停止函數
{
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
{
}
回復

使用道具 舉報

ID:1 發表于 2019-5-10 18:20 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

ID:479983 發表于 2019-5-19 17:07 來自觸屏版 | 顯示全部樓層
好的,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久一区二区三区 | 欧美视频精品 | 欧美性一区二区三区 | 操操操日日日 | 亚洲国产18 | 久久免费观看一级毛片 | 久久久久亚洲精品 | 日韩在线中文 | 国产精品1区2区 | 2023亚洲天堂 | 日韩一级免费电影 | 亚洲精选久久 | 福利网址 | 中文字幕蜜臀av | 婷婷久久久久 | 亚洲第一天堂 | 日韩在线看片 | 成人在线观看欧美 | 欧美精品二区 | 自拍偷拍3p | 亚洲天堂成人在线视频 | 欧美精品区 | 国产精品精品久久久 | 国产乱码久久久 | 国产精品久久av | 免费99视频 | 亚洲一区二区三区四区五区中文 | 日韩中文字幕在线免费 | 日韩美av | 欧美日韩亚 | 久久久久久久久久久丰满 | 亚洲在线成人 | 午夜精品久久久久久久久久久久久 | 天堂久 | 日韩一区二区av | 欧美一区二区三区在线观看 | 欧美日韩国产一区二区三区 | 国产玖玖 | 亚洲精品视频免费 | 亚洲综合电影 | 国产精品一区二区久久久久 |