|
四路尋跡小車仿真,液晶顯示小車行駛狀態(tài)
包括直行,小右轉(zhuǎn),大右轉(zhuǎn),小左轉(zhuǎn),大左轉(zhuǎn)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
捕獲.PNG (66.88 KB, 下載次數(shù): 74)
下載附件
仿真界面
2020-3-28 00:58 上傳
主流程圖.gif (20.33 KB, 下載次數(shù): 83)
下載附件
主程序流程圖
2020-3-28 01:04 上傳
單片機(jī)源程序如下:
- #include <reg52.h>//52頭文件
- #include <lcd.h>//液晶顯示配置文件
- unsigned char pwm_left_val; //左電機(jī)占空比值 取值范圍0-170,0最快
- unsigned char pwm_right_val; //右電機(jī)占空比值取值范圍0-170 ,0最快
- unsigned char pwm_t;//周期
- void delay(unsigned int z)//毫秒級(jí)延時(shí)
- {
- unsigned int x,y;
- for(x = z; x > 0; x--)
- for(y = 114; y > 0 ; y--);
- }
- /*小車前進(jìn)*/
- int forward()
- {
- pwm_left_val=100;
- pwm_right_val=100;
- left_motor_go; //左電機(jī)前進(jìn)
- right_motor_go; //右電機(jī)前進(jìn)
- }
- /*小車小左轉(zhuǎn)*/
- int xiaoleft_run()
- {
- pwm_left_val=170;
- pwm_right_val=100;
- left_motor_go; //左電機(jī)前進(jìn)
- right_motor_go; //右電機(jī)前進(jìn)
- }
- /*小車大左轉(zhuǎn)*/
- void daleft_run()
- {
- left_motor_stops; //左電機(jī)停止
- right_motor_go; //右電機(jī)前進(jìn)
- }
- /*小車小右轉(zhuǎn)*/
- int xiaoright_run()
- {
- pwm_left_val=100;
- pwm_right_val=170;
- left_motor_go; //左電機(jī)前進(jìn)
- right_motor_go; //右電機(jī)前進(jìn)
- }
- /*小車大右轉(zhuǎn)*/
- void daright_run()
- {
- right_motor_stops;//右電機(jī)停止
- left_motor_go; //左電機(jī)前進(jìn)
- }
- //定時(shí)器0中斷
- void timer0() interrupt 1
- {
- pwm_t++;//周期計(jì)時(shí)加
- if(pwm_t == 255)
- pwm_t = EN1 = EN2 = 0;
- if(pwm_left_val == pwm_t)//左電機(jī)占空比
- EN1 = 1;
- if(pwm_right_val == pwm_t)//右電機(jī)占空比
- EN2 = 1;
- }
- void main()
- {
- for(;;) //死循環(huán)
- {
- if(key == 0)// 實(shí)時(shí)檢測(cè)S2按鍵是否被按下
- {
- delay(5); //軟件消抖
- LCDInit();
- DisplayString(0x0,0,"Left's Go");
- break; //退出FOR死循環(huán)
- }
- }
- delay(1000);//延時(shí)1秒
- TMOD |= 0x02;//8位自動(dòng)重裝模塊
- TH0 = 220;
- TL0 = 220;//11.0592M晶振下占空比最大比值是256,輸出100HZ
- TR0 = 1;//啟動(dòng)定時(shí)器0
- ET0 = 1;//允許定時(shí)器0中斷
- EA = 1;//總中斷允許
- while(1)
- {
- //為0 沒(méi)有識(shí)別到黑線 為1識(shí)別到黑線
- if(left2_led == right1_led)
- {
- forward();//前進(jìn)
- WriteCmd(LCD_CLS);
- DisplayString(0x0,0,"forward");
- delay(200);
- }
- else if(left1_led == 0 && left2_led == 1 && right1_led== 0 && right2_led== 0 )//左邊觸線,小左轉(zhuǎn)修正
- {
- xiaoleft_run();
- WriteCmd(LCD_CLS);
- DisplayString(0x0,0,"Turn Left small");
- delay(200);
- }
- else if(left1_led == 1 && left2_led == 1 && right1_led== 0 && right2_led== 0 )//最左邊觸線,大左轉(zhuǎn)修正
- {
- daleft_run();
- WriteCmd(LCD_CLS);
- DisplayString(0x0,0,"Turn Left big");
- delay(200);
- }
- else if(left1_led == 0 && left2_led == 0 && right1_led== 1 && right2_led== 0 )//右邊觸線,小右轉(zhuǎn)修正
- {
- xiaoright_run();
- WriteCmd(LCD_CLS);
- DisplayString(0x0,0,"Turn Right small");
- delay(200);
- }
- else if(left1_led == 0 && left2_led == 0 && right1_led== 1 && right2_led== 1 ) //最右邊觸線,大右轉(zhuǎn)修正
- {
- daright_run();
- WriteCmd(LCD_CLS);
- DisplayString(0x0,0,"Turn Right big");
- delay(200);
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
尋跡小車.rar
(132 KB, 下載次數(shù): 195)
2020-3-28 01:03 上傳
點(diǎn)擊文件名下載附件
程序及仿真 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|