MSP430F5438點亮led
今天只是想點亮一個led燈,因為沒有視頻,搞得很多的東西都是自己摸,下午本來講和咨詢店家,TMD說好給一點技術(shù)支持,結(jié)果一點也不給,我真想草泥馬了,其實代碼早就寫出來了,只是哥哥不知道這款開發(fā)板還有接一下外部的電源,這個是我始料未及的,導(dǎo)致最后回到最初的起點,一點一點的看電路圖,這里我把今天的程序小結(jié)一下?。?!
點亮一個led燈
首先看電路圖:
這個電路圖是關(guān)鍵,理解,首先必須要打開VCC,這個是我今天犯錯的最主要的原因,因為我開始以為開發(fā)板上的電源是自動接上的,導(dǎo)致程序調(diào)試了一上午,沒有成功
之后看VCC,也就是標(biāo)號1,搜索一下VCC的引腳
也就是要控制P5.4口輸出一個高電平
代碼:
put_P5DIR_BIT4(1);//引腳為輸出引腳
put_P5_OUT_BIT4(1);//打開外部電源
接下來看標(biāo)號2
標(biāo)號2是一個led_PWR,注意這里是一個控制輸出一個0,就可以導(dǎo)通三極管,
在電路圖上搜索一下led_PWR,這里出現(xiàn)如圖管腳
這里顯示的是LED PWR是第P7.3管腳,即P7.3只需要輸出一個低信號就可以了
示例代碼:
put_P7DIR_BIT3(1);//引腳為輸出引腳
put_P7_OUT_BIT3(0);//導(dǎo)通三極管
之后在電路圖中搜索DIG1,由電路圖可以知道,DIG1必須是一個低電平
這里可以看到DIG1控制引腳是P9.0,所以,點亮一個數(shù)碼管現(xiàn)在很容易了
put_P9DIR_BIT0(1);//設(shè)置端口為輸出端口
put_P9OUT_BIT0(0);//導(dǎo)通二級管
示例代碼:
#include
#include"for_5438_wjx.c"http://頭文件
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;//關(guān)閉看門狗
put_P5DIR_BIT4(1); // 主電源 P5.4
put_P5OUT_BIT4(1); //打開外設(shè)電源
put_P9SEL_BIT0(0);//設(shè)置P9.0為普通I/O
put_P9DIR_BIT0(1);//設(shè)置P9.0為輸出
put_P7SEL_BIT3(0);//開發(fā)板上7.3口是lcd的電源,設(shè)置P7.3為普通I/O
put_P7DIR_BIT3(1);//設(shè)置P7.3為輸出
put_P7OUT_BIT3(0);//給lcd供電
put_P9OUT_BIT0(0);//點亮led數(shù)碼管
while(1);
}
總結(jié)一下最近所學(xué)的,將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;//關(guān)閉看門狗
put_P5DIR_BIT4(1); // 主電源 P5.4
put_P5OUT_BIT4(1); //打開外設(shè)電源
put_P9SEL(0x0); //設(shè)置P9.0到P9.3為普通I/O
put_P9DIR(0x0f); //設(shè)置P9.0到P9.3為輸出
put_P1SEL(0x0); //設(shè)置P1.4到P1.7為普通I/O
put_P1DIR(0xf0); //設(shè)置P1.4到P1.7為輸出
put_P1OUT(0xf0); //關(guān)閉led顯示
put_P7SEL_BIT3(0); //開發(fā)板上7.3口是lcd的電源,設(shè)置P7.3為普通I/O
put_P7DIR_BIT3(1); //設(shè)置P7.3為輸出
put_P7OUT_BIT3(0); //給lcd供電
F:
for(i=0;i<4;i++)
{
put_P9OUT(table1[i]); //點亮led數(shù)碼管
delay_ms(50);
}
put_P9OUT(0x0f);
for(j=0;j<4;j++)
{
put_P1OUT(table2[j]);
delay_ms(50);
}
put_P1OUT(0xf0);
goto F;
}