找回密码
 注册
关于网站域名变更的通知
查看: 433|回复: 3
打印 上一主题 下一主题

单片机LED从暗到亮,请问大佬怎么控制?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-9-6 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
各位大佬,单片机控制LED灯怎样从暗到亮?  怎样编写LED灯可以从暗到亮的起动。用P3.7来控制PMOS管。

$ s+ o3 i; t8 {+ q8 C& x0 [( W

该用户从未签到

2#
发表于 2021-9-6 11:05 | 只看该作者

' `5 c  i" }6 z; F' f# N3 [输出占空比可调的PWM脉冲

该用户从未签到

3#
发表于 2021-9-6 14:39 | 只看该作者
好家伙  我程序都给你发出来) C+ t. u4 d4 x( q, G
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义9 R7 V+ c9 [8 I1 n& K

% `" u* M0 }3 ~+ Ssbit LED0=P1^0;// 用sbit 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号
/ e' ]" `. @/ d& E9 c  z/ @. b8 Q6 l. ?+ k& n5 m4 [* i; z
void Delay(unsigned int t); //函数声明' b1 k" W" J, c3 P: J
/*------------------------------------------------
8 F9 |& Y# {8 t# d8 C                    主函数1 V/ r4 n6 \' y# A* f
------------------------------------------------*/6 z- Z$ G3 z. Q
void main (void)" @4 I9 S: P2 N1 \  e: b+ P  F
{2 N0 c' E, x! Y5 N# M  [! g; \7 D% O0 J
                                                                               ! P, W9 Z1 x8 O
        unsigned int CYCLE=600,PWM_LOW=0;        //定义周期并赋值
2 t' `: W1 e# H$ [        while (1)                                                                         //主循环. U7 R$ w7 v( {* Q' i# k* ?
                        {- S  d( ~1 L5 P% L
                                 LED0=1;
" d' p$ x  U4 N+ P% V* k. _0 f/ c                                 Delay(60000);                                //特意加延时,可以看到熄灭的过程4 E0 Q! u0 `' d) W
                                 for(PWM_LOW=1WM_LOW<CYCLEWM_LOW++)//PWM_LOW表示低4 J2 f9 i" N2 L* Q
                                        {, ^/ e: c. a- k7 n6 @, e* L
                                 //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
2 x. V: t& m0 ]2 y* P! A' B                                                        LED0=0;        //点亮LED  8 t, g4 U9 H; h4 {, A$ P" a. R
                                                        Delay(PWM_LOW);//延时长度,600次循环中从1加至599
' p- c( t3 `. h* `- d0 T8 X! a                                                        LED0=1;        //熄灭LED
" V+ r5 I" c0 O/ q& }  V                                                        Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1- q6 w8 \$ q8 a9 ]0 F+ S
                                        }7 j+ L& {+ M$ w# y
                                        LED0=0;
( N& C0 d; s' @7 D                                        for(PWM_LOW=CYCLE-1WM_LOW>0;PWM_LOW--)
. P: ~" a' g1 ?; Y                                        { //与逐渐变亮相反的过程
4 K1 H" b& V8 J" ?                                                LED0=0;/ Z) E* C  O2 Q& P5 n/ B+ P. i
                                                Delay(PWM_LOW);
. E5 B/ y# |8 m$ @' m4 ^4 Y                                                LED0=1;
' g9 N* t6 k& Z                                                Delay(CYCLE-PWM_LOW);
  {3 F9 L0 {  G# _+ V' P, }7 P                                        }                                                
0 P* g2 W' y+ i2 s3 `. E& o7 ~                        }
7 Y5 J) g' v+ t( E# B}% Y  W, M" a- \
/*------------------------------------------------) E7 Y7 @5 v0 A, I  S
延时函数,含有输入参数 unsigned int t,无返回值
2 H# S, B' K7 F, _! F1 ^/ ^, Munsigned int 是定义无符号整形变量,其值的范围是
* K7 R6 b; x: h3 W( X  W0~65535
0 K$ h* Y% J1 `, [9 D5 ?8 T$ `  `------------------------------------------------*/
6 P( h2 i- Q0 c' wvoid Delay(unsigned int t)
$ I5 Q6 T+ u. L8 M{2 r  ?! k7 o1 j3 m
while(--t);
6 r  q/ y9 s" ]& C8 h" |6 ~3 C}

该用户从未签到

4#
发表于 2021-9-8 11:32 | 只看该作者
可以用定时器做一个PWM 周期
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-20 06:29 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表