久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
智能小車超聲波跟隨的單片機程序源碼
[打印本頁]
作者:
casvot
時間:
2018-7-13 09:54
標題:
智能小車超聲波跟隨的單片機程序源碼
智能小車超聲波跟隨
單片機源程序如下:
#include<reg51.h>
#define reload_count_1200bps 0xe8
#define reload_count_2400bps 0xf4
#define reload_count_4800bps 0xfa
#define reload_count_9600bps 0xfd
//定義智能小車電機驅動芯片L293D輸入IO口
sbit IN1 = P1^3;
sbit IN2 = P1^4;
sbit IN3 = P1^5;
sbit IN4 = P1^6;
sbit EN1 = P1^2;
sbit EN2 = P1^7;
sbit BEEP_IO = P2^3; //蜂鳴器定義
unsigned char pwmval_left = 0; //變量定義
unsigned char pwmval_right = 0;
unsigned char pwmval_left_init = 10;
//左電機占空比調節 ,調節值在0到20之間,調節此值可調節小車速度。
unsigned char pwmval_right_init = 10;
//右電機占空比調節 ,調節值在0到20之間,調節此值可調節小車速度。
bit right_pwm = 1; //右電機PWM開關,為1時打開
bit left_pwm = 1; //左電機PWM開關,為1時打開
unsigned char num = 0x00;
unsigned char UART_REV_BUFFER;
unsigned char one_frame_finished = 0;
bit forward_flag = 0;
bit backward_flag=0;
bit left_flag = 0;
bit right_flag = 0;
bit back_flag = 0;
bit stop_flag = 1;
void delay(int In,int Out) //定義延時函數
{
int i,j;
for(i=0;i<In;i++)
{
for(j=0;j<Out;j++)
{;}
}
}
void forward(void) //前進
{
if(forward_flag == 0)
{
ET0 = 0;
pwmval_right = 0;
pwmval_left = 0;
pwmval_left_init = 20;
pwmval_right_init = 20;
ET0 = 1;
IN1 = 1;
IN2 = 0; //左車輪的正轉
IN3 = 1;
IN4 = 0;
} //右車輪的正轉
forward_flag = 1;
}
void backward(void) //前進
{
if(backward_flag == 0)
{
ET0 = 0;
pwmval_right = 0;
pwmval_left = 0;
pwmval_left_init = 20;
pwmval_right_init = 20;
ET0 = 1;
IN1 = 0;
IN2 = 1; //左車輪的正轉
IN3 = 0;
IN4 = 1;
} //右車輪的正轉
backward_flag = 1;
}
void stop(void) //停車
{
IN1 = 0;
IN2 = 0; //左電機不動
IN3 = 0;
IN4 = 0;
forward_flag = 0;
left_flag = 0;
right_flag = 0;
back_flag = 0;
}
void right(void) //向右
{
if(right_flag == 0)
{
ET0 = 0;
pwmval_right = 0;
pwmval_left = 0;
pwmval_left_init = 20;
pwmval_right_init = 20;
ET0 = 1;
IN1 = 1;
IN2 = 0; //智能小車左車輪正轉
IN3 = 0;
IN4 = 1; //智能小車右車輪反轉
}
right_flag = 1;
}
void left(void) //向左
{
if(left_flag == 0)
{
ET0 = 0;
pwmval_right = 0;
pwmval_left = 0;
pwmval_left_init = 20;
pwmval_right_init = 20;
ET0 = 1;
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
}
left_flag = 1;
}
/************************************************************************/
void left_moto(void) //left speed adjust
{
if(left_pwm)
{
if(pwmval_left <= pwmval_left_init)
{
EN1 = 1;
}
else
{
EN1 = 0;
}
if(pwmval_left >= 20)
{
pwmval_left = 0;
}
}
else
{
EN1 = 0;
}
}
/******************************************************************/
void right_moto(void)
{
if(right_pwm)
{
if(pwmval_right <= pwmval_right_init)
{
EN2 = 1;
}
else if(pwmval_right > pwmval_right_init)
{
EN2 = 0;
}
if(pwmval_right >= 20)
{
pwmval_right = 0;
}
}
else
{
EN2 = 0;
}
}
void timer0()interrupt 1 using 2 //
{
TH0 = 0xfc; //1Ms定時
TL0 = 0x66;
pwmval_left = pwmval_left + 1;
pwmval_right = pwmval_right + 1;
left_moto();
right_moto();
}
void timer_init()
{
TMOD=0x01;
TH0= 0xfc; //1ms定時
TL0= 0x66;
TR0= 1;
ET0= 1;
EA = 1; //開總中斷
}
void serial_port_initial(char TH,char TL)
{
SCON = SCON | 0x50; //0101,0000 8位可變波特率,無奇偶校驗位
TMOD = TMOD | 0x20; //0011,0001 設置定時器1為8位自動重裝記數器
PCON = PCON | 0x00;
TH1 = TH; //設置定時器1自動重裝數
TL1 = TL;
ES = 1; //允許串口中斷
EA = 1; //開總中斷
TR1 = 1; //開定時器1
}
void send_UART(unsigned char i) //發送一節函數
{
ES = 0; //關串 口中斷
TI = 0; //清零串口發送完成中斷請求標志
SBUF = i;
while(TI==0); // 等特數據傳送
TI = 0; // 清除數據傳送標志
ES = 1;
}
char UARTReceive(void)
{
char ch;
ch = SBUF;
return (ch); //暫存接收到的數據
}
void UART_Interrupr_Receive(void) interrupt 4
{
ES = 0;
if(RI) //接引起的中斷處理程序
{
UART_REV_BUFFER = UARTReceive();
RI = 0;
ES = 1;
one_frame_finished = 1;
}
}
void PROCESS(void)
{
if(one_frame_finished == 1)
{
send_UART(UART_REV_BUFFER);
if(UART_REV_BUFFER == 0x31)
{
stop();
}
else if(UART_REV_BUFFER == 0x32)
{
left();
delay(80,100);
stop();
}
else if(UART_REV_BUFFER == 0x33)
{
right();
delay(80,100);
stop();
}
else if(UART_REV_BUFFER == 0x34)
{
forward();
delay(200,100);
stop();
}
else if(UART_REV_BUFFER==0x35)
{
backward();
delay(100,100);
stop();
}
else
{
stop();
}
one_frame_finished = 0;
}
//==================Test=====================
/*right();
delay(500,100);
left();
delay(500,100);
backward();
delay(500,100);
*/
//forward();
//delay(500,100);
}
void main(void)
{
delay(10,10);
timer_init();
serial_port_initial(reload_count_9600bps,reload_count_9600bps);
BEEP_IO = 0;
delay(100,100);
BEEP_IO = 1;
while(1)
{
PROCESS();
}
}
復制代碼
所有資料51hei提供下載:
智能小車超聲波跟隨程序.zip
(35.23 KB, 下載次數: 122)
2018-7-13 09:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
paladincc
時間:
2018-12-22 23:25
請問是什么型號得超聲波模塊?
作者:
ywq123
時間:
2019-3-13 20:35
你好,可以分享一下小車電路圖嗎?
作者:
愛出風頭的小白
時間:
2019-3-13 23:05
什么是超聲波跟隨?
作者:
QTW0921
時間:
2019-11-20 16:46
謝謝大佬,要是有電路圖就更加完美了
作者:
yiyang168
時間:
2019-12-24 21:58
小車安裝好了,下載程序試試
作者:
muse122334
時間:
2020-3-3 14:56
謝謝分享
作者:
焦小波
時間:
2020-3-17 08:57
您好,可以您這個程序,超聲波接在哪呢
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人激情综合网
|
国产视频www
|
亚洲黄色小视频
|
日本免费高清
|
国产精品成人免费视频
|
福利视频网站
|
玖玖在线观看
|
成人免费小视频
|
亚洲精品一区二区三区在线观看
|
99re国产
|
亚洲砖区区免费
|
国产成人福利
|
五月激情久久
|
亚洲精品蜜桃
|
欧美国产日韩一区
|
天天爽天天爽
|
色婷婷在线视频
|
看片地址
|
免费91网站
|
亚洲福利视频一区
|
99色在线
|
久久久久国产精品夜夜夜夜夜
|
久久精品视频网站
|
人人干人人艹
|
国内精品一区二区三区
|
久热在线视频
|
美女张开腿
|
一级片国产
|
激情四射网站
|
国产精品福利视频
|
www.超碰
|
日韩在线一区二区
|
不卡的av在线
|
91在线免费看
|
亚洲永久免费
|
91免费福利视频
|
日本在线视频一区
|
亚洲国产91
|
九九国产精品视频
|
伊人久久影院
|
不卡的av在线
|