久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
小車直線行駛單片機編程
[打印本頁]
作者:
heruojun760
時間:
2019-7-13 16:19
標題:
小車直線行駛單片機編程
小車直線行駛編程部分
單片機源程序如下:
#include "REG52.H"
#include <intrins.h> //包含nop等系統函數
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
//按鍵引腳定義
sbit key = P2^0;
//定義電機引腳
sbit Left_motor_go=P2^4; //左電機前進AIN2
sbit Left_motor_back=P2^3; //左電機后退AIN1
sbit Right_motor_go=P2^1; //右電機前進BIN2
sbit Right_motor_back=P2^2; //右電機后退BIN1
sbit TrackSensorLeftPin2 = P1^1;
sbit TrackSensorLeftPin1 = P1^0;
sbit TrackSensorRightPin1 = P1^2;
sbit TrackSensorRightPin2 = P1^3;
//紅外傳感器采集的數據變量
uchar SensorValue1;
uchar SensorValue2;
uchar SensorValue3;
uchar SensorValue4;
//定義角度值
int myangle = 0;//舵機角度定義
int servo_p = 0;
//定義舵機引腳
sbit ServoPin=P0^6;
uchar pwm_val_left =0;//變量定義
uchar pwm_val_right =0;
uchar set_pwm_val_left = 0;
uchar set_pwm_val_right = 0;
sbit LED1 = P2^5;
sbit LED2 = P2^6;
/*
* 毫秒級延時
*/
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=120;j>0;j--);
}
/*
* 舵機函數
*/
void set_angle(int angle)
{
if(angle > 18)
angle = 18;
if(angle < 8)
angle = 8;
myangle = angle;
}
/*
* 電機運行程序,僅支持電機正轉
*/
void run(uchar left_speed,uchar right_speed)
{
if(left_speed >100)
left_speed = 100;
if(right_speed >100)
right_speed = 100;
set_pwm_val_left = left_speed;
set_pwm_val_right = right_speed;
return;
}
/*
* 傳感器值獲取函數,將引腳值賦值給變量以防止誤寫引腳狀態。
*/
void get_sensor(void)
{
SensorValue1 = TrackSensorLeftPin1;
SensorValue2 = TrackSensorLeftPin2;
SensorValue3 = TrackSensorRightPin1;
SensorValue4 = TrackSensorRightPin2;
}
/*
* 發車按鍵,調用此函數,若按鍵未按下,則程序一直死在此函數
*/
void key_scan(void)
{
while (key!=0); //當按鍵沒有被按下一直循環
while (key==0) //當按鍵被按下時
{
delay(10); //延時10ms
if (key==0) //第二次判斷按鍵是否被按下
{
delay(100);
while (key==0); //判斷按鍵是否被松開
}
}
}
/*
* 初始化函數
*/
void init(void)
{
//定時器0控制車速
TMOD|=0X01; //定時器0工作方式1
TH0=0XFF; //100us定時,裝入初值
TL0=0XA3;
TR0=1; //啟動T0工作
ET0=1; //允許T0中斷
EA =1; //開總中斷
//舵機引腳初始化為高電平
Left_motor_back = 0; //關反向電橋
Right_motor_back = 0;
ServoPin=1; //舵機電平拉高
set_angle(13); //舵機初始狀態對正
}
/*
* 方波生成邏輯
*/
void timer0() interrupt 1
{
TH0=0XFF; //100Us定時
TL0=0XA3;
servo_p++;
//舵機處理部分
if(servo_p <= myangle)
{
ServoPin=1;
}
else if(servo_p < 200)
{
ServoPin=0;
}
else
{
servo_p = 0;
}
pwm_val_left++;
if(pwm_val_left<set_pwm_val_left)
{
Left_motor_go = 1;
}
else if(pwm_val_left<100)
{
Left_motor_go = 0;
}
else
{
pwm_val_left = 0;
}
pwm_val_right++;
if(pwm_val_right<set_pwm_val_right)
{
Right_motor_go = 1;
}
else if(pwm_val_right<100)
{
Right_motor_go = 0;
}
else
{
pwm_val_right = 0;
}
}
//簡單實現循跡樣例
void sensor_adjust(void)
{
//更新傳感器狀態,必須有
get_sensor();
if((SensorValue2 == 1)&&(SensorValue3 == 1))
{
set_angle(13);
}
if((SensorValue2 == 1)&&(SensorValue3 == 1)&&(SensorValue1 == 1)&&(SensorValue4 == 1))
{
set_angle(13);
run(0,0);
}
if(SensorValue1 == 1)
{
if(SensorValue2 == 1)
set_angle(12);
else
set_angle(11);
}
else if(SensorValue2 == 1)
{
set_angle(12);
}
else if(SensorValue3 == 1)
{
set_angle(14);
}
else if(SensorValue4 == 1)
{
if(SensorValue3 == 1)
set_angle(13);
else
set_angle(14);
}
}
void main()
{
init();
key_scan();
run(35,35);
//調用按鍵掃描函數
while(1)
{
sensor_adjust();
}
}
復制代碼
程序51hei提供下載:
第三.zip
(31.16 KB, 下載次數: 6)
2019-7-13 16:18 上傳
點擊文件名下載附件
小車直線行駛
下載積分: 黑幣 -5
作者:
admin
時間:
2019-7-13 23:40
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者:
huihuisun
時間:
2019-10-9 09:34
學習參考一下
作者:
zjd5195
時間:
2019-10-11 20:52
學習了
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一级黄色片网址
|
精品美女在线观看
|
99精品视频免费观看
|
日韩精品成人网
|
97精品超碰一区二区三区
|
av午夜激情
|
久久久久久亚洲精品
|
亚洲视频免费
|
在线免费观看成年人视频
|
亚洲三级在线
|
日韩在线不卡
|
一区二区三区在线播放
|
精品国产精品三级精品av网址
|
国外成人在线视频网站
|
日韩视频在线免费观看
|
成人小视频在线观看
|
亚洲美女网站
|
九色视频网站
|
国产免费人成xvideos视频
|
www.成人.com
|
日本男人天堂
|
亚洲欧美一区二区三区1000
|
成人免费视频网
|
成人午夜免费网站
|
欧美国产日韩一区
|
91 中文字幕
|
久久精彩
|
三级av网址
|
国产欧美在线一区二区
|
亚洲网站在线观看
|
日韩精品久久一区二区三区
|
国产一区二区三区在线
|
欧美极品在线观看
|
日日日操
|
这里精品
|
韩日一区二区
|
欧美精品一区二区三区四区五区
|
日韩一区二区三区四区五区六区
|
亚洲 中文 欧美 日韩 在线观看
|
亚洲精品中文字幕在线
|
91av在线免费看
|