找回密码
 注册
关于网站域名变更的通知

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

查看数: 849 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-3-16 14:51

正文摘要:

本帖最后由 RGB_lamp 于 2023-3-16 14:53 编辑 1 Y5 @/ V6 Z! B, v9 m 7 d& b( S& q: k' ^. O各位大神,我最近想做一个基于单片机PWM功能的流星灯(水滴效果),可是看了一些资料,按着书上的程序做了一边还是不 ...

回复

dongjia323 发表于 2023-3-17 10:04
感谢分享,学习学习
big_gun 发表于 2023-3-16 15:51
用数码管显示,包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
风吹过后 发表于 2023-3-16 15:37
#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
% D. K* n) b; _5 Y, u" v
* e9 a0 K/ L$ n***it LED0=P1^0;// 用***it 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号% j  {* }9 V; d% I' n

- q( ~2 _9 J2 Q, ^
/ [1 D2 s; J3 l5 P% q1 I; t3 ^- bvoid Delay(unsigned int t); //函数声明) m: I* t( v  [7 o
/*------------------------------------------------
! }! {6 t, O. q. u2 T7 f. o! H                    主函数! l4 C* j. b" o9 Z1 P: W! L6 F
------------------------------------------------*/7 C9 T; i4 H5 q7 p+ g
void main (void)
5 g4 w4 z+ p8 \- |{
7 Y6 c4 w3 o5 @                  
# f8 L; L& \& ]' z5 m% B+ Z2 Uunsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值; ?1 `+ P  h3 p6 W
while (1)         //主循环' G4 v1 O* @( h  b" |/ I
  {- b) O, T" q, e5 p# E+ v- _; d9 O6 U
LED0=1;: o" ?& L4 u$ h' I* t
Delay(60000);        //特意加延时,可以看到熄灭的过程
9 y; ~7 [  _# v, mfor(PWM_LOW=1WM_LOW //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次# ~  h* R% Y" g5 S
( y, V6 ]( [5 f/ y0 D
                   LED0=0;        //点亮LED  
4 y2 j7 w( `/ e( }; I/ S                   Delay(PWM_LOW);//延时长度,600次循环中从1加至599
% s9 G- b# u! ^2 ~6 Y( i  M                   LED0=1;        //熄灭LED
3 e' c% G2 F0 k( E8 M% B0 I              Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1% U. X0 w7 y  {1 [+ R/ y
     ! Q4 U$ W& w- S$ y8 E; u
   }* t$ Y. f5 [7 e. e) i% k
LED0=0;
; g9 k7 o; ^3 v2 y3 R( n* jfor(PWM_LOW=CYCLE-1WM_LOW>0WM_LOW--){ //与逐渐变亮相反的过程
! o, m; I  m: y; j7 Q- ?" L, l2 d1 u, T+ C$ |8 {
                   LED0=0;
+ ~( a( R/ G9 X8 c+ O6 M; r, P                   Delay(PWM_LOW);2 B: Q. u" a6 e, r
                   LED0=1;- G2 g3 k- y0 K7 p8 O
              Delay(CYCLE-PWM_LOW);
$ M5 [. g' }' L5 f0 k0 t     
/ P2 r5 @1 y! y' W1 }2 R" O3 j6 |: I   }
) B" w. x  @0 d9 O                     //主循环中添加其他需要一直工作的程序
- \0 p) O; F& H  }. h# J  ]* o5 [8 ?* |: K
}+ d5 ?) r* P$ B- C
/*------------------------------------------------- b8 M5 ]1 a/ L7 D
延时函数,含有输入参数 unsigned int t,无返回值, k; x! R6 L2 h) N
unsigned int 是定义无符号整形变量,其值的范围是' V4 H5 N* s4 x. |. C* J  M
0~65535
6 {8 p  k  U. Z! c------------------------------------------------*/
/ w4 |, x, T1 v$ Y( yvoid Delay(unsigned int t)
6 P' s4 l( M  L' {3 l: O{" S! x' B; a) p8 l& ~
while(--t);$ W( o3 ~( F2 e; G6 N
}
关闭

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

EDA365公众号

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

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

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

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

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