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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機怎么模擬PWM波(詳解!帶程序)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:70941 發表于 2014-12-26 18:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式




51系列單片機無PWM輸出功能,可以采用定時器配合軟件的方法輸出。對精度要求不高的場合,非常實用。

一般可以使用兩個定時器來實現,如果單片機是S51的話使用T0和T1,如果是S52的話建議使用T0和T2,因為定時器在工作方式2的八位重裝模式下定時比較準確,這里我們使用T0和T1
用T0定時器完成PWM輸出,脈寬固定,T1來決定高平的寬帶來進行PWM調制
具體程序如下:

其中晶振12M,載波頻率20KHZ,直接用P0.1來驅動直流電機,直流電機正極接電源正,單片機低平驅動,這樣灌電流大。
  1. #include < reg51.h >
  2. #include < intrins.h >

  3. sbit  K1 =P1^4 ;                    //增加鍵
  4. sbit  K2 =P1^5 ;                    //減少鍵
  5. sbit  P00 =P0^1;
  6. sbit  BEEP =P3^7 ;                //蜂鳴器
  7. unsigned char PWM=0xe7;   //賦初值

  8. void Beep();
  9. void delayms(unsigned char ms);
  10. void delay(unsigned char t);

  11. /*********************************************************/
  12. void main()
  13. {

  14.      P1=0xff;
  15.     TMOD=0x21 ;
  16.     TH0=0xff ;             //50us延時常數
  17.     TL0=0xce ;            //頻率調節

  18.     TH1=PWM ;            //脈寬調節
  19.     TL1=0 ;

  20.      EA=1;
  21.      ET0=1;
  22.      ET1=1;
  23.    
  24.      TR0=1 ;

  25.    while(1)
  26.    {
  27.      do{
  28.             if(PWM!=0xff)
  29.            {PWM++ ;delayms(10);}
  30.            else Beep() ;
  31.          }
  32.      while(K1==0);

  33.      do{
  34.            if(PWM!=0xce)
  35.           {PWM-- ;delayms(10);}
  36.            else Beep() ;
  37.           }
  38.      while(K2==0);
  39.    }
  40. }

  41. void timer0() interrupt 1
  42. {
  43.     TR1=0 ;
  44.     TH0=0xff ;
  45.     TL0=0xce ;
  46.     TH1=PWM ;
  47.     TR1=1 ;
  48.     P00=0 ;      //啟動輸出
  49. }


  50. void timer1() interrupt 3
  51. {
  52.     TR1=0 ;
  53.     P00=1 ;     //結束輸出
  54. }

  55. /*********************************************************/
  56. //蜂鳴器子程序
  57. /*********************************************************/

  58. void Beep()   
  59.   {
  60.       unsigned char i  ;
  61.       for (i=0  ;i<100  ;i++)
  62.         {
  63.           delay(100)  ;
  64.           BEEP=!BEEP  ;                //Beep取反
  65.         }
  66.      BEEP=1  ;                            //關閉蜂鳴器
  67.      delayms(100);
  68.   }

  69. /*********************************************************/
  70. // 延時子程序
  71. /*********************************************************/
  72. void delay(unsigned char t)
  73. {
  74.     while(t--)   ;
  75. }

  76. /*********************************************************/
  77. // 延時子程序
  78. /*********************************************************/
  79. void delayms(unsigned char ms)

  80. {
  81.     unsigned char i ;
  82.     while(ms--)
  83.      {
  84.         for(i = 0 ; i < 120 ; i++) ;
  85.      }
  86. }

  87. /*********************************************************/
復制代碼




評分

參與人數 2黑幣 +17 收起 理由
莫德爾 + 9 很給力!
這貨不是小武啊 + 8 回帖助人的獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:75851 發表于 2015-4-1 00:49 | 只看該作者
看看學習一下
回復

使用道具 舉報

板凳
ID:74143 發表于 2015-4-3 14:31 | 只看該作者
這款程序在學習板上試了一下,不是很理想。硬件是調節LED燈的亮度變化。
回復

使用道具 舉報

地板
ID:72611 發表于 2015-4-4 17:04 | 只看該作者
學習了,謝謝分享
回復

