求一个 STC89C52RC单片机pwm调光控制C程序 求大神帮忙,单片机考证用,完了重谢。

谢谢... 谢谢 展开
 我来答
春尘从0D
2013-11-15
知道答主
回答量:3
采纳率:0%
帮助的人:4249
展开全部
STC单片机具有PWM输出功能,最近玩12864LCD万年历时,用的是杜洋的FT4时钟电路,用他提供的H文件控制时,具有调光功能,由于只是玩一玩,没有购买源码,而网上流行的程序都没有此功能,无奈,只能自己弄,好在杜老师及人所及早在网站中备下了资料,简单攒一下,居然成功了,并成功的汇入了万年历的程序中,现在将其改成完整的控制程序公开于此供参考。

STC单片机单/双键控制LED亮度PWM调光程序 原创WanNengGong 2010/09/20
参考程序: 杜洋工作室PWM功能程序模块
输出口为P1.4(PWM1)经1KΩ电阻接晶体管S8550的b极,e极接Vcc,c极接背光电源端。

#include<STC12C5A60S2.H> //头文件
#define uchar unsigned char
#define uint unsigned int
uchar vx=5;
//vx=5在用于12864LCD的LED背光调整时上电为半亮度状态,可根据自己的用途及要求任意设定
sbit KEY_H=P2^4;
sbit KEY_L=P2^5;

void PWM_init (void){//PWM初始化函数
CMOD=0x02; //设置PCA定时器
CL=0x00;
CH=0x00;
CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(0100 0010)
CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同
CCAP1H=0x00; // PWM1初始时为0
CR=1; //启动PCA定时器
}

void PWM1_set (uchar a){//PWM1占空比设置函数
CCAP1L=a; //设置值直接写入CCAP1L
CCAP1H=a; //设置值直接写入CCAP1H
}

void DelayM(unsigned int a){//延时函数 1mS/次(用于1T单片机)
unsigned char n,i,j;
while(--a!=0){
for(n=1;n>0;n--)
for(j=222;j>0;j--)
for(i=12;i>0;i--);
} }

void main(void)
{
KEY_H = 1;KEY_L = 1;
PWM_init ();
while(1)
{
PWM1_set(vx*24);
//数字24是配合vx调试取得的,此时vx的赋值范围约为1-10对应最暗-最亮
//--------减调整---------//
if (KEY_L == 0 ){
DelayM(20); //延时20毫秒消抖动
if(KEY_L == 0){ //如果20SM后KEY_L还是0状态则确认下调键是按下的
vx--;
if(vx<1){vx=5;}
//如果设定vx=10,将语句改为if(vx<1){vx=10;}则为单按键循环控制,则可去除加调整控制部分
}
while(KEY_L == 0);//等待键松开
}
//--------加调整---------//
if (KEY_H == 0 ){
DelayM(20);
if(KEY_H == 0){
vx++;
if(vx>10){vx=5;}
}
while(KEY_H == 0);
}
}
}

不好写,一年多没玩了~
追问
单片机pwm调光程序 定时器模拟
将一号LED设置为最亮
2号为一号的一半亮度
三号为二号一半
直到八号 能实现这个么?
百度网友ec35c0b5a
2013-11-16 · TA获得超过1692个赞
知道大有可为答主
回答量:2508
采纳率:73%
帮助的人:1200万
展开全部
这个是完全可以实现的,先给你一个思路:
一、如果您控制的是交流电
1、通过外部搭建电路来检测交流电的过零时刻。
2、检测到过零时刻后,你通过控制PWM的触发点来控制可控硅的触发角来控制输出功率,就可以控制您的交流电压高低,从而控制你的lamp是亮还是暗、
至于您说的,通过1234号日期来控制你的亮度,是完全可以实现的,只是需要增加实时时钟芯片而已。

二、如果是控制直流灯,那就更简单了,直接PWM波控制N-MOS或者三极管的导通时间来调节输出电压的高低即可!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式