單片機討論課課件_第1頁
單片機討論課課件_第2頁
單片機討論課課件_第3頁
單片機討論課課件_第4頁
單片機討論課課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

計算機應用設計討論課計算機應用設計討論課所選題目☆LabProject1–反應速度測試LabProject2–路口紅綠燈管理模擬所選題目☆LabProject1–反應速度測試Lab數碼管倒計時進入準備狀態(tài)亮燈測試人員看見亮燈后按鍵MCU記錄反應時間在數碼管上顯示反應時間按另一鍵重新開始如果出現搶跑的情況,給出提示

項目要求LabProject1–反應速度測試數碼管倒計時進入準備狀態(tài)項目要求LabProject1–設計思路數碼管倒計時:9~0倒計時到0時,紅燈亮按下測試鍵后綠燈亮紅燈滅數碼管顯示反應時間:00.00~99.99內按復位鍵重新開始測試搶跑時蜂鳴器響設計思路數碼管倒計時:9~0倒計時到0時,紅燈亮按下測試鍵后具體實現:數碼管倒計時voidPIT_init(unsignedintnumber_ms){ /*TrunonPITclocks*/ SIM_SCGC6|=SIM_SCGC6_PIT_MASK;

/*EnablePITModule*/ PIT_MCR&=~(PIT_MCR_MDIS_MASK);

/*Setupthechannel0ofPIT*/ PIT_LDVAL0=20000*number_ms;

/*EnabletheIRQofchannel0,PIT*/ PIT_TCTRL0|=PIT_TCTRL_TIE_MASK;

/*Runningchannel0,PIT*/ PIT_TCTRL0|=PIT_TCTRL_TEN_MASK;

}1)數碼管初始化LED_Disp_Init2)定時器channel0初始化PIT_init具體實現:數碼管倒計時voidPIT_init(unsig3)倒計時顯示:定時器控制數碼管顯示(LED_num)具體實現:數碼管倒計時voidLED_num(unsignedcharLED_flag){ uint32_tSelect_LED; switch(LED_flag) {case0x01: Select_LED=Select_LED0;GPIOA_PDOR|=0x03F000; GPIOD_PDOR&=~0xFF; GPIOD_PDOR|=num[9]; GPIOA_PDOR&=Select_LED; break;

……………………case0x0A:Select_LED=Select_LED0;GPIOA_PDOR|=0x03F000;

GPIOD_PDOR&=~0xFF;

GPIOD_PDOR|=num[0];

GPIOA_PDOR&=Select_LED; break; default:

break; }3)倒計時顯示:定時器控制數碼管顯示(LED_num)具體實4)LED燈初始化:LED_Init,在定時中斷中調用,設置GPIOC_PDOR來改變亮燈。具體實現:數碼管倒計時voidLED_Init(void){ SIM_SCGC5|=0x800;

PORTC_PCR0=0x100;

PORTC_PCR1=0x100; GPIOC_PDDR=0x03; //GPIOC_PDDR=0x02; GPIOC_PDOR=0x03;

//GPIOC_PDOR=0x02;

voidpit_channel0_ISR(void){//SMGshownumber LED_num(LED_flag);//調用數碼管使用子程序

if(LED_flag==0x0A){ LED_Init();//調用LED初始化

delay(); GPIOC_PDOR=~0x01;//紅燈亮

pit_time_start();//計時開始

} LED_flag++; /*Cleartheflagofchannel0,PIT*/ PIT_TFLG0|=PIT_TFLG_TIF_MASK;}4)LED燈初始化:LED_Init,在定時中斷中調用,設置具體實現:反應時間測試voidenable_irq(intirq){ intdiv; /*DeterminatewhichoftheNVICISERscorrespondstotheirq*/ div=irq/32; switch(div) { case0x0: NVICICPR0=1<<(irq%32); NVICISER0=1<<(irq%32); break; case0x1: NVICICPR1=1<<(irq%32); NVICISER1=1<<(irq%32); break; case0x2: NVICICPR2=1<<(irq%32); NVICISER2=1<<(irq%32); break; 1)允許中斷:enable_irq2)中斷初始化:EN_InitKEY_Init/*enableinitial*/voidEN_Init(){ enable_irq(91);//PORTEinterrupt enable_irq(88);//PORTBinterrupt}/*KEYinitial*/voidKEY_Init(){

SIM_SCGC5|=SIM_SCGC5_PORTB_MASK; SIM_SCGC5|=SIM_SCGC5_PORTE_MASK;PORTE_PCR2=0x0A0103;//SW5為測試按鈕

PORTB_PCR17=0x0A0103;//SW1為重置按鈕

GPIOE_PDDR&=~0x04;//按鍵端口PTE2設置為低電平輸入

GPIOE_PDDR&=~0x20000;//按鍵端口PTB17設置為低電平輸入}具體實現:反應時間測試voidenable_irq(int3)計時:使用PIT定時模塊實現計時功能,初值設置一個較大的數值,在未到達最大范圍時可以通過按SW5鍵隨時讀取計時值,這樣就實現了計時的功能。具體實現:數碼管倒計時

3)計時:使用PIT定時模塊實現計時功能,初值設置一個較大的4)按鍵讀取時間具體實現:反應時間測試SW5按鍵觸發(fā)中斷PORTE_Handler

