日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机产生可调方波(c语言),单片机产生占空比可调方波(PWM)

發布時間:2024/1/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机产生可调方波(c语言),单片机产生占空比可调方波(PWM) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/****************************************************************

程序名稱: 發光二極管D1進行亮度控制

版本: VER1.0

適用板本: 51hei學習板

利用定時器控制產生占空比可變的PWM波對發光二極管D1進行亮度控制

按S2,PWM值增加,則占空比減小,D1燈變亮。

按S3,PWM值減小,則占空比增加,D1燈變暗。

當PWM值增加到最大值或減小到最小值時,蜂鳴器將報警。

*****************************************************************/本文引用地址:http://www.eepw.com.cn/article/201612/324604.htm

#include#includesbit S2 =P3^4 ; //PWM值減少鍵

sbit S3 =P3^5 ; //PWM值增加鍵

sbit BEEP =P2^3 ; //蜂鳴器

unsigned char PWM=0x03 ; //賦初值

///

void Beep();

void delayms(unsigned char ms);

void delay(unsigned char t);

/*********************************************************/

void main()

{

P1=0xff;

TMOD=0x00 ;

TH0=0x00 ; //延時常數

TL0=0x00 ; //頻率調節

TH1=PWM ; //脈寬調節

TL1=0xff ;

EA=1;

ET0=1;

ET1=1;

TR0=1 ;

while(1)

{

do{

if(PWM!=0xff)

{PWM++ ;delayms(10);}

else Beep() ;

}

while(S3==0);

do{

if(PWM!=0x02)

{PWM-- ;delayms(10);}

else Beep() ;

}

while(S2==0);

}

}

/*********************************************************/

// 定時器0中斷服務程序 (頻率)

/*********************************************************/

void timer0() interrupt 1

{

TR1=0 ;

TH0=0x00;

TL0=0x00 ;

TH1=PWM ;

TR1=1 ;

P1=0xfe ; //啟動輸出

}

/*********************************************************/

// 定時器1中斷服務程序 (脈寬)

/*********************************************************/

void timer1() interrupt 3

{

TR1=0 ;

P1=0xff ; //結束輸出

}

/*********************************************************/

//蜂鳴器子程序

/*********************************************************/

void Beep()

{

unsigned char i ;

for (i=0 ;i<100 ;i++)

{

delay(100) ;

BEEP=!BEEP ; //Beep取反

}

BEEP=1 ; //關閉蜂鳴器

delayms(100);

}

/*********************************************************/

// 延時子程序

/*********************************************************/

void delay(unsigned char t)

{

while(t--) ;

}

/*********************************************************/

// 延時子程序

/*********************************************************/

void delayms(unsigned char ms)

{

unsigned char i ;

while(ms--)

{

for(i = 0 ; i < 120 ; i++) ;

}

}

/*********************************************************/

總結

以上是生活随笔為你收集整理的单片机产生可调方波(c语言),单片机产生占空比可调方波(PWM)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。