欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8152|回復: 8
收起左側

單片機尋跡小車PROTEUS仿真及代碼

  [復制鏈接]
ID:687441 發(fā)表于 2020-3-28 01:07 | 顯示全部樓層 |閱讀模式
四路尋跡小車仿真,液晶顯示小車行駛狀態(tài)
包括直行,小右轉,大右轉,小左轉,大左轉
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

仿真界面

仿真界面

主程序流程圖

主程序流程圖


單片機源程序如下:
  1. #include <reg52.h>//52頭文件
  2. #include <lcd.h>//液晶顯示配置文件
  3. unsigned char pwm_left_val; //左電機占空比值 取值范圍0-170,0最快
  4. unsigned char pwm_right_val; //右電機占空比值取值范圍0-170 ,0最快
  5. unsigned char pwm_t;//周期

  6. void delay(unsigned int z)//毫秒級延時
  7. {
  8.         unsigned int x,y;
  9.         for(x = z; x > 0; x--)
  10.                 for(y = 114; y > 0 ; y--);
  11. }       
  12. /*小車前進*/
  13. int forward()
  14. {
  15.         pwm_left_val=100;
  16.         pwm_right_val=100;
  17.         left_motor_go; //左電機前進
  18.         right_motor_go; //右電機前進
  19. }
  20. /*小車小左轉*/
  21. int xiaoleft_run()
  22. {
  23.         pwm_left_val=170;
  24.         pwm_right_val=100;
  25.         left_motor_go; //左電機前進
  26.         right_motor_go; //右電機前進
  27. }
  28. /*小車大左轉*/
  29. void daleft_run()
  30. {
  31.         left_motor_stops; //左電機停止
  32.         right_motor_go; //右電機前進
  33. }
  34. /*小車小右轉*/
  35. int xiaoright_run()
  36. {
  37.         pwm_left_val=100;
  38.         pwm_right_val=170;
  39.         left_motor_go; //左電機前進
  40.         right_motor_go; //右電機前進
  41. }
  42. /*小車大右轉*/
  43. void daright_run()
  44. {
  45.         right_motor_stops;//右電機停止
  46.         left_motor_go;    //左電機前進
  47. }
  48. //定時器0中斷
  49. void timer0() interrupt 1
  50. {
  51.         pwm_t++;//周期計時加
  52.         if(pwm_t == 255)
  53.                 pwm_t = EN1 = EN2 = 0;
  54.         if(pwm_left_val == pwm_t)//左電機占空比       
  55.                 EN1 = 1;               
  56.         if(pwm_right_val == pwm_t)//右電機占空比
  57.                 EN2 = 1;                         
  58. }
  59. void main()
  60. {
  61.         for(;;)        //死循環(huán)
  62.         {
  63.                 if(key == 0)// 實時檢測S2按鍵是否被按下
  64.                 {
  65.                         delay(5); //軟件消抖
  66.                         LCDInit();
  67.               DisplayString(0x0,0,"Left's Go");
  68.                   break;                //退出FOR死循環(huán)
  69.                 }
  70.         }
  71.         delay(1000);//延時1秒
  72.         TMOD |= 0x02;//8位自動重裝模塊
  73.         TH0 = 220;
  74.         TL0 = 220;//11.0592M晶振下占空比最大比值是256,輸出100HZ
  75.         TR0 = 1;//啟動定時器0
  76.         ET0 = 1;//允許定時器0中斷
  77.         EA        = 1;//總中斷允許
  78.         while(1)
  79.         {
  80.                 //為0 沒有識別到黑線 為1識別到黑線
  81.                 if(left2_led == right1_led)
  82.                 {
  83.                         forward();//前進
  84.                         WriteCmd(LCD_CLS);
  85.                         DisplayString(0x0,0,"forward");
  86.                         delay(200);
  87.                 }
  88.                 else if(left1_led == 0 && left2_led == 1 && right1_led== 0 && right2_led== 0 )//左邊觸線,小左轉修正
  89.                         {
  90.                                 xiaoleft_run();
  91.                                 WriteCmd(LCD_CLS);
  92.                             DisplayString(0x0,0,"Turn Left small");
  93.                             delay(200);
  94.                         }
  95.                 else if(left1_led == 1 && left2_led == 1 && right1_led== 0 && right2_led== 0 )//最左邊觸線,大左轉修正
  96.                         {
  97.                             daleft_run();
  98.                                 WriteCmd(LCD_CLS);
  99.                             DisplayString(0x0,0,"Turn Left big");
  100.                             delay(200);
  101.                         }
  102.                 else if(left1_led == 0 && left2_led == 0 && right1_led== 1 && right2_led== 0 )//右邊觸線,小右轉修正
  103.                         {
  104.                             xiaoright_run();
  105.                                 WriteCmd(LCD_CLS);
  106.                             DisplayString(0x0,0,"Turn Right small");
  107.                             delay(200);
  108.                         }       
  109.            else if(left1_led == 0 && left2_led == 0 && right1_led== 1 && right2_led== 1 ) //最右邊觸線,大右轉修正
  110.                     {
  111.                             daright_run();
  112.                                 WriteCmd(LCD_CLS);
  113.                             DisplayString(0x0,0,"Turn Right big");
  114.                             delay(200);
  115.                     }       
  116.                 }               
  117.         }
復制代碼

所有資料51hei提供下載:
尋跡小車.rar (132 KB, 下載次數(shù): 195)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:721016 發(fā)表于 2020-4-15 15:26 | 顯示全部樓層
我想問一下proteus仿真的時候怎么判斷是不是在執(zhí)行循跡啊。顯示屏上一直顯示直行按開關也沒反應。還是說proteus看不到這樣的效果
回復

使用道具 舉報

ID:728133 發(fā)表于 2020-5-1 23:08 | 顯示全部樓層
搞好了,沒有問題
回復

使用道具 舉報

ID:753887 發(fā)表于 2020-5-22 09:31 來自觸屏版 | 顯示全部樓層
沒有電路圖啊
回復

使用道具 舉報

ID:772902 發(fā)表于 2021-4-25 15:51 | 顯示全部樓層
這個尋跡是采用光電還是紅外傳感器啊
回復

使用道具 舉報

ID:912376 發(fā)表于 2021-4-28 17:38 | 顯示全部樓層
這個仿真圖里沒有尋跡模塊,只是在用開關控制小車前進、左轉、右轉
回復

使用道具 舉報

ID:940368 發(fā)表于 2021-6-19 12:11 | 顯示全部樓層
請問這個頭文件和液晶顯示配置文件在壓縮包有嗎
回復

使用道具 舉報

ID:938892 發(fā)表于 2021-6-19 13:25 | 顯示全部樓層

搞好了,沒有問題
回復

使用道具 舉報

ID:945628 發(fā)表于 2021-6-28 21:14 | 顯示全部樓層
能兩個輪子一起動嗎?好多程序都是只能一個輪子動
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表