voidPORTE_Handler(){ if(PORTE_ISFR&0X04)//按鍵按下中斷標志為1 { if(LED_flag<0x0A){ Beep_Init(); FTM2_Init(); Beep_setup(3000); PIT_TCTRL0&=~PIT_TCTRL_TEN_MASK;

PIT_TFLG0|=PIT_TFLG_TIF_MASK; } else{ unsignedinttimevar; timevar=pit_time_get(); GPIOC_PDOR&=0x01;//紅燈滅

GPIOC_PDOR&=~0X02;//綠燈亮

return;}} PORTE_ISFR|=0x000000FF;//ClearPortEflags

4)按鍵讀取時間具體實現:反應時間測試SW5voidPOSW1按鍵觸發(fā)中斷:PORTB_Handler采用電平或看門狗復位5)復位:具體實現:反應時間測試SW1按鍵觸發(fā)中斷:PORTB_Handler5)復位:具1)蜂鳴器初始化(倒計時未到達零就按SW5時

觸發(fā)):Beep_InitFTM2_InitBeep_setup具體實現:搶跑警報2)復位:SW1按鍵觸發(fā)中斷1)蜂鳴器初始化(倒計時未到達零就按SW5時具體實現:左邊2個LED為橫向路口紅綠燈右邊2個LED為縱向路口紅綠燈橫向路口為主干道,縱向路口為一般道路,兩個路口綠燈通行時間分別為9秒和6秒在綠燈變?yōu)榧t燈之前插入1秒黃燈時間在數碼管上左邊和右邊分別顯示兩個路口倒計時等待時間

項目要求LabProject2–路口紅綠燈管理模擬左邊2個LED為橫向路口紅綠燈項目要求LabProject設計思路分別用兩個定時器控制橫縱向用PIT模塊實現倒計時設計思路分別用兩個定時器控制橫縱向用PIT模塊實現倒計時Step1:分別初始化兩組各兩個LED燈,開始時橫向為

綠燈,縱向為紅燈。Step2:數碼管初始化,PIT定時模塊初始化,初始

化通道channel0。Step3:定時器分別控制數碼管顯示倒計時,橫向倒計

時由最低位數碼管顯示,縱向倒計時由第三位

數碼管顯示。Step4:當channel0倒計時變?yōu)?時,橫向兩個LED燈LED1和LED2變黃,黃色由同時亮紅燈和綠燈

所得。再1秒后黃燈變紅燈。Channel1同理。Step5:循環(huán)倒計時和LED變換顏色的過程。Step1:分別初始化兩組各兩個LED燈,開始時橫向為謝謝大家謝謝大家計算機應用設計討論課計算機應用設計討論課所選題目☆LabProject1–反應速度測試LabProject2–路口紅綠燈管理模擬所選題目☆LabProject1–反應速度測試Lab數碼管倒計時進入準備狀態(tài)亮燈測試人員看見亮燈后按鍵MCU記錄反應時間在數碼管上顯示反應時間按另一鍵重新開始如果出現搶跑的情況,給出提示

