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

单片机电子灯箱控制器源码-小项目分享

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-5-24 09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
大家都见过电子灯箱吧,就是路边那种闪烁的,这种东西的逻辑控制很简单,就是周边流水灯循环跑马灯,正转10圈,反转10圈,然后同时闪烁3秒,中间的字体是亮5秒,闪烁3秒,依次循环,逻辑不难,我们用开发板上的小灯来实现这样的效果,代码如下:大家都见过电子灯箱吧,就是路边那种闪烁的,这种东西的逻辑控制很简单,就是周边流水灯循环跑马灯,正转10圈,反转10圈,然后同时闪烁3秒,中间的字体是亮5秒,闪烁3秒,依次循环,逻辑不难,我们用开发板上的小灯来实现这样的效果,代码如下:
2 q) r7 c. q6 S/ J5 d& y1 l* q$ m; E& w0 D2 Q. k1 \- W
    /********************************************************6 v8 ~, @$ F' V  ]. D
    *描述:8组小灯正转10圈,反转10圈,常亮5秒,闪烁3秒,依次循环
: X; N. R9 j* d/ Z+ B8 _6 Q    ********************************************************/
1 o1 Y8 f) p! c& K: q' n1 D    #include "stc15w.h"
  Z$ b- c& |# B* Y% J1 v    #include "intrins.h" //包含左移和右移指令
4 U2 }  v( i  \6 {7 ]    #include "string.h"         //字符串
9 Y) D0 a$ s2 F( U* O# c: \/ S    #include "stdio.h"         //标准输入输出2 [$ t  s9 m' _5 C. W

+ a  k" ^4 P+ O- i) Q, S. s
4 V3 A& Y4 e0 V3 c! a( E  Q. C% d. q
    /*******************************************************************************
2 g$ W0 e; V  H: \    * 文件名:位定义
! R' u3 K  ?' q7 E$ {. }  O    * 描  述:2 G, f& V. l  y! e( D: u; @
    * 功  能:7 d( p7 |# N$ @* E7 c9 g/ S
    * 作  者:大核桃, N  V+ t  E" m7 c0 T6 I
    * 版本号:1.0.1(2017.05.23)- Z. n2 g! L  [: b) Z
    *******************************************************************************/
7 N# c* s9 L! j
) B/ T4 R4 r! O( Z5 r    bit flag500ms = 0;//500ms翻转一次9 a; D+ q+ R' x$ e8 i

9 S; ]8 X, v, K7 r8 @+ X) ^    sbit LED0 = P1^0;//
  n# F: v7 _* Z    sbit LED1 = P1^1;
! F; X# ~1 j: S% t' x; A7 Z$ t# ~    sbit LED2 = P1^2;' i3 H# w  O1 `  X" K3 s) t
    sbit LED3 = P1^3;
  Q( a1 I' g9 `. \& Q- \& y) ]4 K" q    sbit LED4 = P1^4;6 v9 X$ u/ [# u3 f) l: E
    sbit LED5 = P3^2;2 Q1 M! b  H) L8 X7 O
    sbit LED6 = P0^0;8 F' Q! m8 {3 }3 J
    sbit LED7 = P0^1;
9 M/ Y. C% s1 Z2 ^) F1 S
5 r) b- ?9 g# H$ r) @    sbit DATA0 = P2^0;//
8 a$ F* n+ s" o, b+ l. Q9 {( f  W4 [    sbit DATA1 = P2^1;//# T: y% [2 I7 p: x
    sbit DATA2 = P2^2;//( T6 n% |( K6 E, D$ ~, o
    sbit DATA3 = P2^3;//
+ d! ~0 N% g* i: ~# ]; |1 R; F7 u    sbit DATA4 = P2^4;//
" X) k" f, y" g# ~: B+ Y: V    sbit DATA5 = P2^5;//
9 l6 ?4 U  Q' v0 K! V  H: K    sbit DATA6 = P2^6;//) [9 ^( h/ ~5 I8 N" m0 }) h7 L8 R
    sbit DATA7 = P2^7;//
- a$ K+ c1 e" ?; {: X5 x! u! \2 w* j6 n5 h3 ~5 X5 G
    typedef unsigned char uint8;//0-255
% W) n# f9 {; \8 b& `- v    typedef unsigned int  uint16;//0-65535! x  d" ^  p- ?! [
    typedef unsigned long uint32;//0-65535*65535" q- {9 ^3 e1 P4 m0 M* q

