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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1312|回復: 1
打印 上一主題 下一主題
收起左側

第一次做單片機小車,希望大佬能指點一下

[復制鏈接]
跳轉到指定樓層
樓主
ID:631788 發表于 2020-6-27 10:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
剛學習51單片機不久,接到考核需要實現一款可以通過藍牙來控制減速,加速,直行,轉彎和倒退的小車,在網上搜素資料后準備用tb6612和HC06來實現相關功能,經過相應學習,寫出下面的代碼,目前還沒有組裝好小車,還未進行實驗。現在想問一下這個代碼在邏輯上有沒有什么問題,由于第一次做小車,有一些地方可能想不到,如果有其他問題請大佬指出。電路部分就拿單片機最小系統和HC06以及TB6612直接連接。

單片機源程序如下:
  1. #include<reg52.h>
  2. typedef unsigned char uchar;
  3. typedef unsigned int uint;
  4. sbit PWM_L=P1^1;
  5. sbit PWM_R=P1^2;
  6. sbit P_L_AIN1=P1^3;
  7. sbit P_L_AIN2=P1^4;
  8. sbit P_R_BIN1=P1^5;
  9. sbit P_R_BIN2=P1^6;
  10. sbit STBY=P1^0;
  11. uchar PWM_L_TIME=0;
  12. uchar PWM_R_TIME=0;
  13. uchar PWM_KEY=0;
  14. uchar PWM_VALUE=40;//調速控制
  15. uchar PWM_MIN=0;//控制轉彎
  16. uchar PWM_VALUE_T=40;//
  17. void CHUSHI()//串口初始化
  18. {
  19.   ES=0;                           //關中斷
  20. <div>  SCON = 0x50;                    // <span style='display: inline !important; float: none; background-color: rgb(247, 247, 247); color: rgb(37, 37, 37); font-family: Tahoma,"Microsoft Yahei","Simsun"; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;'>串口工作模式1,REN=1</span>
  21. </div>  TMOD = 0x22;                    // 定時器1工作于方式2,8位自動重載模式, 用于產生波特率
  22.   TH1=TL1=0xFD;                   // 波特率9600 (晶振為11.0592)
  23.   PCON &= 0x7f;                   // 波特率不倍增
  24.   TR1 = 1;                        //定時器1開始工作,產生波特率
  25.   TI=0;                           //接收標志位置0
  26.          ES=1;
  27. }
  28. /*********************************************************************/
  29. void CHULI()//接收處理函數
  30. {
  31.         if (PWM_KEY==0)//直行
  32.         {
  33.                 PWM_VALUE=PWM_VALUE_T;
  34.                 PWM_MIN=0;
  35.                 P_L_AIN1=1;
  36.                 P_L_AIN2=0;
  37.                 P_R_BIN1=1;
  38.                 P_R_BIN2=0;
  39.         }
  40.         if (PWM_KEY==1)//左轉
  41.         {
  42.                 PWM_VALUE=PWM_VALUE_T;
  43.                 PWM_MIN=PWM_VALUE-20;//調整轉彎角度
  44.         }
  45.         if (PWM_KEY==2)//右轉
  46.         {
  47.                 PWM_VALUE=PWM_VALUE_T;
  48.                 PWM_MIN=PWM_VALUE-20;//調整轉彎角度
  49.         }
  50.         if (PWM_KEY==3)//加速
  51.         {
  52.                 if ((PWM_VALUE=PWM_VALUE_T+20)<=100)
  53.                    PWM_VALUE=PWM_VALUE_T+20;//
  54.         }
  55.         if (PWM_KEY==4)//減速
  56.         {
  57.                 if ((PWM_VALUE=PWM_VALUE_T-20)>=0)
  58.                         PWM_VALUE=PWM_VALUE_T-20;
  59.         }
  60.         if (PWM_KEY==5)//后退
  61.         {
  62.                 P_L_AIN1=0;
  63.                 P_L_AIN2=1;
  64.                 P_R_BIN1=0;
  65.                 P_R_BIN2=1;
  66.         }
  67. }
  68. /*********************************************************************/
  69. void PWM_CREATE () interrupt 1
  70. {
  71.         TR0=0;
  72.         TL0 = 0x91;                //設置定時初值
  73.         TH0 = 0xFF;   //10us
  74.         ET0=1;
  75.         PWM_R_TIME++;
  76.         if (PWM_L_TIME>=100)
  77.                 PWM_L_TIME=0;
  78.           PWM_R_TIME=0;
  79.         if (PWM_R_TIME<PWM_VALUE)
  80.         {
  81.                 if (PWM_R_TIME+PWM_MIN>PWM_VALUE)
  82.                 {
  83.                         if(PWM_KEY==1)//左轉
  84.             {
  85.                                 PWM_L=0;
  86.                                 PWM_R=1;
  87.                         }
  88.                         if(PWM_KEY==2)//右轉
  89.                         {
  90.                                 PWM_R=0;
  91.                                 PWM_L=1;
  92.                         }
  93.                 }
  94.                 else
  95.                 {
  96.                         PWM_L=1;
  97.                   PWM_R=1;
  98.                 }
  99.         }
  100.         else
  101.         {
  102.                 PWM_L=0;
  103.                 PWM_R=0;
  104.         }
  105.         TR0=1;
  106. }
  107. /******************************************************************/
  108. void main()
  109. {
  110.         STBY=1;
  111.         EA=1;
  112. CHUS();
  113.   TH0 = 0XA3;                                   //定時時間為100us     
  114.   TL0 = 0XA3;
  115.         TR0 = 1;
  116.         while(1)
  117.         {
  118.                 if(RI==1)                     // 是否有數據到來
  119.     {
  120.       RI = 0;
  121.       PWM_KEY = SBUF;
  122.       CHULI();
  123.                 }
  124.         }
  125. }        
復制代碼


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

使用道具 舉報

沙發
ID:280000 發表于 2020-6-28 17:03 | 只看該作者
代碼有沒有問題也看不出來啊  自己的實物搭建好以后自己把代碼下載進去看看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久精品免费看国产四区 | 国产午夜精品一区二区 | 欧美激情在线播放 | 久久久国产一区二区三区四区小说 | 欧美一a| 日韩人体在线 | 日本在线小视频 | 天天插天天搞 | 国产精品电影网 | 成人久久一区 | 中文字幕在线一区 | 中文字幕一页二页 | 九九综合九九 | 欧美激情久久久久久 | 国产精品免费一区二区 | 亚洲综合99| 日本不卡一区 | 在线观看黄色大片 | 欧美精品一二三 | 99久久久99久久国产片鸭王 | 一级片在线观看 | 81精品国产乱码久久久久久 | 91久久精品一区二区二区 | 午夜免费影视 | 久久日韩精品一区二区三区 | 欧美一级免费看 | 国产精品美女久久久久 | 亚洲精品第一 | 国产精品免费一区二区三区四区 | 完全免费在线视频 | 日本视频免费观看 | a级毛片免费高清视频 | 成人国产综合 | 久久久久久国产 | 一级片在线视频 | 鸳鸯谱在线观看高清 | 成人免费在线播放视频 | 国产精品a级 | 成人小视频在线观看 | 亚洲高清成人在线 | 国产精品一区在线观看 |