MSP430WARE++的使用1:LG3641BH driver的调用方法


    MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设。本文将介绍数码管LG3641BH驱动程序的调用方法。

    1、硬件原理图 
    采用下图所示的
数码管 LG3641BH 电路,可以直接调用 NixieTubeA驱动程序进行程序开发。
MSP430WARE++的使用1:LG3641BH driver的调用方法_第1张图片 
MSP430WARE++的使用1:LG3641BH driver的调用方法_第2张图片
 
    2、使用方法
    a、加入
驱动程序
    选中
NixieTubeA文件夹,右键点击“Exclude from Build”即可。  
    NixieTubeA驱动程序由3个文件组成,如下图所示。其中 NixieTubeA_config.hpp为 NixieTubeA 的配置文件, NixieTubeA.cpp为 NixieTubeA类的源程序, NixieTubeA.hpp为 NixieTubeA类的头文件。
    
    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,直接由C NixieTubeA类派生即可,其源程序如下:
        
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)
        {
    //项目中设置为1ms
            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、C
NixieTubeA类成员变量和成员函数的说明
    成员变量:
        
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
            
输入1 0或'A'    显示A  
            
输入1 1或'B'    显示B  
            
输入1 2或'C'    显示C  
            
输入1 3或'D'    显示D  
            
输入1 4或'E'    显示E  
            
输入1 5或'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);    字符与小数点绘制函数    
         void Display(void);                               显示函数,该函数应在定时为1ms的定时器中断函数中调用。

    注1:本文中示例代码用绿色标注。
    注2:本文中
与使用密切相关的成员变量与成员函数用红色标注。  

原创性文章,转载请注明出处  http://user.qzone.qq.com/2756567163  

你可能感兴趣的:(C++,driver,MSP430,LG3641BH,MSP430WARE++)