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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機成功產生PWM波的方法 含源代碼

  [復制鏈接]
跳轉到指定樓層
樓主
PWM 是“脈沖寬度調制”的意思。
PWM 實際上是在單片機的某個引腳輸出一系列的矩形波,其周期一般是固定的;而其高電平、低電平所占用的時間,是可以受控調整的。
高電平與周期占用的時間之比,稱為占空比,其值為0~1之間。
PWM 的應用很廣,簡單的說,它可以控制燈光的亮度、可以控制直流電機的轉速,甚至還可以輸出語音信號。
新型的單片機,往往都含有硬件的 PWM 模塊,編寫程序就很簡單;而老式的MCS-51系列,就不具備這個條件。
其實,在沒有 PWM 硬件的單片機上實現 PWM,也并不難,只需一個定時器,令其工作在中斷方式即可。

題目:AT89C52單片機輸出可調 PWM 波。
要求:
1。單片機的晶振是12MHz,輸出周期為1s。
2。用兩個開關控制占空比的增加和減少,分20等級。
針對這個題目,做而論道設計了一個簡單的實驗電路:
 在 P2 口的 8 條線輸出 PWM 波形;
 在 /INT1、/INT0 外接了兩個按鍵,用來調整占空比;
 在 P0 口外接了兩個 BCD 數碼顯示器,用來顯示當前的占空比的等級。
 實驗的時候,可以使用示波器來觀察 P2 口輸出的波形。
 如果把 PWM 波形的頻率提高,也可以用 LED 觀察到漸亮漸暗的效果,目前看,只是閃爍的時間發生變化。

電路以及仿真效果如下圖:



//程序如下:
  1.     #include<reg52.h>
  2.     unsigned int a, b;
  3.     //------------------------------------------
  4.     void main()
  5.     {
  6.              TMOD = 0x01;                 //T0定時方式1
  7.              TH0 = (65536-50000) / 256;   //50ms@12MHz
  8.              TL0 = (65536-50000) % 256;
  9.              TR0 = 1;

  10.              ET0 = 1;
  11.              EX0 = 1; EX1 = 1;
  12.              IT0 = 1; IT1 = 1;
  13.              EA = 1;

  14.              a = 0;
  15.              b = 10;
  16.              while(1);
  17.     }
  18.     //------------------------------------------
  19.     void time0() interrupt 1
  20.     {
  21.              TL0 = (65536-50000) % 256;
  22.              TH0 = (65536-50000) / 256;   //50ms@12MHz
  23.              a++;
  24.              if(a == 20) a = 0;           //在這里調整周期.
  25.              if(a < b) P2 = 0xff;        //在這里調整占空比.
  26.              else   P2 = 0x00;
  27.              P0 = ((b / 10) << 4) + b % 10; //顯示占空比等級
  28.     }
  29.     //------------------------------------------
  30.     void X0_INT() interrupt 0
  31.     {
  32.              b++;
  33.              if(b > 19) b = 19;           //占空比等級最大為19
  34.     }
  35.     //------------------------------------------
  36.     void X1_INT() interrupt 2
  37.     {
  38.              b--;
  39.              if(b < 1) b = 1;             //占空比等級最小為1.
  40.     }
復制代碼

以上代碼下載:
代碼.rar (516 Bytes, 下載次數: 401)


評分

參與人數 1黑幣 +1 收起 理由
siya42 + 1 淡定

查看全部評分

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

使用道具 舉報

沙發
ID:185968 發表于 2017-4-4 11:03 | 只看該作者
看了帖子有點啟發,感謝分享
回復

使用道具 舉報

板凳
ID:225076 發表于 2017-9-27 14:19 | 只看該作者
能不能把所有的代碼發給我看看
回復

使用道具 舉報

地板
ID:267046 發表于 2018-1-24 19:12 | 只看該作者
第一次,多謝啦
回復

使用道具 舉報

5#
ID:267046 發表于 2018-1-24 20:43 | 只看該作者
哥,代碼不全啊,附件
回復

使用道具 舉報

6#
ID:272695 發表于 2018-3-9 10:39 | 只看該作者
附件的代碼不全啊
回復

使用道具 舉報

7#
ID:254356 發表于 2018-3-28 15:15 | 只看該作者
感謝樓主
回復

使用道具 舉報

8#
ID:254356 發表于 2018-4-3 16:56 | 只看該作者
請問為什么我生成的方波是斜的?

回復

使用道具 舉報

9#
ID:350208 發表于 2018-6-12 13:30 | 只看該作者
不錯學習了呀
回復

使用道具 舉報

10#
ID:258628 發表于 2018-7-2 10:56 | 只看該作者
這b太黑了就差兩行
回復

使用道具 舉報

11#
ID:366460 發表于 2018-7-6 19:28 來自手機 | 只看該作者
樓主請問怎么把占空比的值顯示在液晶屏內
回復

使用道具 舉報

