msp430led按鍵控制燈亮程序_第1頁(yè)
msp430led按鍵控制燈亮程序_第2頁(yè)
msp430led按鍵控制燈亮程序_第3頁(yè)
msp430led按鍵控制燈亮程序_第4頁(yè)
msp430led按鍵控制燈亮程序_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1.Led燈控制程序#include msp430g2553.hvoid main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; /關(guān)閉看門狗 /P1DIR = 0 x41; /P1OUT = 0 x41; /程序點(diǎn)亮led1 /P1DIR |=BIT0+BIT6; /P1OUT |=BIT0+BIT6; /程序點(diǎn)亮led2 P1DIR |=BIT0; P1OUT |=BIT0; P1DIR |=BIT6; P1OUT &=BIT6; while(1) P1OUT =BIT0;

2、 P1OUT =BIT6; _delay_cycles(1000000); /led交替亮,持續(xù)1s2.Led按鍵控制燈亮#include msp430g2553.hvoid main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;/關(guān)閉看門狗 P1DIR &=BIT3; P1DIR |=BIT0; P1IES |=BIT3; P1IE |=BIT3; _EINT(); _BIS_SR(LPM0_bits+GIE);#pragma vector=PORT1_VECTOR_inte

3、rrupt void PORT1_ISR(void) int i; char pushkey; pushkey=P1IFG&BIT3;/第三位中斷標(biāo)志位 for(i=0;i1000;i+)/短暫延時(shí)軟件去抖 if(P1IN&pushkey)=pushkey) P1IFG=0;/中斷標(biāo)志清零 return; if(P1IFG&BIT3)/判斷按鍵是否按下 P1OUT=BIT0; P1IFG=0; return; 3.矩陣鍵盤和數(shù)碼管程序#include #includeKey&Display.h/unsigned char Receive(void);void main( void ) / St

4、op watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; Init_4lines_Mode();/初始化4線工作模式 Send_Command(CH452_RESET);/CH452芯片內(nèi)部復(fù)位 Send_Command(KeyDisplay_ON);/允許顯示驅(qū)動(dòng)并啟動(dòng)鍵盤掃描 /開中斷,P2.0接CH452的DOUT引腳,當(dāng)有鍵按下時(shí),DOUT上產(chǎn)生由高到低的脈沖 / P2SEL &= (BIT6+BIT7); P2IE|=BIT0; P2IES|=BIT0; P2IFG&=BIT0; _EINT(); wh

5、ile(1) /中斷處理函數(shù)#pragma vector = PORT2_VECTOR/中斷處理程序,接收到DOUT脈沖信號(hào)時(shí),運(yùn)行之_interrupt void Port2(void) unsigned char Keyvalue; Send_Command(CH452_GET_KEY);/單片機(jī)向CH452發(fā)送讀取按鍵代碼命令 Keyvalue=Key_Read(); / Keyvalue=Receive(); switch(Keyvalue) case 0 x40:/按鍵K0按下 Send_Command( NDis1); /第1位數(shù)碼管不顯示 /Send_Command(Dis10)

6、; Send_Command(Dis00);/第0位數(shù)碼管顯示0 break; case 0 x41:/按鍵K1按下 Send_Command( NDis1); /第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis01);/第0位數(shù)碼管顯示1 break; case 0 x42:/按鍵K2按下 Send_Command( NDis1); /第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis02);/第0位數(shù)碼管顯示2 break; case 0 x43:/按鍵K3按下 Send_Command( NDi

7、s1);/第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis03);/第0位數(shù)碼管顯示3 break; case 0 x48:/按鍵K4按下 Send_Command( NDis1);/第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis04);/第0位數(shù)碼管顯示4 break; case 0 x49:/按鍵K5按下 Send_Command( NDis1);/第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis05);/第0位數(shù)碼管顯示5 break; cas

8、e 0 x4A:/按鍵K6按下 Send_Command( NDis1);/第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis06);/第0位數(shù)碼管顯示6 break; case 0 x4B:/按鍵K7按下 Send_Command( NDis1);/第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis07);/第0位數(shù)碼管顯示7 break; case 0 x50:/按鍵K8按下 Send_Command( NDis1);/第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Com

9、mand(Dis08);/第0位數(shù)碼管顯示8 break; case 0 x51:/按鍵K9按下 Send_Command( NDis1);/第1位數(shù)碼管不顯示 /Send_Command(Dis10); Send_Command(Dis09);/第0位數(shù)碼管顯示9 break; case 0 x52:/按鍵K10按下 Send_Command(Dis00);/第0個(gè)數(shù)碼管顯示字符0 Send_Command(Dis11);/第1個(gè)數(shù)碼管顯示字符1 break; case 0 x53:/按鍵K11按下 Send_Command(Dis01);/第0個(gè)數(shù)碼管顯示字符1 Send_Command(

10、Dis11);/第1個(gè)數(shù)碼管顯示字符1 break; case 0 x58:/按鍵K12按下 Send_Command(Dis02);/第0個(gè)數(shù)碼管顯示字符2 Send_Command(Dis11);/第1個(gè)數(shù)碼管顯示字符1 break; case 0 x59:/按鍵K13按下 Send_Command(Dis03);/第0個(gè)數(shù)碼管顯示字符3 Send_Command(Dis11);/第1個(gè)數(shù)碼管顯示字符1 break; case 0 x5A:/按鍵K14按下 Send_Command(Dis04);/第0個(gè)數(shù)碼管顯示字符4 Send_Command(Dis11);/第1個(gè)數(shù)碼管顯示字符1 b

11、reak; case 0 x5B:/按鍵K15按下 Send_Command(Dis05);/第0個(gè)數(shù)碼管顯示字符5 Send_Command(Dis11);/第1個(gè)數(shù)碼管顯示字符1 break; default:break; P2IFG&=BIT0;4.紅燈0.2秒閃一次,綠燈0.8秒閃一次#include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT BCSCTL1 &=XTS; /配置時(shí)鐘 BCSCTL3 |=LFXT1S_2; IFG1 &=OFIFG; P1DIR |=BIT0+BIT6; / P1.0,P1.6 outpu

12、t P1OUT &=BIT0; / P1.0,P1.6置0 P1OUT &=BIT6; TACCR0 = 12000-1; /1秒定時(shí),產(chǎn)生中斷 TACCR1 = 2400; /頻率0.2*12000,定時(shí)0.2秒 TACCR2 = 9600; /定時(shí)0.8秒 TACTL = TASSEL_1 + MC_1+TAIE; / ACLK, 增計(jì)數(shù)模式 TACCTL1 |=CCIE; / TACCR1中斷使能 TACCTL2 |=CCIE; / TACCR1中斷使能 _BIS_SR(LPM0_bits + GIE); / Enter LPM0 w/ interrupt/ Timer_A3 Inter

13、rupt Vector (TA0IV) handler#pragma vector=TIMER0_A1_VECTOR_interrupt void Timer_A(void) switch( TA0IV ) case 2: P1OUT = BIT0; / 捕獲/比較寄存器TACCR1 break; case 4: P1OUT = BIT6; break; / 捕獲/比較寄存器TACCR2 case 10: break; / 未使用,計(jì)數(shù)達(dá)到TACCRO時(shí)執(zhí)行中斷,即1秒執(zhí)行一次 5.PMW波控制led燈亮度#include msp430g2553.hvoid main( void ) / Stop watchdog timer to pre

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論