項目要求LabProject1–反應速度測試數碼管倒計時進入準備狀態(tài)項目要求LabProject1–設計思路數碼管倒計時:9~0倒計時到0時,紅燈亮按下測試鍵后綠燈亮紅燈滅數碼管顯示反應時間:00.00~99.99內按復位鍵重新開始測試搶跑時蜂鳴器響設計思路數碼管倒計時:9~0倒計時到0時,紅燈亮按下測試鍵后具體實現:數碼管倒計時voidPIT_init(unsignedintnumber_ms){ /*TrunonPITclocks*/ SIM_SCGC6|=SIM_SCGC6_PIT_MASK;

/*EnablePITModule*/ PIT_MCR&=~(PIT_MCR_MDIS_MASK);

/*Setupthechannel0ofPIT*/ PIT_LDVAL0=20000*number_ms;

/*EnabletheIRQofchannel0,PIT*/ PIT_TCTRL0|=PIT_TCTRL_TIE_MASK;

/*Runningchannel0,PIT*/ PIT_TCTRL0|=PIT_TCTRL_TEN_MASK;

}1)數碼管初始化LED_Disp_Init2)定時器channel0初始化PIT_init具體實現:數碼管倒計時voidPIT_init(unsig3)倒計時顯示:定時器控制數碼管顯示(LED_num)具體實現:數碼管倒計時voidLED_num(unsignedcharLED_flag){ uint32_tSelect_LED; switch(LED_flag) {case0x01: Select_LED=Select_LED0;GPIOA_PDOR|=0x03F000; GPIOD_PDOR&=~0xFF; GPIOD_PDOR|=num[9]; GPIOA_PDOR&=Select_LED; break;

……………………case0x0A:Select_LED=Select_LED0;GPIOA_PDOR|=0x03F000;

GPIOD_PDOR&=~0xFF;

GPIOD_PDOR|=num[0];

GPIOA_PDOR&=Select_LED; break; default:

break; }3)倒計時顯示:定時器控制數碼管顯示(LED_num)具體實4)LED燈初始化:LED_Init,在定時中斷中調用,設置GPIOC_PDOR來改變亮燈。具體實現:數碼管倒計時voidLED_Init(void){ SIM_SCGC5|=0x800;

PORTC_PCR0=0x100;

PORTC_PCR1=0x100; GPIOC_PDDR=0x03; //GPIOC_PDDR=0x02; GPIOC_PDOR=0x03;

//GPIOC_PDOR=0x02;

voidpit_channel0_ISR(void){//SMGshownumber LED_num(LED_flag);//調用數碼管使用子程序

if(LED_flag==0x0A){ LED_Init();//調用LED初始化

delay(); GPIOC_PDOR=~0x01;//紅燈亮

pit_time_start();//計時開始

} LED_flag++; /*Cleartheflagofchannel0,PIT*/ PIT_TFLG0|=PIT_TFLG_TIF_MASK;}4)LED燈初始化:LED_Init,在定時中斷中調用,設置具體實現:反應時間測試voidenable_irq(intirq){ intdiv; /*DeterminatewhichoftheNVICISERscorrespondstotheirq*/ div=irq/32; switch(div) { case0x0: NVICICPR0=1<<(irq%32); NVICISER0=1<<(irq%32); break; case0x1: NVICICPR1=1<<(irq%32); NVICISER1=1<<(irq%32); break; case0x2: NVICICPR2=1<<(irq%32); NVICISER2=1<<(irq%32); break; 1)允許中斷:enable_irq2)中斷初始化:EN_InitKEY_Init/*enableinitial*/voidEN_Init(){ enable_irq(91);//PORTEinterrupt enable_irq(88);//PORTBinterrupt}/*KEYinitial*/voidKEY_Init(){

SIM_SCGC5|=SIM_SCGC5_PORTB_MASK; SIM_SCGC5|=SIM_SCGC5_PORTE_MASK;PORTE_PCR2=0x0A0103;//SW5為測試按鈕

PORTB_PCR17=0x0A0103;//SW1為重置按鈕

GPIOE_PDDR&=~0x04;//按鍵端口PTE2設置為低電平輸入

GPIOE_PDDR&=~0x20000;//按鍵端口PTB17設置為低電平輸入}具體實現:反應時間測試voidenable_irq(int3)計時:使用PIT定時模塊實現計時功能,初值設置一個較大的數值,在未到達最大范圍時可以通過按SW5鍵隨時讀取計時值,這樣就實現了計時的功能。具體實現:數碼管倒計時

3)計時:使用PIT定時模塊實現計時功能,初值設置一個較大的4)按鍵讀取時間具體實現:反應時間測試SW5按鍵觸發(fā)中斷PORTE_Handler

voidPORTE_Handler(){ if(PORTE_ISFR&0X04)//按鍵按下中斷標志為1 { if(LED_flag<0x0A){ Beep_Init(); FTM2_Init(); Beep_setup(3000); PIT_TCTRL0&=~PIT_TCTRL_TEN_MASK;

PIT_TFLG0|=PIT_TFLG_TIF_MASK; } else{ unsignedinttimevar; timevar=pit_time_get(); GPIOC_PDOR&=0x01;//紅燈滅

GPIOC_PDOR&=~0X02;//綠燈亮

return;}} PORTE_ISFR|=0x000000FF;//ClearPortEflags

4)按鍵讀取時間具體實現:反應時間測試SW5voidPOSW1按鍵觸發(fā)中斷:PORT

溫馨提示

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

評論

0/150

提交評論