12#
ID:366460 發表于 2018-7-6 21:28 來自手機 | 只看該作者
萌木頭 發表于 2018-7-2 10:56
這b太黑了就差兩行

就差一黑幣,難受
回復

使用道具 舉報

13#
ID:366460 發表于 2018-7-6 22:46 來自手機 | 只看該作者
樓主,占空比等級怎么顯示到1602里?求教。。
回復

使用道具 舉報

14#
ID:366460 發表于 2018-7-8 15:28 來自手機 | 只看該作者
若改成lcd顯示欲望比什么
回復

使用道具 舉報

15#
ID:410024 發表于 2018-10-31 09:33 | 只看該作者
看了帖子有點啟發,感謝分享
回復

使用道具 舉報

16#
ID:439757 發表于 2018-12-5 09:02 | 只看該作者
stc89c51
回復

使用道具 舉報

17#
ID:433613 發表于 2019-1-22 00:15 | 只看該作者
你好,在仿真電機在最大的占空時的速度看起來有點慢,怎樣可以調快點
回復

使用道具 舉報

18#
ID:297735 發表于 2019-4-15 22:16 | 只看該作者
看看看看,嘿嘿  不錯哦
回復

使用道具 舉報

19#
ID:578183 發表于 2019-7-8 19:23 | 只看該作者
請問接lcd又該如何接呢
回復

使用道具 舉報

20#
ID:586798 發表于 2019-7-19 11:37 | 只看該作者
學習大神
回復

使用道具 舉報

21#
ID:444215 發表于 2019-7-19 14:22 | 只看該作者
代碼不全,沒看就損失幾個幣
回復

使用道具 舉報

22#
ID:575976 發表于 2019-7-19 22:54 | 只看該作者
我用STC15的硬件PWM可以做到帶加減速緩沖帶動2DM556的驅動2000的細分空轉工作在1000RPM,快還是慢啊?
回復

使用道具 舉報

23#
ID:847157 發表于 2020-11-22 14:19 | 只看該作者
感謝樓主,很有啟發
回復

使用道具 舉報

24#
ID:851585 發表于 2020-12-11 13:26 | 只看該作者
就這水平,坑我5黑幣,就一個框架,還不如自己寫的
回復

使用道具 舉報

25#
ID:432653 發表于 2020-12-11 19:10 | 只看該作者
mhxbyl 發表于 2018-7-6 21:28
就差一黑幣,難受

有幣也是白給的程序包里啥都沒有
回復

使用道具 舉報

26#
ID:432653 發表于 2020-12-11 19:13 | 只看該作者
能退幣嗎!最后5個幣給他收走了
回復

使用道具 舉報

27#
ID:745698 發表于 2020-12-11 22:06 來自手機 | 只看該作者
液晶屏顯示怎么做的啊
回復

使用道具 舉報

28#
ID:162664 發表于 2020-12-12 08:55 | 只看該作者
額 想法是好的。這種事情我也做過,但是后邊很少做這種事情,原因下邊解釋。
凡是利用定時器io口翻轉的方式實現了PWM,頻率越高,頻繁的中斷會占用alu。
如果框架搭的不好,可能會有一定的影響。真的除非是你真的只用單片機實現一個功能。
想法有兩種。
1。短時間的定時器,中斷時間是 100us,甚至更短,中斷一個周期計數,一個占空比計數。
2。調整中斷時間,也就是定時器,code主體中,調整進入中斷的時間。
無論是怎么樣,只要是用定時器中斷做的pwm。理解之后code怎么實現是看個人的編程習慣,但是本質是一樣的東西。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片av免费看 | 在线观看精品 | 欧美精品久久久久久久久老牛影院 | 你懂的在线视频播放 | 欧美色综合一区二区三区 | a级片在线观看 | 亚洲精品3 | 在线观看亚洲一区二区 | 福利二区 | 国产精品视频专区 | 国产成人精品一区二区在线 | 久精品久久 | 亚洲区一区二区 | 日日天天 | jlzzxxxx18hd护士| 伊人久久成人 | 超碰在线人人 | 狠狠色综合网站久久久久久久 | 欧美一区二区三区在线视频 | 99国产精品视频免费观看一公开 | 国产成人a亚洲精品 | 亚洲综合在线一区 | 国产精品自拍视频 | 亚洲国产精品一区二区第一页 | 国产精品日产欧美久久久久 | 久久精品久久久久久 | 日韩福利在线 | 欧美激情精品久久久久久变态 | 久久精品国产免费一区二区三区 | 久久久精品国产 | 男人天堂免费在线 | 国产分类视频 | 国产成人精品一区二区 | 成人在线播放 | 国产成人精品一区二区三区在线 | 国产精品一区在线观看 | 欧美精品在欧美一区二区少妇 | 中文字幕亚洲视频 | 97av视频在线观看 | 97av在线 | 欧美一区二区三区在线观看 |