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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機驅動直流電機,測試可用,可調速

[復制鏈接]
跳轉到指定樓層
樓主
ID:334683 發表于 2018-5-21 10:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51 驅動直流電機,測試可用,可調速

單片機源程序如下:
  1. #include <REG52.H>               //包含51單片機相關的頭文件
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. /*==================
  5. 對各個輸出端口的定義
  6. 對占空比的端口定義
  7. ====================*/
  8. sbit IN4=P1^3;                          //定義左輪前進  
  9. sbit IN3=P1^2;                          //定義左輪后退  
  10. sbit IN1=P1^0;                          //定義右輪前進  
  11. sbit IN2=P1^1;                                                        //定義右輪后退
  12. sbit ENA=P1^6;                                                     //定義右輪使能
  13. sbit ENB=P1^7;                                                    //定義左輪使能
  14. uint Duty_left;                                                        //定義左輪占空比
  15. uint Duty_right;                                                //定義右輪占空比
  16. uint i;                                                                    //中斷中控制占空比變量

  17. /*===========
  18. ms級延時函數
  19. =============*/
  20. void delay(uint n)  
  21. {
  22.     int x,y;
  23.         for(x=n;x>0;x--)
  24.         for(y=115;y>0;y--);
  25. }
  26. /*=======
  27. 停止函數
  28. =========*/
  29. void tingzhi()
  30. {
  31.    Duty_left=0;                        //左輪占空比
  32.    Duty_right=0;                //右輪占空比
  33.    IN1=0;                                   
  34.    IN2=0;                                   
  35.    IN3=0;                                 
  36.    IN4=0;

  37. }

  38. /*=======
  39. 前進函數
  40. =========*/
  41. void qianjin()
  42. {  
  43.    Duty_left=100;                         //左輪占空比
  44.    IN4=0;
  45.    IN3=1;
  46.    delay(3000);
  47.    ENB=0;
  48.    delay(3000);
  49.    ENB=1;
  50. }




  51. /*============
  52. pwm初始化函數
  53. ==============*/
  54. void pwm_init()               
  55. {
  56.     TMOD |= 0x01;        //設置定時器工作方式0x01
  57.     TH0=(65536-1)/256; //取約150HZ,12M晶振,每次定時66us,分100次,
  58.         TL0=(65536-1)%256;        //這樣開頭定義的變量正好直接表示占空比的數值
  59.         EA=1;                          //打開總中斷
  60.         ET0=1;                          //開啟定時器0中斷
  61.         TR0=1;                          //啟動定時器0
  62. }
  63. main()
  64. {       
  65.    pwm_init();
  66.    while(1)
  67.    {
  68.                 qianjin();
  69.    }
  70. }
  71. /*========
  72. 中斷函數
  73. ==========*/
  74. void T0_timer() interrupt 1
  75. {
  76.            i++;                 
  77.         if(i<=Duty_right)
  78.           ENA=1;
  79.         else
  80.           ENA=0;
  81.         if(i<=Duty_left)
  82.           ENB=1;
  83.         else
  84.           ENB=0;
  85.           if(i==100)
  86.           {
  87.                   i = 0;
  88.           }
  89.     TH0=(65536-1)/256; //取約150HZ,12M晶振,每次定時66us,分100次,
  90.         TL0=(65536-1)%256;        //這樣開頭定義的變量正好直接表示占空比的數值       
  91. }
復制代碼

所有資料51hei提供下載:
直流電機驅動.zip (21.86 KB, 下載次數: 91)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:436901 發表于 2018-11-30 23:46 | 只看該作者
還是不太懂它的原理
回復

使用道具 舉報

板凳
ID:282457 發表于 2018-12-1 02:18 | 只看該作者
TH0=(65536-1)/256; //取約150HZ,12M晶振,每次定時66us,分100次,
TL0=(65536-1)%256;        //這樣開頭定義的變量正好直接表示占空比的數值

如果采用12T的89c52的話,這個定時時間應該是1us,頻率是1MHz。
如果是1T的CPU,定時時間約1/12us,頻率是12MHz.
正確的應該是(不會是故意寫錯的吧):
TH0=(65536-66)/256; //取約150HZ,12M晶振,每次定時66us,分100次,
TL0=(65536-66)%256;  

評分

參與人數 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:525407 發表于 2019-5-18 23:30 | 只看該作者
沒有圖么?
回復

使用道具 舉報

5#
ID:525407 發表于 2019-5-18 23:36 | 只看該作者
i都不初始化變量么?
回復

使用道具 舉報

6#
ID:525407 發表于 2019-5-18 23:37 | 只看該作者
定時器0溢出標志位也沒清除
回復

使用道具 舉報

7#
ID:808225 發表于 2020-9-8 22:18 | 只看該作者
我個人覺得,這程序不能實現調速。整體看下來,這程序是截取的,而且截取的不對,怎么看都有問題。
回復

使用道具 舉報

8#
ID:817950 發表于 2020-9-11 16:08 | 只看該作者
直接硬件生成PWM吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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