2276|1

7

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430WARE++的使用1:LG3641BH driver的调用方法 [复制链接]

MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设。本文将介绍数码管LG3641BH驱动程序的调用方法。 1、硬件原理图 采用下图所示的数码管LG3641BH电路,可以直接调用NixieTubeA驱动程序进行程序开发。 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配置文件,其更改后的源程序如下:
  1. #define NIXIETUBEA_D0_PORT PORT5
  2. #define NIXIETUBEA_D0_PIN PIN4
  3. #define NIXIETUBEA_D1_PORT PORT5
  4. #define NIXIETUBEA_D1_PIN PIN3
  5. #define NIXIETUBEA_D2_PORT PORT5
  6. #define NIXIETUBEA_D2_PIN PIN2
  7. #define NIXIETUBEA_D3_PORT PORT5
  8. #define NIXIETUBEA_D3_PIN PIN1
  9. #define NIXIETUBEA_Qa_PORT PORT4
  10. #define NIXIETUBEA_Qa_PIN PIN5
  11. #define NIXIETUBEA_Qb_PORT PORT4
  12. #define NIXIETUBEA_Qb_PIN PIN7
  13. #define NIXIETUBEA_Qc_PORT PORT4
  14. #define NIXIETUBEA_Qc_PIN PIN2
  15. #define NIXIETUBEA_Qd_PORT PORT4
  16. #define NIXIETUBEA_Qd_PIN PIN4
  17. #define NIXIETUBEA_Qe_PORT PORT4
  18. #define NIXIETUBEA_Qe_PIN PIN6
  19. #define NIXIETUBEA_Qf_PORT PORT5
  20. #define NIXIETUBEA_Qf_PIN PIN0
  21. #define NIXIETUBEA_Qg_PORT PORT4
  22. #define NIXIETUBEA_Qg_PIN PIN1
  23. #define NIXIETUBEA_Qdp_PORT PORT4
  24. #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中完成,源程序如下:
  1. [align=left] #define INTERNAL_PERIPHERAL_TIMERB_MODE 1[/align]
  2. [align=left]定时器启动后,在main.cpp的定时器中断函数中加入显示语句即可,源程序如下:[/align]
  3. [align=left]#pragma vector=TIMERB0_VECTOR[/align]
  4. [align=left]__interrupt void TimerB0_ISR(void)[/align]
  5. [align=left]{[/align]
  6. [align=left]//项目中设置为1ms[/align]
  7. [align=left]Target.HAL.HCI.DisplaySystem.Display();[/align]
  8. [align=left]}[/align]
复制代码
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类成员变量和成员函数的说明 成员变量:
  1. 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); 字符与小数点绘制函数
    void Display(void); 显示函数,该函数应在定时为1ms的定时器中断函数中调用。
复制代码
注1:本文中示例代码用绿色标注。
注2:本文中
与使用密切相关的成员变量与成员函数用红色标注。

最新回复

C++用在小容量FLASHRAM的MCU上,代码空间不紧张吗?  详情 回复 发表于 2015-9-25 16:40
 
点赞 关注

回复
举报

1305

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
C++用在小容量FLASHRAM的MCU上,代码空间不紧张吗?
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表