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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 RGB_lamp 于 2023-3-16 14:53 编辑
. b" ~; `- e, Z4 [
2 _, @+ D3 j% F" v$ t8 d  {9 \各位大神,我最近想做一个基于单片机PWM功能的流星灯(水滴效果),可是看了一些资料,按着书上的程序做了一边还是不行。那灯亮度压根儿就没变,,,求正解啊。。。。7 i# \4 j1 v( ^. h
#include
& |8 ?! _3 b# y$ b#include0 ~6 p& x/ B9 d
#define uchar unsigned char
( ]4 x, [2 T0 n+ W. T# z* y- O8 v***it PWM=P0^1;
2 S9 E" j0 t% C% j2 J% Wvoid delay(uchar i)
* \6 d* |1 [" O* Q{& c& X8 [  ]4 G; a% Z
        uchar j;
8 Z2 m* a8 O4 B4 Y1 |        for(;i>0;i--)1 f9 ~, ]- B9 b2 }$ Q; y. Y7 ^* o
        {
; `. l4 F* J/ G8 r2 U                for(j=29;j>0;j--)
- x* G0 S. C: ?! P. X# O( H                _nop_();& ?$ d: T# {& t! I, T
                _nop_();  T* g7 K4 B3 s; d+ C
        }& d, i% I) E: c- |9 q
}$ A8 F. ?( V, G! {! B: A, @
void PWMout(uchar q)
5 `) k  b; r3 A0 k& g6 x& V& `, n" Y{; g/ t! \# v+ z4 o+ [2 S9 [
        PWM=1;1 h2 F8 k! Y/ v$ w+ u' d
        delay(q);) [- }7 [/ i2 s' E  q- y! s; [1 x
        PWM=0;' E4 G% {6 P! k- b. e
        delay(10-q);7 i6 ~$ U; s" M% ~2 L) R
}
! l. f& I( X0 l% j( W8 Avoid main()
* o3 S4 P4 ~8 Z0 A9 I{
* M2 _. d/ j- s        while(1)
4 U" c7 V7 h) ?0 B# g6 P2 r        {
, d2 T( F2 I6 W* f2 c0 B
5 w1 p% [$ B; T/ c                PWMout(0);' ?0 m, w( ?$ S3 k- J+ M% O8 ^
                PWMout(1);0 C0 R, ?7 h0 u" ]2 S8 F
                PWMout(2);
+ i9 ^) x, F, l) I                PWMout(3);2 e5 t- P( T; O! \' g+ p
                PWMout(4);
& o0 i, B: C5 G( J7 R! c* `                PWMout(5);* d' f/ X9 x9 u% _! I6 _
                PWMout(6);
& q* i( X2 r7 j1 b                PWMout(7);
6 z% l% m6 U9 L( \+ B! V                PWMout(8);. S8 z4 V; O$ y- u- G: `
                PWMout(9);, s6 r) \% D2 d( {, Z# B
                PWMout(10);
( a, \- I2 q! d, _0 P9 E
; H& o( o; C" S9 T1 X7 P1 x        }: W, u  a. a7 y! p! P4 X' e
}
; }. P& P: C% T. f+ f # G7 |: C+ w4 b# _8 }" }8 h0 C

1 i$ F; y5 T$ ~2 b- u: i! w7 Z6 ^ $ q' }9 n1 _7 V. J. O$ u6 c# r

5 h5 s+ E: l8 O& }6 v+ @$ e
, y0 l! t- R, Y; `

该用户从未签到

2#
发表于 2023-3-16 15:37 | 只看该作者
#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义4 F2 W: ^4 f# ^* U7 R
* b( P5 F" {: w* R3 l
***it LED0=P1^0;// 用***it 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号
* d' P  ~, s+ W2 A7 X) D5 d$ t& A7 G  Q

) e8 r* x4 T2 q% ^# v5 Zvoid Delay(unsigned int t); //函数声明
& u* s7 L& ?. V4 S/ B/*------------------------------------------------& I& d5 [# O1 U* a
                    主函数0 l' n3 q; }9 s# a0 }7 a
------------------------------------------------*/& e6 g* r) S6 ~% x2 E* H
void main (void)8 S# Q4 {; k# W4 ]6 o
{
, V6 Q( O# M' ]: I/ K0 P; l  E" f( a                  
4 Y, k) G; C3 {& C8 B7 Tunsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值
; ^* S+ t- m3 [* H6 awhile (1)         //主循环/ V3 }6 [" |$ {: m* [' u
  {) ~- {3 j8 y9 |7 d0 T, O
LED0=1;5 K1 b- K8 N$ [) E7 @: e
Delay(60000);        //特意加延时,可以看到熄灭的过程+ J# t) o. L9 \% T
for(PWM_LOW=1WM_LOW //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次) |' a8 y0 ?7 l* l

- w7 l4 `# H" X) f4 o$ ~                   LED0=0;        //点亮LED  
) l% ]8 A8 w! n2 _  V+ b1 {                   Delay(PWM_LOW);//延时长度,600次循环中从1加至599
: V8 @  E& n2 |1 L5 Q                   LED0=1;        //熄灭LED3 k$ r6 x7 V: R3 G" {
              Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1
# k/ N% r- k* S0 p     ) p3 W" Q1 d( ?9 s1 ?/ g& ~
   }
2 i6 [" A( s$ X: G7 F2 ]LED0=0;! \% \/ u+ `* t
for(PWM_LOW=CYCLE-1WM_LOW>0WM_LOW--){ //与逐渐变亮相反的过程  {% L4 ~8 o) R# H

+ w+ J( _' H7 o2 u                   LED0=0;
1 A' G( Z! x! u# ]                   Delay(PWM_LOW);
  x6 m) y- }/ D  Z                   LED0=1;
; b- k; [; u7 G& }. t              Delay(CYCLE-PWM_LOW);
: o6 u& n. o5 b2 ]& c: f8 `& i     
; k( @9 R+ s0 k) I3 b   }
6 O6 G& B* p' d8 E! O                     //主循环中添加其他需要一直工作的程序
' r" w; u$ l, q: p- N6 x  }
+ W: m0 U- O9 n}
' P2 f( I& e; b3 G1 \0 ?) z/*------------------------------------------------4 ]9 h" l9 t# Q
延时函数,含有输入参数 unsigned int t,无返回值# a3 e; p' X7 F- \
unsigned int 是定义无符号整形变量,其值的范围是
6 h4 r" |1 g/ Q; m2 Y3 B2 l$ X0~65535
% \  u$ w- j+ u! U9 a------------------------------------------------*/
; J2 w! p' }( Q' @8 o% M) Z, T: Tvoid Delay(unsigned int t)
( E3 b' G3 Z: J( F% g{' _! Y; h. w( @" X* A# L% I. ~
while(--t);
$ y6 H, n$ h! q3 r' v}

该用户从未签到

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-11-22 02:13 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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