久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
二路超聲波測距的單片機源碼
[打印本頁]
作者:
51dasttwbd
時間:
2018-5-28 11:08
標題:
二路超聲波測距的單片機源碼
用2哥超聲波 進行 避障 功能
源程序 如下:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit ENA_pwm = P2^6; //PWM信號端
sbit ENB_pwm = P2^7; //PWM信號端
sbit L298N_INA = P1^0;
sbit L298N_INB = P1^1;
sbit L298N_INC = P1^2;
sbit L298N_IND = P1^3;
sbit Trlg1 = P3^1;
sbit Echo1 = P3^2;
sbit Trlg2 = P2^0;
sbit Echo2 = P2^1;
unsigned char pwm_val_left =0; //變量定義
unsigned char pwm_val_right =0;
unsigned char push_val_left =0;// 左電機占空比N/10
unsigned char push_val_right=0;// 右電機占空比N/10
unsigned int time = 0; //測距時間
unsigned int timer = 0; //調速時間
unsigned long S1 = 0; //距離
unsigned long S2 = 0; //距離
void delay(uint z) //毫秒級延時
{
uint x,y;
for(x = z; x > 0; x--)
{
for(y = 114; y > 0 ; y--);
}
}
void Delay10us_CSB(uchar i) //10us延時函數 超聲波模塊使用
{
uchar j;
do
{
j = 10;
do
{
_nop_();
_nop_();
}
while(--j);
}
while(--i);
}
void pwm_out_left_moto(void)
{
if(pwm_val_left<=push_val_left)
ENA_pwm=1;
else
ENA_pwm=0;
if(pwm_val_left==10) // 0~10 , 0最小,10最大
pwm_val_left=0;
}
void pwm_out_right_moto(void)
{
if(pwm_val_right<=push_val_right)
ENB_pwm=1;
else
ENB_pwm=0;
if(pwm_val_right==10) // 0~10 , 0最小,10最大
pwm_val_right=0;
}
/*定時器1中斷輸出PWM信號*/
void time1() interrupt 3
{
TH1=(65536-10)/256;
TL1=(65536-10)%256;
timer++;
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();
}
void Go_forward()
{
push_val_left=6;
push_val_right=6;
L298N_INA = 0;
L298N_INB = 1;
L298N_INC = 1;
L298N_IND = 0;
}
void Go_back()
{
push_val_left=6;
push_val_right=6;
L298N_INA = 1;
L298N_INB = 0;
L298N_INC = 0;
L298N_IND = 1;
}
void Go_left()
{
push_val_left=5;
push_val_right=5;
L298N_INA = 0;
L298N_INB = 1;
L298N_INC = 1;
L298N_IND = 1;
}
void Go_right()
{
push_val_left=5;
push_val_right=5;
L298N_INA = 1;
L298N_INB = 0;
L298N_INC = 0;
L298N_IND = 0;
}
void Stop()
{
L298N_INA = 0;
L298N_INB = 0;
L298N_INC = 0;
L298N_IND = 0;
}
void CSB1_module()
{
Trlg1=1;
Delay10us_CSB(10);
Trlg1=0;
}
void CSB2_module()
{
Trlg2=1;
Delay10us_CSB(10);
Trlg2=0;
}
/*計算超聲波所測距離并顯示*/
void Conut1()
{
while(!Echo1); //當(ECHO信號回響)為零時等待
TR0=1; //開啟計數
while(Echo1);
TR0=0; //關閉計數
time=TH0*256+TL0;
TH0=0;
TL0=0;
S1=(float)(time*1.085)*0.17; //算出來是MM
}
void Conut2()
{
while(!Echo2); //當(ECHO信號回響)為零時等待
TR0=1; //開啟計數
while(Echo2);
TR0=0; //關閉計數
time=TH0*256+TL0;
TH0=0;
TL0=0;
S2=(float)(time*1.085)*0.17; //算出來是MM
}
void bizhang()
{
CSB1_module();
Conut1();
CSB2_module();
Conut2();
if(S1<150 )//設置避障距離(單位毫米)
{
Stop();
delay(30);
Go_back();
delay(50);
if(S2<150)
{
Stop();
delay(30);
Go_right();
}
else
{
Go_back();
delay(50);
Go_left();
}
}
else if(S1>150)
{
if(S2>150)
{
Go_forward();
}
else
{
Stop();
delay(30);
Go_right();
}
}
}
void main()
{
Stop();
delay(1000);//延時1秒
TMOD |= 0x11;//定時器1工作模式2,8位自動重裝。用于產生PWM
TMOD |= 0x01;//定時器0
TH1=(65536-10)/256; //100US定時
TL1=(65536-10)%256;
TH0 = 0;
TL0 = 0;//T0,16位定時計數用于記錄ECHO高電平時間
ET1 = 1;
ET0 = 1;//允許T0中斷
TR1 = 1;//啟動定時器1
EA = 1;//啟動總中斷
while(1)
{
bizhang(); //避障
delay(30);
}
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久精品日产第一区二区三区
|
在线一级片
|
国精品一区
|
偷拍自拍网
|
日本一区二区三区精品视频
|
国产精品自产拍
|
久久精品久久久久久
|
亚洲激情自拍偷拍
|
国产精品久久久久久影院8一贰佰
|
www.4虎影院 国产999精品久久久影片官网
|
日韩欧美在线一区二区
|
男女午夜免费视频
|
国产精品一区二区福利视频
|
91成人免费观看
|
成人av网站在线观看
|
久久久久久国产精品免费免费狐狸
|
一本一道久久a久久精品蜜桃
|
操久久
|
久久久久亚洲
|
一二三区av
|
久久精品国产清自在天天线
|
999视频在线播放
|
成人免费影院
|
国产精品国产三级国产aⅴ原创
|
黄色国产大片
|
午夜网站视频
|
91av入口
|
色伊人久久
|
黄色免费网站在线看
|
日韩超碰
|
欧美v片
|
日韩视频在线一区
|
久久综合狠狠综合久久综合88
|
精品日韩
|
日本网站免费在线观看
|
成人午夜网
|
久久精品欧美视频
|
一区二区三区久久
|
国产一区二区三区免费观看在线
|
欧美亚洲日本
|
在线2区
|