久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

  [復制鏈接]
ID:687441 發表于 2020-3-28 01:07 | 顯示全部樓層 |閱讀模式
四路尋跡小車仿真,液晶顯示小車行駛狀態
包括直行,小右轉,大右轉,小左轉,大左轉
仿真原理圖如下(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(;;)        //死循環
  62.         {
  63.                 if(key == 0)// 實時檢測S2按鍵是否被按下
  64.                 {
  65.                         delay(5); //軟件消抖
  66.                         LCDInit();
  67.               DisplayString(0x0,0,"Left's Go");
  68.                   break;                //退出FOR死循環
  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, 下載次數: 195)

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

搞好了,沒有問題
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久国产成人免费 | 完全免费在线视频 | 亚洲一区二区三区视频 | 欧美激情视频一区二区三区在线播放 | 看av网| h视频免费观看 | 国产视频在线观看一区二区三区 | 日韩资源| 嫩草研究影院 | 午夜精品久久久久久久星辰影院 | 亚洲九九 | 欧美理伦片在线播放 | 中文字幕第三页 | 久久精品国产一区二区电影 | 亚洲欧美日韩久久久 | 国产精品一二三区 | 欧美一区二区另类 | 国产成人精品亚洲日本在线观看 | 亚洲国产精品久久久 | 天堂久久av| 午夜精品在线 | 夜夜爽99久久国产综合精品女不卡 | 成人久久久 | 欧美综合久久久 | 国产 日韩 欧美 在线 | 国产日韩一区二区 | 久久久久久久久久性 | 在线一区二区观看 | 毛片大全 | 欧美日韩国产中文 | 久久久91精品国产一区二区三区 | 99re6在线 | 久久久久久国产 | 日操夜操| 在线观看成年视频 | 九九九色 | 国产欧美日韩一区二区三区在线 | 九九久久精品视频 | 欧美视频免费在线观看 | 一区二区三区四区视频 | 一区二区三区亚洲精品国 |