使用道具 舉報

5#
ID:76142 發表于 2015-4-4 23:22 | 只看該作者
謝謝分享
回復

使用道具 舉報

6#
ID:80976 發表于 2015-6-21 10:24 | 只看該作者
看看效果如何,感謝分享
回復

使用道具 舉報

7#
ID:184049 發表于 2017-4-1 18:03 | 只看該作者
謝謝分享
回復

使用道具 舉報

8#
ID:186002 發表于 2017-4-4 14:08 | 只看該作者
終于明白了點兒了,不錯,贊一個
回復

使用道具 舉報

9#
ID:199329 發表于 2017-7-20 10:29 | 只看該作者
謝謝了
回復

使用道具 舉報

10#
ID:224984 發表于 2017-8-5 15:26 | 只看該作者
很好 但是P00是什么意思
回復

使用道具 舉報

11#
ID:248932 發表于 2017-12-4 21:30 | 只看該作者
不知道自己能不能學的會
回復

使用道具 舉報

12#
ID:139071 發表于 2018-1-19 16:08 | 只看該作者
樓主分享
回復

使用道具 舉報

13#
ID:272625 發表于 2018-2-17 16:36 | 只看該作者
我把程序改到自己的開發板上實驗效果不好,調節范圍太小了.
回復

使用道具 舉報

14#
ID:290932 發表于 2018-3-13 19:20 | 只看該作者
TR1為什么不賦1.
回復

使用道具 舉報

15#
無效樓層,該帖已經被刪除
16#
ID:291446 發表于 2018-3-13 19:36 | 只看該作者
不錯用定時器實現的
回復

使用道具 舉報

17#
ID:138443 發表于 2018-4-27 23:47 | 只看該作者
學習學習,謝謝
回復

使用道具 舉報

18#
ID:297166 發表于 2018-9-12 17:40 | 只看該作者
強烈建議加一個三極管驅動,8550之類的,這樣很可能燒單片機,過幾天可能的話我分享一下我的作品
回復

使用道具 舉報

19#
ID:272269 發表于 2018-10-8 13:36 | 只看該作者
超給力
回復

使用道具 舉報

20#
ID:398758 發表于 2018-10-8 16:48 | 只看該作者
請問這樣做脈沖輸出能占用單片機多少資源?比如我想做個30K的方波輸出驅動,響應速度怎樣
回復

使用道具 舉報

21#
ID:398758 發表于 2018-10-9 12:30 | 只看該作者
也可以用單片機直接驅動高速光耦再驅動其他器件,如三極管或mos管
回復

使用道具 舉報

22#
ID:475617 發表于 2019-2-26 15:42 | 只看該作者
學習學習
回復

使用道具 舉報

23#
無效樓層,該帖已經被刪除
24#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线观看视频一区 | 欧美日韩综合一区 | 伊人久久免费 | 二区精品| 欧美一区二区精品 | av在线一区二区三区 | 亚洲一区二区三区在线视频 | 欧美激情在线精品一区二区三区 | 久久亚洲一区二区三区四区 | 成人h动漫亚洲一区二区 | 日韩在线观看一区 | 日韩欧美在线一区 | 欧美成人h版在线观看 | 日日操夜夜操天天操 | 国产精品精品视频一区二区三区 | 极品的亚洲 | 黄色毛片免费视频 | 刘亦菲国产毛片bd | 国产成人精品一区二区在线 | 黑人一级黄色大片 | 韩日一区二区 | 午夜精品视频 | 夜夜爽99久久国产综合精品女不卡 | 久久综合久久久 | 日韩av视屏| 在线观看精品视频网站 | 真人毛片 | 中文字幕1区2区 | 91久久久久久久久久久久久 | 久久精品久久久久久 | 久久99精品久久久久 | 国产福利精品一区 | 国产日韩欧美另类 | 欧州一区二区三区 | 日韩av在线一区 | 成人av一区 | 欧美激情视频一区二区三区在线播放 | 岛国在线免费观看 | 亚洲日本乱码在线观看 | 4h影视 | 日韩精品一区二区在线观看 |