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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 RGB_lamp 于 2023-3-16 14:53 编辑
: S0 P+ Z2 V; g% s) c6 R; N2 p! d4 p" u4 m: E6 c2 @1 U
各位大神,我最近想做一个基于单片机PWM功能的流星灯(水滴效果),可是看了一些资料,按着书上的程序做了一边还是不行。那灯亮度压根儿就没变,,,求正解啊。。。。8 i$ m9 n$ H6 @  T& \
#include
; ~! W! m" U9 ~" G+ Z) ^: F* S#include
& R- i5 N0 t" F- Z3 V7 W#define uchar unsigned char+ w+ _  K" t# W; k. q# }  F/ d! J# P$ r
***it PWM=P0^1;
9 Q, o1 U4 u- @% ]* a/ wvoid delay(uchar i)
% Q5 Z2 \% a9 \$ s* m$ {: o{
6 s9 T  d2 B% K$ F2 ^+ c        uchar j;
9 t4 |+ Q& M- G, U8 P        for(;i>0;i--); S$ V5 J$ g6 J; N  [: \
        {
$ C" U7 m( v7 ^5 u. r2 a                for(j=29;j>0;j--)& B- `" }0 A1 i4 @, F
                _nop_();
, p! y' e+ y; P- I! S                _nop_();
3 B/ ?3 j$ c# d! o5 J+ A        }1 \; X5 O: N1 q
}' X, R9 W. `- b' l- }
void PWMout(uchar q)" H& n& m+ y5 ]& Q& F
{
; l! [3 L. Y& q5 u+ y        PWM=1;3 o" ?7 ?% j8 S- A
        delay(q);5 `7 E# J' g9 ^( w  I
        PWM=0;7 M5 P6 \  ], k- A% u9 F
        delay(10-q);
& Z1 `! {7 {5 I+ X! X3 P- J}2 I8 n0 j" k2 ^& z
void main()  B. i3 Y0 i# r% x$ z5 T
{+ F. y7 Z, J3 ~; ]
        while(1)% m- c5 E2 F( ]+ p& j/ G
        {
3 O5 Q1 u# C5 Z! G  Q
* `- {6 t: a" K! _                PWMout(0);. Y: ^0 v# L4 ?% w  i- c7 F
                PWMout(1);
0 U5 W; j8 m( b' j3 c" B# k                PWMout(2);
9 L1 H8 o( S# t0 h% l2 a                PWMout(3);
, t* \% M" {5 n5 U                PWMout(4);
( f2 Z* m8 [' b1 k                PWMout(5);
* R0 s% n7 w  b5 o                PWMout(6);
& E; d- b: B  T. i, n9 A                PWMout(7);
8 M9 ]2 ~$ M- q, E, x! J, @0 t$ I5 M                PWMout(8);) f% f! z( I! h2 y6 }
                PWMout(9);" ~8 A' p% t  J4 b3 l9 i) u: q. K+ f
                PWMout(10);
; h$ O$ k0 {9 E/ Z  N# Y, |( y
  Q; ~, _! F8 H. m3 _1 |8 g        }  C. ?# o6 [* q7 i, g* ]5 f7 `- [
}2 u2 t; g0 \, X3 Y4 F

4 q9 ]( c- t# ^" N' E4 D 3 c! a# u0 E/ t( w  _0 l" x% S
2 \! n# w: \# R2 {7 D* L; H

8 e* q1 M+ e8 r  d/ F% o# p" g: W& s  O5 Q3 U# q" o
  • TA的每日心情
    无聊
    2023-12-15 15:00
  • 签到天数: 380 天

    [LV.9]以坛为家II

    4#
    发表于 2023-3-17 10:04 | 只看该作者
    感谢分享,学习学习

    该用户从未签到

    3#
    发表于 2023-3-16 15:51 | 只看该作者
    用数码管显示,包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

    该用户从未签到

    2#
    发表于 2023-3-16 15:37 | 只看该作者
    #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
    3 v8 k7 A; V/ I; h& I) I7 h" L. W/ }" Z% ~+ B) \
    ***it LED0=P1^0;// 用***it 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号. f( W* c/ @2 z. @) L
    " v5 H' _8 l: u/ C
    0 N; G9 j1 h9 e+ t8 F, n
    void Delay(unsigned int t); //函数声明
    ) o# L, v5 F2 L( w5 a: l# a. ^/ _4 v/*------------------------------------------------8 h4 Y  z3 o2 J4 z
                        主函数7 V6 }- E) q. j& b3 ^. R0 W& e
    ------------------------------------------------*/& H8 H6 j) e& v/ g: c' D6 e2 ]( Y- p
    void main (void)
    ! k  b  j$ _& H$ F3 T{
    ' e" K5 l: g' ^6 h                  3 o9 {/ L/ P, d3 j4 f8 r
    unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值
    0 V# r6 O2 T8 W- vwhile (1)         //主循环
    ; S+ s: c1 I/ c) }0 C  {2 [: s* y, F/ d: i1 I$ ]
    LED0=1;
    4 k5 x# Q7 h' CDelay(60000);        //特意加延时,可以看到熄灭的过程( D3 b( ?: d# b
    for(PWM_LOW=1WM_LOW //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
    8 u0 \$ n! _; I' y: U5 G  L" j& M- L5 F
                       LED0=0;        //点亮LED  2 j, y' `9 T: Y9 b* B
                       Delay(PWM_LOW);//延时长度,600次循环中从1加至599: E6 Z# ~9 w" z1 ?: H, T
                       LED0=1;        //熄灭LED
    + s1 _# ?' C" O              Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1& w+ f7 m4 V7 o3 O4 v. e
         
    - ^; T7 v' S( O! R* P8 H$ r   }
    + ?( _: T. P' t5 k+ L+ f. W- XLED0=0;
    ( {4 y' t- v# n, L7 A2 G% o4 ifor(PWM_LOW=CYCLE-1WM_LOW>0WM_LOW--){ //与逐渐变亮相反的过程
      h- J+ d+ g1 {$ [1 F- w% f( X0 A0 l) ]; U
                       LED0=0;  F* k2 C& r& D3 y* B; A1 F, A/ c
                       Delay(PWM_LOW);0 R( O- v1 a6 _3 T4 `4 M1 L
                       LED0=1;6 W  Y4 `/ p/ E5 p, ^9 \+ F! k
                  Delay(CYCLE-PWM_LOW);
    $ O+ c' N% j, C  A2 R/ d     
      T6 S6 F7 o! j   }, z* u% O) y1 a, O! e
                         //主循环中添加其他需要一直工作的程序, A$ d% y' o7 v* {5 x1 z7 B6 t
      }6 N# ?& F- R! }9 s4 t
    }
    3 I- Y  \! e& {/ o' H* w/*------------------------------------------------9 {6 r( h: _. m2 [0 j, i3 J8 L
    延时函数,含有输入参数 unsigned int t,无返回值/ g! z( Q# ^" R; B
    unsigned int 是定义无符号整形变量,其值的范围是  V/ F5 [) Q9 d& Q0 C
    0~655354 R/ K, [  R( k+ w% S
    ------------------------------------------------*/+ _0 C* ]( f1 @2 r- I' g3 `: Y
    void Delay(unsigned int t)* I( u5 V$ f3 e" g9 K$ W- H
    {
    7 W. O, n) R; K$ a- [7 _1 dwhile(--t);9 C( h& _2 |0 i+ r% n0 f8 _
    }
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-22 02:49 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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