AVR 8段数码管 函数

这篇文章介绍如何几个驱动数码管的AVR函数,可动态显示或静态显示。
详细信息见配置节。

0.引用

[codesyntax lang=”c”]

#include "digit_led.h"

[/codesyntax]
其他头文件均不需要额外引用,将会自动引用这些函数

1.板级配置

板级配置通过C中的常量实现,根据常量的配置生成的内容会有少许不同。
板级配置需要根据实际的电路进行,所有配置都在globalcfg.h中

常量名 含义
LED_PIN 数码管a-h输入
DIGIT_LED_TYPE 数码管类型:1为共阴2为共阳
DIGIT_LED_NUM 数码管的个数,最大允许配置为16,当大于8时必须使用译码器驱动公共端。如果配置为1,则为静态显示
DIGIT_LED_DECODER 使用译码器驱动时配置,3为3-8译码器,4为4-16译码器,最大配置为4
DIGIT_LED_COM 数码管公共端,使用译码器时设置为连接至A0的引脚,否则设置为组
DIGIT_LED_RIGHT 定义这个常量所有数字右对齐,不定义则左对齐
DIGIT_LED_PADDING 当数码管用于显示数字的时候,自动补齐前导0,仅显示正数的时候有效

2. 函数

初始化函数
单个数码管静态显示:
[codesyntax lang=”c”]

digit_led_setup();

[/codesyntax]
初始化将根据常量进行,不需要参数。
多个数码管动态显示
[codesyntax lang=”c”]

digit_led_mulsetup();

[/codesyntax]
初始化将根据常量进行,不需要参数。
显示
单个数码管静态显示:
[codesyntax lang=”c”]

digit_led_disp(uchar);

[/codesyntax]
显示一个数字,使用常量编码,输入值应该小于27,请参见第3节。
多个数码管动态显示
多个数码管输入的参数可以为字符串,或者数值,长度不大于最大显示个数。
[codesyntax lang=”c”]

digit_led_multi_disp(uchar*,uchar);
digit_led_multi_disp_int(int32)

[/codesyntax]
第一个函数用于显示字符串,自动编码,无法编码的字符为空白,请参见第3节。
第一个参数为字符串指针,第二个参数为长度,这个长度不大于LED个数,多余的部分将不显示。
第二个函数用于显示一个有符号整数,这个整数的范围由数码管的位数决定。

3.常量列表

这里的常量用于显示LED的字母,用相应的常量代替字母,大小写根据显示所限定

  • LED_A
  • LED_B
  • LED_C
  • LED_D
  • LED_E
  • LED_F
  • LED_G
  • LED_H
  • LED_L
  • LED_N
  • LED_O
  • LED_P
  • LED_Q
  • LED_R
  • LED_U
  • LED_CLEAR
  • LED_CLEAR
  • LED_MINUS