|
說(shuō)明 小車運(yùn)動(dòng)通過(guò)獨(dú)立按鍵控制,通過(guò)按鍵調(diào)節(jié)不同車輪的速度,從而實(shí)現(xiàn)左轉(zhuǎn)或右轉(zhuǎn),L298驅(qū)動(dòng)電機(jī)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
捕獲.PNG (81.57 KB, 下載次數(shù): 86)
下載附件
仿真圖
2018-11-16 21:58 上傳
#include <reg51.h>
#define uchar unsigned char
sbit IN1 = P2^0;
sbit IN2 = P2^1;
sbit IN3 = P2^2;
sbit IN4 = P2^3;
sbit ENA = P2^4;
sbit ENB = P2^5;
sbit LeftUp = P1^0;
sbit LeftDown = P1^1;
sbit RightUp = P1^2;
sbit RightDown = P1^3;
//**×óóòÂÖ×óËù¶èμ÷½ú±äá¿
uchar numL,numR;
//***********************
void init_time()
{
TMOD=0X01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=1;
TR0=1;
}
void time0() interrupt 1 using 1
{
static uchar num;
num++;
if(num==numR) ENB=~ENB;
if(num==numL) ENA=~ENA;
if(num==100){ENA=~ENA;ENB=~ENB;num=0;}
TH0=(65536-500)/256;
TL0=(65536-500)%256;
}
void main()
{
numL=70;numR=20;
ENA=ENB=1;
IN1=IN3=1;IN2=IN4=0;
init_time();
while(1)
{
if(!LeftUp) { while(!LeftUp); numL+=5;
if(numL>100)numL=0;}
if(!LeftDown) { while(!LeftDown); numL-=5;
if(numL>100)numL=0;}
if(!RightUp) { while(!RightUp); numR+=5;
if(numR>100)numR=0;}
if(!RightDown){ while(!RightDown);numR-=5;
if(numR>100)numR=0;}
}
}
全部資料51hei下載地址:
控制小車的運(yùn)動(dòng).zip
(124.18 KB, 下載次數(shù): 218)
2018-11-16 21:59 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|