周立功教授新书《面向AMetal框架与接口的编程(上)》,对AMetal框架进行了详细介绍,通过阅读这本书,你可以学到高度复用的软件设计原则和面向接口编程的开发思想,聚焦自己的“核心域”,改变自己的编程思维,实现企业和个人的共同进步。经周立功教授授权,即日起,致远电子公众号将对该书内容进行连载,愿共勉之。
LED 数码管
静态显示
如图4.10 所示是由2 个共阳极的LN3161BS 组成的LED 数码管电路,R1~R8 为限流电阻,c1 和c2在内部并联连接。如果将段选端a~dp 与位选端com0、com1 连接到AM824-Core 的PIO0_8~PIO0_15 与PIO0_17、PIO0_23,则通过程序即可控制笔段的亮灭。由于数码管的8 个段选端全部都要经过com 口才能得到供电,因此需要增加三极管提高com 口的驱动电流,以弥补LPC824 GPIO 驱动电流的不足。当com 为低电平时三极管导通,则数码管的c1、c2 为高电平,即选通数码管。此时只要数码管的任一段选端为低电平,则点亮数码管相应的笔段。
MiniPort-View 数码管模块通过MiniPort B(排母)与AM824-core 相连,同时将其余不使用的I/O 通过MiniPort A(排针)引出,实现模块的横向堆叠,其对应AM824-Core 的MiniPort 接口J4的功能定义详见图4.11。
“日”形数字显示除了能够显示10 进制数字0~9,有时也用于显示16 进制字母AbCdEF 或其它一些非常简单的符号。按照二进制的计算方法,8 段显示有256 种组合,去掉“点(dp)”的显示,其笔段的组合为128 种(27),而数字0~9 只有10 个符号,因此要想得到我们希望的显示符就必须对显示段进行编码。显然,如果要想点亮数码管的某一个笔段,则只需将对应的笔段置0就可以了。即输出低电平至com0 端,同时输出低电平至b、c 段,点亮LED 得到字符“1”。由此可见,按照数字的笔画排列,则很容易得到10 个数字0~9 共10 个显示字符,七段共阳数码管10 个数字段码表详见表4.2。
表4.2 七段共阳极数码管段码表
如果以8 位数值表示段码,当其相应位为0 时,则表示对应的段点亮。bit7~0 分别与dp~a 对应,假设bit0 为0,即点亮a。为了方便访问,不妨将段码存放到一个数组中。即:
本文摘自:ZLG致远电子