【Energia开发环境】MSP430 LAUNCHPAD学习笔记3--Lab3 数码管的显示 材料: l MSP430 LAUNCHPAD x 1 l 一位共阳极数码管 实验目的:让MSP430 LAUNCHPAD控制数码管显示0-9数字 数码管介绍及原理图分析: 常见的数码管由七个发光二极管和一个点状发光二极管管芯制成,如附图所示,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。共阳数码管是指将所有发光二极管的阳极连接到一起形成公共阳极(COM)的数码管。在共阳数码管时应将公共极COM端接到电源VCC上,当某一字段的发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管则更好相反,阴极连接到一起形成了公共阴极,阳极是独立分开的。如下图所示。 下图为一位共阳极数码管实物图,本实验使用就是用它。 其引脚排列依次为:从左上角第一个引脚顺时针开始数,引脚依次如下:1:g 2:f 3:com端(接高电平) 4:a 5:b 6: dp 7:c 8:com端(接高电平) 9:d 10:e 共十个引脚,上5下5。 MSP430 Launch Pad 引脚与数码管引脚对应连接表格: 示意图: 源程序: /****************************************************************** KEY control 【Energia开发环境】MSP430 LAUNCHPAD学习笔记3--Lab3 数码管的显示 G F + A B | | | | | __A__ F | | B __G__ E | | C __D__ | | | | | E D + C dp ********************************************************************/ /*设置控制各段的数字IO脚 */ int a = P1_0; int b = P1_1; int c = P1_2; int d = P1_3; int e = P1_4; int f = P1_5; int g = P1_6; int dp = P1_7; const unsigned char LED8Pin[]={a,b,c,d,e,f,g,dp};//a.b,c,d,e,f,g,dp //0-9数字编码 const unsigned char LED8Code[]= { 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90, // 9 0x88, // A 0x83, // B 0xC6, // C 0xA1, // D 0x86, // E 0x8E // F - 16 }; /*初始化设置函数*/ void setup() { char i; // 初始化P1所有端口引脚方向为输出 for(i=0;i<8;i++) { pinMode(LED8Pin, OUTPUT); //输出高电平,灭 digitalWrite(LED8Pin, HIGH); } } //显示数字 void LED8Display(char data) { char m; char n; char dis; if((0<=data)||(data<16)) { dis = LED8Code[data]; for(m=0;m<8;m++) { n = bitRead(dis,m); digitalWrite(LED8Pin[m], n); } } } /*循环函数*/ void loop() { char count; for(count=0;count<16;count++) { LED8Display(count); delay(1000); } } 下面是数码管取模软件: 实际效果图:
#define bitRead(value, bit) (((value) >> (bit)) & 0x01) 宏定义 |