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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機和L298N的小車制作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:381204 發(fā)表于 2018-9-27 21:38 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
到目前為止, 總算把51單片機過了一遍, 本來暑假就要完成的任務(wù)一直拖到了現(xiàn)在。  51學(xué)完, 就想著先做點東西, 就從小車開始。
     玩小車最重要的是什么? 電機。這個就不用多解釋了。 從今天早上開始到現(xiàn)在 總算是知道點皮毛了。 因為有學(xué)長做過這東西, 所以做起來也有大概的方向  知道是要搞哪些東西。 現(xiàn)在主要是L298N電機驅(qū)動和PWM脈沖控制。  
什么是L298N電機驅(qū)動? 什么是PWM脈沖?
一開始我一無所知, 實驗室里面有L298N驅(qū)動 但是我只知道它是L298N驅(qū)動, 對于怎么使用卻是一點也不知道。 在網(wǎng)上找教程, 淘寶上找資料; 掙扎了一個上午總算是知道了L298N驅(qū)動怎么使用, 相應(yīng)I/O口的含義以及用途。  給一個傳送門:我是L298N驅(qū)動資料地址: L298N_電機驅(qū)動模塊_程序書.doc (1.13 MB, 下載次數(shù): 38)
那什么是PWM呢? PWM是脈沖寬度調(diào)制, 在電機方面主要是通過改變占空比來改變電機的轉(zhuǎn)速, 從而實現(xiàn)加速、減速、轉(zhuǎn)彎等基本功能。 什么是占空比? 占空比指的是一個周期內(nèi), 高電平占這個周期的比例。  占空比越高,
電壓輸出就越高, 電機轉(zhuǎn)動的就越快。
在飛思卡爾、stm32 等芯片中有專門的模塊用來控制PWM, 但是在51單片機中則沒有, 所以需要用到內(nèi)部的定時器來實現(xiàn), 相對來說比較麻煩。 關(guān)于51單片機輸出PWM波可以參考一下這篇文章:如果利用51單片機輸出PWM波
我感覺這個網(wǎng)站對現(xiàn)在我也挺好的。
代碼部分:
程序一: 通過P2^0和P2^1口來控制電機的轉(zhuǎn)動, 通過按鍵來控制電機轉(zhuǎn)動的快慢。
  1. #include <reg52.h>

  2. typedef unsigned int u16;
  3. typedef unsigned char u8;

  4. sbit PWM1 = P2^0;                 
  5. sbit PWM2 = P2^1;
  6. sbit key_add = P3^2;
  7. sbit key_less = P3^3;

  8. u16 count = 50, time;

  9. void init0()
  10. {
  11.         TMOD = 0x01;         // 方式一
  12.         TH0 = (65536 - 10)/256;                // 賦初值
  13.         TL0 = (65536 - 10)%256;
  14.         TR0 = 1;       // 開啟定時器0
  15.         EA = 1;                   // 開啟總中斷
  16.         ET0 = 1;       // 定時器0允許中斷
  17. }
  18. void delayms(u16 z)   // 延遲函數(shù)
  19. {
  20.         u16 i, j;
  21.         for (i = z; i > 0; i--)
  22.                 for (j = 110; j > 0; j--);
  23. }
  24. void speed_add()     // 加速函數(shù)
  25. {
  26.         if (key_add == 0)
  27.         {
  28.                 delayms(2);
  29.                 if (key_add == 0)
  30.                 {
  31.                         count += 5;  // 通過改變占空比來進行加速
  32.                 }
  33.                 while (!key_add);
  34.         }
  35. }
  36. void speed_less()//減速函數(shù)
  37. {
  38.         if (key_less == 0)
  39.         {
  40.                 delayms(2);
  41.                 if (key_less == 0)
  42.                 {
  43.                         count -= 5;
  44.                 }
  45.                 while (!key_less);
  46.         }
  47. }  
  48. int main (void)
  49. {
  50.         init0();
  51.         while (1)
  52.         {
  53.                 speed_add();
  54.                 speed_less();        
  55.         }
  56.         return 0;
  57. }
  58. void T0_inter() interrupt 1
  59. {
  60.         TR0 = 0;
  61.         TH0 = (65536 - 10)/256;
  62.         TL0 = (65536 - 10)%256;
  63.         TR0 = 1;
  64.         

  65.         PWM1 = 0;
  66.         time ++ ;
  67.         if (time < count)// 因為總數(shù)是100, 所以可以直接看出占空比是多少。
  68.         {
  69.                 PWM2 = 1;
  70.         }
  71.         else
  72.         {
  73.                 PWM2 = 0;
  74.         }
  75.         if (time >= 100)
  76.         {
  77.                 time = 0;
  78.         }
  79. }
