05_基于wiringPi的数码管驱动编写

本文介绍如何使用树莓派通过TM1650芯片控制LED数码管显示数字,并实现数字跳变的功能。主要内容包括LED数码管的基础知识、TM1650芯片介绍、树莓派IIC接口的使用方法及具体的代码实现。

目的:

       通过数码管案例,熟悉TM1650芯片的使用方法,加深树莓派的IIC接口使用方法。

目录

1、基础知识

1.1、LED数码管基础知识

1.2、TM1650芯片介绍

 1.3、树莓派上IIC的接口使用方法

1.3.1、头文件

 1.3.2、初始化设备ID的函数

1.3.3、读取设备节点值的函数

1.3.4、给设备节点写值的函数

1.3.5、给设备节点的某一个寄存器写值

1.3.6、读取设备节点某一个寄存器的值

2、功能实现

2.1、原理图

2.2、代码实现

 2.2.1、头文件实现

2.2.2、宏定义

2.2.3、TM1650初始化

2.2.4、数码管显示函数

2.2.5、主函数

2.3、生成执行程序

2.4、功能实现


1、基础知识

1.1、LED数码管基础知识

LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。

LED数码管根据LED的接法不同分为共阴和共阳两类,比如我们使用的共阴数码管原理图如下:

图1-1 共阴极数码管原理图

 另外的一种共阳极数码管原理图如图1-2 所示。

图1-2 共阳极数码管原理图

       无论是共阴极还是共阳极数码管,都拥有段引脚和位引脚,其中段引脚用于设定数码管要显示的内容,位引脚用于选择需要显示哪一位数字。如果要在不同的位显示不同的数字,则每次只能有一个位被选中,并在段引脚中送入相应的数据。那我们现在看到的数码管是如何做到在同一时间不同位显示不同的数字的呢?

       这就用到了数码管动态扫描显示的技术,该技术利用了人类视觉系统的暂留性,实际程序显示的时候,是先显示其中一位,然后关闭这位的显示,但由于刷新的频率太高,即使某位的显示关闭了,显示的图像还会在视觉系统中短暂停留,所以,如果数码管轮流以超过50Hz的刷新率显示,人眼是分辨不出来某一位数码管关闭了,这样看起来就像所有的数码管都在显示不同的内容。

1.2、TM1650芯片介绍

      TM1650 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路。内部集成有 MCU,输入输出控制数字接口、数据锁存器、LED 驱动、键盘扫描、辉度调节等电路。

       本次案例使用的是TM1650的数码管驱动功能,原理图如下:

 图1-3 TM1650典型电路

        TM1650可以使用I2C的方式通信,本次案例的控制命令一共用到两条,一是进入模式设置,二是通过下表设定TM1650的模式,并注意要打开显示。

a、数据命令设置

数据命令设置
B7 B6 B5 B4 B3 B2 B1 B0 说明
0 1 0 0 1 0 0 0 模式命令
0 1 0 0 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值