b、使能外设
在config.hpp中使能外设NixieTubeA,其源程序如下:
#define EXTERNAL_MODULE_NixieTubeA_MODE 1
c、驱动程序的配置。
查看原理图,可以看到如下的引脚对应关系。
D1——P5.4
D2——P5.3
D3——P5.2
D4——P5.1
Qa——P4.5
Qb——P4.7
Qc——P4.2
Qd——P4.4
Qe——P4.6
Qf——P5.0
Qg——P4.1
根据上述对应关系更改NixieTubeA_config.hpp配置文件,其更改后的源程序如下:
#define NIXIETUBEA_D0_PORT PORT5
#define NIXIETUBEA_D0_PIN PIN4
#define NIXIETUBEA_D1_PORT PORT5
#define NIXIETUBEA_D1_PIN PIN3
#define NIXIETUBEA_D2_PORT PORT5
#define NIXIETUBEA_D2_PIN PIN2
#define NIXIETUBEA_D3_PORT PORT5
#define NIXIETUBEA_D3_PIN PIN1
#define NIXIETUBEA_Qa_PORT PORT4
#define NIXIETUBEA_Qa_PIN PIN5
#define NIXIETUBEA_Qb_PORT PORT4
#define NIXIETUBEA_Qb_PIN PIN7
#define NIXIETUBEA_Qc_PORT PORT4
#define NIXIETUBEA_Qc_PIN PIN2
#define NIXIETUBEA_Qd_PORT PORT4
#define NIXIETUBEA_Qd_PIN PIN4
#define NIXIETUBEA_Qe_PORT PORT4
#define NIXIETUBEA_Qe_PIN PIN6
#define NIXIETUBEA_Qf_PORT PORT5
#define NIXIETUBEA_Qf_PIN PIN0
#define NIXIETUBEA_Qg_PORT PORT4
#define NIXIETUBEA_Qg_PIN PIN1
#define NIXIETUBEA_Qdp_PORT PORT4
#define NIXIETUBEA_Qdp_PIN PIN3
d、类的派生
在硬件抽象层,人机交互类中声明类CDisplaySystem,直接由CNixieTubeA类派生即可,其源程序如下:
class CDisplaySystem:public CNixieTubeA
{
};
e、对象的声明
可以在CHCI类中,进行对象声明,其源程序如下:
class CHCI
{
public:
CLed
Led;
CDisplaySystem
DisplaySystem;
};
f、其它操作
使用NixieTubeA需启用1个定时为1ms的定时器,TimerA或者TimerB均可(本文以TimerB为例),其启动设置在config.hpp中完成,源程序如下:
#define
INTERNAL_PERIPHERAL_TIMERB_MODE 1
定时器启动后,在main.cpp的定时器中断函数中加入显示语句即可,源程序如下:
#pragma vector=TIMERB0_VECTOR
__interrupt void TimerB0_ISR(void)
Target.HAL.HCI.DisplaySystem.Display();
}
g、调用方法
可以在程序的任意地方操纵NixieTubeA的成员变量DisplayString[4]和DisplayPoint[4],其中DisplayString[4]用于设置数码管需要显示的字符,DisplayPoint[4]用于设置数码管所在位的小数点的显示。以下是示例程序,调用后数码管将显示“----”(不含小数点)。
Target.HAL.HCI.DisplaySystem.DisplayString[0] = ‘-‘;
Target.HAL.HCI.DisplaySystem.DisplayString[1]
= ‘-‘;
Target.HAL.HCI.DisplaySystem.DisplayString[2]
= ‘-‘;
Target.HAL.HCI.DisplaySystem.DisplayString[3]
= ‘-‘;
Target.HAL.HCI.DisplaySystem.DisplayPoint[0]
= 0x00;
Target.HAL.HCI.DisplaySystem.DisplayPoint[1]
= 0x00;
Target.HAL.HCI.DisplaySystem.DisplayPoint[2]
= 0x00;
Target.HAL.HCI.DisplaySystem.DisplayPoint[3]
= 0x00;
3、CNixieTubeA类成员变量和成员函数的说明
成员变量:
CNixieTubeA_D0_Pin D0_Pin; 数码管第0位使能引脚
CNixieTubeA_D1_Pin
D1_Pin; 数码管第1位使能引脚
CNixieTubeA_D2_Pin
D2_Pin; 数码管第2位使能引脚
CNixieTubeA_D3_Pin
D3_Pin; 数码管第3位使能引脚
CNixieTubeA_Qa_Pin
Qa_Pin; 数码管a段控制引脚
CNixieTubeA_Qb_Pin
Qb_Pin; 数码管b段控制引脚
CNixieTubeA_Qc_Pin
Qc_Pin; 数码管c段控制引脚
CNixieTubeA_Qd_Pin
Qd_Pin; 数码管d段控制引脚
CNixieTubeA_Qe_Pin
Qe_Pin; 数码管e段控制引脚
CNixieTubeA_Qf_Pin
Qf_Pin; 数码管f段控制引脚
CNixieTubeA_Qg_Pin
Qg_Pin; 数码管g段控制引脚
CNixieTubeA_Qdp_Pin
Qdp_Pin; 数码管dp段控制引脚
uint8 DisplayString[4];
数组的0-3位分别表示数码管的0-3位显示的字符,该驱动程序可显示如下字符:
输入0或‘0‘ 显示0
输入1或‘1‘
显示1
输入2或‘2‘
显示2
输入3或‘3‘
显示3
输入4或‘4‘
显示4
输入5或‘5‘
显示5
输入6或‘6‘
显示6
输入7或‘7‘
显示7
输入8或‘8‘
显示8
输入9或‘9‘
显示9
输入10或‘A‘
显示A
输入11或‘B‘
显示B
输入12或‘C‘
显示C
输入13或‘D‘
显示D
输入14或‘E‘
显示E
输入15或‘F‘
显示F
输入‘-‘
显示-
输入‘N‘
显示NULL,就是什么也不显示
uint8 DisplayPoint[4]; 用于控制0-3位小数点的显示,赋值为1显示小数点,赋值为0不显示小数点。
成员函数:
CNixieTubeA(void); 构造函数
void SelectLED(uint8 u8_Number); 位选择函数
void DrawLED(uint8 u8_Number, uint8 u8_Point); 字符与小数点绘制函数