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

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

QQ登錄

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

搜索
查看: 1537|回復(fù): 0
收起左側(cè)

51單片機(jī)循跡小車

[復(fù)制鏈接]
ID:441016 發(fā)表于 2018-12-6 16:24 | 顯示全部樓層 |閱讀模式
智能循跡小車程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//D0-D7:f,b,a,e,d,h,c,g 共陰依次編碼
//74LS04反相器驅(qū)動(dòng)數(shù)碼管
uchar code table[10] = {0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7};
uchar i = 0; //用于0-3數(shù)碼管輪流顯示
uint j = 0; //計(jì)時(shí)的次數(shù)
uint time=0; //計(jì)時(shí)
uint pwm=16; //占空比
uint speed; //調(diào)制PWM波的當(dāng)前的值
sbit R=P3^2; //右邊傳感器P3^2
sbit L=P3^3; //左邊傳感器P3^3
//電機(jī)驅(qū)動(dòng)口定義
sbit E NB=P1^0; //前輪電機(jī)停止控制使能
sbit E NA=P1^1; //后輪控制調(diào)速控制端口
sbit I N1=P1^2; //前輪
sbit I N2=P1^3; //前輪
sbit I N3=P1^4; //后輪
sbit I N4=P1^5; //后輪
void Init()
{
TMOD = 0x12; //定時(shí)器0用方式2,定時(shí)器1用方式1
TH0=(256-200)/256; //pwm
TL0=(256-200)/256;
TH1 = 0x0F8; //定時(shí)2ms
TL1 = 0x30;
EA = 1;
ET0 = 1;
ET1 = 1;
TR0 = 1;
TR1 = 1;
}
void tim0(void) interrupt 1 //產(chǎn)生PWM
{
speed ++;
if(speed <= pwm) //pwm 就相當(dāng)于占100的比例
{
ENA = 1;
}
else if(speed < 100)
{
ENA = 0;
}
else
speed = 0;
}
void time1() interrupt 3 //定時(shí)2ms
{
TH1 = 0x0F8;
TL1 = 0x30;
i =(i+1) % 4; //0-3循環(huán)
j++;
if(i == 0) //顯示最低位數(shù)碼管
{
P0 = 0x00; //段選清零防止亂碼
P0 = table[time%10]; //送段碼信號(hào)
}
if(i == 1)
{
P0 = 0x00;
P0 = table[time/ 10% 10];
}
if(i == 2)
{
P0 = 0x00;
P0 = table[time/ 100% 10];
}
if(i == 3)
{
P0 = 0x00;
P0 = table[time/ 1000% 10];
}
P2 = ( 0x10 << i ); //送位選信號(hào)
if(j == 500)
{
time ++; //500次為1秒
j = 0;
}
}
void forward() //前進(jìn)
{
IN2=1;
IN1=0;
}
void back() //后退
{
IN2=0;
IN1=1;
}
void left() //左轉(zhuǎn)
{
ENB=1; //打開(kāi)使能
IN3=1;
IN4=0;
}
void right() //右轉(zhuǎn)
{
ENB=1; //打開(kāi)使能
IN3=0;
IN4=1;
}
void stop() //停止
{
IN2=0;
IN1=0;
IN3=0;
IN4=0;
}
void main()
{
Init(); //定時(shí)器初始化
while(1)
{
if(R==0 && L==1) //右傳感器檢測(cè)到黑線
{
right(); //右轉(zhuǎn)
forward();
while(R==0 && L==1);
}
if(R==1 && L==0) //左傳感器檢測(cè)到黑線
{
left();
forward();
while(R==1 && L==0);
}
if(R==0 && L==0) //都檢測(cè)到黑線則停止
{
stop();
j = 0; //定時(shí)器仍在工作,計(jì)數(shù)時(shí)間清空}
else //都沒(méi)有檢測(cè)到黑線
{
ENB = 0; //關(guān)閉轉(zhuǎn)向控制
forward();
}
}
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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