找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2227|回復(fù): 1
收起左側(cè)

51單片機(jī)pwm調(diào)制程序與Proteus仿真圖 適合初學(xué)者

[復(fù)制鏈接]
ID:876099 發(fā)表于 2021-7-31 10:32 | 顯示全部樓層 |閱讀模式
來(lái)51黑電子論壇很久了,在眾多大佬大牛的資料分享下我學(xué)習(xí)到了很多,我目前也是一個(gè)初學(xué)者,最近搞懂了以前很久沒(méi)搞懂的pwm脈沖調(diào)制,個(gè)人覺(jué)得我這應(yīng)該是最通俗易懂的,程序通過(guò)仿真和示波器測(cè)試,下面分享一下自己的源代碼,如果有哪里不是很好希望有大佬提出

下面是單片機(jī)代碼   
  1. #include <REGX51.H>
  2. unsigned int condition=10;//這里高電平占一份
  3. unsigned int cnt;
  4. sbit pin=P2^0;
  5. sbit led=P1^0;
  6. sbit key=P3^0;
  7. void button();
  8. void delay(unsigned int t)
  9. {
  10. while(t--);
  11. }

  12. void main()
  13. {
  14.     TMOD=0x01;
  15.     TL0 = 0x38;                //設(shè)置定時(shí)初值
  16.         TH0 = 0xFF;
  17.         EA=1;
  18.         ET0=1;               
  19.         TR0 = 1;
  20.                 while(1)
  21.                 {
  22.                      if(cnt>=100)//整個(gè)周期100
  23.     {
  24.         cnt=0;
  25.     }
  26.     if(cnt<condition)              
  27.     {
  28.     pin=1;
  29.     }
  30.     else
  31.     {
  32.     pin=0;
  33.     }  button();
  34.   }
  35. }
  36. void Isr01() interrupt 1
  37. {

  38.         TL0 = 0x38;                //設(shè)置定時(shí)初值
  39.         TH0 = 0xFF;
  40.         cnt++;
  41. }

  42. void button()           //按下開(kāi)關(guān)改變上升沿的時(shí)間
  43. {
  44. if(key!=1)
  45. {
  46.   delay(50);
  47.   if(key!=1)
  48.   {
  49.    condition=condition+10;
  50.    led=!led;
  51.    if(condition==100)
  52.    {
  53.             condition=0;
  54.    }
  55.    while(!key);
  56.   }
  57. }
  58. }
復(fù)制代碼

~)9H__2UZF%YV_P~3H(C)OY.png 0LXUJFP%PA8{JQTOB[A]9}F.png

附件在2樓下載

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:876099 發(fā)表于 2021-7-31 10:33 | 顯示全部樓層
51黑電子論壇pwm波調(diào)制.zip (48.6 KB, 下載次數(shù): 37)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表