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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機循跡小車

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
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ū)動數(shù)碼管
uchar code table[10] = {0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7};
uchar i = 0; //用于0-3數(shù)碼管輪流顯示
uint j = 0; //計時的次數(shù)
uint time=0; //計時
uint pwm=16; //占空比
uint speed; //調(diào)制PWM波的當(dāng)前的值
sbit R=P3^2; //右邊傳感器P3^2
sbit L=P3^3; //左邊傳感器P3^3
//電機驅(qū)動口定義
sbit E NB=P1^0; //前輪電機停止控制使能
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; //定時器0用方式2,定時器1用方式1
TH0=(256-200)/256; //pwm
TL0=(256-200)/256;
TH1 = 0x0F8; //定時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 //定時2ms
{
TH1 = 0x0F8;
TL1 = 0x30;
i =(i+1) % 4; //0-3循環(huán)
j++;
if(i == 0) //顯示最低位數(shù)碼管
{
P0 = 0x00; //段選清零防止亂碼
P0 = table[time%10]; //送段碼信號
}
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 ); //送位選信號
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; //打開使能
IN3=1;
IN4=0;
}
void right() //右轉(zhuǎn)
{
ENB=1; //打開使能
IN3=0;
IN4=1;
}
void stop() //停止
{
IN2=0;
IN1=0;
IN3=0;
IN4=0;
}
void main()
{
Init(); //定時器初始化
while(1)
{
if(R==0 && L==1) //右傳感器檢測到黑線
{
right(); //右轉(zhuǎn)
forward();
while(R==0 && L==1);
}
if(R==1 && L==0) //左傳感器檢測到黑線
{
left();
forward();
while(R==1 && L==0);
}
if(R==0 && L==0) //都檢測到黑線則停止
{
stop();
j = 0; //定時器仍在工作,計數(shù)時間清空}
else //都沒有檢測到黑線
{
ENB = 0; //關(guān)閉轉(zhuǎn)向控制
forward();
}
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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