标题:
51单片机LED PWM调光程序
[打印本页]
作者:
51黑ff
时间:
2016-9-9 23:34
标题:
51单片机LED PWM调光程序
基于51单片机的对LEDPWM调光程序.zip
(7.51 KB, 下载次数: 66)
2016-9-9 23:34 上传
点击文件名下载附件
下载积分: 黑币 -5
用STC12C5624AD写的PWM可调C程序
//本程序用占空比可调节的PWM方波来控制大功率LED的亮度,PWM波占空比可从0到100
// PWM 控制 LED 灯渐亮渐灭程序
// 晶振为12M
// 利用STC12C5624AD单片机的PWM功能产生占空比可变的 PWM 方波
// 按K1,PWM值增加,则占空比减小,LED 灯渐暗。
// 按K2,PWM值减小,则占空比增加,LED 灯渐亮。
// 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。
//…..安徽师范大学物理与电子信息学院07级电子信息工程专业 曾祥…………..//
#include<reg52.h>
sfr CCON=0xD8;
sfr CMOD=0xD9;
sfr CL=0xE9;
sfr CH=0xD8;
sfr CCAP0L=0xEA;
sfr CCAP0H=0xFA;
sfr CCAPM0=0xDA;
unsigned char PWM=0x7f; //PWM初值
unsigned char flag=0;
sbit K1 =P2^6 ; //增加键
sbit K2 =P2^7 ; //减少键
sbit BEEP=P2^5; //蜂鸣器
sbit CR=0xDE;
void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);
void main(void)
{
CMOD=0x02; //PCA计数脉冲选择为fos/2
CL=0x00;
CH=0x00;
CCAP0L=0xC0;
CCAP0H=PWM;
CCAPM0=0x42;
CR=1;
while(1)
{
if(K1==1&&K2==1)
flag=0;
if(K1==0)
{
delay(50);
if(K1==0&&flag==0)
{
if(PWM<0xf5)
{
CR=0; PWM+=10; delayms(10); CR=1;
}
else
{ PWM=0xff;Beep();}
flag=1;
}
}
if(K2==0)
{
delay(50);
if(K2==0&&flag==0)
{
if(PWM>0x0a)
{
CR=0; PWM-=10 ;delayms(10); CR=1; }
else {PWM=0x00;Beep();}
}
flag=1;
}
CCAP0H=PWM;
}
}
/*********************************************************/
//蜂鸣器子程序
/*********************************************************/
void Beep()
{
unsigned char i ;
for (i=0 ;i<100 ;i++)
{
delayms(3) ;
BEEP=0 ; //Beep取反
}
BEEP=1 ; //关闭蜂鸣器
delayms(100);
}
/*********************************************************/
// 延时子程序1
/*********************************************************/
void delay(unsigned char t)
{
while(t--) ;
}
/*********************************************************/
// 延时子程序2
/*********************************************************/
void delayms(unsigned char ms)
{
unsigned char i ;
while(ms--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}
复制代码
作者:
yuanri
时间:
2016-9-10 15:25
谢谢楼主分享
作者:
lele4608
时间:
2016-9-11 07:39
本帖最后由 lele4608 于 2016-9-11 08:48 编辑
能把当前的分级值,用2位数码管显示出来吗,不需要太多的分级?有其他可以替换的芯片吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1