你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 ———— 数码管简介

[复制链接]
feixiang20 发布时间:2018-1-16 18:12
本帖最后由 feixiang20 于 2018-1-16 20:34 编辑 , H& R5 k3 K! s5 h. w9 N8 c) l

! l. Q% |1 Q6 Q& `: X3 \这次实验,我们将学习如何驱动数码管。在前面几章的学习中,我们掌握了 STM32 的 IO 口最基本的操作。 本次实验对 IO 口操作就不过多解释了,我们将实现数码管间隔 1 秒循环显示 0-f的功能 。, v9 s( v. O( j

6 l3 {' J5 d7 ?( Z! J& x数码管简介& j& H, {5 I% Z3 W" A: M
数码管是一种半导体发光器件,其基本单元是发光二极管。数码管也称 LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。数码管按段数可分为七段数码和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)可分为 1位、2 位、3 位、4 位、5 位、6 位、7位等数码管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公极(COM)的数码管,共阳数码管在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
9 U! @9 E; K0 {7 t: {* L& [6 ?& e, E/ _% w9 k

: K9 L: N/ ]' v  ?led 数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led 数码管常用段数一般为 7 段有的另加一个小数点,还有一种是类似于 3位“+1”型。位数有半位,1,2,3,4,5,6,8,10 位等等,led 数码管根据LED 的接法不同分为共阴和共阳两类,了解 LED 这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图 2 是共阴和共阳极数码管的内部电路,它们的发光原理是一样的只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。led 数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。3 P. |; U# T( E7 s
; Y) Y2 h+ |$ U
数码管硬件电路
4 E9 i: o4 o5 W$ i3 H1 [: G+ t1 j" e1 ^
1.jpg 7 n: s0 i6 F' `
( J/ m% }! Y* C1 C1 W
上面的数码管原理图,我们将数码管的管脚接在单片机的 PC0-PC7 口的,也就是和前面的 led 管脚是一样的。
/ r( t: S7 a3 A* z数码管初始化
+ K4 d( w+ ]5 z& k7 ^" M7 r9 j# gvoid smg_init()8 c* V$ k% |9 B. u0 X& e4 g7 c
{
! ^% c9 u9 B* v# pGPIO_InitTypeDef GPIO_InitStructure; //声明一个结构体变量,用来初始化 GPIO1 [" U9 p( T3 g- ]8 i
/* 开启 GPIO 时钟 */) _! r8 B/ W' j" M2 `+ m
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
. d- a5 J8 X2 f/* 配置 GPIO 的模式和 IO 口 */
6 R" I  i) k% ~% {( X1 v9 K$ tGPIO_InitStructure.GPIO_Pin=smg_du; //选择你要设置的 IO 口6 _" K& C* h+ g9 Q2 I
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
/ |3 h7 C: g# ~: iGPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;) k7 \4 ?7 K) }: G
GPIO_Init(GPIOC,&GPIO_InitStructure); /* 初始化 GPIO */# n6 Q' A$ b$ P# [
}, A& e* `" @. r

9 M' H0 ~( A- @% n7 r7 p+ D6 e* g
数码管端口定义# V. ?0 M, |3 x
#define smg_du    (GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7)//PC0~PC7
' R1 b0 L. l5 |: X: w, @& |6 l8 S" q3 x6 W% a7 G" D6 D7 p6 |
; j6 |0 L1 x0 w8 }% x& i8 r
数码管显示 函数) A2 y$ c3 f0 v( |3 y4 G: f# u2 x
void smg_display()  //静态数码管显示
$ j9 K; y) e* o2 z) g4 y1 f{ . h* ]0 l! Y, Z" P
u8 i;. l( T) r& V7 g1 i& I$ M
for(i=0;i<16;i++)
; v) M* U8 \4 F{
' ^) ?5 N! g7 ?GPIO_Write(GPIOC,(u16)(~smgdu));; L3 p! u, j; A
delay_ms(1000);
" @! D  j; D% @3 h9 u+ [1 I: ~} * a$ l& j! I4 x, K
}
0 n9 `9 G6 \% r# g* R( P. |+ H& o" C  k1 Y  ^

1 U0 L) v& g; w  \* E- N数码管的段选数据保存在数组 smgdu 内,如下 :, |; T5 Z7 j4 @" \& \4 \% U7 Z
u8 smgdu[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};//0~F 数码管段选数据由于使用的是共阳数码管,因此需要对其取反送入数码管显示。. X$ q- Y# q' D! G
  z# Y$ `, X9 b5 q* V
& B& K! ~' C0 }$ u1 ~; o
主函数# P$ J& Z8 ~* O' k
int main()0 Z1 A1 o: J, w0 V% h+ [" j
{                  
) q7 u& o3 J* h* U: J" D; N$ [        smg_init();         //数码管端口初始化函数1 K  I  ]1 n$ i, l1 N3 e' _- ^
        while(1)
& g& e- U. }! ]! R- M        {4 Y* ?8 x( O. m) o6 _9 [# z
                smg_display();        //静态数码管显示, r: o2 H& _3 {& H& A: ~
        }        3 k7 G5 H! x( S, H) {2 l0 |
}: @. U6 T3 {2 ?2 c

& [; f7 M5 O& _; b! q9 q这次的历程分享的虽然简单,但是很实用,在以后的学习和实验中我们都离不来数码管作为显示,到后面我们学习完了RTC可以来做一个数码管的时钟。所以大家要加油哦。
4 u. J0 h* T, |

评分

参与人数 1 ST金币 -5 收起 理由
Inc_brza -5 标题不合格,请别用“--------”做标题.

查看全部评分

收藏 评论1 发布时间:2018-1-16 18:12

举报

1个回答
cloudmr 回答时间:2018-3-24 22:57:16

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版