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

PWM控制led流星灯(水滴效果)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-3-16 14:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 RGB_lamp 于 2023-3-16 14:53 编辑
4 t. d9 e, f0 K- T+ q, k) g1 X; x9 }0 r2 h& i
各位大神,我最近想做一个基于单片机PWM功能的流星灯(水滴效果),可是看了一些资料,按着书上的程序做了一边还是不行。那灯亮度压根儿就没变,,,求正解啊。。。。
3 }2 I) e8 ]) A. _#include
  L1 g9 ]+ b/ h& I  Z#include% h5 \) s% @* j2 `
#define uchar unsigned char. k: O( M; S1 \8 g0 r
***it PWM=P0^1;+ i7 c+ G) @4 W" K. b& x3 p
void delay(uchar i)
0 M7 ]* o" \6 m% e& C; R+ s{- w+ _' }) p5 c% o0 `
        uchar j;
+ Z. E5 _  n: B. n% y  e        for(;i>0;i--)
7 ]  J( e% W  w, b8 ?) [/ _        {/ n: |, z  A# w$ w( B$ |
                for(j=29;j>0;j--). Z: _: {% {% F5 T
                _nop_();: r5 \* Q/ z; I2 a4 `
                _nop_();0 ]0 r! b! ]+ S5 j
        }
4 F4 h/ s  K1 j9 w}0 j- q! a- r" i+ b
void PWMout(uchar q)
0 W$ i. p$ q; @- x  K8 |{( z2 u5 ^- b1 n' [& X8 m. z4 j
        PWM=1;/ y8 A& J& x; M8 G: t- q- W
        delay(q);
9 }0 B0 L% g  c  X        PWM=0;+ v* y, \9 P/ X) i& c
        delay(10-q);
# L" ^. S3 k, K$ ~, W. h2 M! [/ v}
. u, Z! V3 n  O/ R, evoid main(); z& T' y3 M# y) ], D0 s: l7 f" G
{
' R; j' ?* q7 y) S/ o( `7 u6 i( ]        while(1), n# X1 ?6 e" H3 F
        {3 B+ _$ A! A: i3 h/ H; V
  k/ o: y5 X6 n) x
                PWMout(0);
/ Q7 n; u8 F1 t# A4 l: L- L0 }                PWMout(1);, m2 s) J8 E$ b8 V
                PWMout(2);+ w/ ^# ?. _6 X5 N5 [
                PWMout(3);3 S, L. z, v( I- Q% O6 R: T
                PWMout(4);* Y2 V6 W- p' h6 U7 w2 `
                PWMout(5);
( d; }2 W, \$ ?, L, j# {                PWMout(6);0 m$ G% M0 H$ l! I
                PWMout(7);1 C8 v- y# X2 C( X; q
                PWMout(8);
: n3 \6 [( c% ^) b7 O2 F+ z                PWMout(9);
0 k6 A; d: U$ v' {/ f4 w5 x# ~* j                PWMout(10);0 J- ^; s# v# r+ j8 e% Q3 A/ n

& w/ K  f7 }# k7 O        }
- A" z  \2 Y$ |}7 o" H( H: `2 B6 j

9 A: L7 z- K4 O# E: [1 {3 p' M & {0 @+ C6 y8 Y7 M: U- K
( K* S. G& b3 ^* C1 J2 C
0 }3 s8 c' y* f

* e$ o( T" B8 v) k; V; p3 W! p( Z

该用户从未签到

2#
发表于 2023-3-16 15:37 | 只看该作者
#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义3 P" f( [/ C- ?9 x$ m

7 a8 u: [: U) j% l1 L: M' D. H***it LED0=P1^0;// 用***it 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号
1 y" u1 `5 W) T/ e* g: K* S1 m; v! w' g/ H% w! ^: R

4 N2 V; J  j1 D0 d8 P6 o3 @8 P' p$ Mvoid Delay(unsigned int t); //函数声明. A5 W- @9 b- C; K
/*------------------------------------------------
, U" ^# @+ F8 k" E4 I0 Y. |                    主函数8 n. b. N4 i$ n
------------------------------------------------*/
* _* F5 t7 m' |- c7 xvoid main (void)
5 @! G" k% w& J# t# ^1 b{
2 U( O" t# I8 l  T                  * x3 b% D/ f6 F% S+ B! ^
unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值% y: l1 q+ N( p' \2 @
while (1)         //主循环
2 ~! p4 P1 n$ E  @  {
0 x1 [. T6 b7 G" N- uLED0=1;: E+ t. G: B( N
Delay(60000);        //特意加延时,可以看到熄灭的过程
- M( i1 M# M8 Y0 a7 o& a; k6 Tfor(PWM_LOW=1WM_LOW //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次( U& G; O. _% E, L

9 v0 T5 L# O$ F8 |/ T, s* }) K                   LED0=0;        //点亮LED  ! q2 @( L& N- R$ d
                   Delay(PWM_LOW);//延时长度,600次循环中从1加至5997 h" P  J: o7 E& {& m6 h  }
                   LED0=1;        //熄灭LED
! h/ ~8 t9 \( A              Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1
8 }: Y. H, U" y) s6 @- p+ Z     * r3 M- e. `& f4 R0 C  |% W. c
   }
- q  b8 R- U6 l$ C0 X$ BLED0=0;
$ a$ G" V/ h1 }  xfor(PWM_LOW=CYCLE-1WM_LOW>0WM_LOW--){ //与逐渐变亮相反的过程3 T2 |; p/ K3 J" T& S* Z8 B+ N

! r" S/ M) S+ E: W0 {3 `                   LED0=0;) k  S; K  z: |  f! l+ S! D' Q
                   Delay(PWM_LOW);( G4 T$ T2 ^$ }0 D2 v& Y
                   LED0=1;
3 \6 D6 a/ X: y: y              Delay(CYCLE-PWM_LOW);
& X1 N8 ^) ~3 N     7 e* o! L# x& P# x9 T% Z
   }( \% ^5 ~2 b- D9 L
                     //主循环中添加其他需要一直工作的程序1 p) b% Y* i, ~" l
  }' V; c3 ~! s# d" _5 ^& @/ }
}
; D# x4 j' w6 f8 [9 D/*------------------------------------------------
& D( [1 ]* @# u0 V6 x: Y) Q+ {延时函数,含有输入参数 unsigned int t,无返回值
, @8 a$ P* @7 F0 k: aunsigned int 是定义无符号整形变量,其值的范围是* b# z* \! h* k$ \& |% W
0~65535! e  I' v  l0 F! M2 m
------------------------------------------------*/6 a# i& g. ]- V8 x% h1 i' J& }
void Delay(unsigned int t)
# p; q- n4 N' J- S# j{  I* s: z' r1 N( w9 V: c9 K* d
while(--t);. Z; h* y# x3 p" ?2 \. C. g
}

该用户从未签到

3#
发表于 2023-3-16 15:51 | 只看该作者
用数码管显示,包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  • TA的每日心情
    无聊
    2023-12-15 15:00
  • 签到天数: 380 天

    [LV.9]以坛为家II

    4#
    发表于 2023-3-17 10:04 | 只看该作者
    感谢分享,学习学习
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-9-30 06:32 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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