数码管显示2 R9 T# x6 T9 m0 m! D
1.模块引脚
/ L" \+ o Y0 }( @3 {/ X1 kSER->PA1、RCLK->PA2、SCK->PA3. y' B) j$ C' Y1 V6 V
|, n: U$ a3 [
2.Cubemx实现的配置7 F. c* b' f1 k9 P. ?% A
u, c, L1 h! o$ }4 [: w z/ a
( d: W$ b8 }6 W2 z, n
4 b6 T _% K. n- S
3.生成工程! l/ t" g/ b# i. C+ n. H1 j
1.段码宏定义
- b# E3 S) p+ A- const uint8_t Seg7[17] = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00};
复制代码
) O7 w5 J. q4 _; o& T2.数码管显示程序! i3 s7 {- i7 p5 W& L$ w8 K
逻辑理解较易,此处不做解析
# r3 A6 C- I. D% H4 D( P; m8 d% w$ F0 \+ |5 [
- void SEG_Display(uint8_t SET1,uint8_t SET2,uint8_t SET3)
, ^+ s; W. B4 t - {& h/ _* J7 y3 x- ~: _
- uint8_t SEG_Flag,i;8 B" A" p" G& e% s
- SEG_Flag = Seg7[SET3];: [8 C( C. n% Y, `
- for(i = 0; i < 8; i++)
: j6 u$ R6 g+ o4 H) X Q/ ^- k - {
7 b" L$ O2 _0 s% {, S - if(SEG_Flag & 0x80)
. I6 Z7 t4 b/ Q; I: i4 N - {' _1 Q6 ?8 M7 X0 ~+ |; g% s. W. _& Y- O6 j
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);% H! {9 u# p! n5 a5 ]
- }6 p2 F& U6 G2 Y: W( r( M' v, c
- else1 [' E/ q- [$ X2 h6 Z4 q% B
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
7 K9 R# _9 f$ S7 O6 f+ K - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
& C1 k) W, a& Y& e, f) P - SEG_Flag <<= 1;4 ?( U+ @3 B& W5 ~# `. z
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);8 P0 h# E, Y5 s! {
- }
9 o' U# {9 U4 s: p2 B - # D9 g3 m. I+ z+ j# s% s6 I0 W
- SEG_Flag = Seg7[SET2];, Y+ w+ J7 V3 s$ q% ?
- for(i = 0; i < 8; i++)5 B X; U1 K1 o8 {% V5 b. U
- {
3 p9 E; k0 a4 `+ ` - if(SEG_Flag & 0x80) |% Q3 F: C" B2 R: t( x# }
- {
: \8 A, P* |, L; [8 U; w7 B* A - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
1 J2 d; F3 B& ? - }0 u; d# B/ _2 a" Z
- else
" h4 z. Z4 D: N5 B# }7 @ - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);5 Y5 [; c4 @ @+ i" f0 L8 y+ H. x/ B# P- z
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
& g/ k2 v" e; { - SEG_Flag <<= 1;
* P3 r9 x7 _" I0 U- ~; n4 J4 Q - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);& |! x' Q0 s8 `. l8 @8 R
- }
% h0 x7 q! e& p2 T -
" z C z5 D" \9 F' A6 A - SEG_Flag = Seg7[SET1];
( I) w: y; w2 v' H% _' l - for(i = 0; i < 8; i++)
4 S$ T6 x" {: M4 h, K- f, J - {( Z) j. q9 H0 V) O' d/ t! e
- if(SEG_Flag & 0x80)7 |# u# [; X# `
- {
: t9 q. f2 k$ }3 U7 n - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
( P( D$ Q1 Q5 q& x- p3 Z: q - }# ^8 H; ?1 k' ]7 T+ r- X2 }1 U+ f
- else7 Z* A; G$ {3 Q) O K) N1 r( C
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
% B) z% k# ^" |1 c* } - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
5 o' D- r: M4 D$ }- v - SEG_Flag <<= 1;4 b$ q; F1 X8 r* O! |# j
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);% W9 Z% i3 B- s& d% ^
- }
# ?0 J! g* L+ z! i+ G3 V% Y0 r - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
4 |2 t2 Z. D. g/ @$ w - HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);7 s7 l' S$ ?# e( g t9 h
- }
复制代码 , W6 N; _' u3 l) c3 r% e
3.数码管测试% a6 l9 [ Q- R; c5 x3 {, d5 A% G8 ?
0 O2 n5 B# W8 Q8 S6 d. h: j/ I
输出一个520,送给那个TA.* g; w4 g: ~$ u. b/ _/ x
" {! D- m, a# i' ?+ ]1 b
总结2 j/ q2 x1 W. m) |& i; c+ R
7 U1 {% p/ b# x7 L' Z: m) u
2 y+ D% h! j! D9 P
5 h K1 |9 ~8 M, ^' s
8 g! j$ E( d$ j; b, s! } |