找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3529|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)尋聲小車源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:306002 發(fā)表于 2018-4-13 21:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. typedef unsigned int uint;
  3. typedef unsigned char uchar;
  4. int a=0;

  5. sbit IN1=P1^0; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  6. sbit IN2=P1^1; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  7. sbit IN3=P1^2; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  8. sbit IN4=P1^3; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  9. sbit IN5=P1^4; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  10. sbit IN6=P1^5; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  11. sbit IN7=P1^6; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  12. sbit IN8=P1^7; //定義電機(jī)驅(qū)動(dòng)信號(hào)輸出端
  13. sbit out1=P3^2;//定義尋聲模塊信號(hào)左輸入端  //可有可無中斷自動(dòng)觸發(fā)
  14. sbit out2=P3^3;//定義尋聲模塊信號(hào)右輸入端
  15. char L_pwm,R_pwm,t;
  16. void L_qian()
  17. {
  18.    IN1=1;   
  19.    IN2=0;
  20.    IN3=1;      
  21.    IN4=0;
  22. }
  23. void R_qian()
  24. {
  25.    IN5=1;   
  26.    IN6=0;
  27.    IN7=1;      
  28.    IN8=0;
  29. }
  30. void L_ting()
  31. {
  32.    IN1=0;   
  33.    IN2=0;
  34.    IN3=0;      
  35.    IN4=0;
  36. }
  37. void R_ting()
  38. {
  39.    IN5=0;   
  40.    IN6=0;
  41.    IN7=0;      
  42.    IN8=0;
  43. }
  44. void L_hou()
  45. {
  46.    IN1=0;   
  47.    IN2=1;
  48.    IN3=0;      
  49.    IN4=1;
  50. }
  51. void R_hou()
  52. {
  53.    IN5=0;   
  54.    IN6=1;
  55.    IN7=0;      
  56.    IN8=1;
  57. }


  58. void zuozhuan()interrupt 0
  59. {
  60.   if(a==0)
  61. { L_pwm=0;R_pwm=40;a=1;}
  62. else a=0;
  63.   }
  64.   void youzhuan()interrupt 2
  65.   {
  66.    if(a==0)
  67. { L_pwm=40;R_pwm=0;a=1;}
  68. else a=0;
  69.   }

  70. void timer0() interrupt 1
  71. {   TH1 = 0x0FE;
  72.     TL1 = 0x33;
  73.    if(L_pwm>=0)if(t<L_pwm) L_qian(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
  74.              else        L_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
  75.    else if(t<~L_pwm)    L_hou(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
  76.              else        L_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
  77.    if(R_pwm>=0)if(t<R_pwm) R_qian(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
  78.              else        R_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
  79.    else if(t<~R_pwm)    R_hou(); //當(dāng)L_pwm為0時(shí)根據(jù)我們的思維:電機(jī)不應(yīng)該轉(zhuǎn)。將0代入左邊
  80.              else        R_ting(); //L_pwm,發(fā)現(xiàn)不管t取0~39范圍內(nèi)何值時(shí),都不會(huì)執(zhí)行L_qian(),
  81.   t++;
  82.   t%=40;//使每個(gè)pwm周期內(nèi)t的取值都是0~39變化
  83. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表