復(fù)制代碼

程序2:
  1. #include<reg52.h>

  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. uchar time,count=50,flag=1;//低電平的占空比

  5. sbit PWM1=P2^0;//PWM 通道 1
  6. sbit PWM2=P2^1;//PWM 通道 2
  7. sbit key_turn=P3^3; //電機換向


  8. void delayxms(uint z);
  9. void Motor_turn(void);
  10. void timer0_init(void);


  11. void main(void)
  12. {
  13.         timer0_init();
  14.         while(1)
  15.         {
  16.                 Motor_turn();
  17.     }
  18. }

  19. void delayxms(uint z)//延時xms程序
  20. {
  21.     uint x,y;
  22.         for(y=z;x>0;x--)
  23.                for(y=110;y>0;y--);
  24. }

  25. /***電機正反向控制****/
  26. void Motor_turn(void)
  27. {
  28.         if(key_turn==0)
  29.         {
  30.                 delayxms(2);//此處時間不能太長,否者會的中斷產(chǎn)生沖突
  31.                 if(key_turn==0)
  32.                 {
  33.                         flag=~flag;
  34.                 }
  35.                 while(!key_turn);
  36.         }
  37. }

  38. /***********定時器0初始化***********/
  39. void timer0_init(void)
  40. {
  41.     TMOD=0x01; //定時器0工作于方式1
  42.     TH0=(65536-10)/256;                // 賦初值
  43.     TL0=(65536-10)%256;
  44.     TR0=1;                                         // 開啟定時器
  45.     ET0=1;                                         // 允許定時器0中斷
  46.         EA=1;                                         // 開啟總中斷
  47. }

  48. /**************定時0中斷處理******************/
  49. void timer0_int(void) interrupt 1
  50. {
  51.         TR0=0;//設(shè)置定時器初值期間,關(guān)閉定時器
  52.     TH0=(65536-10)/256;
  53.     TL0=(65536-10)%256;
  54.     TR0=1;
  55.     if(flag==1)//電機正轉(zhuǎn)
  56.     {
  57.             PWM1=0;
  58.                 time++;
  59.         if(time<count)        //占空比
  60.         {
  61.                 PWM2=1;
  62.         }
  63.         else
  64.         {
  65.                         PWM2=0;
  66.                }
  67.         if(time>=100)
  68.         {
  69.                 time=0;
  70.         }
  71.         }
  72.     else //電機反轉(zhuǎn)
  73.     {
  74.             PWM2=0;
  75.         time++;
  76.         if(time<count)
  77.         {
  78.                 PWM1=1;
  79.         }
  80.         else
  81.                 {
  82.                 PWM1=0;
  83.                 }
  84.         if(time>=100)
  85.         {
  86.                 time=0;
  87.         }
  88.         }
  89. }
復(fù)制代碼


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

使用道具 舉報

沙發(fā)
ID:381204 發(fā)表于 2018-9-27 21:40 來自觸屏版 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報

板凳
ID:405334 發(fā)表于 2018-10-4 15:55 來自觸屏版 | 只看該作者
好東西
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产乱码久久久久久 | 精品国产乱码一区二区三区a | 国产亚洲久 | 午夜国产| 福利视频一区二区 | 国产精品久久久久久久久久免费 | 91久久久久 | 久久久久国产一区二区三区四区 | 天天看天天操 | 成人不卡| 精品国产精品一区二区夜夜嗨 | 精品不卡| 日韩视频一区二区 | 日韩欧美国产精品一区二区三区 | 精品久久久久久久久久久久 | 99热这里都是精品 | www.日韩| 成人网视频 | 精品一区二区在线观看 | 国产精品久久久久无码av | 国产精品福利一区二区三区 | 久久久久久国产 | 7799精品视频天天看 | 国产精品日产欧美久久久久 | 久久久男人的天堂 | 91黄色片免费看 | 国产a区 | 在线观看国产wwwa级羞羞视频 | 中文字幕一区二区视频 | 国产一区二区三区四区在线观看 | 特黄色一级毛片 | 亚洲综合激情 | 国产专区免费 | 久久精品亚洲 | 亚洲高清视频一区二区 | 亚洲精品视频在线看 | 特级黄一级播放 | 欧美久久视频 | 亚洲高清一区二区三区 | 中文字幕在线观看 | 不卡一区二区三区四区 |