匿名用户
1级
2012-08-08 回答
我有一个可以借鉴一下:
/*******************************************************************/
// 利用定时器控制产生占空比可变的 PWM 波
// 按K5,PWM值增加,则占空比减小,LED 灯渐暗。
// 按K6,PWM值减小,则占空比增加,LED 灯渐亮。
// 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。
/*********************************************************/
#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延时常数 12M
TL0=0x18 ; //频率调节
// TH1=PWM ; //脉宽调节
// TL1=0 ;
EA=1;
ET0=1;
ET1=1;
TR0=1 ;
while(1)
{ <

这篇博客分享了一个使用C51(AT89s51)编写的C语言程序,该程序通过定时器中断产生占空比可调的PWM波。用户可以通过按键控制PWM值,进而改变LED灯亮度。当PWM值达到最大或最小时,蜂鸣器会发出报警。程序中包括定时器0和定时器1的中断服务程序,以及延时和蜂鸣器子程序。
最低0.47元/天 解锁文章
4352

被折叠的 条评论
为什么被折叠?



