基于MSP430F5438的led点亮设计

电子说

1.2w人已加入

描述

点亮一个led灯

首先看电路图:

三极管

这个电路图是关键,理解,首先必须要打开VCC,这个是我今天犯错的最主要的原因,因为我开始以为开发板上的电源是自动接上的,导致程序调试了一上午,没有成功

之后看VCC,也就是标号1,搜索一下VCC的引脚

三极管

也就是要控制P5.4口输出一个高电平

代码:

put_P5DIR_BIT4(1);//引脚为输出引脚

put_P5_OUT_BIT4(1);//打开外部电源

接下来看标号2

标号2是一个led_PWR,注意这里是一个控制输出一个0,就可以导通三极管,

在电路图上搜索一下led_PWR,这里出现如图管脚

三极管

这里显示的是LED PWR是第P7.3管脚,即P7.3只需要输出一个低信号就可以了

示例代码:

put_P7DIR_BIT3(1);//引脚为输出引脚

put_P7_OUT_BIT3(0);//导通三极管

之后在电路图中搜索DIG1,由电路图可以知道,DIG1必须是一个低电平

三极管

这里可以看到DIG1控制引脚是P9.0,所以,点亮一个数码管现在很容易了

put_P9DIR_BIT0(1);//设置端口为输出端口

put_P9OUT_BIT0(0);//导通二级管

示例代码:

 View Code

总结一下最近所学的,将led以5毫秒的频率流水灯闪烁

#include
#include"for_5438_wjx.c"
#include"PIN_DEF.h"

#define CPU_F               ((double)8000000) 
#define delay_us(x)        __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 
#define delay_ms(x)        __delay_cycles((long)(CPU_F*(double)x/1000.0)) 

unsigned char  table1[]={0x0e,0x0d,0x0b,0x07};
unsigned char  table2[]={0xe0,0xd0,0xb0,0x70};

void  main( void )
{
  // Stop watchdog timer to prevent time out reset
  
  unsigned i,j;
  
  WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
   
  put_P5DIR_BIT4(1);      // 主电源 P5.4
  put_P5OUT_BIT4(1);      //打开外设电源
  
  put_P9SEL(0x0);    //设置P9.0到P9.3为普通I/O
  put_P9DIR(0x0f);    //设置P9.0到P9.3为输出
  
  put_P1SEL(0x0);    //设置P1.4到P1.7为普通I/O
  put_P1DIR(0xf0);    //设置P1.4到P1.7为输出
  put_P1OUT(0xf0);    //关闭led显示
  
  put_P7SEL_BIT3(0);   //开发板上7.3口是lcd的电源,设置P7.3为普通I/O
  put_P7DIR_BIT3(1);   //设置P7.3为输出
  
  put_P7OUT_BIT3(0);      //给lcd供电
  
F:
  for(i=0;i<4;i++)
  {
    put_P9OUT(table1[i]);     //点亮led数码管
    delay_ms(50);
  }
  put_P9OUT(0x0f);
  
  for(j=0;j<4;j++)
  {
     put_P1OUT(table2[j]);   
     delay_ms(50);
  }
  put_P1OUT(0xf0);
  goto F;
  
  
  
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分