这篇文章介绍如何几个驱动数码管的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