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

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

QQ登錄

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

搜索
查看: 2944|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

利用單片機(jī)定時(shí)器產(chǎn)生的占空比可調(diào)的PWM程序,采用C51(AT89s51)編寫(xiě)的C語(yǔ)言程序,...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:662327 發(fā)表于 2019-12-12 12:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
// 利用定時(shí)器控制產(chǎn)生占空比可變的 PWM 波
// 按K5,PWM值增加,則占空比減小,LED 燈漸暗。
// 按K6,PWM值減小,則占空比增加,LED 燈漸亮。
// 當(dāng)PWM值增加到最大值或減小到最小值時(shí),蜂鳴器將報(bào)警。
/*********************************************************/
#include < reg51.h >
#include < intrins.h >
sbit K5 =P3^2 ; //增加鍵
sbit K6 =P3^3 ; //減少鍵
sbit BEEP =P3^7 ; //蜂鳴器
unsigned char PWM=0x7f ; //賦初值
void Beep();
void delayms(unsigned char ms);
/*********************************************************/
void main()
{
P2=0xff;
TMOD=0x21 ;
TH0=0xfc ; //1ms延時(shí)常數(shù) 12M
TL0=0x18 ; //頻率調(diào)節(jié)
// TH1=PWM ; //脈寬調(diào)節(jié)
// TL1=0 ;
EA=1;
ET0=1;
ET1=1;

TR0=1 ;
while(1)
{
do{
if(PWM!=0xff)
{PWM++ ;delayms(10);}
else Beep() ;
}
while(K5==0);
do{
if(PWM!=0x00)
{PWM-- ;delayms(10);}
else Beep() ;
}
while(K6==0);
}
}
/*********************************************************/
// 定時(shí)器0中斷服務(wù)程序.
/*********************************************************/
void timer0() interrupt 1
{
// TR1=0 ;
TH0=0xfc ;
TL0=0x66 ;

TR1=1 ;
P2=0x00 ; //啟動(dòng)輸出
}
/*********************************************************/
// 定時(shí)器1中斷服務(wù)程序
/*********************************************************/
void timer1() interrupt 3
{
TH1=PWM ; //用定時(shí)器的方式2,是數(shù)據(jù)重裝TH-TL中,改變PWM的值即該變定時(shí)器的初值
TR1=0 ;
P2=0xff ; //結(jié)束輸出
}
/*********************************************************/
//蜂鳴器子程序
/*********************************************************/
void Beep()
{
unsigned char i ;
for (i=0 ;i<100 ;i++)
{
delayms(2) ;
BEEP=!BEEP ; //Beep取反
}
BEEP=1 ; //關(guān)閉蜂鳴器
delayms(100);
}

/*********************************************************/
// 延時(shí)子程序
/*********************************************************/
void delayms(unsigned char ms)
{
unsigned char i ;
while(ms--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}
/*********************************************************/

你想讓輸出口是P1^7,我這用的是P2口為輸出,將其變化一下即可
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:475402 發(fā)表于 2019-12-13 16:41 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

板凳
ID:243394 發(fā)表于 2019-12-14 09:27 | 只看該作者
謝謝樓主分享!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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