atmega16筆記4按鍵掃描-8種led亮滅模式控制gcc_第1頁
atmega16筆記4按鍵掃描-8種led亮滅模式控制gcc_第2頁
atmega16筆記4按鍵掃描-8種led亮滅模式控制gcc_第3頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實驗 4:按鍵掃描+8 種 LED 亮滅模式控制(GCC)筆記:htt/一、程序結(jié)構(gòu)二、仿真效果三、程序源碼1、main.c/* Platform : AVR mega16 學(xué)習(xí)板()Project Clock F Software Author VerUpdata:實驗四:按鍵掃描+8 種 LED 亮滅模式控制 GCC 3.6864MWinAVR-20071221+Proteus7.4依然08.11.2209.02.2509.04.3009.07.21模塊化增加 proteus 仿真模型,修改 key_scan.c 檢測程序,仿真通過WinAVR-20071221 環(huán)境下編譯通過commen

2、ts:1、以學(xué)習(xí)板八個 LED 燈和八個按鍵為硬件電路,JP7 短路塊需裝上2、AVR 單片機(jī)端口寄存器的使用及理解3、練習(xí)程序模塊化,結(jié)構(gòu)化的書寫4、端口電平檢測程序的編寫方法5、8 種 LED 點(diǎn)亮模式由對應(yīng)的 KEY 鍵選擇,同時按下多個鍵時,LED 點(diǎn)亮模式不會循環(huán)進(jìn)行,詳見仿真。原因為:盡管 key_scan.c 采用循環(huán)判斷方式,但采用了狀態(tài)處理程序6、增加狀態(tài)處理,防止運(yùn)行選定 LED 模式序時按下其他按鍵7、使用 GCC delay.h 頭文件中延時函數(shù),更換 io 頭文件Problem :1、ICC 中 DelayMs()函數(shù)在 GCC 中不可用,不知何因。*/#includ

3、e#include #includeport_init.h key_scan.hmain(void)port_init(); while (1)key_scan();/MCUCR=0 x40;/MCUCR=0 x50;/MCUCR=0 x60;/MCUCR=0 x70;/MCUCR=0 xE0; MCUCR=0 xF0;asm(sleep);/空閑模式,CPU 占用 100%/ADC 噪聲抑制模式,CPU 占用 100%/掉電模式,CPU 占用 80%/省電模式,CPU 占用 4%/Standby 模式,CPU 占用 80%/擴(kuò)展 Standby 模式,CPU 占用 4%/CPU 休眠指令2、

4、key_scan.c#include #include#include key_scan.hled.h/*鍵盤掃描函數(shù)*/ void key_scan(void)l,m,n,o,p,q,r,s,i;if(PINA&(1PA0)=0)PORTB=0XFF;for(l=0;l5;l+)for (i = 0; i LED_01(i);LED_off();/關(guān)閉 LED/模式 1:順序點(diǎn)亮8;i+)/順序單個點(diǎn)亮 LED0;i-)/逆序單個點(diǎn)亮 LEDwhilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵if(PINA&(1PA1)=0)PORTB=0XFF;for(m=0;m5;m+)

5、for (i = 0; i 0; LED_01(i);LED_off();/關(guān)閉 LEDi-=2) /逆序間隔點(diǎn)亮 LEDwhilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵if(PINA&(1PA2)=0)/模式 3:間隔點(diǎn)亮PORTB=0XFF;for(n=0;n5;n+)for (i = 2; i LED_02(i);LED_off();/關(guān)閉 LED8;i+)/間隔順序同時點(diǎn)亮2;i-)/間隔逆序同時點(diǎn)亮whilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵if(PINA&(1PA3)=0)PORTB=0XFF;for(o=0;o5;o+)/模式 4:相臨

6、點(diǎn)亮for (i = 1; i LED_03(i);8;i+)/相臨順序同時點(diǎn)亮1;i-)/相臨逆序同時點(diǎn)亮LED_off();/關(guān)閉 LEDwhilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵if(PINA&(1PA4)=0)PORTB=0XFF;for(p=0;p5;p+)for(i=0;i0;i-) LED_04(i);LED_off();/關(guān)閉 LED/模式 5:發(fā)散點(diǎn)亮/發(fā)散點(diǎn)亮/點(diǎn)亮whilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵if(PINA&(1PA5)=0)PORTB=0XFF;for(q=0;q5;q+)for(i=0;i0;i-) LE

7、D_05(i);LED_off();/關(guān)閉 LED/模式四點(diǎn)亮/四四順序點(diǎn)亮/四四逆序點(diǎn)亮whilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵if(PINA&(1PA6)=0)PORTB=0XFF;for(r=0;r5;r+)for(i=0;i2;i+) LED_06(i);LED_off();/關(guān)閉 LED/模式 7:四四點(diǎn)亮/四四順序點(diǎn)亮whilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵if(PINA&(1PA7)=0)PORTB=0XFF;for(s=0;s5;s+)LED_on(); LED_off();LED_off();/關(guān)閉 LED/模式 8:全

8、部點(diǎn)亮熄滅whilNA!=0XFF);/狀態(tài)處理,防止運(yùn)行此程序時按下其他按鍵3、led.c/*Platform function Clock F Software Author Vercomments: AVR mega16 學(xué)習(xí)板():功能函數(shù)集:3.6864MWinAVR-20071221依然09.07.20*/#include #include#include led.hvoid LED_on(void)PORTB =0X00;_delay_ms(100);/打開所有 LEDvoid LED_off(void)PORTB = 0 xFF;_delay_ms(100);/關(guān)閉所有 LED

9、void LED_01(i)/LED 亮滅控制PORTB = _BV(i);_delay_ms(100);/輸出低電平/調(diào)用延時程序void LED_02(i)/間隔點(diǎn)亮PORTB=(_BV(i)|_BV(i-2);_delay_ms(100);void LED_03(i)/相臨點(diǎn)亮PORTB=(_BV(i)|_BV(i-1);/后內(nèi)容需用括號括起來_delay_ms(100);void LED_04(switch(i)i)/發(fā)散點(diǎn)亮case case casecase0:PORTB=0 xE7;_delay_ms(100);break; 1:PORTB=0 xDB;_delay_ms(100

10、);break; 2:PORTB=0 xBD;_delay_ms(100);break;3:PORTB=0 x7E;_delay_ms(100);break;/延時 100msdefault:break;void LED_05(switch(i)i)/00,0F,F0,FF 方式顯示case case casecase0:PORTB=0 x00;_delay_ms(100);break; 1:PORTB=0 x0F;_delay_ms(100);break; 2:PORTB=0 xF0;_delay_ms(100);break;3:PORTB=0 xFF;_delay_ms(100);brea

11、k;/延時 100msdefault:break;void LED_06(switch(i)i)case 0:PORTB=0XAA;_delay_ms(100);break; case 1:PORTB=0X55;_delay_ms(100);break;4、port_init.c#include #include port_init.h/*端口初始化函數(shù)*/ void port_init(void)DDRA =0X00; PORTA=0XFF;DDRB =0 xFF; PORTB=0 xFF;DDRC =0X00; PORTC=0XFF; DDRD =0X00; PORTD=0XFF;/端口上拉輸入/端口輸出/輸出,LED 熄滅5、key_scan.hvoid key_scan(void);6、led.hvoid void void vo

溫馨提示

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

最新文檔

評論

0/150

提交評論