+ s( L; M( \( J; {    /*******************************************************************************
: }( m* \9 x5 F! d7 q* \    * 文件名:函数前置声明
5 \. X& u0 G% X8 v* _9 o: u; b    * 描  述:' U! X1 S% X' x9 u+ e. E
    * 功  能:' z! H5 M* z7 T6 {  V: x! q
    * 作  者:大核桃
# Q! a  Q, ?/ ]3 n  R* D& |. ~    * 版本号:1.0.1(2017.05.23)
: E. |' H. F+ z1 T2 l2 h5 r. E3 p    *******************************************************************************/
5 p# n$ M; m+ c5 [8 E9 I; c4 C) c: _/ b" l+ t
    void Bsp_Power_Init(void);; p( D7 J  z4 W7 f# ~" B' C
    void Delay500ms();                //@11.0592MHz) x2 {6 v( @! D& Z% x3 y- @. v, c
    void Timer0Init(void);                //1毫秒@11.0592MHz+ e. {+ J. @; j  M4 W) z
( @, x/ e; R; d: ^$ P5 s

" O# n4 n+ ]" Z1 o; G( c
* o' x( `- J7 e" h( I' r5 m, h    /*******************************************************************************+ E- W$ Q3 l7 a: }, w2 t2 F
    * 文件名:主循环入口
. {5 U$ s$ N3 M' j5 }- X/ f& f# }    * 描  述:) S! U- x8 c4 }8 W
    * 功  能:: X/ W5 ^. _3 j5 v4 j$ ~
    * 作  者:大核桃
, l* S. U6 w3 A' K# H  B1 Y' ]* L1 ]' k    * 版本号:1.0.1(2017.05.23)
) j2 p- z  b  y# B, q* t    *******************************************************************************/& `' ?4 L6 o( n+ |( `
    void main(void). T, c7 y1 D/ i% z% ]
    {
3 s9 t9 h( _+ E: H5 k/ E/ _            uint8 i = 0;- c8 ~* ?2 _6 V% i- `
" I  o# U$ ~5 T0 m$ j) w& v7 U& p
            Bsp_Power_Init();//LED端口初始化
/ {* l5 A2 T, f* `3 W; z            Timer0Init();    //定时器0初始化函数" W! h( H/ q3 P0 M( h, ~- Y5 i

7 A% v+ l+ Z1 X6 T/ b            LED0 = 1;
1 }) c# p7 j* }& }* Q. x! u7 m! g. z& c

7 X7 T4 q& x. T( C( r. e            while(1)& |2 C) v2 ^1 i" a" X0 F" g) N
            {
; I+ R; v! ?) ?" v% e: W' Y               for(i = 0; i < 3; i++)
  Y! q9 ?& I" w               {) |; J; v$ r* h- M0 g' N$ n
                            DATA0 = 0;- S' e3 y- D& m! ~6 ?3 F: y3 @
                            Delay500ms();# ^; C: c! q. w- D$ U, R/ W. Z
                            DATA0 = 1;9 d( o) m& p. j4 I' d' u6 g
                            Delay500ms();+ R) p, A3 f/ \. G) X. v% N- T
1 A1 {! L+ x2 B8 r; |
                            DATA1 = 0;" `" W, h' k- Z, @4 A2 H
                            Delay500ms();' c- U6 `$ U; c0 o
                            DATA1 = 1;
4 F0 P( `( y6 J( d( \1 s; _. U                            Delay500ms();9 T1 c3 d. ~" G/ i3 V/ C! {

7 ?  t' U/ K* ^                            DATA2 = 0;, S1 |9 h3 P. Q1 C  D/ W+ y+ v
                            Delay500ms();
6 g! }4 b* F0 J5 y/ r                            DATA2 = 1;8 \8 T# M- c# _0 i
                            Delay500ms();
9 T3 b% `! K+ [8 Q! `
& w6 O( b( R3 S& x9 j1 M, j               }/ R* S# _4 l4 }) j5 ]
, s! t7 R9 l9 T4 n- K
                       for(i = 0; i < 3; i++)8 w% \8 ~2 u; t* Z9 H6 @
               {
/ l" X) D8 t3 j' `+ }  D                            DATA2 = 0;
  f) T3 o* p+ q" F1 R1 n9 K                            Delay500ms();9 a" X$ S+ }, A, u0 V2 K/ {. v$ n
                            DATA2 = 1;
0 a4 @3 m0 {7 f5 L                            Delay500ms();$ `( L& a$ ~; H: F3 X# V2 h

/ m/ m3 u& _- H9 d) ?5 M. p                            DATA1 = 0;
+ O( \4 ~! g1 R# D! E. F7 j2 d                            Delay500ms();: ]6 B5 Q  H1 [* @! k( u
                            DATA1 = 1;
# a' ?% C5 h. L  `9 _' Z                            Delay500ms();) I8 P: K0 R# g) H! B9 \

9 C- a) b1 o  F+ a/ P5 m                            DATA0 = 0;
/ W4 o7 b7 s1 y+ T                            Delay500ms();
  W1 M+ @8 ?! k& |                            DATA0 = 1;5 w1 z' O( \; R3 P+ |7 t8 p1 W2 q0 e
                            Delay500ms();( ?3 Y/ r  @' N+ y6 D) U8 p
, \9 Z+ M0 Q8 q5 G3 Q1 S! }' Z
               }
) p2 x) q- v" Q" w& J$ _' R$ y% v; R; Q% N  F' f
                       for(i = 0; i < 3; i++)
. s% A8 g7 V! P$ k* o7 b- g: K               {" B7 v2 G6 ?- ?: v) w3 F/ T7 R
                            DATA2 = 0;
. ?8 K" U% d. M0 J* e$ J                            DATA1 = 0;
4 |$ V/ d0 |3 @                            DATA0 = 0;
0 d3 T+ d" Q+ S                            Delay500ms();# s3 W  g" g( W% N, P. l2 z, H
# _3 j  i" T" g4 A/ v$ h! y" w! t
                            DATA2 = 1;
) ]! x3 n. N# a' W                            DATA1 = 1;
5 I8 }5 `3 [/ U% y7 ?                            DATA0 = 1;
/ U! u& V8 v7 K, b' R# s                            Delay500ms();2 v, O2 z% H; U' n

% K- l. Z  i% Y3 l/ I               }% G3 p8 z4 E- H" M
            }# Y* N5 U; J8 A

- j- A$ r  p0 n2 {/ ~) i1 X    }7 ?! k3 I+ B, x7 w

# b4 b- `: @; n: V: \5 J7 ?    /*******************************************************************************; I9 o4 R5 W: o1 g: O& e- q
    * 文件名:void Bsp_Power_Init()
2 h, a. Z) `3 }    * 描  述: 数码管上电显示! U% K) I' c, |/ T, v3 @* i' l
    * 功  能:编程模块化
: b  r6 {9 E" W1 `0 p' `    * 作  者:大核桃% a/ Y4 A, g7 n. X8 _
    * 版本号:1.0.1(2017.05.23)
( c+ I; T$ S' a  J    *******************************************************************************/; a" ~  B! z; {2 E+ G) A
    void Bsp_Power_Init(void)3 O) ?; C9 D: K3 X. N2 ^0 d$ ?( p
    {
* q2 X% O& a- n            P0M1 = 0xFC;
. _6 }' h. M+ I; S4 o            P0M0 = 0X03;
/ s& x% \+ @/ v7 `; o; v2 b            P0 = 0X00;0 ?% p- l4 J7 O, B4 L7 O

* P; ?$ `* |# N& j) G- k+ P            P1M1 = 0xE0;
  o* s+ O. M3 ^0 z0 v# o! D            P1M0 = 0X1F;5 R8 U8 l: L. F
            P1 = 0X00;
7 S0 r. X5 f. g+ T( A0 A) H; U# C* e3 s8 }1 z* [2 b5 `
) d/ Q# F$ Y; x) }% D: _% X' c
            //P2口开漏输出
' a. Z% {' ?% i+ w* E+ h            P2M1 = 0XFF;
# n* r5 f' x/ X4 r2 @            P2M0 = 0XFF;8 k  W- v+ i9 W0 u4 V* L2 f
            P2 = 0Xff;
9 q# k  w; a& C* w3 w: \! w" Z    //        //P54,P55口为推挽输出  {4 k- H% w1 r7 Z3 m! }
            P5M1 = 0X00;6 T4 s; O/ S$ I; d3 K7 \
            P5M0 = 0X00;. d1 K7 X/ @3 h" S6 k) b* n: \9 A
            P5 = 0xFF;
# L+ |0 U1 J; Z" d* F3 _/ @. r( D0 N& ~/ M, h$ d( U9 r2 K4 V1 l3 w
            //P37,P36,3.2,P3.3 P3.4口为推挽输出/ F2 C) U  o! F+ U
            P3M1 = 0X00;4 T2 c! z* N7 U4 U# h8 ~, u. R
            P3M0 = 0XFC;
5 B: I7 e5 y" h0 ~            P3 = 0X23;
" p. c' B5 y* ~$ i$ K! i. I4 g  w( ^1 ?7 y; T
    }0 v3 h- r( U8 Y( M6 G
2 |, l6 k' Z1 w! l0 S
    /*******************************************************************************) `! ^$ \- v3 S9 W1 }
    * 文件名:void Delay500ms()                //@11.0592MHz
+ Y& X; Q4 C; ~; S* U0 L    * 描  述: 普通延时函数
8 [7 ?0 h+ R. x, ?0 ~* g    * 功  能:编程模块化2 [, X0 @1 H7 A# u# V. F' a
    * 作  者:大核桃! c! }+ k1 L  ^' u2 H  e
    * 版本号:1.0.1(2017.05.23): L  Q4 ^: h5 C/ H
    *******************************************************************************/- _- V% m0 p4 T+ g1 T; n5 K
    void Delay500ms()                //@11.0592MHz* j% o% e4 n/ h, `2 b
    {, A% _* q6 M: O& n, F1 a# Z
            unsigned char i, j, k;
! Q; h5 b- Q. N( q2 o. x5 |4 p9 M+ ~# Y# ?: d
            _nop_();* b$ B" }, Y7 f0 O0 @& o
            _nop_();5 z6 t8 u2 k* G  C0 q' X
            i = 22;
6 P! U' R5 B$ B* J2 A: R* V: [' j            j = 3;
- c/ D; P, L# |5 k1 K! K; b2 Q            k = 227;
  H* Z3 Z7 Y! S# Y9 ?/ @8 E            do, K( N$ j" W: [' e
            {
3 k3 b' o0 ^5 _) @, @                    do
, n9 S2 v4 i$ v* z- d                    {% Q/ i  @2 @( B6 ~  v) ~' k
                            while (--k);
1 P4 u/ m; a+ O5 @" _                    } while (--j);
8 M2 ]) A5 R9 }3 f! V6 |            } while (--i);" C' {; o) c, n+ D' k( b% F# P( E0 h
    }; c  _: h9 {. h1 B6 L, V6 D) l
& z4 w5 j/ ~2 Z& B* K
    /*******************************************************************************
9 @9 [( s4 t' k3 T3 `+ B0 s! |    * 文件名:void Timer0Init(void)
# \4 a# S% [( k    * 描  述: 定时器0配置# v& k9 t8 j% U' U. U0 `- q, h
    * 功  能:编程模块化7 U, G3 R) R2 W' Q0 A3 E* t
    * 作  者:大核桃$ P) W0 a& k  ]7 |+ s$ U2 u1 Q
    * 版本号:1.0.1(2017.05.23)
3 [7 B! Q" A' ]! s/ B  N7 I/ G    *******************************************************************************/# i2 t% w7 y/ h( U
    void Timer0Init(void)                //1毫秒@11.0592MHz
. ~3 B7 p1 o* E0 U    {
& X7 p4 u$ o' p2 Y% }- u6 C            AUXR |= 0x80;                //定时器时钟1T模式8 r* P2 x- f# F8 E1 Z8 F) @
            TMOD &= 0xF0;                //设置定时器模式 1111_
; ?- F3 F8 _* c) C9 T7 _            TMOD |= 0X01;       //16位模式,不可重装
2 K: D; B  P; Q  v  W, n% Q5 B; l8 n, t$ o
    //        TL0 = 0xCD;                    //设置定时初值3 z. _. G$ X, d, S0 a
    //        TH0 = 0xD4;                     //设置定时初值
8 Q7 ?8 g. t( A0 g0 f& s5 c  z  f3 H: m8 }
            TL0 = (65535 - 11059) % 256;                    //设置定时初值# q. ?8 m5 @8 ~. }
            TH0 = (65535 - 11059) / 256;                     //设置定时初值
% I$ T3 {' v' r* Y
% Q5 _3 L# C  f
# v4 |* j. a+ v& C: [" B            ET0 = 1;            //打开定时器0中断使能
" t2 E6 j; o! m( J# Y" c. w+ B3 [            TR0 = 1;                    //定时器0开始计时8 q* F+ b+ c6 U) h5 v
            EA = 1;             //打开总中断使能
, ]8 }: Q$ [  ~    }
1 i/ u/ ^. ~& \9 e3 i
9 b6 h) ]4 w) [5 c% ~9 w( Q" r% ?* {    void TIME0_IRQ_Handler() interrupt 1
4 j8 }% S7 q2 z& a9 Z6 P4 g$ P    {' _$ R% F3 U0 n' a0 }
            static uint16 tmr10ms = 0;
6 [+ T6 x+ W/ e$ W' {  ?* L            static uint8  tmr3s = 0;9 \. Q* S+ t6 q9 Y2 {, C+ f1 o
            static uint8  tmr5s = 0;
3 k3 d! ^2 O7 @/ r$ D% E            static uint8 a = 0;
6 h8 h% |6 s1 E" x6 U6 w; f/ l1 [$ {
8 v( x' R( T5 b6 |5 ~' d            TL0 = (65535 - 11059) % 256;                    //设置定时初值
0 \" ]3 P8 V% A0 T; T. k. e& d            TH0 = (65535 - 11059) / 256;                     //设置定时初值
6 u% P# L. @# S& o/ x2 i& G3 }! _
  }( K( {: `' X3 z7 X, R            //1ms溢出一次7 P6 b% i1 q9 X8 l, B
            tmr10ms++;
6 }/ P1 H  j* F+ _% o( |' S4 a- b* u4 j% T# P. k
            if(a)
5 J% V1 u' f/ ?$ p            {
; @4 E3 e! E. P' T                    if(tmr10ms >= 500)
: v! _! O5 _  F! J5 E                    {" L8 M" u. l5 A/ ?% j
                            tmr10ms = 0;
, b4 ?* n& k! J/ b! _' n                            DATA4 = ~DATA4;//500ms闪烁依次
& h* R$ X1 J% E8 T" L& I                            tmr3s++;! W# X) M& O% ^
                    }
4 K7 Y" V$ [) v5 E. @# g
- L5 u7 t. k6 _5 X5 m$ a, e                    if(tmr3s >= 6)
- l; B+ N" Q7 T- X* c5 h. ?                    {
' n: r; @) J& K$ z                        tmr3s = 0; //闪烁3次2 u: w5 N5 _! ^) ?% u
                            a = 0;
2 ^4 V. Z# w! d8 M( o/ {3 }                    }* y. z3 i0 L) U+ ^& m" e3 C
                           
" n/ s, z6 B* ^            }
' Y7 ]1 V$ j' S) D            else
  ?8 x" V& f- i6 a2 h            {: g& }! N& ^2 A& ^- S3 w
                    if(tmr10ms >= 500)# k' G; w$ e) G8 b' C
                    {2 ~- _! G) |+ v- X3 c
                            tmr10ms = 0;) G4 f( [- P0 P9 {1 D! w
                            DATA4 = 0; //亮5秒1 a9 O) U6 y# {6 V# }6 N# o' Q! ~
                            tmr5s++;
5 Z8 U# Q9 _2 v# W                    }% k) U+ u  y! R' _9 {" L- a

4 a# U2 E( h3 k1 R                    if(tmr5s >= 10)& ~* k+ B# C" e5 ?( q3 \2 |
                    {
) H8 n+ ?, o8 a: G  k! Z/ M                        tmr5s = 0;" b( f# v1 }! E  L" G
                            a = 1;
, l& J: D  `/ a9 E                    }         
7 X. ]7 D0 @. s* l3 T/ x2 E/ s9 e            }                                  O: h+ j1 q! I  ^
    }
- N5 r8 ?1 X2 K0 {6 a
) _* {& d% q- J2 g) G
  • TA的每日心情
    开心
    2023-6-2 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-5-24 13:23 | 只看该作者
    很不错的分享,值得收藏
    + ?; E' `/ o& h$ \) O8 W+ q7 J2 r7 m! }+ w

    该用户从未签到

    3#
    发表于 2022-5-24 13:32 | 只看该作者
    很不错的分享,Thanks♪(・ω・)ノ

    该用户从未签到

    4#
    发表于 2022-5-24 14:44 | 只看该作者
    了解了解。学习学习。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-18 19:38 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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